┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/folders/folderspanel.h
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2009-01-14 20:14:36 +0000
committerPeter Penz <[email protected]>2009-01-14 20:14:36 +0000
commitf37ecd6ecfab9bc1d2929504b4f6e4363f8137b9 (patch)
tree22489a861bec9c228b87a8c714b8850ec05b3aa0 /src/panels/folders/folderspanel.h
parent307285e9635a4bf584d6e5d7478876b90ef870f0 (diff)
Cleanup panel related class names: The terms "sidebar"/"sidebarpage" are relicts from the KDE 3 version of Dolphin and are called "Panels" in the KDE 4 version of Dolphin. Yes, renaming classes may take more than 1 year ;-)
svn path=/trunk/KDE/kdebase/apps/; revision=911089
Diffstat (limited to 'src/panels/folders/folderspanel.h')
-rw-r--r--src/panels/folders/folderspanel.h135
1 files changed, 135 insertions, 0 deletions
diff --git a/src/panels/folders/folderspanel.h b/src/panels/folders/folderspanel.h
new file mode 100644
index 000000000..90f506fd0
--- /dev/null
+++ b/src/panels/folders/folderspanel.h
@@ -0,0 +1,135 @@
+/***************************************************************************
+ * Copyright (C) 2006 by Peter Penz <[email protected]> *
+ * *
+ * 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 *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef FOLDERSPANEL_H
+#define FOLDERSPANEL_H
+
+#include <kurl.h>
+#include <panels/panel.h>
+
+class KDirLister;
+class DolphinModel;
+
+class DolphinSortFilterProxyModel;
+class PanelTreeView;
+class QModelIndex;
+
+/**
+ * @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 FoldersPanel : public Panel
+{
+ Q_OBJECT
+
+public:
+ FoldersPanel(QWidget* parent = 0);
+ virtual ~FoldersPanel();
+
+ /** @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 panel 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 active view to the URL
+ * which is given by the item with the index \a index.
+ */
+ void updateActiveView(const QModelIndex& 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 scrollToLeaf();
+
+ void updateMouseButtons();
+
+private:
+ /**
+ * 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
+ * FoldersPanel::setUrl().
+ */
+ void selectLeafDirectory();
+
+private:
+ bool m_setLeafVisible;
+ Qt::MouseButtons m_mouseButtons;
+ KDirLister* m_dirLister;
+ DolphinModel* m_dolphinModel;
+ DolphinSortFilterProxyModel* m_proxyModel;
+ PanelTreeView* m_treeView;
+ KUrl m_leafDir;
+};
+
+#endif // FOLDERSPANEL_H