X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/862c090bf3be00b3016adfa5c7c0bd40ba409ca3..148282e2d856b47ceb191eeef4c834118c8cdffd:/src/treeviewsidebarpage.h diff --git a/src/treeviewsidebarpage.h b/src/treeviewsidebarpage.h index 045586bcc..3a37c8882 100644 --- a/src/treeviewsidebarpage.h +++ b/src/treeviewsidebarpage.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Peter Penz + * Copyright (C) 2006 by Peter Penz * * * * 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 * @@ -20,57 +20,116 @@ #ifndef TREEVIEWSIDEBARPAGE_H #define TREEVIEWSIDEBARPAGE_H +#include #include class KDirLister; -class KDirModel; -class KUrl; +class DolphinModel; +class DolphinSortFilterProxyModel; +class SidebarTreeView; class QModelIndex; -class QTreeView; /** - * @brief + * @brief Shows a tree view of the directories starting from + * the currently selected place. + * + * The tree view is always synchronized with the currently active view + * from the main window. */ 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; + + void setShowHiddenFiles(bool show); + bool showHiddenFiles() const; + void rename(const KFileItem& item); + +signals: + /** + * Is emitted if the an URL change is requested. + */ + void changeUrl(const KUrl& url, Qt::MouseButtons buttons); + + /** + * This signal is emitted when the sidebar requests a change in the + * current selection. The file-management view recieving this signal is + * not required to select all listed files, limiting the selection to + * e.g. the current folder. The new selection will be reported via the + * setSelection slot. + */ + void changeSelection(const KFileItemList& selection); + +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 updateSelection(const KUrl& url); + void updateActiveView(const QModelIndex& index); /** - * Updates the URL of the active view to the URL - * which is given by the item with the index \a index. + * Is emitted if URLs have been dropped + * to the index \a index. + */ + void dropUrls(const QModelIndex& index, QDropEvent* event); + + /** + * Expands the treeview to show the directory + * specified by \a index. + */ + void expandToDir(const QModelIndex& index); + + /** + * Assures that the leaf folder gets visible. */ - void updateViewUrl(const QModelIndex& index); + void scrollToLeaf(); + + void updateMouseButtons(); 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 loadTree(const KUrl& url); + + /** + * Selects the current leaf directory m_leafDir and assures + * that the directory is visible if the leaf has been set by + * TreeViewSidebarPage::setUrl(). */ - void connectToActiveView(); + void selectLeafDirectory(); private: + bool m_setLeafVisible; + Qt::MouseButtons m_mouseButtons; KDirLister* m_dirLister; - KDirModel* m_dirModel; - QTreeView* m_treeView; + DolphinModel* m_dolphinModel; + DolphinSortFilterProxyModel* m_proxyModel; + SidebarTreeView* m_treeView; + KUrl m_leafDir; }; -#endif // BOOKMARKSSIDEBARPAGE_H +#endif // TREEVIEWSIDEBARPAGE_H