]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Clean up hamburger menu and viewport and single-folder context menus
authorNate Graham <nate@kde.org>
Fri, 6 Sep 2019 16:08:58 +0000 (10:08 -0600)
committerNate Graham <nate@kde.org>
Sun, 15 Sep 2019 13:05:50 +0000 (07:05 -0600)
Summary:
Dolphin's hamburger and context menus have grown organically over time,
becoming a bit messy and somewhat visually overwhelming. This makes them
harder to parse and more intimidating to use.

This patch cleans up the hamburger menu and viewport and single-folder context
menus to group items more logically, and remove items that aren't actually relevant
to the context.

The hamburger menu part of the patch is fairly significant, and draws from the
principle of only showing actions with a global scope that are not already accessible
from another visible method (e.g. via the default toolbar). In the end, it manages to be
shorter than the current hamburger menu with expose actions that are more relevant.

A visible method to display context-specific actions should be explored separately
(see https://bugs.kde.org/show_bug.cgi?id=411500).

Depends on D23945

Test Plan:
Before, hamburger menu: {F7334178}
After, hamburger menu: {F7350958}

Before, viewport: {F7324802}
After, viewport: {F7330109}

Before, one folder selected: {F7324798}
After, one folder selected: {F7341163}

No change for the context menus shown when selecting a single item, multiple items, or multiple folders

Reviewers: #vdg, #dolphin, meven, elvisangelaccio, GB_2

Reviewed By: #vdg, #dolphin, meven, elvisangelaccio, GB_2

Subscribers: GB_2, mmustac, elvisangelaccio, meven, ndavis, kfm-devel

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D23757

src/dolphincontextmenu.cpp
src/dolphinmainwindow.cpp

index 50bd9e515515a129048b861937a127cec4f93ec3..783abc71fbb59b441fa5c24e7082a6a152ad19f8 100644 (file)
@@ -207,29 +207,22 @@ void DolphinContextMenu::openItemContextMenu()
             // Insert 'Open With' entries
             addOpenWithActions(fileItemActions);
 
             // Insert 'Open With' entries
             addOpenWithActions(fileItemActions);
 
-            // insert 'Add to Places' entry
-            if (!placeExists(m_fileInfo.url())) {
-                addAction(m_mainWindow->actionCollection()->action(QStringLiteral("add_to_places")));
-            }
-
-            addSeparator();
-
             // set up 'Create New' menu
             // set up 'Create New' menu
-            DolphinNewFileMenu* newFileMenu = new DolphinNewFileMenu(m_mainWindow->actionCollection(), m_mainWindow);
-            const DolphinView* view = m_mainWindow->activeViewContainer()->view();
-            newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown());
-            newFileMenu->checkUpToDate();
-            newFileMenu->setPopupFiles(m_fileInfo.url());
-            newFileMenu->setEnabled(selectedItemsProps.supportsWriting());
-            connect(newFileMenu, &DolphinNewFileMenu::fileCreated, newFileMenu, &DolphinNewFileMenu::deleteLater);
-            connect(newFileMenu, &DolphinNewFileMenu::directoryCreated, newFileMenu, &DolphinNewFileMenu::deleteLater);
-
-            QMenu* menu = newFileMenu->menu();
-            menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New"));
-            menu->setIcon(QIcon::fromTheme(QStringLiteral("document-new")));
-            addMenu(menu);
-
-            addSeparator();
+             DolphinNewFileMenu* newFileMenu = new DolphinNewFileMenu(m_mainWindow->actionCollection(), m_mainWindow);
+             const DolphinView* view = m_mainWindow->activeViewContainer()->view();
+             newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown());
+             newFileMenu->checkUpToDate();
+             newFileMenu->setPopupFiles(m_fileInfo.url());
+             newFileMenu->setEnabled(selectedItemsProps.supportsWriting());
+             connect(newFileMenu, &DolphinNewFileMenu::fileCreated, newFileMenu, &DolphinNewFileMenu::deleteLater);
+             connect(newFileMenu, &DolphinNewFileMenu::directoryCreated, newFileMenu, &DolphinNewFileMenu::deleteLater);
+
+             QMenu* menu = newFileMenu->menu();
+             menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New"));
+             menu->setIcon(QIcon::fromTheme(QStringLiteral("document-new")));
+             addMenu(menu);
+
+             addSeparator();
         } else if (m_baseUrl.scheme().contains(QLatin1String("search")) || m_baseUrl.scheme().contains(QLatin1String("timeline"))) {
             addOpenWithActions(fileItemActions);
 
         } else if (m_baseUrl.scheme().contains(QLatin1String("search")) || m_baseUrl.scheme().contains(QLatin1String("timeline"))) {
             addOpenWithActions(fileItemActions);
 
@@ -251,15 +244,6 @@ void DolphinContextMenu::openItemContextMenu()
                                                    this);
             addAction(openParentInNewTabAction);
 
                                                    this);
             addAction(openParentInNewTabAction);
 
