- connect(this, SIGNAL(urlChanged(KUrl)),
- infoWidget, SLOT(setUrl(KUrl)));
- connect(this, SIGNAL(selectionChanged(KFileItemList)),
- infoWidget, 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);
- connect(this, SIGNAL(urlChanged(KUrl)),
- treeWidget, SLOT(setUrl(KUrl)));
- connect(treeWidget, SIGNAL(changeUrl(KUrl)),
- this, SLOT(changeUrl(KUrl)));
- connect(treeWidget, SIGNAL(changeSelection(KFileItemList)),
- this, SLOT(changeSelection(KFileItemList)));
- connect(treeWidget, SIGNAL(urlsDropped(KUrl::List, KUrl)),
- this, SLOT(dropUrls(KUrl::List, KUrl)));
-
- // setup "Terminal"
- QDockWidget* terminalDock = new QDockWidget(i18nc("@title:window", "Terminal"));
- terminalDock->setObjectName("terminalDock");
- terminalDock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
- SidebarPage* terminalWidget = new TerminalSidebarPage(terminalDock);
- terminalDock->setWidget(terminalWidget);
-
- terminalDock->toggleViewAction()->setText(i18nc("@title:window", "Terminal"));
- terminalDock->toggleViewAction()->setShortcut(Qt::Key_F4);
- actionCollection()->addAction("show_terminal_panel", terminalDock->toggleViewAction());
-
- addDockWidget(Qt::BottomDockWidgetArea, terminalDock);
- connect(this, SIGNAL(urlChanged(KUrl)),
- terminalWidget, SLOT(setUrl(KUrl)));
-
- const bool firstRun = DolphinSettings::instance().generalSettings()->firstRun();
- if (firstRun) {
+ connect(this, &DolphinMainWindow::urlChanged,
+ infoPanel, &InformationPanel::setUrl);
+ connect(this, &DolphinMainWindow::selectionChanged,
+ infoPanel, &InformationPanel::setSelection);
+ connect(this, &DolphinMainWindow::requestItemInfo,
+ infoPanel, &InformationPanel::requestDelayedItemInfo);
+
+ // Setup "Folders"
+ DolphinDockWidget* foldersDock = new DolphinDockWidget(i18nc("@title:window", "Folders"));
+ foldersDock->setLocked(lock);
+ foldersDock->setObjectName(QStringLiteral("foldersDock"));
+ foldersDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+ FoldersPanel* foldersPanel = new FoldersPanel(foldersDock);
+ foldersPanel->setCustomContextMenuActions({lockLayoutAction});
+ foldersDock->setWidget(foldersPanel);
+
+ QAction* foldersAction = foldersDock->toggleViewAction();
+ createPanelAction(QIcon::fromTheme(QStringLiteral("folder")), Qt::Key_F7, foldersAction, QStringLiteral("show_folders_panel"));
+
+ addDockWidget(Qt::LeftDockWidgetArea, foldersDock);
+ connect(this, &DolphinMainWindow::urlChanged,
+ foldersPanel, &FoldersPanel::setUrl);
+ connect(foldersPanel, &FoldersPanel::folderActivated,
+ this, &DolphinMainWindow::changeUrl);
+ connect(foldersPanel, &FoldersPanel::folderMiddleClicked,
+ this, &DolphinMainWindow::openNewTab);
+ connect(foldersPanel, &FoldersPanel::errorMessage,
+ this, &DolphinMainWindow::showErrorMessage);
+
+ // Setup "Terminal"
+#ifndef Q_OS_WIN
+ if (KAuthorized::authorize(QStringLiteral("shell_access"))) {
+ DolphinDockWidget* terminalDock = new DolphinDockWidget(i18nc("@title:window Shell terminal", "Terminal"));
+ terminalDock->setLocked(lock);
+ terminalDock->setObjectName(QStringLiteral("terminalDock"));
+ m_terminalPanel = new TerminalPanel(terminalDock);
+ m_terminalPanel->setCustomContextMenuActions({lockLayoutAction});
+ terminalDock->setWidget(m_terminalPanel);
+
+ connect(m_terminalPanel, &TerminalPanel::hideTerminalPanel, terminalDock, &DolphinDockWidget::hide);
+ connect(m_terminalPanel, &TerminalPanel::changeUrl, this, &DolphinMainWindow::slotTerminalDirectoryChanged);
+ connect(terminalDock, &DolphinDockWidget::visibilityChanged,
+ m_terminalPanel, &TerminalPanel::dockVisibilityChanged);
+ connect(terminalDock, &DolphinDockWidget::visibilityChanged,
+ this, &DolphinMainWindow::slotTerminalPanelVisibilityChanged);
+
+ QAction* terminalAction = terminalDock->toggleViewAction();
+ createPanelAction(QIcon::fromTheme(QStringLiteral("utilities-terminal")), Qt::Key_F4, terminalAction, QStringLiteral("show_terminal_panel"));
+
+ addDockWidget(Qt::BottomDockWidgetArea, terminalDock);
+ connect(this, &DolphinMainWindow::urlChanged,
+ m_terminalPanel, &TerminalPanel::setUrl);
+
+ if (GeneralSettings::version() < 200) {
+ terminalDock->hide();
+ }
+ }
+#endif
+
+ if (GeneralSettings::version() < 200) {