From 3ccdcc2176bc5e4e03f733c21d05a5a4b0c1af25 Mon Sep 17 00:00:00 2001 From: Felix Ernst Date: Thu, 9 Jun 2022 23:23:29 +0200 Subject: [PATCH] Clean up code that became redundant through framework changes There were two changes in framework that triggered this commit: KHamburgerMenu and KToolTipHelper. When the Dolphin-specific hamburger menu was replaced by KHamburgerMenu, I didn't clean everything up correctly. Not anymore! Help texts also weren't updated accordingly. This commit replaces any mention of the old hamburger menu which was called "Control" with text that reflects the current application state. The other framework change "KToolTipHelper" takes responsibility for opening links in help texts. So we won't need code to do this in Dolphin anymore. This means we can also get rid of some duplicate help texts which only existed because links didn't work correctly in some places. --- src/dolphinmainwindow.cpp | 155 +++++++++----------------------------- src/dolphinmainwindow.h | 11 --- 2 files changed, 36 insertions(+), 130 deletions(-) diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 7cdfbc6fba..d383d04d6d 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include @@ -82,7 +81,6 @@ #include #include #include -#include namespace { // Used for GeneralSettings::version() to determine whether @@ -99,15 +97,12 @@ namespace { DolphinMainWindow::DolphinMainWindow() : KXmlGuiWindow(nullptr), m_newFileMenu(nullptr), - m_helpMenu(nullptr), m_tabWidget(nullptr), m_activeViewContainer(nullptr), m_actionHandler(nullptr), m_remoteEncoding(nullptr), m_settingsDialog(), m_bookmarkHandler(nullptr), - m_controlButton(nullptr), - m_updateToolBarTimer(nullptr), m_lastHandleUrlOpenJob(nullptr), m_terminalPanel(nullptr), m_placesPanel(nullptr), @@ -1527,7 +1522,7 @@ void DolphinMainWindow::setViewsToHomeIfMountPathOpen(const QString& mountPath) void DolphinMainWindow::setupActions() { - KStandardAction::hamburgerMenu(nullptr, nullptr, actionCollection()); + auto hamburgerMenuAction = KStandardAction::hamburgerMenu(nullptr, nullptr, actionCollection()); // setup 'File' menu m_newFileMenu = new DolphinNewFileMenu(actionCollection(), this); @@ -1891,9 +1886,12 @@ void DolphinMainWindow::setupActions() // setup 'Settings' menu KToggleAction* showMenuBar = KStandardAction::showMenubar(nullptr, nullptr, actionCollection()); showMenuBar->setWhatsThis(xi18nc("@info:whatsthis", - "This switches between having a Menubar " - "and having a Control button. Both " - "contain mostly the same commands and configuration options.")); + "This switches between having a Menubar " + "and having a %1 button. Both " + "contain mostly the same actions and configuration options." + "The Menubar takes up more space but allows for fast and organised access to all " + "actions an application has to offer.The %1 button " + "is simpler and small which makes triggering advanced actions more time consuming.", hamburgerMenuAction->text().replace('&', ""))); connect(showMenuBar, &KToggleAction::triggered, // Fixes #286822 this, &DolphinMainWindow::toggleShowMenuBar, Qt::QueuedConnection); @@ -1908,18 +1906,6 @@ void DolphinMainWindow::setupActions() KStandardAction::keyBindings(this, &DolphinMainWindow::slotKeyBindings, actionCollection()); KStandardAction::preferences(this, &DolphinMainWindow::editSettings, actionCollection()); - // setup 'Help' menu for the m_controlButton. The other one is set up in the base class. - m_helpMenu = new KHelpMenu(nullptr); - m_helpMenu->menu()->installEventFilter(this); - // remove duplicate shortcuts - auto removeHelpActionShortcut = [this](KHelpMenu::MenuId menuId) { - if (auto *action = m_helpMenu->action(menuId)) { - action->setShortcut(QKeySequence()); - } - }; - removeHelpActionShortcut(KHelpMenu::menuHelpContents); - removeHelpActionShortcut(KHelpMenu::menuWhatsThis); - // not in menu actions QList nextTabKeys = KStandardShortcut::tabNext(); nextTabKeys.append(QKeySequence(Qt::CTRL | Qt::Key_Tab)); @@ -2029,7 +2015,7 @@ void DolphinMainWindow::setupDockWidgets() // i18n: This is the last paragraph for the "What's This"-texts of all four panels. const QString panelWhatsThis = xi18nc("@info:whatsthis", "To show or " - "hide panels like this go to Control|Panels " + "hide panels like this go to Menu|Panels " "or View|Panels."); #if HAVE_BALOO actionCollection()->action(QStringLiteral("show_information_panel")) @@ -2492,16 +2478,16 @@ void DolphinMainWindow::setupWhatsThis() "configuration options. Left-click on any of the menus on this " "bar to see its contents.The Menubar can be hidden " "by unchecking Settings|Show Menubar. Then " - "most of its contents become available through a Control" + "most of its contents become available through a Menu" " button on the Toolbar.")); toolBar()->setWhatsThis(xi18nc("@info:whatsthis", "This is the " "Toolbar. It allows quick access to " "frequently used actions.It is highly customizable. " - "All items you see in the Control menu or " + "All items you see in the Menu or " "in the Menubar can be placed on the " "Toolbar. Just right-click on it and select Configure " - "Toolbars… or find this action in the " - "Control or Settings menu." + "Toolbars… or find this action within the " + "menu." "The location of the bar and the style of its " "buttons can also be changed in the right-click menu. Right-click " "a button if you want to show or hide its text.")); @@ -2530,8 +2516,7 @@ void DolphinMainWindow::setupWhatsThis() actionCollection()->action(KStandardAction::name(KStandardAction::ConfigureToolbars)) ->setWhatsThis(xi18nc("@info:whatsthis","This opens a window in which " "you can change which buttons appear on the Toolbar." - "All items you see in the Control menu " - "or in the Menubar can also be placed on the Toolbar.")); + "All items you see in the Menu can also be placed on the Toolbar.")); actionCollection()->action(KStandardAction::name(KStandardAction::Preferences)) ->setWhatsThis(xi18nc("@info:whatsthis","This opens a window where you can " "change a multitude of settings for this application. For an explanation " @@ -2539,77 +2524,38 @@ void DolphinMainWindow::setupWhatsThis() " in Help|Dolphin Handbook.")); // Help menu - // The whatsthis has to be set for the m_helpMenu and for the - // StandardAction separately because both are used in different locations. - // m_helpMenu is only used for createControlButton() button. - auto setStandardActionWhatsThis = [this](KStandardAction::StandardAction actionId, - const QString &whatsThis) { - if (auto *action = actionCollection()->action(KStandardAction::name(actionId))) { - action->setWhatsThis(whatsThis); - } - }; - auto setHelpActionWhatsThis = [this](KHelpMenu::MenuId menuId, const QString &whatsThis) { - if (auto *action = m_helpMenu->action(menuId)) { - action->setWhatsThis(whatsThis); - } - }; - - // Links do not work within the Menubar so texts without links are provided there. - - // i18n: If the external link isn't available in your language you should - // probably state the external link language at least in brackets to not + // i18n: If the external link isn't available in your language it might make + // sense to state the external link's language in brackets to not // frustrate the user. If there are multiple languages that the user might // know with a reasonable chance you might want to have 2 external links. - // The same is in my opinion true for every external link you translate. - const QString whatsThisHelpContents = xi18nc("@info:whatsthis handbook", - "This opens the Handbook for this application. It provides " - "explanations for every part of Dolphin."); - setStandardActionWhatsThis(KStandardAction::HelpContents, whatsThisHelpContents - + xi18nc("@info:whatsthis second half of handbook hb text without link", - "If you want more elaborate introductions to the " - "different features of Dolphin " - "go to the KDE UserBase Wiki.")); - setHelpActionWhatsThis(KHelpMenu::menuHelpContents, whatsThisHelpContents - + xi18nc("@info:whatsthis second half of handbook text with link", - "If you want more elaborate introductions to the " - "different features of Dolphin " - "click here. " - "It will open the dedicated page in the KDE UserBase Wiki.")); + // The same might be true for any external link you translate. + actionCollection()->action(KStandardAction::name(KStandardAction::HelpContents))->setWhatsThis(xi18nc("@info:whatsthis handbook", "This opens the Handbook for this application. It provides explanations for every part of Dolphin.If you want more elaborate introductions to the different features of Dolphin click here. It will open the dedicated page in the KDE UserBase Wiki.")); + // (The i18n call should be completely in the line following the i18n: comment without any line breaks within the i18n call or the comment might not be correctly extracted. See: https://commits.kde.org/kxmlgui/a31135046e1b3335b5d7bbbe6aa9a883ce3284c1 ) - const QString whatsThisWhatsThis = xi18nc("@info:whatsthis whatsthis button", + actionCollection()->action(KStandardAction::name(KStandardAction::WhatsThis))->setWhatsThis( + xi18nc("@info:whatsthis whatsthis button", "This is the button that invokes the help feature you are " "using right now! Click it, then click any component of this " "application to ask \"What's this?\" about it. The mouse cursor " - "will change appearance if no help is available for a spot."); - setStandardActionWhatsThis(KStandardAction::WhatsThis, whatsThisWhatsThis - + xi18nc("@info:whatsthis second half of whatsthis button text without link", - "There are two other ways to get help for this application: The " - "Dolphin Handbook in the Help" - " menu and the KDE UserBase Wiki " - "article about File Management online." - "The \"What's this?\" help is " - "missing in most other windows so don't get too used to this.")); - setHelpActionWhatsThis(KHelpMenu::menuWhatsThis, whatsThisWhatsThis - + xi18nc("@info:whatsthis second half of whatsthis button text with link", + "will change appearance if no help is available for a spot." "There are two other ways to get help: " "The Dolphin Handbook and " "the KDE " "UserBase Wiki.The \"What's this?\" help is " "missing in most other windows so don't get too used to this.")); - const QString whatsThisReportBug = xi18nc("@info:whatsthis","This opens a " + actionCollection()->action(KStandardAction::name(KStandardAction::ReportBug))->setWhatsThis( + xi18nc("@info:whatsthis","This opens a " "window that will guide you through reporting errors or flaws " - "in this application or in other KDE software."); - setStandardActionWhatsThis(KStandardAction::ReportBug, whatsThisReportBug); - setHelpActionWhatsThis(KHelpMenu::menuReportBug, whatsThisReportBug - + xi18nc("@info:whatsthis second half of reportbug text with link", + "in this application or in other KDE software." "High-quality bug reports are much appreciated. To learn " "how to make your bug report as effective as possible " "" "click here.")); - const QString whatsThisDonate = xi18nc("@info:whatsthis","This opens a " + actionCollection()->action(KStandardAction::name(KStandardAction::Donate))->setWhatsThis( + xi18nc("@info:whatsthis", "This opens a " "web page where you can donate to " "support the continued work on this application and many " "other projects by the KDE community." @@ -2618,31 +2564,25 @@ void DolphinMainWindow::setupWhatsThis() "free therefore your donation is needed to cover things that " "require money like servers, contributor meetings, etc." "KDE e.V. is the non-profit " - "organization behind the KDE community."); - setStandardActionWhatsThis(KStandardAction::Donate, whatsThisDonate); - setHelpActionWhatsThis(KHelpMenu::menuDonate, whatsThisDonate); + "organization behind the KDE community.")); - const QString whatsThisSwitchLanguage = xi18nc("@info:whatsthis", + actionCollection()->action(KStandardAction::name(KStandardAction::SwitchApplicationLanguage))->setWhatsThis( + xi18nc("@info:whatsthis", "With this you can change the language this application uses." "You can even set secondary languages which will be used " - "if texts are not available in your preferred language."); - setStandardActionWhatsThis(KStandardAction::SwitchApplicationLanguage, - whatsThisSwitchLanguage); - setHelpActionWhatsThis(KHelpMenu::menuSwitchLanguage, whatsThisSwitchLanguage); + "if texts are not available in your preferred language.")); - const QString whatsThisAboutApp = xi18nc("@info:whatsthis","This opens a " + actionCollection()->action(KStandardAction::name(KStandardAction::AboutApp))->setWhatsThis( + xi18nc("@info:whatsthis","This opens a " "window that informs you about the version, license, " - "used libraries and maintainers of this application."); - setStandardActionWhatsThis(KStandardAction::AboutApp, whatsThisAboutApp); - setHelpActionWhatsThis(KHelpMenu::menuAboutApp, whatsThisAboutApp); + "used libraries and maintainers of this application.")); - const QString whatsThisAboutKDE = xi18nc("@info:whatsthis","This opens a " + actionCollection()->action(KStandardAction::name(KStandardAction::AboutKDE))->setWhatsThis( + xi18nc("@info:whatsthis","This opens a " "window with information about KDE. " "The KDE community are the people behind this free software." "If you like using this application but don't know " - "about KDE or want to see a cute dragon have a look!"); - setStandardActionWhatsThis(KStandardAction::AboutKDE, whatsThisAboutKDE); - setHelpActionWhatsThis(KHelpMenu::menuAboutKDE, whatsThisAboutKDE); + "about KDE or want to see a cute dragon have a look!")); } bool DolphinMainWindow::addHamburgerMenuToToolbar() @@ -2668,29 +2608,6 @@ bool DolphinMainWindow::addHamburgerMenuToToolbar() // whenever this method is removed (maybe in the year ~2026). } -bool DolphinMainWindow::event(QEvent *event) -{ - if (event->type() == QEvent::WhatsThisClicked) { - event->accept(); - QWhatsThisClickedEvent* whatsThisEvent = dynamic_cast(event); - QDesktopServices::openUrl(QUrl(whatsThisEvent->href())); - return true; - } - return KXmlGuiWindow::event(event); -} - -bool DolphinMainWindow::eventFilter(QObject* obj, QEvent* event) -{ - Q_UNUSED(obj) - if (event->type() == QEvent::WhatsThisClicked) { - event->accept(); - QWhatsThisClickedEvent* whatsThisEvent = dynamic_cast(event); - QDesktopServices::openUrl(QUrl(whatsThisEvent->href())); - return true; - } - return false; -} - // Set a sane initial window size QSize DolphinMainWindow::sizeHint() const { diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h index fe844ad1b2..e7355e3ed1 100644 --- a/src/dolphinmainwindow.h +++ b/src/dolphinmainwindow.h @@ -39,7 +39,6 @@ class KFileItem; class KFileItemList; class KJob; class KNewFileMenu; -class KHelpMenu; class KToolBarPopupAction; class QToolButton; class PlacesPanel; @@ -248,11 +247,6 @@ protected: /** @see KMainWindow::readProperties() */ void readProperties(const KConfigGroup& group) override; - /** Handles QWhatsThisClickedEvent and passes all others on. */ - bool event(QEvent* event) override; - /** Handles QWhatsThisClickedEvent and passes all others on. */ - bool eventFilter(QObject*, QEvent*) override; - /** Sets a sane initial window size **/ QSize sizeHint() const override; @@ -700,7 +694,6 @@ private: }; KNewFileMenu* m_newFileMenu; - KHelpMenu* m_helpMenu; DolphinTabWidget* m_tabWidget; DolphinViewContainer* m_activeViewContainer; @@ -710,10 +703,6 @@ private: DolphinBookmarkHandler* m_bookmarkHandler; SelectionMode::ActionTextHelper* m_actionTextHelper; - // Members for the toolbar menu that is shown when the menubar is hidden: - QToolButton* m_controlButton; - QTimer* m_updateToolBarTimer; - KIO::OpenUrlJob *m_lastHandleUrlOpenJob; TerminalPanel* m_terminalPanel;