X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/2274db954a604e20dc1fb3f5037f3cb49e84a48b..8988fc01d01422e596a8c19d45a3bf6d41581c8b:/src/dolphinmainwindow.cpp diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 636a8e1a9..e7c402b88 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -134,10 +134,9 @@ DolphinMainWindow::DolphinMainWindow() : connect(undoManager, &KIO::FileUndoManager::jobRecordingFinished, this, &DolphinMainWindow::showCommand); - GeneralSettings* generalSettings = GeneralSettings::self(); - const bool firstRun = (generalSettings->version() < 200); + const bool firstRun = (GeneralSettings::version() < 200); if (firstRun) { - generalSettings->setViewPropsTimestamp(QDateTime::currentDateTime()); + GeneralSettings::setViewPropsTimestamp(QDateTime::currentDateTime()); } setAcceptDrops(true); @@ -174,7 +173,7 @@ DolphinMainWindow::DolphinMainWindow() : this, &DolphinMainWindow::updatePasteAction); QAction* toggleFilterBarAction = actionCollection()->action(QStringLiteral("toggle_filter")); - toggleFilterBarAction->setChecked(generalSettings->filterBar()); + toggleFilterBarAction->setChecked(GeneralSettings::filterBar()); if (firstRun) { menuBar()->setVisible(false); @@ -258,7 +257,11 @@ bool DolphinMainWindow::isFoldersPanelEnabled() const bool DolphinMainWindow::isInformationPanelEnabled() const { +#ifdef HAVE_BALOO return actionCollection()->action(QStringLiteral("show_information_panel"))->isChecked(); +#else + return false; +#endif } void DolphinMainWindow::openFiles(const QStringList& files, bool splitView) @@ -394,7 +397,11 @@ void DolphinMainWindow::openNewMainWindow() void DolphinMainWindow::openNewActivatedTab() { + // keep browsers compatibility, new tab is always after last one + auto openNewTabAfterLastTabConfigured = GeneralSettings::openNewTabAfterLastTab(); + GeneralSettings::setOpenNewTabAfterLastTab(true); m_tabWidget->openNewActivatedTab(); + GeneralSettings::setOpenNewTabAfterLastTab(openNewTabAfterLastTabConfigured); } void DolphinMainWindow::addToPlaces() @@ -423,19 +430,9 @@ void DolphinMainWindow::addToPlaces() } } -void DolphinMainWindow::openNewTab(const QUrl& url, DolphinTabWidget::TabPlacement tabPlacement) -{ - m_tabWidget->openNewTab(url, QUrl(), tabPlacement); -} - -void DolphinMainWindow::openNewTabAfterCurrentTab(const QUrl& url) +void DolphinMainWindow::openNewTab(const QUrl& url) { - m_tabWidget->openNewTab(url, QUrl(), DolphinTabWidget::AfterCurrentTab); -} - -void DolphinMainWindow::openNewTabAfterLastTab(const QUrl& url) -{ - m_tabWidget->openNewTab(url, QUrl(), DolphinTabWidget::AfterLastTab); + m_tabWidget->openNewTab(url, QUrl()); } void DolphinMainWindow::openInNewTab() @@ -446,7 +443,7 @@ void DolphinMainWindow::openInNewTab() for (const KFileItem& item : list) { const QUrl& url = DolphinView::openItemAsFolderUrl(item); if (!url.isEmpty()) { - openNewTabAfterCurrentTab(url); + openNewTab(url); tabCreated = true; } } @@ -454,7 +451,7 @@ void DolphinMainWindow::openInNewTab() // if no new tab has been created from the selection // open the current directory in a new tab if (!tabCreated) { - openNewTabAfterCurrentTab(m_activeViewContainer->url()); + openNewTab(m_activeViewContainer->url()); } } @@ -756,7 +753,7 @@ void DolphinMainWindow::slotBackForwardActionMiddleClicked(QAction* action) { if (action) { const KUrlNavigator *urlNavigator = activeViewContainer()->urlNavigatorInternalWithHistory(); - openNewTabAfterCurrentTab(urlNavigator->locationUrl(action->data().value())); + openNewTab(urlNavigator->locationUrl(action->data().value())); } } @@ -808,7 +805,7 @@ void DolphinMainWindow::invertSelection() void DolphinMainWindow::toggleSplitView() { DolphinTabPage* tabPage = m_tabWidget->currentTabPage(); - tabPage->setSplitViewEnabled(!tabPage->splitViewEnabled()); + tabPage->setSplitViewEnabled(!tabPage->splitViewEnabled(), WithAnimation); updateViewActions(); } @@ -816,8 +813,8 @@ void DolphinMainWindow::toggleSplitView() void DolphinMainWindow::toggleSplitStash() { DolphinTabPage* tabPage = m_tabWidget->currentTabPage(); - tabPage->setSplitViewEnabled(false); - tabPage->setSplitViewEnabled(true, QUrl("stash:/")); + tabPage->setSplitViewEnabled(false, WithAnimation); + tabPage->setSplitViewEnabled(true, WithAnimation, QUrl("stash:/")); } void DolphinMainWindow::reloadView() @@ -935,25 +932,25 @@ void DolphinMainWindow::goBackInNewTab() { const KUrlNavigator* urlNavigator = activeViewContainer()->urlNavigatorInternalWithHistory(); const int index = urlNavigator->historyIndex() + 1; - openNewTabAfterCurrentTab(urlNavigator->locationUrl(index)); + openNewTab(urlNavigator->locationUrl(index)); } void DolphinMainWindow::goForwardInNewTab() { const KUrlNavigator* urlNavigator = activeViewContainer()->urlNavigatorInternalWithHistory(); const int index = urlNavigator->historyIndex() - 1; - openNewTabAfterCurrentTab(urlNavigator->locationUrl(index)); + openNewTab(urlNavigator->locationUrl(index)); } void DolphinMainWindow::goUpInNewTab() { const QUrl currentUrl = activeViewContainer()->urlNavigator()->locationUrl(); - openNewTabAfterCurrentTab(KIO::upUrl(currentUrl)); + openNewTab(KIO::upUrl(currentUrl)); } void DolphinMainWindow::goHomeInNewTab() { - openNewTabAfterCurrentTab(Dolphin::homeUrl()); + openNewTab(Dolphin::homeUrl()); } void DolphinMainWindow::compareFiles() @@ -1039,7 +1036,7 @@ void DolphinMainWindow::openTerminal() const QUrl url = m_activeViewContainer->url(); if (url.isLocalFile()) { - KToolInvocation::invokeTerminal(QString(), url.toLocalFile()); + KToolInvocation::invokeTerminal(QString(), {}, url.toLocalFile()); return; } @@ -1053,14 +1050,14 @@ void DolphinMainWindow::openTerminal() statUrl = job->mostLocalUrl(); } - KToolInvocation::invokeTerminal(QString(), statUrl.isLocalFile() ? statUrl.toLocalFile() : QDir::homePath()); + KToolInvocation::invokeTerminal(QString(), {}, statUrl.isLocalFile() ? statUrl.toLocalFile() : QDir::homePath()); }); return; } // Nothing worked, just use $HOME - KToolInvocation::invokeTerminal(QString(), QDir::homePath()); + KToolInvocation::invokeTerminal(QString(), {}, QDir::homePath()); } void DolphinMainWindow::editSettings() @@ -1070,7 +1067,7 @@ void DolphinMainWindow::editSettings() container->view()->writeSettings(); const QUrl url = container->url(); - DolphinSettingsDialog* settingsDialog = new DolphinSettingsDialog(url, this); + DolphinSettingsDialog* settingsDialog = new DolphinSettingsDialog(url, this, actionCollection()); connect(settingsDialog, &DolphinSettingsDialog::settingsChanged, this, &DolphinMainWindow::refreshViews); connect(settingsDialog, &DolphinSettingsDialog::settingsChanged, &DolphinUrlNavigatorsController::slotReadSettings); @@ -1092,7 +1089,7 @@ void DolphinMainWindow::handleUrl(const QUrl& url) } else { m_lastHandleUrlOpenJob = new KIO::OpenUrlJob(url); m_lastHandleUrlOpenJob->setUiDelegate(new KIO::JobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this)); - m_lastHandleUrlOpenJob->setRunExecutables(true); + m_lastHandleUrlOpenJob->setShowOpenOrExecuteDialog(true); connect(m_lastHandleUrlOpenJob, &KIO::OpenUrlJob::mimeTypeFound, this, [this, url](const QString &mimetype) { @@ -1140,7 +1137,7 @@ void DolphinMainWindow::openContextMenu(const QPoint& pos, break; case DolphinContextMenu::OpenParentFolderInNewTab: - openNewTabAfterLastTab(KIO::upUrl(item.url())); + openNewTab(KIO::upUrl(item.url())); break; case DolphinContextMenu::None: @@ -1380,7 +1377,7 @@ void DolphinMainWindow::setupActions() "Tab with the current location and view." "A tab is an additional view within this window. " "You can drag and drop items between tabs.")); - actionCollection()->setDefaultShortcuts(newTab, {Qt::CTRL + Qt::Key_T, Qt::CTRL + Qt::SHIFT + Qt::Key_N}); + actionCollection()->setDefaultShortcuts(newTab, {Qt::CTRL | Qt::Key_T, Qt::CTRL | Qt::SHIFT | Qt::Key_N}); connect(newTab, &QAction::triggered, this, &DolphinMainWindow::openNewActivatedTab); QAction* addToPlaces = actionCollection()->addAction(QStringLiteral("add_to_places")); @@ -1439,7 +1436,7 @@ void DolphinMainWindow::setupActions() "the active view to the inactive split view.")); copyToOtherViewAction->setIcon(QIcon::fromTheme(QStringLiteral("edit-copy"))); copyToOtherViewAction->setIconText(i18nc("@action:inmenu Edit", "Copy to Inactive Split View")); - actionCollection()->setDefaultShortcut(copyToOtherViewAction, Qt::SHIFT + Qt::Key_F5 ); + actionCollection()->setDefaultShortcut(copyToOtherViewAction, Qt::SHIFT | Qt::Key_F5 ); connect(copyToOtherViewAction, &QAction::triggered, m_tabWidget, &DolphinTabWidget::copyToInactiveSplitView); QAction* moveToOtherViewAction = actionCollection()->addAction(QStringLiteral("move_to_inactive_split_view")); @@ -1448,7 +1445,7 @@ void DolphinMainWindow::setupActions() "the active view to the inactive split view.")); moveToOtherViewAction->setIcon(QIcon::fromTheme(QStringLiteral("edit-cut"))); moveToOtherViewAction->setIconText(i18nc("@action:inmenu Edit", "Move to Inactive Split View")); - actionCollection()->setDefaultShortcut(moveToOtherViewAction, Qt::SHIFT + Qt::Key_F6 ); + actionCollection()->setDefaultShortcut(moveToOtherViewAction, Qt::SHIFT | Qt::Key_F6 ); connect(moveToOtherViewAction, &QAction::triggered, m_tabWidget, &DolphinTabWidget::moveToInactiveSplitView); QAction* showFilterBar = actionCollection()->addAction(QStringLiteral("show_filter_bar")); @@ -1459,7 +1456,7 @@ void DolphinMainWindow::setupActions() "There you can enter a text to filter the files and folders currently displayed. " "Only those that contain the text in their name will be kept in view.")); showFilterBar->setIcon(QIcon::fromTheme(QStringLiteral("view-filter"))); - actionCollection()->setDefaultShortcuts(showFilterBar, {Qt::CTRL + Qt::Key_I, Qt::Key_Slash}); + actionCollection()->setDefaultShortcuts(showFilterBar, {Qt::CTRL | Qt::Key_I, Qt::Key_Slash}); connect(showFilterBar, &QAction::triggered, this, &DolphinMainWindow::showFilterBar); // toggle_filter acts as a copy of the main showFilterBar to be used mainly @@ -1504,7 +1501,7 @@ void DolphinMainWindow::setupActions() invertSelection->setWhatsThis(xi18nc("@info:whatsthis invert", "This selects all " "objects that you have currently not selected instead.")); invertSelection->setIcon(QIcon::fromTheme(QStringLiteral("edit-select-invert"))); - actionCollection()->setDefaultShortcut(invertSelection, Qt::CTRL + Qt::SHIFT + Qt::Key_A); + actionCollection()->setDefaultShortcut(invertSelection, Qt::CTRL | Qt::SHIFT | Qt::Key_A); connect(invertSelection, &QAction::triggered, this, &DolphinMainWindow::invertSelection); // setup 'View' menu @@ -1519,12 +1516,12 @@ void DolphinMainWindow::setupActions() connect(split, &QAction::triggered, this, &DolphinMainWindow::toggleSplitView); QAction* stashSplit = actionCollection()->addAction(QStringLiteral("split_stash")); - actionCollection()->setDefaultShortcut(stashSplit, Qt::CTRL + Qt::Key_S); + actionCollection()->setDefaultShortcut(stashSplit, Qt::CTRL | Qt::Key_S); stashSplit->setText(i18nc("@action:intoolbar Stash", "Stash")); stashSplit->setToolTip(i18nc("@info", "Opens the stash virtual directory in a split window")); stashSplit->setIcon(QIcon::fromTheme(QStringLiteral("folder-stash"))); stashSplit->setCheckable(false); - stashSplit->setVisible(KProtocolInfo::isKnownProtocol("stash")); + stashSplit->setVisible(QDBusConnection::sessionBus().interface()->isServiceRegistered(QStringLiteral("org.kde.kio.StashNotifier"))); connect(stashSplit, &QAction::triggered, this, &DolphinMainWindow::toggleSplitStash); KStandardAction::redisplay(this, &DolphinMainWindow::reloadView, actionCollection()); @@ -1554,7 +1551,7 @@ void DolphinMainWindow::setupActions() replaceLocation->setWhatsThis(xi18nc("@info:whatsthis", "This switches to editing the location and selects it " "so you can quickly enter a different location.")); - actionCollection()->setDefaultShortcut(replaceLocation, Qt::CTRL + Qt::Key_L); + actionCollection()->setDefaultShortcut(replaceLocation, Qt::CTRL | Qt::Key_L); connect(replaceLocation, &QAction::triggered, this, &DolphinMainWindow::replaceLocation); // setup 'Go' menu @@ -1588,7 +1585,7 @@ void DolphinMainWindow::setupActions() undoCloseTab->setText(i18nc("@action:inmenu File", "Undo close tab")); undoCloseTab->setWhatsThis(i18nc("@info:whatsthis undo close tab", "This returns you to the previously closed tab.")); - actionCollection()->setDefaultShortcut(undoCloseTab, Qt::CTRL + Qt::SHIFT + Qt::Key_T); + actionCollection()->setDefaultShortcut(undoCloseTab, Qt::CTRL | Qt::SHIFT | Qt::Key_T); undoCloseTab->setIcon(QIcon::fromTheme(QStringLiteral("edit-undo"))); undoCloseTab->setEnabled(false); connect(undoCloseTab, &QAction::triggered, recentTabsMenu, &DolphinRecentTabsMenu::undoCloseTab); @@ -1641,7 +1638,7 @@ void DolphinMainWindow::setupActions() "This opens a preferred search tool for the viewed location." "Use More Search Tools menu to configure it.")); openPreferredSearchTool->setIcon(QIcon::fromTheme(QStringLiteral("search"))); - actionCollection()->setDefaultShortcut(openPreferredSearchTool, Qt::CTRL + Qt::SHIFT + Qt::Key_F); + actionCollection()->setDefaultShortcut(openPreferredSearchTool, Qt::CTRL | Qt::SHIFT | Qt::Key_F); connect(openPreferredSearchTool, &QAction::triggered, this, &DolphinMainWindow::openPreferredSearchTool); if (KAuthorized::authorize(QStringLiteral("shell_access"))) { @@ -1651,14 +1648,14 @@ void DolphinMainWindow::setupActions() "This opens a terminal application for the viewed location." "To learn more about terminals use the help in the terminal application.")); openTerminal->setIcon(QIcon::fromTheme(QStringLiteral("utilities-terminal"))); - actionCollection()->setDefaultShortcut(openTerminal, Qt::SHIFT + Qt::Key_F4); + actionCollection()->setDefaultShortcut(openTerminal, Qt::SHIFT | Qt::Key_F4); connect(openTerminal, &QAction::triggered, this, &DolphinMainWindow::openTerminal); #ifdef HAVE_TERMINAL QAction* focusTerminalPanel = actionCollection()->addAction(QStringLiteral("focus_terminal_panel")); focusTerminalPanel->setText(i18nc("@action:inmenu Tools", "Focus Terminal Panel")); focusTerminalPanel->setIcon(QIcon::fromTheme(QStringLiteral("swap-panels"))); - actionCollection()->setDefaultShortcut(focusTerminalPanel, Qt::CTRL + Qt::SHIFT + Qt::Key_F4); + actionCollection()->setDefaultShortcut(focusTerminalPanel, Qt::CTRL | Qt::SHIFT | Qt::Key_F4); connect(focusTerminalPanel, &QAction::triggered, this, &DolphinMainWindow::focusTerminalPanel); #endif } @@ -1690,10 +1687,10 @@ void DolphinMainWindow::setupActions() // not in menu actions QList nextTabKeys = KStandardShortcut::tabNext(); - nextTabKeys.append(QKeySequence(Qt::CTRL + Qt::Key_Tab)); + nextTabKeys.append(QKeySequence(Qt::CTRL | Qt::Key_Tab)); QList prevTabKeys = KStandardShortcut::tabPrev(); - prevTabKeys.append(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_Tab)); + prevTabKeys.append(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_Tab)); for (int i = 0; i < MaxActivateTabShortcuts; ++i) { QAction* activateTab = actionCollection()->addAction(QStringLiteral("activate_tab_%1").arg(i)); @@ -1711,7 +1708,7 @@ void DolphinMainWindow::setupActions() activateLastTab->setText(i18nc("@action:inmenu", "Activate Last Tab")); activateLastTab->setEnabled(false); connect(activateLastTab, &QAction::triggered, m_tabWidget, &DolphinTabWidget::activateLastTab); - actionCollection()->setDefaultShortcut(activateLastTab, Qt::ALT + Qt::Key_0); + actionCollection()->setDefaultShortcut(activateLastTab, Qt::ALT | Qt::Key_0); QAction* activateNextTab = actionCollection()->addAction(QStringLiteral("activate_next_tab")); activateNextTab->setIconText(i18nc("@action:inmenu", "Next Tab")); @@ -1829,7 +1826,7 @@ void DolphinMainWindow::setupDockWidgets() connect(foldersPanel, &FoldersPanel::folderActivated, this, &DolphinMainWindow::changeUrl); connect(foldersPanel, &FoldersPanel::folderMiddleClicked, - this, &DolphinMainWindow::openNewTabAfterCurrentTab); + this, &DolphinMainWindow::openNewTab); connect(foldersPanel, &FoldersPanel::errorMessage, this, &DolphinMainWindow::showErrorMessage); @@ -1906,13 +1903,13 @@ void DolphinMainWindow::setupDockWidgets() placesDock->setWidget(m_placesPanel); QAction *placesAction = placesDock->toggleViewAction(); - createPanelAction(QIcon::fromTheme(QStringLiteral("bookmarks")), Qt::Key_F9, placesAction, QStringLiteral("show_places_panel")); + createPanelAction(QIcon::fromTheme(QStringLiteral("compass")), Qt::Key_F9, placesAction, QStringLiteral("show_places_panel")); addDockWidget(Qt::LeftDockWidgetArea, placesDock); connect(m_placesPanel, &PlacesPanel::placeActivated, this, &DolphinMainWindow::slotPlaceActivated); connect(m_placesPanel, &PlacesPanel::placeMiddleClicked, - this, &DolphinMainWindow::openNewTabAfterCurrentTab); + this, &DolphinMainWindow::openNewTab); connect(m_placesPanel, &PlacesPanel::errorMessage, this, &DolphinMainWindow::showErrorMessage); connect(this, &DolphinMainWindow::urlChanged, @@ -2144,7 +2141,7 @@ void DolphinMainWindow::refreshViews() // The startup settings have been changed by the user (see bug #254947). // Synchronize the split-view setting with the active view: const bool splitView = GeneralSettings::splitView(); - m_tabWidget->currentTabPage()->setSplitViewEnabled(splitView); + m_tabWidget->currentTabPage()->setSplitViewEnabled(splitView, WithAnimation); updateSplitAction(); updateWindowTitle(); } @@ -2207,7 +2204,7 @@ void DolphinMainWindow::connectViewSignals(DolphinViewContainer* container) connect(navigator, &KUrlNavigator::editableStateChanged, this, &DolphinMainWindow::slotEditableStateChanged); connect(navigator, &KUrlNavigator::tabRequested, - this, &DolphinMainWindow::openNewTabAfterLastTab); + this, &DolphinMainWindow::openNewTab); disconnect(m_updateHistoryConnection); m_updateHistoryConnection = connect(