]> 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 5a20b1f9f45999808420f9a8a6f945eb2548b8dd..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 DolphinModel;
-class KUrl;
 class QAbstractProxyModel;
+class QFrame;
 class QTimeLine;
 
 /**
@@ -48,12 +51,10 @@ 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();
 
-public slots:
     /**
      * 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
@@ -61,6 +62,28 @@ public slots:
      */
     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.
@@ -100,31 +123,19 @@ private slots:
     void updateDecorationSize();
 
     /**
-     * Expands the directory model the the currently active URL.
-     * Used by DolphinColumnView::reload() after the directory
-     * lister has been loaded.
-     */
-    void expandToActiveUrl();
-
-    /**
-     * Triggers the reloading of columns after the model index
-     * \a index has been expanded. Used by DolphinModel::expandToActiveUrl().
+     * Updates the background color of the columns to respect
+     * the current activation state \a active.
      */
-    void triggerReloadColumns(const QModelIndex& index);
+    void updateColumnsBackground(bool active);
 
-    /**
-     * Adjusts the root index of all columns to represent the reloaded
-     * model. Used by DolphinModel::triggerReloadColumns().
-     */
-    void reloadColumns();
-
-    void triggerItem(const QModelIndex& index);
+    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
@@ -148,24 +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);
+
+    /** Removes all columns except of the root column. */
+    void removeAllColumns();
 
 private:
     DolphinController* m_controller;
-    bool m_restoreActiveColumnFocus;
-    bool m_initializedDirLister;
+    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;
 
-    DolphinModel* m_dolphinModel;
-    QAbstractProxyModel* m_proxyModel;
-
-    friend class ColumnWidget;
+    friend class DolphinColumnWidget;
 };
 
-ColumnWidget* DolphinColumnView::activeColumn() const
+inline DolphinColumnWidget* DolphinColumnView::activeColumn() const
 {
     return m_columns[m_index];
 }