mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
Clean up hamburger menu and viewport and single-folder context menus
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
This commit is contained in:
parent
b4188442d1
commit
0303df092d
|
@ -207,13 +207,6 @@ void DolphinContextMenu::openItemContextMenu()
|
|||
// 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
|
||||
DolphinNewFileMenu* newFileMenu = new DolphinNewFileMenu(m_mainWindow->actionCollection(), m_mainWindow);
|
||||
const DolphinView* view = m_mainWindow->activeViewContainer()->view();
|
||||
|
@ -251,15 +244,6 @@ void DolphinContextMenu::openItemContextMenu()
|
|||
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
|
||||
|
@ -289,6 +273,15 @@ void DolphinContextMenu::openItemContextMenu()
|
|||
|
||||
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);
|
||||
|
@ -323,14 +316,7 @@ void DolphinContextMenu::openItemContextMenu()
|
|||
|
||||
void DolphinContextMenu::openViewportContextMenu()
|
||||
{
|
||||
// setup 'Create New' menu
|
||||
KNewFileMenu* newFileMenu = m_mainWindow->newFileMenu();
|
||||
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();
|
||||
|
@ -349,20 +335,20 @@ void DolphinContextMenu::openViewportContextMenu()
|
|||
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")));
|
||||
|
||||
// Insert 'Add to Places' entry if exactly one item is selected
|
||||
if (!placeExists(m_mainWindow->activeViewContainer()->url())) {
|
||||
addAction(m_mainWindow->actionCollection()->action(QStringLiteral("add_to_places")));
|
||||
}
|
||||
|
||||
addSeparator();
|
||||
// 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 it's not already in the places panel
|
||||
if (!placeExists(m_mainWindow->activeViewContainer()->url())) {
|
||||
addAction(m_mainWindow->actionCollection()->action(QStringLiteral("add_to_places")));
|
||||
}
|
||||
addSeparator();
|
||||
|
||||
// Insert 'Sort By' and 'View Mode'
|
||||
|
@ -379,6 +365,8 @@ void DolphinContextMenu::openViewportContextMenu()
|
|||
|
||||
addCustomActions();
|
||||
|
||||
addSeparator();
|
||||
|
||||
QAction* propertiesAction = m_mainWindow->actionCollection()->action(QStringLiteral("properties"));
|
||||
addAction(propertiesAction);
|
||||
|
||||
|
|
|
@ -994,18 +994,15 @@ void DolphinMainWindow::updateControlMenu()
|
|||
|
||||
KActionCollection* ac = actionCollection();
|
||||
|
||||
// Add "Create New" 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();
|
||||
|
||||
// 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) |
|
||||
addActionToMenu(searchAction, 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();
|
||||
}
|
||||
|
||||
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_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);
|
||||
|
||||
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();
|
||||
|
||||
// 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);
|
||||
addActionToMenu(ac->action(KStandardAction::name(KStandardAction::ShowMenubar)), 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()
|
||||
|
|
Loading…
Reference in a new issue