-            addSeparator();
-        } else if (!DolphinView::openItemAsFolderUrl(m_fileInfo).isEmpty()) {
-            // Insert 'Open With" entries
-            addOpenWithActions(fileItemActions);
-
-            // insert 'Open in new window' and 'Open in new tab' entries
-            addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_window")));
-            addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_tab")));
-
             addSeparator();
         } else {
             // Insert 'Open With" entries
             addSeparator();
         } else {
             // Insert 'Open With" entries
@@ -289,6 +273,15 @@ void DolphinContextMenu::openItemContextMenu()
 
     insertDefaultItemActions(selectedItemsProps);
 
 
     insertDefaultItemActions(selectedItemsProps);
 
+    // insert 'Add to Places' entry if appropriate
+    if (m_selectedItems.count() == 1) {
+        if (m_fileInfo.isDir()) {
+            if (!placeExists(m_fileInfo.url())) {
+                addAction(m_mainWindow->actionCollection()->action(QStringLiteral("add_to_places")));
+            }
+        }
+    }
+
     addSeparator();
 
     fileItemActions.addServiceActionsTo(this);
     addSeparator();
 
     fileItemActions.addServiceActionsTo(this);
@@ -323,14 +316,7 @@ void DolphinContextMenu::openItemContextMenu()
 
 void DolphinContextMenu::openViewportContextMenu()
 {
 
 void DolphinContextMenu::openViewportContextMenu()
 {
-    // setup 'Create New' menu
-    KNewFileMenu* newFileMenu = m_mainWindow->newFileMenu();
     const DolphinView* view = m_mainWindow->activeViewContainer()->view();
     const DolphinView* view = m_mainWindow->activeViewContainer()->view();
-    newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown());
-    newFileMenu->checkUpToDate();
-    newFileMenu->setPopupFiles(m_baseUrl);
-    addMenu(newFileMenu->menu());
-    addSeparator();
 
     // Insert 'Open With' entries
     KFileItem baseItem = view->rootItem();
 
     // Insert 'Open With' entries
     KFileItem baseItem = view->rootItem();
@@ -349,20 +335,20 @@ void DolphinContextMenu::openViewportContextMenu()
         addOpenWithActions(fileItemActions);
     }
 
         addOpenWithActions(fileItemActions);
     }
 
-    // Insert 'New Window' and 'New Tab' entries. Don't use "open_in_new_window" and
-    // "open_in_new_tab" here, as the current selection should get ignored.
-    addAction(m_mainWindow->actionCollection()->action(QStringLiteral("file_new")));
-    addAction(m_mainWindow->actionCollection()->action(QStringLiteral("new_tab")));
+    // Set up and insert 'Create New' menu
+    KNewFileMenu* newFileMenu = m_mainWindow->newFileMenu();
+    newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown());
+    newFileMenu->checkUpToDate();
+    newFileMenu->setPopupFiles(m_baseUrl);
+    addMenu(newFileMenu->menu());
+
+    QAction* pasteAction = createPasteAction();
+    addAction(pasteAction);
 
 
-    // Insert 'Add to Places' entry if exactly one item is selected
+    // Insert 'Add to Places' entry if it's not already in the places panel
     if (!placeExists(m_mainWindow->activeViewContainer()->url())) {
         addAction(m_mainWindow->actionCollection()->action(QStringLiteral("add_to_places")));
     }
     if (!placeExists(m_mainWindow->activeViewContainer()->url())) {
         addAction(m_mainWindow->actionCollection()->action(QStringLiteral("add_to_places")));
     }
