]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Add a new "view_settings" action
authorJin Liu <m.liu.jin@gmail.com>
Thu, 10 Apr 2025 04:30:29 +0000 (12:30 +0800)
committerJin Liu <m.liu.jin@gmail.com>
Wed, 16 Apr 2025 06:24:46 +0000 (06:24 +0000)
This should replace the "View Mode" button in the toolbar by default. Its
dropdown menu contains more actions related to the view: zoom, sort by,
show additional columns, show hidden files, grouping, show file previews.

The original "view_mode" action is kept so the "Change View Mode" submenu
in the main menu (or in the hamburger menu when this button is invisible)
is unchanged.

src/dolphinmainwindow.cpp
src/dolphinui.rc
src/dolphinuiforphones.rc
src/views/dolphinviewactionhandler.cpp

index efcd4190e36e066c6cec9d86438e0084d44acde6..106f0e44be3fbfdefd52d550cb11047d59fdf801 100644 (file)
@@ -1558,14 +1558,17 @@ void DolphinMainWindow::updateHamburgerMenu()
     // and to change the more general UI.
     if (!toolBar()->isVisible()
         || (!toolbarActions.contains(ac->action(QStringLiteral("icons"))) && !toolbarActions.contains(ac->action(QStringLiteral("compact")))
-            && !toolbarActions.contains(ac->action(QStringLiteral("details"))) && !toolbarActions.contains(ac->action(QStringLiteral("view_mode"))))) {
+            && !toolbarActions.contains(ac->action(QStringLiteral("details"))) && !toolbarActions.contains(ac->action(QStringLiteral("view_mode"))))
+            && !toolbarActions.contains(ac->action(QStringLiteral("view_settings")))) {
         menu->addAction(ac->action(QStringLiteral("view_mode")));
     }
-    menu->addAction(ac->action(QStringLiteral("show_hidden_files")));
-    menu->addAction(ac->action(QStringLiteral("sort")));
-    menu->addAction(ac->action(QStringLiteral("additional_info")));
-    if (!GeneralSettings::showStatusBar() || !GeneralSettings::showZoomSlider()) {
-        menu->addAction(ac->action(QStringLiteral("zoom")));
+    if (!toolBar()->isVisible() || !toolbarActions.contains(ac->action(QStringLiteral("view_settings")))) {
+        menu->addAction(ac->action(QStringLiteral("show_hidden_files")));
+        menu->addAction(ac->action(QStringLiteral("sort")));
+        menu->addAction(ac->action(QStringLiteral("additional_info")));
+        if (!GeneralSettings::showStatusBar() || !GeneralSettings::showZoomSlider()) {
+            menu->addAction(ac->action(QStringLiteral("zoom")));
+        }
     }
     menu->addAction(ac->action(QStringLiteral("panels")));
 
index 34631c494bd014fb7c73451eea602ae55d270eb9..36f4a9dee1014c777a1e1108501e9fa2a555d3d5 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE gui SYSTEM "kpartgui.dtd">
-<gui name="dolphin" version="44">
+<gui name="dolphin" version="45">
     <MenuBar>
         <Menu name="file">
             <Action name="new_menu" />
         <text context="@title:menu">Main Toolbar</text>
         <Action name="go_back" />
         <Action name="go_forward" />
-        <Action name="view_mode" />
+        <Action name="view_settings" />
         <Action name="url_navigators" />
         <Action name="split_view" />
         <Action name="split_stash" />
         <Action priority="0" name="compact"/>
         <Action priority="0" name="details"/>
         <Action priority="0" name="view_mode" />
+        <Action priority="0" name="view_settings" />
         <Action priority="0" name="view_zoom_in"/>
         <Action priority="0" name="view_zoom_reset"/>
         <Action priority="0" name="view_zoom_out"/>
index 51457cf877d91fd314b3eb765186c6b19df67b6e..e7bf495c5f7c20d1629f9a5a669b013395b17836 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE gui SYSTEM "kpartgui.dtd">
-<gui name="dolphin" version="1">
+<gui name="dolphin" version="2">
     <MenuBar>
         <Menu name="file">
             <Action name="new_menu" />
         <Action priority="0" name="compact"/>
         <Action priority="0" name="details"/>
         <Action priority="0" name="view_mode" />
+        <Action priority="0" name="view_settings" />
         <Action priority="0" name="view_zoom_in"/>
         <Action priority="0" name="view_zoom_reset"/>
         <Action priority="0" name="view_zoom_out"/>
index 682a4314a923e7f7f3e6ef4998014a9e09707463..b7c21c8b960f0b9d78a5499de6407d98b9304fff 100644 (file)
@@ -358,6 +358,25 @@ void DolphinViewActionHandler::createActions(SelectionMode::ActionTextHelper *ac
                                         "This opens a window "
                                         "in which all folder view properties can be adjusted."));
     connect(adjustViewProps, &QAction::triggered, this, &DolphinViewActionHandler::slotAdjustViewProperties);
+
+    // View settings: the dropdown menu contains various view-related actions
+    KActionMenu *viewSettings = m_actionCollection->add<KActionMenu>(QStringLiteral("view_settings"));
+    viewSettings->setText(i18nc("@action:intoolbar", "View Settings"));
+    viewSettings->setWhatsThis(
+        xi18nc("@info:whatsthis View Settings Toolbutton", "This cycles through all view modes. The dropdown menu contains various view-related actions."));
+    for (QAction *action : viewModeActions->actions()) {
+        viewSettings->addAction(action);
+    }
+    viewSettings->addSeparator();
+    viewSettings->addAction(zoomMenu);
+    viewSettings->addAction(sortByActionMenu);
+    viewSettings->addAction(visibleRolesMenu);
+    viewSettings->addAction(showPreview);
+    viewSettings->addAction(showInGroups);
+    viewSettings->addAction(showHiddenFiles);
+    viewSettings->addAction(adjustViewProps);
+    viewSettings->setPopupMode(QToolButton::ToolButtonPopupMode::MenuButtonPopup);
+    connect(viewSettings, &KActionMenu::triggered, viewModeActions, &KSelectAction::triggered);
 }
 
 QActionGroup *DolphinViewActionHandler::createFileItemRolesActionGroup(const QString &groupPrefix)
@@ -438,6 +457,9 @@ void DolphinViewActionHandler::slotViewModeActionTriggered(QAction *action)
 
     QAction *viewModeMenu = m_actionCollection->action(QStringLiteral("view_mode"));
     viewModeMenu->setIcon(action->icon());
+
+    QAction *viewSettingsAction = m_actionCollection->action(QStringLiteral("view_settings"));
+    viewSettingsAction->setIcon(action->icon());
 }
 
 void DolphinViewActionHandler::slotRename()
@@ -516,6 +538,9 @@ void DolphinViewActionHandler::updateViewActions()
 
         QAction *viewModeMenu = m_actionCollection->action(QStringLiteral("view_mode"));
         viewModeMenu->setIcon(viewModeAction->icon());
+
+        QAction *viewSettingsAction = m_actionCollection->action(QStringLiteral("view_settings"));
+        viewSettingsAction->setIcon(viewModeAction->icon());
     }
 
     QAction *showPreviewAction = m_actionCollection->action(QStringLiteral("show_preview"));