]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/treeviewsidebarpage.h
SVN_SILENT: adjusted position of comment
[dolphin.git] / src / treeviewsidebarpage.h
index 9810908558e55140f29a2ed2d7e251dff78a6fda..978323f409ea4db16fac76bd5cee5eb33e9a29d6 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at>
+ *   Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at>                  *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -24,8 +24,7 @@
 #include <sidebarpage.h>
 
 class KDirLister;
-class KDirModel;
-class KUrl;
+class DolphinModel;
 
 class DolphinSortFilterProxyModel;
 class SidebarTreeView;
@@ -33,7 +32,7 @@ class QModelIndex;
 
 /**
  * @brief Shows a tree view of the directories starting from
- *        the currently selected bookmark.
+ *        the currently selected place.
  *
  * The tree view is always synchronized with the currently active view
  * from the main window.
@@ -43,49 +42,78 @@ class TreeViewSidebarPage : public SidebarPage
     Q_OBJECT
 
 public:
-    TreeViewSidebarPage(DolphinMainWindow* mainWindow, QWidget* parent = 0);
+    TreeViewSidebarPage(QWidget* parent = 0);
     virtual ~TreeViewSidebarPage();
 
-protected:
-    /** @see SidebarPage::activeViewChanged() */
-    virtual void activeViewChanged();
+    /** @see QWidget::sizeHint() */
+    virtual QSize sizeHint() const;
 
+public slots:
+    /**
+     * Changes the current selection inside the tree to \a url.
+     */
+    virtual void setUrl(const KUrl& url);
+
+protected:
     /** @see QWidget::showEvent() */
     virtual void showEvent(QShowEvent* event);
 
+    /** @see QWidget::contextMenuEvent() */
+    virtual void contextMenuEvent(QContextMenuEvent* event);
+
 private slots:
     /**
-     * Updates the current selection inside the tree to
-     * \a url.
+     * Updates the active view to the URL
+     * which is given by the item with the index \a index.
+     */
+    void updateActiveView(const QModelIndex& index);
+
+    /**
+     * Is emitted if the URLs \a urls have been dropped
+     * to the index \a index. */
+    void dropUrls(const KUrl::List& urls,
+                  const QModelIndex& index);
+
+    /**
+     * Invokes expandToLeafDir() asynchronously (the expanding
+     * may not be done in the context of this slot).
      */
-    void updateSelection(const KUrl& url);
+    void triggerExpanding();
 
     /**
-     * Expands the tree in a way that the item with the URL m_selectedUrl
-     * gets visible. Is called by TreeViewSidebarPage::updateSelection()
-     * if the dir lister has been completed.
+     * Invokes loadSubTree() asynchronously (the loading
+     * may not be done in the context of this slot).
      */
-    void expandSelectionParent();
+    void triggerLoadSubTree();
 
     /**
-     * Updates the active view to the URL
-     * which is given by the item with the index \a index.
+     * Expands all directories to make m_leafDir visible and
+     * adjusts the selection.
      */
-    void updateActiveView(const QModelIndex& index);
+    void expandToLeafDir();
+
+    /**
+     * Loads the sub tree to make m_leafDir visible. Is invoked
+     * indirectly by loadTree() after the directory lister has
+     * finished loading the root items.
+     */
+    void loadSubTree();
 
 private:
     /**
-     * Connects to signals from the currently active Dolphin view to get
-     * informed about highlighting changes.
+     * Initializes the base URL of the tree and expands all
+     * directories until \a url.
+     * @param url  URL of the leaf directory that should get expanded.
      */
-    void connectToActiveView();
+    void loadTree(const KUrl& url);
 
 private:
+    bool m_dirListerCompleted;
     KDirLister* m_dirLister;
-    KDirModel* m_dirModel;
+    DolphinModel* m_dolphinModel;
     DolphinSortFilterProxyModel* m_proxyModel;
     SidebarTreeView* m_treeView;
-    KUrl m_selectedUrl;
+    KUrl m_leafDir;
 };
 
-#endif // BOOKMARKSSIDEBARPAGE_H
+#endif // TREEVIEWSIDEBARPAGE_H