X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/7c99bf5f6b6285c47dc4fa90d2bd2425287747d5..c8d8556950005dfd96ebdb41d2f43ad90356367c:/src/views/dolphinview.h diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index 085de332d..a6b8fe3ae 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -18,7 +18,6 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ - #ifndef DOLPHINVIEW_H #define DOLPHINVIEW_H @@ -45,9 +44,12 @@ class DolphinItemListContainer; class KAction; class KActionCollection; class KFileItemModel; +class KItemModelBase; class KUrl; class ToolTipManager; +class VersionControlObserver; class ViewProperties; +class QGraphicsSceneDragDropEvent; class QRegExp; /** @@ -150,14 +152,31 @@ public: void setMode(Mode mode); Mode mode() const; - /** See setPreviewsShown */ + /** + * Turns on the file preview for the all files of the current directory, + * if \a show is true. + * If the view properties should be remembered for each directory + * (GeneralSettings::globalViewProps() returns false), then the + * preview setting will be stored automatically. + */ + void setPreviewsShown(bool show); bool previewsShown() const; - /** See setShowHiddenFiles */ + /** + * Shows all hidden files of the current directory, + * if \a show is true. + * If the view properties should be remembered for each directory + * (GeneralSettings::globalViewProps() returns false), then the + * show hidden file setting will be stored automatically. + */ + void setHiddenFilesShown(bool show); bool hiddenFilesShown() const; - /** See setCategorizedSorting */ - bool categorizedSorting() const; + /** + * Turns on sorting by groups if \a enable is true. + */ + void setGroupedSorting(bool grouped); + bool groupedSorting() const; /** * Returns the items of the view. @@ -184,6 +203,12 @@ public: */ void markUrlsAsSelected(const QList& urls); + /** + * Marks the item indicated by \p url as the current item after the + * directory DolphinView::url() has been loaded. + */ + void markUrlAsCurrent(const KUrl& url); + /** * All items that match to the pattern \a pattern will get selected * if \a enabled is true and deselected if \a enabled is false. @@ -374,32 +399,8 @@ public slots: */ void pasteIntoFolder(); - /** - * Turns on the file preview for the all files of the current directory, - * if \a show is true. - * If the view properties should be remembered for each directory - * (GeneralSettings::globalViewProps() returns false), then the - * preview setting will be stored automatically. - */ - void setPreviewsShown(bool show); - - /** - * Shows all hidden files of the current directory, - * if \a show is true. - * If the view properties should be remembered for each directory - * (GeneralSettings::globalViewProps() returns false), then the - * show hidden file setting will be stored automatically. - */ - void setHiddenFilesShown(bool show); - - /** - * Summarizes all sorted items by their category \a categorized - * is true. - * If the view properties should be remembered for each directory - * (GeneralSettings::globalViewProps() returns false), then the - * categorized sorting setting will be stored automatically. - */ - void setCategorizedSorting(bool categorized); + /** Activates the view if the item list container gets focus. */ + virtual bool eventFilter(QObject* watched, QEvent* event); signals: /** @@ -444,8 +445,8 @@ signals: /** Is emitted if the 'show hidden files' property has been changed. */ void hiddenFilesShownChanged(bool shown); - /** Is emitted if the 'categorized sorting' property has been changed. */ - void categorizedSortingChanged(bool sortCategorized); + /** Is emitted if the 'grouped sorting' property has been changed. */ + void groupedSortingChanged(bool groupedSorting); /** Is emitted if the sorting by name, size or date has been changed. */ void sortingChanged(DolphinView::Sorting sorting); @@ -480,7 +481,8 @@ signals: * for the URL should be shown and the custom actions \a customActions * will be added. */ - void requestContextMenu(const KFileItem& item, + void requestContextMenu(const QPoint& pos, + const KFileItem& item, const KUrl& url, const QList& customActions); @@ -542,8 +544,7 @@ signals: void writeStateChanged(bool isFolderWritable); protected: - virtual void mouseReleaseEvent(QMouseEvent* event); - virtual void contextMenuEvent(QContextMenuEvent* event); + /** Changes the zoom level if Control is pressed during a wheel event. */ virtual void wheelEvent(QWheelEvent* event); private slots: @@ -554,11 +555,15 @@ private slots: void activate(); void slotItemActivated(int index); + void slotItemsActivated(const QSet& indexes); void slotItemMiddleClicked(int index); - void slotContextMenuRequested(int index, const QPointF& pos); - void slotItemExpansionToggleClicked(int index); + void slotItemContextMenuRequested(int index, const QPointF& pos); + void slotViewContextMenuRequested(const QPointF& pos); + void slotHeaderContextMenuRequested(const QPointF& pos); void slotItemHovered(int index); void slotItemUnhovered(int index); + void slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event); + void slotModelChanged(KItemModelBase* current, KItemModelBase* previous); /** * Emits the signal \a selectionChanged() with a small delay. This is @@ -575,13 +580,6 @@ private slots: */ void emitSelectionChangedSignal(); - /** - * Opens the context menu on position \a pos. The position - * is used to check whether the context menu is related to an - * item or to the viewport. - */ - void openContextMenu(const QPoint& pos, const QList& customActions); - /** * Drops dragged URLs to the destination path \a destPath. If * the URLs are dropped above an item inside the destination path, @@ -636,16 +634,30 @@ private slots: void slotDirListerStarted(const KUrl& url); /** - * Invoked when the directory lister has completed the loading of - * items. Assures that pasted items and renamed items get seleced. + * Invoked when the file item model indicates that the directory lister has completed the loading + * of items, and that expanded folders have been restored (if the view mode is 'Details', and the + * view state is restored after navigating back or forward in history). Assures that pasted items + * and renamed items get seleced. */ - void slotDirListerCompleted(); + void slotLoadingCompleted(); /** * Is invoked when the KDirLister indicates refreshed items. */ void slotRefreshItems(); + /** + * Is invoked when the sort order has been changed by the user by clicking + * on a header item. The view properties of the directory will get updated. + */ + void slotSortOrderChangedByHeader(Qt::SortOrder current, Qt::SortOrder previous); + + /** + * Is invoked when the sort role has been changed by the user by clicking + * on a header item. The view properties of the directory will get updated. + */ + void slotSortRoleChangedByHeader(const QByteArray& current, const QByteArray& previous); + /** * Observes the item with the URL \a url. As soon as the directory * model indicates that the item is available, the item will @@ -673,6 +685,8 @@ private slots: */ void updateViewState(); + void hideToolTip(); + //void slotUrlChangeRequested(const KUrl& url); private: @@ -694,14 +708,6 @@ private: */ void pasteToUrl(const KUrl& url); - /** - * Checks whether the current item view has the same zoom level - * as \a oldZoomLevel. If this is not the case, the zoom level - * of the controller is updated and a zoomLevelChanged() signal - * is emitted. - */ - void updateZoomLevel(int oldZoomLevel); - /** * Returns a list of URLs for all selected items. The list is * simplified, so that when the URLs are part of different tree @@ -730,6 +736,13 @@ private: void updateWritableState(); QByteArray sortRoleForSorting(Sorting sorting) const; + Sorting sortingForSortRole(const QByteArray& sortRole) const; + + /** + * Returns the text for the filesize by converting it to the best fitting + * unit. + */ + static QString fileSizeText(KIO::filesize_t fileSize); private: bool m_active : 1; @@ -750,10 +763,13 @@ private: QTimer* m_selectionChangedTimer; - int m_currentItemIndex; + KUrl m_currentItemUrl; // Used for making the view to remember the current URL after F5 QPoint m_restoredContentsPosition; KUrl m_createdItemUrl; // URL for a new item that got created by the "Create New..." menu - KFileItemList m_selectedItems; // this is used for making the View to remember selections after F5 + + QList m_selectedUrls; // Used for making the view to remember selections after F5 + + VersionControlObserver* m_versionControlObserver; // For unit tests friend class TestBase;