]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinview.h
Restore the "Edit->Selection" menu from Konqueror 3 for file
[dolphin.git] / src / dolphinview.h
index 57bf5d2f9253dc569b928e46b76563895763976f..97054b7542c8f6fbde3965125d37d0dc078ec88b 100644 (file)
@@ -54,6 +54,7 @@ class KActionCollection;
 class KDirLister;
 class KUrl;
 class ViewProperties;
+class DolphinDetailsViewExpander;
 
 /**
  * @short Represents a view for the directory content.
@@ -180,24 +181,6 @@ public:
      */
     bool supportsCategorizedSorting() const;
 
-    /**
-     * Selects all items.
-     * @see DolphinView::selectedItems()
-     */
-    void selectAll();
-
-    /**
-     * Inverts the current selection: selected items get unselected,
-     * unselected items get selected.
-     * @see DolphinView::selectedItems()
-     */
-    void invertSelection();
-
-    /** Returns true, if at least one item is selected. */
-    bool hasSelection() const;
-
-    void clearSelection();
-
     /**
      * Returns the selected items. The list is empty if no item has been
      * selected.
@@ -218,6 +201,8 @@ public:
      */
     int selectedItemsCount() const;
 
+    QItemSelectionModel* selectionModel() const;
+
     /**
      * Sets the upper left position of the view content
      * to (x,y). The content of the view might be larger than the visible area
@@ -225,6 +210,13 @@ public:
      */
     void setContentsPosition(int x, int y);
 
+    /**
+     * Sets the upper left position of the view content
+     * to (x,y) after the directory loading is finished.
+     * This is useful when going back or forward in history.
+     */
+    void setRestoredContentsPosition(const QPoint& pos);
+
     /** Returns the upper left position of the view content. */
     QPoint contentsPosition() const;
 
@@ -356,6 +348,16 @@ public:
      */
     bool itemsExpandable() const;
 
+    /**
+     * Restores the view state (current item, contents position, details view expansion state)
+     */
+    void restoreState(QDataStream &stream);
+
+    /**
+     * Saves the view state (current item, contents position, details view expansion state)
+     */
+    void saveState(QDataStream &stream);
+
 public slots:
     /**
      * Changes the directory to \a url. If the current directory is equal to
@@ -363,6 +365,24 @@ public slots:
      */
     void setUrl(const KUrl& url);
 
+    /**
+     * Selects all items.
+     * @see DolphinView::selectedItems()
+     */
+    void selectAll();
+
+    /**
+     * Inverts the current selection: selected items get unselected,
+     * unselected items get selected.
+     * @see DolphinView::selectedItems()
+     */
+    void invertSelection();
+
+    /** Returns true, if at least one item is selected. */
+    bool hasSelection() const;
+
+    void clearSelection();
+
     /**
      * Request of a selection change. The view will do its best to accommodate
      * the request, but it is not guaranteed that all items in \a selection
@@ -389,7 +409,7 @@ public slots:
 
     /**
      * Copies all selected items to the clipboard and marks
-     * the items as cutted.
+     * the items as cut.
      */
     void cutSelectedItems();
 
@@ -559,7 +579,6 @@ signals:
 protected:
     /** @see QWidget::mouseReleaseEvent */
     virtual void mouseReleaseEvent(QMouseEvent* event);
-    virtual void wheelEvent(QWheelEvent* event);
     virtual bool eventFilter(QObject* watched, QEvent* event);
 
 private slots:
@@ -669,6 +688,12 @@ private slots:
      */
     void slotDirListerCompleted();
 
+    /**
+     * Invoked when the loading of the directory is finished.
+     * Restores the active item and the scroll position if possible.
+     */
+    void slotLoadingCompleted();
+
     /**
      * Is invoked when the KDirLister indicates refreshed items.
      */
@@ -694,6 +719,17 @@ private slots:
      */
     void restoreSelection();
 
+    /**
+     * Called when a redirection happens.
+     * Testcase: fish://localhost
+     */
+    void slotRedirection(const KUrl& oldUrl, const KUrl& newUrl);
+
+    /**
+     * Restores the contents position, if history information about the old position is available.
+     */
+    void restoreContentsPosition();
+
 private:
     void loadDirectory(const KUrl& url, bool reload = false);
 
@@ -779,6 +815,8 @@ private:
 
         bool supportsCategorizedSorting() const;
         bool itemsExpandable() const;
+        QSet<KUrl> expandedUrls() const;
+        const DolphinDetailsViewExpander* setExpandedUrls(const QSet<KUrl>& urlsToExpand);
 
         /**
          * Returns true, if a reloading of the items is required
@@ -797,6 +835,7 @@ private:
         DolphinColumnViewContainer* m_columnsContainer;
         DolphinSortFilterProxyModel* m_proxyModel;
         QAbstractItemView* m_dragSource;
+        QPointer<DolphinDetailsViewExpander> m_detailsViewExpander;
     };
 
     bool m_active : 1;
@@ -807,6 +846,7 @@ private:
     bool m_isContextMenuOpen : 1;   // TODO: workaround for Qt-issue 207192
     bool m_ignoreViewProperties : 1;
     bool m_assureVisibleCurrentIndex : 1;
+    bool m_expanderActive : 1;
 
     Mode m_mode;
 
@@ -821,6 +861,7 @@ private:
 
     KUrl m_rootUrl;
     KUrl m_activeItemUrl;
+    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