+ // Setup "Information"
+ DolphinDockWidget* infoDock = new DolphinDockWidget(i18nc("@title:window", "Information"));
+ infoDock->setLocked(lock);
+ infoDock->setObjectName(QStringLiteral("infoDock"));
+ infoDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+
+#ifdef HAVE_BALOO
+ InformationPanel* infoPanel = new InformationPanel(infoDock);
+ infoPanel->setCustomContextMenuActions({lockLayoutAction});
+ connect(infoPanel, &InformationPanel::urlActivated, this, &DolphinMainWindow::handleUrl);
+ infoDock->setWidget(infoPanel);
+
+ QAction* infoAction = infoDock->toggleViewAction();
+ createPanelAction(QIcon::fromTheme(QStringLiteral("dialog-information")), Qt::Key_F11, infoAction, QStringLiteral("show_information_panel"));
+
+ addDockWidget(Qt::RightDockWidgetArea, infoDock);
+ connect(this, &DolphinMainWindow::urlChanged,
+ infoPanel, &InformationPanel::setUrl);
+ connect(this, &DolphinMainWindow::selectionChanged,
+ infoPanel, &InformationPanel::setSelection);
+ connect(this, &DolphinMainWindow::requestItemInfo,
+ infoPanel, &InformationPanel::requestDelayedItemInfo);
+#endif
+
+ // 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::openNewTabAfterCurrentTab);
+ connect(foldersPanel, &FoldersPanel::errorMessage,
+ this, &DolphinMainWindow::showErrorMessage);
+
+ // Setup "Terminal"
+#ifdef HAVE_TERMINAL
+ 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();
+ }