]> cloud.milkyroute.net Git - dolphin.git/commitdiff
It seems some people cannot live without a tree view ;-) So Dolphin will provide...
authorPeter Penz <peter.penz19@gmail.com>
Fri, 2 Mar 2007 18:59:09 +0000 (18:59 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Fri, 2 Mar 2007 18:59:09 +0000 (18:59 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=638628

src/CMakeLists.txt
src/dolphinmainwindow.cpp
src/dolphinui.rc
src/infosidebarpage.h
src/sidebarpage.cpp
src/sidebarpage.h
src/treeviewsidebarpage.cpp [new file with mode: 0644]
src/treeviewsidebarpage.h [new file with mode: 0644]

index 2ed9374e82bf0ba99269f74a94c8a9a2b0bcc56f..6c53dca95c6efa11400d1c58fbd7fa3466d5fdee 100644 (file)
@@ -40,6 +40,7 @@ set(dolphin_SRCS
    sidebarpage.cpp
    statusbarspaceinfo.cpp
    statusbarmessagelabel.cpp
+   treeviewsidebarpage.cpp
    urlbutton.cpp
    urlnavigator.cpp
    urlnavigatorbutton.cpp
index 72b6703d83e4adb59c464de406e28d9065966503..f7b7246b47c45a20473a732eeed087a182f5f478 100644 (file)
 \r
 #include <assert.h>\r
 \r
+#include "bookmarkssidebarpage.h"\r
 #include "dolphinapplication.h"\r
 #include "dolphinnewmenu.h"\r
 #include "dolphinsettings.h"\r
 #include "dolphinsettingsdialog.h"\r
 #include "dolphinstatusbar.h"\r
-#include "dolphinapplication.h"\r
-#include "urlnavigator.h"\r
-#include "dolphinsettings.h"\r
-#include "bookmarkssidebarpage.h"\r
 #include "infosidebarpage.h"\r
-#include "dolphin_generalsettings.h"\r
-#include "viewpropertiesdialog.h"\r
-#include "viewproperties.h"\r
 #include "metadataloader.h"\r
 #include "mainwindowadaptor.h"\r
+#include "treeviewsidebarpage.h"\r
+#include "urlnavigator.h"\r
+#include "viewpropertiesdialog.h"\r
+#include "viewproperties.h"\r
+\r
+#include "dolphin_generalsettings.h"\r
 \r
 #include <kaction.h>\r
 #include <kactioncollection.h>\r
@@ -1191,6 +1191,10 @@ void DolphinMainWindow::setupActions()
 \r
 void DolphinMainWindow::setupDockWidgets()\r
 {\r
+    // TODO: there's a lot copy/paste code here. Provide a generic approach\r
+    // after the dock concept has been finalized.\r
+\r
+    // setup "Bookmarks"\r
     QDockWidget* shortcutsDock = new QDockWidget(i18n("Bookmarks"));\r
     shortcutsDock->setObjectName("bookmarksDock");\r
     shortcutsDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);\r
@@ -1201,6 +1205,7 @@ void DolphinMainWindow::setupDockWidgets()
 \r
     addDockWidget(Qt::LeftDockWidgetArea, shortcutsDock);\r
 \r
+    // setup "Information"\r
     QDockWidget* infoDock = new QDockWidget(i18n("Information"));\r
     infoDock->setObjectName("infoDock");\r
     infoDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);\r
@@ -1210,6 +1215,17 @@ void DolphinMainWindow::setupDockWidgets()
     actionCollection()->addAction("show_info_panel", infoDock->toggleViewAction());\r
 \r
     addDockWidget(Qt::RightDockWidgetArea, infoDock);\r
+\r
+    // setup "Tree View"\r
+    QDockWidget* treeViewDock = new QDockWidget(i18n("Folders")); // TODO: naming?\r
+    treeViewDock->setObjectName("treeViewDock");\r
+    treeViewDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);\r
+    treeViewDock->setWidget(new TreeViewSidebarPage(this));\r
+\r
+    treeViewDock->toggleViewAction()->setText(i18n("Show Folders Panel"));\r
+    actionCollection()->addAction("show_folders_panel", treeViewDock->toggleViewAction());\r
+\r
+    addDockWidget(Qt::LeftDockWidgetArea, treeViewDock);\r
 }\r
 \r
 void DolphinMainWindow::updateHistory()\r
index 601c9f859d1f8f07a3893e3ce9e2e660206aa7cc..d20cdcf1d4411d14a62472acb429c2205ea339dd 100644 (file)
@@ -43,6 +43,7 @@
     <text>Panels</text>
     <Action name="show_bookmarks_panel" />
     <Action name="show_info_panel" />
+    <Action name="show_folders_panel" />
    </Menu>
    <Menu name="navigation_bar">
     <text>Navigation Bar</text>
index 5509ed1f4d28dcae92d2aefcd62c54f76aa503f8..e60d4c3d376b778d030bfc50bd1f46c5ec684193 100644 (file)
@@ -17,8 +17,8 @@
  *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
  ***************************************************************************/
 
-#ifndef _INFOSIDEBARPAGE_H_
-#define _INFOSIDEBARPAGE_H_
+#ifndef INFOSIDEBARPAGE_H
+#define INFOSIDEBARPAGE_H
 
 #include <sidebarpage.h>
 
@@ -60,7 +60,7 @@ class InfoSidebarPage : public SidebarPage
        Q_OBJECT
 
 public:
-    explicit InfoSidebarPage(DolphinMainWindow* mainWindow, QWidget* parent=0);
+    explicit InfoSidebarPage(DolphinMainWindow* mainWindow, QWidget* parent = 0);
     virtual ~InfoSidebarPage();
 
 protected:
