]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontroller.h
Let the user choose if folders are always shown first in the views of
[dolphin.git] / src / dolphincontroller.h
index 13a840a3806f848c5af9c2dba68f06bf1a5efb82..f6abbb14802c5d88eca92027c89a98840cb33340 100644 (file)
@@ -59,7 +59,9 @@ class QWidget;
  * - indicateDroppedUrls()
  * - indicateSortingChange()
  * - indicateSortOrderChanged()
+ * - indicateSortFoldersFirstChanged()
  * - triggerItem()
+ * - requestTab()
  * - handleKeyPressEvent()
  * - emitItemEntered()
  * - emitViewportEntered()
@@ -120,9 +122,11 @@ public:
      * should be invoked by the view implementation when a context
      * menu should be opened. The abstract Dolphin view itself
      * takes care itself to get the selected items depending from
-     * \a pos.
+     * \a pos. It is possible to define a custom list of actions for
+     * the context menu by \a customActions.
      */
-    void triggerContextMenuRequest(const QPoint& pos);
+    void triggerContextMenuRequest(const QPoint& pos,
+                                   const QList<QAction*>& customActions = QList<QAction*>());
 
     /**
      * Requests an activation of the view and emits the signal
@@ -161,6 +165,15 @@ public:
      */
     void indicateSortOrderChange(Qt::SortOrder order);
 
+    /**
+     * Informs the abstract Dolphin view about a change between separate sorting 
+     * (with folders first) and mixed sorting of files and folders done inside
+     * the view implementation. This method should be invoked by the view
+     * implementation (e. g. the details view uses this method in combination
+     * with the details header).
+     */
+    void indicateSortFoldersFirstChange(bool foldersFirst);
+
     /**
      * Informs the abstract Dolphin view about an additional information change
      * done inside the view implementation. This method should be invoked by the
@@ -178,14 +191,14 @@ public:
 
     /**
      * Sets the zoom level to \a level and emits the signal zoomLevelChanged().
-     * It must be assured that the used level is inside the range 
+     * It must be assured that the used level is inside the range
      * DolphinController::zoomLevelMinimum() and
      * DolphinController::zoomLevelMaximum().
      * Is invoked by the abstract Dolphin view.
      */
     void setZoomLevel(int level);
     int zoomLevel() const;
-    
+
     /**
      * Tells the view implementation to zoom out by emitting the signal zoomOut()
      * and is invoked by the abstract Dolphin view.
@@ -205,10 +218,20 @@ public:
      * nothing will be done.
      */
     void replaceUrlByClipboard();
-    
+
     /** Emits the signal hideToolTip(). */
     void emitHideToolTip();
 
+    /**
+     * Emits the signal itemTriggered() for the item \a item.
+     * The method can be used by the view implementations to
+     * trigger an item directly without mouse interaction.
+     * If the item triggering is done by the mouse, it is recommended
+     * to use QAbstractItemView::triggerItem(), as this will check
+     * the used mouse buttons to execute the correct action.
+     */
+    void emitItemTriggered(const KFileItem& item);
+
     /**
      * Returns the file item for the proxy index \a index of the view \a view.
      */
@@ -217,11 +240,21 @@ public:
 public slots:
     /**
      * Emits the signal itemTriggered() if the file item for the index \a index
-     * is not null. The method should be invoked by the
-     * controller parent whenever the user has triggered an item.
+     * is not null and the left mouse button has been pressed. If the item is
+     * null, the signal itemEntered() is emitted.
+     * The method should be invoked by the view implementations whenever the
+     * user has triggered an item with the mouse (see
+     * QAbstractItemView::clicked() or QAbstractItemView::doubleClicked()).
      */
     void triggerItem(const QModelIndex& index);
 
+    /**
+     * Emits the signal tabRequested(), if the file item for the index \a index
+     * represents a directory and when the middle mouse button has been pressed.
+     * The method should be invoked by the controller parent.
+     */
+    void requestTab(const QModelIndex& index);
+
     /**
      * Emits the signal itemEntered() if the file item for the index \a index
      * is not null. The method should be invoked by the controller parent
@@ -251,12 +284,14 @@ signals:
     /**
      * Is emitted if a context menu should be opened (see triggerContextMenuRequest()).
      * The abstract Dolphin view connects to this signal and will open the context menu.
-     * @param pos       Position relative to the view widget where the
-     *                  context menu should be opened. It is recommended
-     *                  to get the corresponding model index from
-     *                  this position.
+     * @param pos           Position relative to the view widget where the
+     *                      context menu should be opened. It is recommended
+     *                      to get the corresponding model index from
+     *                      this position.
+     * @param customActions List of actions that is added to the context menu when
+     *                      the menu is opened above the viewport.
      */
-    void requestContextMenu(const QPoint& pos);
+    void requestContextMenu(const QPoint& pos, QList<QAction*> customActions);
 
     /**
      * Is emitted if the view has been activated by e. g. a mouse click.
@@ -291,6 +326,14 @@ signals:
      */
     void sortOrderChanged(Qt::SortOrder order);
 
+    /**
+     * Is emitted if 'sort folders first' has been changed to \a foldersFirst
+     * by the view implementation (see indicateSortOrderChanged().
+     * The abstract Dolphin view connects
+     * to this signal to update its menu actions.
+     */
+    void sortFoldersFirstChanged(bool foldersFirst);
+
     /**
      * Is emitted if the additional info has been changed to \a info
      * by the view implementation. The abstract Dolphin view connects
@@ -338,7 +381,7 @@ signals:
      * must connect to this signal if it supports zooming.
      */
     void zoomLevelChanged(int level);
-    
+
     /**
      * Is emitted if the abstract view should hide an open tooltip.
      */
@@ -349,7 +392,7 @@ private slots:
 
 private:
     int m_zoomLevel;
-    Qt::MouseButtons m_mouseButtons; // TODO: this is a workaround until  Qt-issue 176832 has been fixed
+    static Qt::MouseButtons m_mouseButtons; // TODO: this is a workaround until  Qt-issue 176832 has been fixed
     KUrl m_url;
     DolphinView* m_dolphinView;
     QAbstractItemView* m_itemView;