kdelibs/kio/kfile/kfileplacesview.h
Ivailo Monev a65bd3b685 kfile: merge it into kio
once upon a time it was either part of it or was separated from it

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2024-03-24 01:19:59 +02:00

113 lines
3.8 KiB
C++

/* This file is part of the KDE project
Copyright (C) 2007 Kevin Ottens <ervin@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KFILEPLACESVIEW_H
#define KFILEPLACESVIEW_H
#include <kio/kio_export.h>
#include <QtGui/QListView>
#include <kurl.h>
#include <QResizeEvent>
#include <QContextMenuEvent>
/**
* This class allows to display a KFilePlacesModel.
*/
class KIO_EXPORT KFilePlacesView : public QListView
{
Q_OBJECT
public:
KFilePlacesView(QWidget *parent = 0);
~KFilePlacesView();
/**
* If \a enabled is true, it is allowed dropping items
* above a place for e. g. copy or move operations. The application
* has to take care itself to perform the operation
* (see KFilePlacesView::urlsDropped()). If
* \a enabled is false, it is only possible adding items
* as additional place. Per default dropping on a place is
* disabled.
*/
void setDropOnPlaceEnabled(bool enabled);
bool isDropOnPlaceEnabled() const;
/**
* If \a enabled is true (the default), items will automatically resize
* themselves to fill the view.
*
* @since 4.1
*/
void setAutoResizeItemsEnabled(bool enabled);
bool isAutoResizeItemsEnabled() const;
public Q_SLOTS:
void setUrl(const KUrl &url);
void setShowAll(bool showAll);
virtual QSize sizeHint() const;
virtual void setModel(QAbstractItemModel *model);
protected:
virtual void keyPressEvent(QKeyEvent *event);
virtual void contextMenuEvent(QContextMenuEvent *event);
virtual void resizeEvent(QResizeEvent *event);
virtual void showEvent(QShowEvent *event);
virtual void hideEvent(QHideEvent *event);
virtual void dragEnterEvent(QDragEnterEvent *event);
virtual void dragLeaveEvent(QDragLeaveEvent *event);
virtual void dragMoveEvent(QDragMoveEvent *event);
virtual void dropEvent(QDropEvent *event);
virtual void paintEvent(QPaintEvent *event);
protected Q_SLOTS:
void rowsInserted(const QModelIndex &parent, int start, int end);
void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
Q_SIGNALS:
void urlChanged(const KUrl &url);
/**
* Is emitted if items are dropped on the place \a dest.
* The application has to take care itself about performing the
* corresponding action like copying or moving.
*/
void urlsDropped(const KUrl &dest, QDropEvent *event, QWidget *parent);
private:
Q_PRIVATE_SLOT(d, void adaptItemSize())
Q_PRIVATE_SLOT(d, void _k_placeClicked(const QModelIndex &))
Q_PRIVATE_SLOT(d, void _k_placeEntered(const QModelIndex &))
Q_PRIVATE_SLOT(d, void _k_placeLeft(const QModelIndex &))
Q_PRIVATE_SLOT(d, void _k_storageSetupDone(const QModelIndex &, bool))
Q_PRIVATE_SLOT(d, void _k_adaptItemsUpdate(qreal))
Q_PRIVATE_SLOT(d, void _k_itemAppearUpdate(qreal))
Q_PRIVATE_SLOT(d, void _k_itemDisappearUpdate(qreal))
Q_PRIVATE_SLOT(d, void _k_enableSmoothItemResizing())
Q_PRIVATE_SLOT(d, void _k_trashUpdated(KJob *))
Q_PRIVATE_SLOT(d, void _k_capacityBarFadeValueChanged())
Q_PRIVATE_SLOT(d, void _k_triggerDevicePolling())
class Private;
Private * const d;
friend class Private;
};
#endif