@@ -161,12 +161,12 @@ private:
      * Show the annotation of a file in the sidebar.
      */
     void showAnnotation(const KUrl& file);
-    
+
     /**
      * Show the annotations of multiple files in the sidebar.
      */
     void showAnnotations(const KUrl::List& files);
-    
+
     bool m_multipleSelection;
     bool m_pendingPreview;
     QTimer* m_timer;
@@ -218,4 +218,4 @@ private:
     int m_index;
 };
 
-#endif // _INFOSIDEBARPAGE_H_
+#endif // INFOSIDEBARPAGE_H
index 25b528f55db6bf48b327c9a541e014421eb8e72c..ce3b8cc341d15bd53595fcacb5f1f9305ffe9aa0 100644 (file)
@@ -20,7 +20,7 @@
 #include "sidebarpage.h"
 #include "dolphinmainwindow.h"
 
-SidebarPage::SidebarPage(DolphinMainWindow *mainWindow, QWidget* parent) :
+SidebarPage::SidebarPage(DolphinMainWindowmainWindow, QWidget* parent) :
     QWidget(parent),
     m_mainWindow(mainWindow)
 {
index b1e758824c80ef8d5f5027d68f5dfff59bf3a531..0399796b7018436080fe7697c7e798674df9c12c 100644 (file)
@@ -42,7 +42,7 @@ public:
 protected slots:
     /**
      * Is invoked whenever the active view from Dolphin has been changed.
-     * The active view can be retrieved by Dolphin::mainWin().activeView();
+     * The active view can be retrieved by mainWindow()->activeView();
      */
     virtual void activeViewChanged();
 
diff --git a/src/treeviewsidebarpage.cpp b/src/treeviewsidebarpage.cpp
new file mode 100644 (file)
index 0000000..f571466
--- /dev/null
@@ -0,0 +1,89 @@
+/***************************************************************************
+ *   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  *
+ *   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            *
+ ***************************************************************************/
+
+#include "treeviewsidebarpage.h"
+
+#include "dolphinmainwindow.h"
+#include "dolphinview.h"
+
+#include "kdirlister.h"
+#include "kdirmodel.h"
+
+#include <QTreeView>
+#include <QVBoxLayout>
+
+TreeViewSidebarPage::TreeViewSidebarPage(DolphinMainWindow* mainWindow,
+                                         QWidget* parent) :
+    SidebarPage(mainWindow, parent),
+    m_dirLister(0),
+    m_dirModel(0),
+    m_treeView(0)
+{
+    Q_ASSERT(mainWindow != 0);
+
+    m_dirLister = new KDirLister();
+    m_dirLister->setDirOnlyMode(true);
+    m_dirLister->setAutoUpdate(true);
+    m_dirLister->setMainWindow(this);
+    m_dirLister->setDelayedMimeTypes(true);
+    m_dirLister->setAutoErrorHandlingEnabled(false, this);
+
+    m_dirModel = new KDirModel();
+    m_dirModel->setDirLister(m_dirLister);
+
+    m_treeView = new QTreeView(this);
+    m_treeView->setModel(m_dirModel);
+
+    // hide all columns except of the 'Name' column
+    m_treeView->hideColumn(KDirModel::Size);
+    m_treeView->hideColumn(KDirModel::ModifiedTime);
+    m_treeView->hideColumn(KDirModel::Permissions);
+    m_treeView->hideColumn(KDirModel::Owner);
+    m_treeView->hideColumn(KDirModel::Group);
+
+    QVBoxLayout* layout = new QVBoxLayout(this);
+    layout->addWidget(m_treeView);
+
+    connectToActiveView();
+}
+
+TreeViewSidebarPage::~TreeViewSidebarPage()
+{
+    delete m_dirLister;
+    m_dirLister = 0;
+}
+
+void TreeViewSidebarPage::activeViewChanged()
+{
+    connectToActiveView();
+}
+
+void TreeViewSidebarPage::updatePosition(const KUrl& url)
+{
+}
+
+void TreeViewSidebarPage::connectToActiveView()
+{
+    DolphinView* view = mainWindow()->activeView();
+    m_dirLister->openUrl(view->url(), true);
+    connect(view, SIGNAL(urlChanged(const KUrl&)),
+            this, SLOT(updatePosition(const KUrl&)));
+}
+
+#include "treeviewsidebarpage.moc"
diff --git a/src/treeviewsidebarpage.h b/src/treeviewsidebarpage.h
new file mode 100644 (file)
index 0000000..1761d8c
--- /dev/null
@@ -0,0 +1,65 @@
+/***************************************************************************
+ *   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  *
+ *   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 TREEVIEWSIDEBARPAGE_H
+#define TREEVIEWSIDEBARPAGE_H
+
+#include <sidebarpage.h>
+
+class KDirLister;
+class KDirModel;
+class KUrl;
+class QTreeView;
+
+/**
+ * @brief
+ */
+class TreeViewSidebarPage : public SidebarPage
+{
+    Q_OBJECT
+
+public:
+    TreeViewSidebarPage(DolphinMainWindow* mainWindow, QWidget* parent = 0);
+    virtual ~TreeViewSidebarPage();
+
+protected:
+    /** @see SidebarPage::activeViewChanged() */
+    virtual void activeViewChanged();
+
+private slots:
+    /**
+     * Updates the current position inside the tree to
+     * \a url.
+     */
+    void updatePosition(const KUrl& url);
+
+private:
+    /**
+     * Connects to signals from the currently active Dolphin view to get
+     * informed about highlighting changes.
+     */
+    void connectToActiveView();
+
+private:
+    KDirLister* m_dirLister;
+    KDirModel* m_dirModel;
+    QTreeView* m_treeView;
+};
+
+#endif // BOOKMARKSSIDEBARPAGE_H