X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/772a55aafc2e558302d042eb65026b9b50302ccc..b1c9b5126d:/src/dolphincolumnview.h diff --git a/src/dolphincolumnview.h b/src/dolphincolumnview.h index 2b393e466..caa54eab8 100644 --- a/src/dolphincolumnview.h +++ b/src/dolphincolumnview.h @@ -20,15 +20,20 @@ #ifndef DOLPHINCOLUMNVIEW_H #define DOLPHINCOLUMNVIEW_H +#include "dolphinview.h" + +#include + #include #include +#include #include -class ColumnWidget; +class DolphinColumnWidget; class DolphinController; class DolphinModel; -class KUrl; class QAbstractProxyModel; +class QFrame; class QTimeLine; /** @@ -45,10 +50,23 @@ public: explicit DolphinColumnView(QWidget* parent, DolphinController* controller); virtual ~DolphinColumnView(); + /** @see QAbstractItemView::indexAt() */ virtual QModelIndex indexAt(const QPoint& point) const; + + /** + * Returns the item on the position \a pos. The KFileItem instance + * is null if no item is below the position. + */ + KFileItem itemAt(const QPoint& point) const; + + /** @see QAbstractItemView::scrollTo() */ virtual void scrollTo(const QModelIndex& index, ScrollHint hint = EnsureVisible); + + /** @see QAbstractItemView::visualRect() */ virtual QRect visualRect(const QModelIndex& index) const; - virtual void setModel(QAbstractItemModel* model); + + /** Inverts the selection of the currently active column. */ + void invertSelection(); /** * Reloads the content of all columns. In opposite to non-hierarchical views @@ -57,13 +75,61 @@ public: */ void reload(); -public slots: + /** + * Adjusts the root URL of the first column and removes all + * other columns. + */ + void setRootUrl(const KUrl& url); + + /** Returns the URL of the first column. */ + KUrl rootUrl() const; + + /** + * Filters the currently shown items by \a nameFilter. All items + * which contain the given filter string will be shown. + */ + void setNameFilter(const QString& nameFilter); + + /** + * Returns the currently used name filter. All items + * which contain the name filter will be shown. + */ + QString nameFilter() const; + /** * Shows the column which represents the URL \a url. If the column * is already shown, it gets activated, otherwise it will be created. */ void showColumn(const KUrl& url); + /** + * Does an inline editing for the item \a item + * inside the active column. + */ + void editItem(const KFileItem& item); + + /** + * Returns the selected items of the active column. + */ + KFileItemList selectedItems() const; + + /** + * Returns the MIME data for the selected items + * of the active column. + */ + QMimeData* selectionMimeData() const; + +public slots: + /** @see QAbstractItemView::selectAll() */ + virtual void selectAll(); + +signals: + /** + * Requests that the given column be deleted at the discretion + * of the receiver of the signal. + */ + void requestColumnDeletion(QAbstractItemView* column); + protected: virtual bool isIndexHidden(const QModelIndex& index) const; virtual QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers); @@ -74,11 +140,10 @@ protected: virtual void mousePressEvent(QMouseEvent* event); virtual void resizeEvent(QResizeEvent* event); + virtual void wheelEvent(QWheelEvent* event); private slots: - void zoomIn(); - void zoomOut(); - void triggerItem(const QModelIndex& index); + void setZoomLevel(int level); /** * Moves the content of the columns view to represent @@ -92,32 +157,21 @@ private slots: * will get informed about possible zoom in/zoom out * operations. */ - void updateDecorationSize(); + void updateDecorationSize(bool showPreview); /** - * Expands the directory model the the currently active URL. - * Used by DolphinColumnView::reload() after the directory - * lister has been loaded. + * Updates the background color of the columns to respect + * the current activation state \a active. */ - void expandToActiveUrl(); + void updateColumnsBackground(bool active); - /** - * Triggers the reloading of columns after the model index - * \a index has been expanded. Used by DolphinModel::expandToActiveUrl(). - */ - void triggerReloadColumns(const QModelIndex& index); - - /** - * Adjusts the root index of all columns to represent the reloaded - * model. Used by DolphinModel::triggerReloadColumns(). - */ - void reloadColumns(); + void slotSortingChanged(DolphinView::Sorting sorting); + void slotSortOrderChanged(Qt::SortOrder order); + void slotShowHiddenFilesChanged(); + void slotShowPreviewChanged(); private: - bool isZoomInPossible() const; - bool isZoomOutPossible() const; - - inline ColumnWidget* activeColumn() const; + DolphinColumnWidget* activeColumn() const; /** * Deactivates the currently active column and activates @@ -141,29 +195,37 @@ private: * that the columns gets fully visible by adjusting the horizontal * position of the content. */ - void requestActivation(ColumnWidget* column); + void requestActivation(DolphinColumnWidget* column); + + /** Removes all columns except of the root column. */ + void removeAllColumns(); /** - * Deletes all inactive child columns, that are a child of - * the currently active column. + * Returns the position of the point \a point relative to the column + * \a column. */ - void deleteInactiveChildColumns(); + QPoint columnPosition(DolphinColumnWidget* column, const QPoint& point) const; + + /** + * Deletes the column. If the itemview of the controller is set to the column, + * the controllers itemview is set to 0. + */ + void deleteColumn(DolphinColumnWidget* column); private: DolphinController* m_controller; - bool m_restoreActiveColumnFocus; + bool m_active; int m_index; int m_contentX; - QList m_columns; + QList m_columns; + QFrame* m_emptyViewport; QTimeLine* m_animation; + QString m_nameFilter; - DolphinModel* m_dolphinModel; - QAbstractProxyModel* m_proxyModel; - - friend class ColumnWidget; + friend class DolphinColumnWidget; }; -ColumnWidget* DolphinColumnView::activeColumn() const +inline DolphinColumnWidget* DolphinColumnView::activeColumn() const { return m_columns[m_index]; }