-
-    addSeparator();
-
-    QAction* pasteAction = createPasteAction();
-    addAction(pasteAction);
     addSeparator();
 
     // Insert 'Sort By' and 'View Mode'
     addSeparator();
 
     // Insert 'Sort By' and 'View Mode'
@@ -379,6 +365,8 @@ void DolphinContextMenu::openViewportContextMenu()
 
     addCustomActions();
 
 
     addCustomActions();
 
+    addSeparator();
+
     QAction* propertiesAction = m_mainWindow->actionCollection()->action(QStringLiteral("properties"));
     addAction(propertiesAction);
 
     QAction* propertiesAction = m_mainWindow->actionCollection()->action(QStringLiteral("properties"));
     addAction(propertiesAction);
 
index afca88198e6fb84f5cc6bb653152914c28ee0d35..c69567e2684f570c4b344ff75520a264d99db4b0 100644 (file)
@@ -994,18 +994,15 @@ void DolphinMainWindow::updateControlMenu()
 
     KActionCollection* ac = actionCollection();
 
 
     KActionCollection* ac = actionCollection();
 
-    // Add "Create New" menu
     menu->addMenu(m_newFileMenu->menu());
     menu->addMenu(m_newFileMenu->menu());
+    addActionToMenu(ac->action(QStringLiteral("file_new")), menu);
+    addActionToMenu(ac->action(QStringLiteral("new_tab")), menu);
+    addActionToMenu(ac->action(QStringLiteral("closed_tabs")), menu);
 
     menu->addSeparator();
 
 
     menu->addSeparator();
 
-    // Overwrite Find action to Search action
-    QAction *searchAction = ac->action(KStandardAction::name(KStandardAction::Find));
-    searchAction->setText(i18n("Search..."));
-
     // Add "Edit" actions
     bool added = addActionToMenu(ac->action(KStandardAction::name(KStandardAction::Undo)), menu) |
     // Add "Edit" actions
     bool added = addActionToMenu(ac->action(KStandardAction::name(KStandardAction::Undo)), menu) |
-                 addActionToMenu(searchAction, menu) |
                  addActionToMenu(ac->action(KStandardAction::name(KStandardAction::SelectAll)), menu) |
                  addActionToMenu(ac->action(QStringLiteral("invert_selection")), menu);
 
                  addActionToMenu(ac->action(KStandardAction::name(KStandardAction::SelectAll)), menu) |
                  addActionToMenu(ac->action(QStringLiteral("invert_selection")), menu);
 
@@ -1021,62 +1018,35 @@ void DolphinMainWindow::updateControlMenu()
         menu->addSeparator();
     }
 
         menu->addSeparator();
     }
 
-    added = addActionToMenu(ac->action(QStringLiteral("sort")), menu) |
-            addActionToMenu(ac->action(QStringLiteral("view_mode")), menu) |
-            addActionToMenu(ac->action(QStringLiteral("additional_info")), menu) |
-            addActionToMenu(ac->action(QStringLiteral("show_preview")), menu) |
+    added = addActionToMenu(ac->action(QStringLiteral("show_preview")), menu) |
             addActionToMenu(ac->action(QStringLiteral("show_in_groups")), menu) |
             addActionToMenu(ac->action(QStringLiteral("show_in_groups")), menu) |
