]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincolumnview.h
Simplify DolphinController: don't remember the show-preview state in the controller...
[dolphin.git] / src / dolphincolumnview.h
index 8c61aae6cf605cb5b3ea2a4acf1490f39834e59c..af393ce8185273048367e74f30bef47522140350 100644 (file)
 #ifndef DOLPHINCOLUMNVIEW_H
 #define DOLPHINCOLUMNVIEW_H
 
+#include <kurl.h>
+
 #include <QAbstractItemView>
 #include <QList>
+#include <QString>
 #include <QStyleOption>
 
-class ColumnWidget;
+class DolphinColumnWidget;
 class DolphinController;
-class KDirLister;
-class KUrl;
+class DolphinModel;
+class QAbstractProxyModel;
+class QFrame;
 class QTimeLine;
 
 /**
@@ -47,7 +51,47 @@ public:
     virtual QModelIndex indexAt(const QPoint& point) const;
     virtual void scrollTo(const QModelIndex& index, ScrollHint hint = EnsureVisible);
     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
+     * it is not enough to reload the KDirLister, instead this method must be explicitly
+     * invoked.
+     */
+    void reload();
+
+    /**
+     * 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;
+
+public slots:
+    /**
+     * 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);
+
+    /** @see QAbstractItemView::selectAll() */
+    virtual void selectAll();
 
 protected:
     virtual bool isIndexHidden(const QModelIndex& index) const;
@@ -63,7 +107,6 @@ protected:
 private slots:
     void zoomIn();
     void zoomOut();
-    void triggerItem(const QModelIndex& index);
 
     /**
      * Moves the content of the columns view to represent
@@ -71,12 +114,6 @@ private slots:
      */
     void moveContentHorizontally(int x);
 
-    /**
-     * 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);
-
     /**
      * Updates the size of the decoration dependent on the
      * icon size of the ColumnModeSettings. The controller
@@ -85,11 +122,27 @@ private slots:
      */
     void updateDecorationSize();
 
+    /**
+     * Updates the background color of the columns to respect
+     * the current activation state \a active.
+     */
+    void updateColumnsBackground(bool active);
+
+    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
+     * the new column indicated by \a index. m_index represents
+     * the active column afterwards. Also the URL of the navigator
+     * will be adjusted to reflect the column URL.
+     */
     void setActiveColumnIndex(int index);
 
     void layoutColumns();
@@ -106,25 +159,25 @@ private:
      * that the columns gets fully visible by adjusting the horizontal
      * position of the content.
      */
-    void requestActivation(ColumnWidget* column);
+    void requestActivation(DolphinColumnWidget* column);
 
-    /**
-     * Deletes all inactive child columns, that are a child of
-     * the currently active column.
-     */
-    void deleteInactiveChildColumns();
+    /** Removes all columns except of the root column. */
+    void removeAllColumns();
 
 private:
     DolphinController* m_controller;
+    bool m_active;
     int m_index;
     int m_contentX;
-    QList<ColumnWidget*> m_columns;
+    QList<DolphinColumnWidget*> m_columns;
+    QFrame* m_emptyViewport;
     QTimeLine* m_animation;
+    QString m_nameFilter;
 
-    friend class ColumnWidget;
+    friend class DolphinColumnWidget;
 };
 
-ColumnWidget* DolphinColumnView::activeColumn() const
+inline DolphinColumnWidget* DolphinColumnView::activeColumn() const
 {
     return m_columns[m_index];
 }