]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinview.h
Fix style-issues in items when not using Oxygen
[dolphin.git] / src / views / dolphinview.h
index 085de332d5f5173849eba75855c25196409dff71..a6b8fe3aee1e09653d87e90b9f0e0d2fe61c1a8e 100644 (file)
@@ -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<KUrl>& 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<QAction*>& 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<int>& 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<QAction*>& 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<KUrl> m_selectedUrls; // Used for making the view to remember selections after F5
+    
+    VersionControlObserver* m_versionControlObserver;
 
     // For unit tests
     friend class TestBase;