]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinmainwindow.cpp
added settings module for 'Navigation', that can be used by Konqueror
[dolphin.git] / src / dolphinmainwindow.cpp
index 22d2f09fc338fa7ea691c054f2f62f226e0dff1b..c0212a6f123b7b1df6567939223cbce878d1df94 100644 (file)
 #include <config-nepomuk.h>
 
 #include "dolphinapplication.h"
-#include "dolphinfileplacesview.h"
 #include "dolphinnewmenu.h"
-#include "dolphinsettings.h"
-#include "dolphinsettingsdialog.h"
+#include "settings/dolphinsettings.h"
+#include "settings/dolphinsettingsdialog.h"
 #include "dolphinstatusbar.h"
 #include "dolphinviewcontainer.h"
-#include "infosidebarpage.h"
-#include "metadatawidget.h"
+#include "panels/folders/folderspanel.h"
+#include "panels/places/placespanel.h"
+#include "panels/information/informationpanel.h"
+#include "panels/information/metadatawidget.h"
 #include "mainwindowadaptor.h"
-#include "treeviewsidebarpage.h"
 #include "viewproperties.h"
 
 #ifndef Q_OS_WIN
-#include "terminalsidebarpage.h"
+#include "panels/terminal/terminalpanel.h"
 #endif
 
 #include "dolphin_generalsettings.h"
@@ -93,7 +93,8 @@ DolphinMainWindow::DolphinMainWindow(int id) :
     m_id(id),
     m_tabIndex(0),
     m_viewTab(),
-    m_actionHandler(0)
+    m_actionHandler(0),
+    m_settingsDialog(0)
 {
     setObjectName("Dolphin#");
 
@@ -701,8 +702,14 @@ void DolphinMainWindow::toggleShowMenuBar()
 
 void DolphinMainWindow::editSettings()
 {
-    DolphinSettingsDialog dialog(this);
-    dialog.exec();
+    if (m_settingsDialog == 0) {
+        const KUrl& url = activeViewContainer()->url();
+        m_settingsDialog = new DolphinSettingsDialog(url, this);
+        m_settingsDialog->setAttribute(Qt::WA_DeleteOnClose);
+        m_settingsDialog->show();
+    } else {
+        m_settingsDialog->raise();
+    }
 }
 
 void DolphinMainWindow::setActiveTab(int index)
@@ -975,11 +982,12 @@ void DolphinMainWindow::setupActions()
     newTab->setShortcut(KShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_N, Qt::CTRL | Qt::Key_T));
     connect(newTab, SIGNAL(triggered()), this, SLOT(openNewTab()));
 
-    QAction* closeTab = new QAction(KIcon("tab-close"), i18nc("@action:inmenu File", "Close Tab"), this);
+    QAction* closeTab = actionCollection()->addAction("close_tab");
+    closeTab->setIcon(KIcon("tab-close"));
+    closeTab->setText(i18nc("@action:inmenu File", "Close Tab"));
     closeTab->setShortcut(Qt::CTRL | Qt::Key_W);
     closeTab->setEnabled(false);
     connect(closeTab, SIGNAL(triggered()), this, SLOT(closeTab()));
-    actionCollection()->addAction("close_tab", closeTab);
 
     KStandardAction::quit(this, SLOT(quit()), actionCollection());
 
@@ -1073,13 +1081,13 @@ void DolphinMainWindow::setupActions()
     KStandardAction::preferences(this, SLOT(editSettings()), actionCollection());
 
     // not in menu actions
-    KAction* activateNextTab = actionCollection()->addAction("activatenexttab");
+    KAction* activateNextTab = actionCollection()->addAction("activate_next_tab");
     activateNextTab->setText(i18nc("@action:inmenu", "Activate Next Tab"));
     connect(activateNextTab, SIGNAL(triggered()), SLOT(activateNextTab()));
     activateNextTab->setShortcuts(QApplication::isRightToLeft() ? KStandardShortcut::tabPrev() :
                                                                   KStandardShortcut::tabNext());
 
