X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/3b4e44d6da4e63d6828799ce60df3f7de64a21ae..0772ebc3aaa1ea4717aedcdd7dacc95dedf8a307:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 22d2f09fc..c0212a6f1 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -25,20 +25,20 @@ #include #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()