Library: add Quit shortcut

The Ctrl+Q shortcut is assigned to Quit action in most applications on
GNU/Linux. Command+Q is used on macOS. The added shortcut should be
automatically mapped to Command+Q on macOS judging by the following
quote from QKeySequence class documentation:
Note: On macOS, references to "Ctrl", Qt::CTRL, Qt::Key_Control and
Qt::ControlModifier correspond to the Command keys on the Macintosh
keyboard

QKeySequence::Quit could be used as the default key sequence in place of
`Qt::CTRL | Qt::Key_Q`. This would leave the shortcut unassigned by
default on Windows. But YACReader doesn't use QKeySequence::StandardKey
anywhere, so perhaps this shortcut should be hard-coded too.

The shortcut is particularly useful when Close to tray option is
enabled, because in this case closing the Library window with a system
window manager shortcut simply hides it.
This commit is contained in:
Igor Kushnir 2021-03-20 18:09:11 +02:00 committed by Luis Ángel San Martín
parent 63b1f9401b
commit 2acfbbfac7
7 changed files with 19 additions and 5 deletions

View File

@ -71,6 +71,8 @@
<file alias="images/sidebar/delete_sidebar@2x.png">../images/sidebar/delete_sidebar_osx@2x.png</file>
<file alias="images/sidebar/addLabelIcon@2x.png">../images/sidebar/addLabelIcon_osx@2x.png</file>
<file alias="images/sidebar/renameListIcon@2x.png">../images/sidebar/renameListIcon_osx@2x.png</file>
<file alias="images/viewer_toolbar/close.png">../images/viewer_toolbar/close_osx.png</file>
<file alias="images/viewer_toolbar/close@2x.png">../images/viewer_toolbar/close_osx@2x.png</file>
<file>macostrayicon.svg</file>
</qresource>
</RCC>

View File

@ -41,6 +41,7 @@
<file>../images/lists/label_yellow.png</file>
<file>../images/lists/list.png</file>
<file>../images/empty_reading_list.png</file>
<file>../images/viewer_toolbar/close.png</file>
<file>icon.ico</file>
</qresource>
</RCC>

View File

@ -396,7 +396,8 @@ void LibraryWindow::setUpShortcutsManagement()
<< helpAboutAction
<< optionsAction
<< serverConfigAction
<< showEditShortcutsAction);
<< showEditShortcutsAction
<< quitAction);
allActions << tmpList;
@ -752,6 +753,13 @@ void LibraryWindow::createActions()
showEditShortcutsAction->setShortcutContext(Qt::ApplicationShortcut);
addAction(showEditShortcutsAction);
quitAction = new QAction(tr("&Quit"), this);
quitAction->setIcon(QIcon(":/images/viewer_toolbar/close.png"));
quitAction->setData(QUIT_ACTION_YL);
quitAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(QUIT_ACTION_YL));
// TODO: is `quitAction->setMenuRole(QAction::QuitRole);` useful on macOS?
addAction(quitAction);
updateFolderAction = new QAction(tr("Update folder"), this);
updateFolderAction->setIcon(QIcon(":/images/menus_icons/updateLibraryIcon.png"));
@ -1179,6 +1187,8 @@ void LibraryWindow::createConnections()
connect(showEditShortcutsAction, SIGNAL(triggered()), editShortcutsDialog, SLOT(show()));
connect(quitAction, &QAction::triggered, this, &LibraryWindow::closeApp);
//update folders (partial updates)
connect(updateCurrentFolderAction, SIGNAL(triggered()), this, SLOT(updateCurrentFolder()));
connect(updateFolderAction, SIGNAL(triggered()), this, SLOT(updateCurrentFolder()));

View File

@ -218,6 +218,8 @@ public:
QAction *showEditShortcutsAction;
QAction *quitAction;
QAction *updateFolderAction;
QAction *updateCurrentFolderAction;

View File

@ -52,13 +52,10 @@ TrayIconController::TrayIconController(QSettings *settings, LibraryWindow *windo
auto restoreAction = new QAction(tr("&Restore"), this);
connect(restoreAction, &QAction::triggered, this, &TrayIconController::showWindow);
auto quitAction = new QAction(tr("&Quit"), this);
connect(quitAction, &QAction::triggered, window, &LibraryWindow::closeApp);
trayIconMenu = new QMenu(this->window);
trayIconMenu->addAction(restoreAction);
trayIconMenu->addSeparator();
trayIconMenu->addAction(quitAction);
trayIconMenu->addAction(this->window->quitAction);
trayIcon.setContextMenu(trayIconMenu);

View File

@ -27,6 +27,7 @@ void ShortcutsManager::initDefaultShorcuts()
defaultShorcuts.insert(COLAPSE_ALL_NODES_ACTION_YL, Qt::Key_Minus);
defaultShorcuts.insert(OPTIONS_ACTION_YL, Qt::Key_C);
defaultShorcuts.insert(SERVER_CONFIG_ACTION_YL, Qt::Key_S);
defaultShorcuts.insert(QUIT_ACTION_YL, Qt::CTRL | Qt::Key_Q);
defaultShorcuts.insert(TOGGLE_COMICS_VIEW_ACTION_YL, Qt::Key_V);
//COMMANDS (used in keypressevent)

View File

@ -78,6 +78,7 @@ public:
#define FOCUS_SEARCH_LINE_ACTION_YL "FOCUS_SEARCH_LINE_ACTION_YL"
#define FOCUS_COMICS_VIEW_ACTION_YL "FOCUS_COMICS_VIEW_ACTION_YL"
#define SHOW_EDIT_SHORTCUTS_ACTION_YL "SHOW_EDIT_SHORTCUTS_ACTION_YL"
#define QUIT_ACTION_YL "QUIT_ACTION_YL"
#define UPDATE_CURRENT_FOLDER_ACTION_YL "UPDATE_CURRENT_FOLDER_ACTION_YL"
#define ADD_FOLDER_ACTION_YL "ADD_FOLDER_ACTION_YL"
#define REMOVE_FOLDER_ACTION_YL "REMOVE_FOLDER_ACTION_YL"