-    KAction* activatePrevTab = actionCollection()->addAction("activateprevtab");
+    KAction* activatePrevTab = actionCollection()->addAction("activate_prev_tab");
     activatePrevTab->setText(i18nc("@action:inmenu", "Activate Previous Tab"));
     connect(activatePrevTab, SIGNAL(triggered()), SLOT(activatePrevTab()));
     activatePrevTab->setShortcuts(QApplication::isRightToLeft() ? KStandardShortcut::tabNext() :
@@ -1103,38 +1111,42 @@ void DolphinMainWindow::setupDockWidgets()
     QDockWidget* infoDock = new QDockWidget(i18nc("@title:window", "Information"));
     infoDock->setObjectName("infoDock");
     infoDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
-    SidebarPage* infoWidget = new InfoSidebarPage(infoDock);
-    infoDock->setWidget(infoWidget);
+    Panel* infoPanel = new InformationPanel(infoDock);
+    infoDock->setWidget(infoPanel);
 
-    infoDock->toggleViewAction()->setText(i18nc("@title:window", "Information"));
-    infoDock->toggleViewAction()->setShortcut(Qt::Key_F11);
+    QAction* infoAction = infoDock->toggleViewAction();
+    infoAction->setText(i18nc("@title:window", "Information"));
+    infoAction->setShortcut(Qt::Key_F11);
+    infoAction->setIcon(KIcon("dialog-information"));
     actionCollection()->addAction("show_info_panel", infoDock->toggleViewAction());
 
     addDockWidget(Qt::RightDockWidgetArea, infoDock);
     connect(this, SIGNAL(urlChanged(KUrl)),
-            infoWidget, SLOT(setUrl(KUrl)));
+            infoPanel, SLOT(setUrl(KUrl)));
     connect(this, SIGNAL(selectionChanged(KFileItemList)),
-            infoWidget, SLOT(setSelection(KFileItemList)));
+            infoPanel, SLOT(setSelection(KFileItemList)));
     connect(this, SIGNAL(requestItemInfo(KFileItem)),
-            infoWidget, SLOT(requestDelayedItemInfo(KFileItem)));
-
-    // setup "Tree View"
-    QDockWidget* treeViewDock = new QDockWidget(i18nc("@title:window", "Folders"));
-    treeViewDock->setObjectName("treeViewDock");
-    treeViewDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
-    TreeViewSidebarPage* treeWidget = new TreeViewSidebarPage(treeViewDock);
-    treeViewDock->setWidget(treeWidget);
-
-    treeViewDock->toggleViewAction()->setText(i18nc("@title:window", "Folders"));
-    treeViewDock->toggleViewAction()->setShortcut(Qt::Key_F7);
-    actionCollection()->addAction("show_folders_panel", treeViewDock->toggleViewAction());
-
-    addDockWidget(Qt::LeftDockWidgetArea, treeViewDock);
+            infoPanel, SLOT(requestDelayedItemInfo(KFileItem)));
+
+    // setup "Folders"
+    QDockWidget* foldersDock = new QDockWidget(i18nc("@title:window", "Folders"));
+    foldersDock->setObjectName("foldersDock");
+    foldersDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+    FoldersPanel* foldersPanel = new FoldersPanel(foldersDock);
+    foldersDock->setWidget(foldersPanel);
+
+    QAction* foldersAction = foldersDock->toggleViewAction();
+    foldersAction->setText(i18nc("@title:window", "Folders"));
+    foldersAction->setShortcut(Qt::Key_F7);
+    foldersAction->setIcon(KIcon("folder"));
+    actionCollection()->addAction("show_folders_panel", foldersDock->toggleViewAction());
+
+    addDockWidget(Qt::LeftDockWidgetArea, foldersDock);
     connect(this, SIGNAL(urlChanged(KUrl)),
-            treeWidget, SLOT(setUrl(KUrl)));
-    connect(treeWidget, SIGNAL(changeUrl(KUrl, Qt::MouseButtons)),
+            foldersPanel, SLOT(setUrl(KUrl)));
+    connect(foldersPanel, SIGNAL(changeUrl(KUrl, Qt::MouseButtons)),
             this, SLOT(handlePlacesClick(KUrl, Qt::MouseButtons)));