-            addActionToMenu(ac->action(QStringLiteral("show_hidden_files")), menu);
-
-    if (added) {
-        menu->addSeparator();
-    }
-
-    added = addActionToMenu(ac->action(QStringLiteral("split_view")), menu) |
-            addActionToMenu(ac->action(KStandardAction::name(KStandardAction::Redisplay)), menu) |
+            addActionToMenu(ac->action(QStringLiteral("show_hidden_files")), menu) |
+            addActionToMenu(ac->action(QStringLiteral("additional_info")), menu) |
             addActionToMenu(ac->action(QStringLiteral("view_properties")), menu);
             addActionToMenu(ac->action(QStringLiteral("view_properties")), menu);
+
     if (added) {
         menu->addSeparator();
     }
 
     if (added) {
         menu->addSeparator();
     }
 
-    addActionToMenu(ac->action(QStringLiteral("panels")), menu);
-    QMenu* locationBarMenu = new QMenu(i18nc("@action:inmenu", "Location Bar"), menu);
-    locationBarMenu->addAction(ac->action(QStringLiteral("editable_location")));
-    locationBarMenu->addAction(ac->action(QStringLiteral("replace_location")));
-    menu->addMenu(locationBarMenu);
+    // Add a curated assortment of items from the "Tools" menu
+    addActionToMenu(ac->action(QStringLiteral("show_filter_bar")), menu);
+    addActionToMenu(ac->action(QStringLiteral("open_terminal")), menu);
 
     menu->addSeparator();
 
 
     menu->addSeparator();
 
-    // Add "Go" menu
-    QMenu* goMenu = new QMenu(i18nc("@action:inmenu", "Go"), menu);
-    goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Back)));
-    goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Forward)));
-    goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Up)));
-    goMenu->addAction(ac->action(KStandardAction::name(KStandardAction::Home)));
-    goMenu->addAction(ac->action(QStringLiteral("closed_tabs")));
-    KActionMenu *bookmarkMenu = new KActionMenu(i18nc("@title:menu", "&Bookmarks"), goMenu);
-    m_bookmarkHandler->fillControlMenu(bookmarkMenu->menu(), ac);
-    goMenu->addAction(bookmarkMenu);
-    menu->addMenu(goMenu);
-
-    // Add "Tool" menu
-    QMenu* toolsMenu = new QMenu(i18nc("@action:inmenu", "Tools"), menu);
-    toolsMenu->addAction(ac->action(QStringLiteral("show_filter_bar")));
-    toolsMenu->addAction(ac->action(QStringLiteral("compare_files")));
-    toolsMenu->addAction(ac->action(QStringLiteral("open_terminal")));
-    toolsMenu->addAction(ac->action(QStringLiteral("change_remote_encoding")));
-    menu->addMenu(toolsMenu);
+    // Add "Show Panels" menu
+    addActionToMenu(ac->action(QStringLiteral("panels")), menu);
 
     // Add "Settings" menu entries
     addActionToMenu(ac->action(KStandardAction::name(KStandardAction::KeyBindings)), menu);
     addActionToMenu(ac->action(KStandardAction::name(KStandardAction::ConfigureToolbars)), menu);
     addActionToMenu(ac->action(KStandardAction::name(KStandardAction::Preferences)), menu);
 
     // Add "Settings" menu entries
     addActionToMenu(ac->action(KStandardAction::name(KStandardAction::KeyBindings)), menu);
     addActionToMenu(ac->action(KStandardAction::name(KStandardAction::ConfigureToolbars)), menu);
     addActionToMenu(ac->action(KStandardAction::name(KStandardAction::Preferences)), menu);
+    addActionToMenu(ac->action(KStandardAction::name(KStandardAction::ShowMenubar)), menu);
 
     // Add "Help" menu
 
     // Add "Help" menu
-    menu->addMenu(m_helpMenu->menu());
-
-    menu->addSeparator();
-    addActionToMenu(ac->action(KStandardAction::name(KStandardAction::ShowMenubar)), menu);
+    auto helpMenu = m_helpMenu->menu();
+    helpMenu->setIcon(QIcon::fromTheme(QStringLiteral("system-help")));
+    menu->addMenu(helpMenu);
 }
 
 void DolphinMainWindow::updateToolBar()
 }
 
 void DolphinMainWindow::updateToolBar()