#include <sidebarpage.h>
class KDirLister;
-class KDirModel;
+class DolphinModel;
class DolphinSortFilterProxyModel;
class SidebarTreeView;
/**
* @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.
Q_OBJECT
public:
- TreeViewSidebarPage(DolphinMainWindow* mainWindow, QWidget* parent = 0);
+ TreeViewSidebarPage(QWidget* parent = 0);
virtual ~TreeViewSidebarPage();
-protected:
- /** @see SidebarPage::activeViewChanged() */
- virtual void activeViewChanged();
-
- /** @see QWidget::showEvent() */
- virtual void showEvent(QShowEvent* event);
+ /** @see QWidget::sizeHint() */
+ virtual QSize sizeHint() const;
-private slots:
+public slots:
/**
- * Updates the current selection inside the tree to
- * \a url.
+ * Changes the current selection inside the tree to \a url.
*/
- void updateSelection(const KUrl& url);
+ virtual void setUrl(const KUrl& url);
- /**
- * 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.
- */
- void expandSelectionParent();
+protected:
+ /** @see QWidget::showEvent() */
+ virtual void showEvent(QShowEvent* event);
+
+ /** @see QWidget::contextMenuEvent() */
+ virtual void contextMenuEvent(QContextMenuEvent* event);
+private slots:
/**
* Updates the active view to the URL
* which is given by the item with 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 triggerExpanding();
+
+ /**
+ * Invokes loadSubTree() asynchronously (the loading
+ * may not be done in the context of this slot).
+ */
+ void triggerLoadSubTree();
+
+ /**
+ * Expands all directories to make m_leafDir visible and
+ * adjusts the selection.
+ */
+ 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 // TREEVIEWSIDEBARPAGE_H