-    connect(treeWidget, SIGNAL(changeSelection(KFileItemList)),
+    connect(foldersPanel, SIGNAL(changeSelection(KFileItemList)),
             this, SLOT(changeSelection(KFileItemList)));
 
     // setup "Terminal"
@@ -1142,23 +1154,25 @@ void DolphinMainWindow::setupDockWidgets()
     QDockWidget* terminalDock = new QDockWidget(i18nc("@title:window Shell terminal", "Terminal"));
     terminalDock->setObjectName("terminalDock");
     terminalDock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
-    SidebarPage* terminalWidget = new TerminalSidebarPage(terminalDock);
-    terminalDock->setWidget(terminalWidget);
+    Panel* terminalPanel = new TerminalPanel(terminalDock);
+    terminalDock->setWidget(terminalPanel);
 
-    connect(terminalWidget, SIGNAL(hideTerminalSidebarPage()), terminalDock, SLOT(hide()));
+    connect(terminalPanel, SIGNAL(hideTerminalPanel()), terminalDock, SLOT(hide()));
 
-    terminalDock->toggleViewAction()->setText(i18nc("@title:window Shell terminal", "Terminal"));
-    terminalDock->toggleViewAction()->setShortcut(Qt::Key_F4);
+    QAction* terminalAction = terminalDock->toggleViewAction();
+    terminalAction->setText(i18nc("@title:window Shell terminal", "Terminal"));
+    terminalAction->setShortcut(Qt::Key_F4);
+    terminalAction->setIcon(KIcon("terminal"));
     actionCollection()->addAction("show_terminal_panel", terminalDock->toggleViewAction());
 
     addDockWidget(Qt::BottomDockWidgetArea, terminalDock);
     connect(this, SIGNAL(urlChanged(KUrl)),
-            terminalWidget, SLOT(setUrl(KUrl)));
+            terminalPanel, SLOT(setUrl(KUrl)));
 #endif
 
     const bool firstRun = DolphinSettings::instance().generalSettings()->firstRun();
     if (firstRun) {
-        treeViewDock->hide();
+        foldersDock->hide();
 #ifndef Q_OS_WIN
         terminalDock->hide();
 #endif
@@ -1168,20 +1182,22 @@ void DolphinMainWindow::setupDockWidgets()
     placesDock->setObjectName("placesDock");
     placesDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
 
-    DolphinFilePlacesView* placesView = new DolphinFilePlacesView(placesDock);
-    placesDock->setWidget(placesView);
-    placesView->setModel(DolphinSettings::instance().placesModel());
-    placesView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    PlacesPanel* placesPanel = new PlacesPanel(placesDock);
+    placesDock->setWidget(placesPanel);
+    placesPanel->setModel(DolphinSettings::instance().placesModel());
+    placesPanel->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 
-    placesDock->toggleViewAction()->setText(i18nc("@title:window", "Places"));
-    placesDock->toggleViewAction()->setShortcut(Qt::Key_F9);
+    QAction* placesAction = placesDock->toggleViewAction();
+    placesAction->setText(i18nc("@title:window", "Places"));
+    placesAction->setShortcut(Qt::Key_F9);
+    placesAction->setIcon(KIcon("bookmarks"));
     actionCollection()->addAction("show_places_panel", placesDock->toggleViewAction());
 
     addDockWidget(Qt::LeftDockWidgetArea, placesDock);
-    connect(placesView, SIGNAL(urlChanged(KUrl, Qt::MouseButtons)),
+    connect(placesPanel, SIGNAL(urlChanged(KUrl, Qt::MouseButtons)),
             this, SLOT(handlePlacesClick(KUrl, Qt::MouseButtons)));
     connect(this, SIGNAL(urlChanged(KUrl)),
-            placesView, SLOT(setUrl(KUrl)));
+            placesPanel, SLOT(setUrl(KUrl)));
 }
 
 void DolphinMainWindow::updateEditActions()