From 1a48b2d7d8913ab248ccb5c2a848bf4ed004dfea Mon Sep 17 00:00:00 2001 From: ronso0 Date: Sun, 28 Mar 2021 04:14:53 +0200 Subject: Help menu: link to local keyboard shortcut overview file if available --- src/defs_urls.h | 1 + src/widget/wmainmenubar.cpp | 64 ++++++++++++++++++++++++++++++++++----------- 2 files changed, 50 insertions(+), 15 deletions(-) diff --git a/src/defs_urls.h b/src/defs_urls.h index e2419f55a2..b6af77fb8d 100644 --- a/src/defs_urls.h +++ b/src/defs_urls.h @@ -49,3 +49,4 @@ #define MIXXX_MANUAL_VINYL_TROUBLESHOOTING_URL \ MIXXX_MANUAL_URL "/chapters/vinyl_control.html#troubleshooting" #define MIXXX_MANUAL_FILENAME "Mixxx-Manual.pdf" +#define MIXXX_KBD_SHORTCUTS_FILENAME "Mixxx-Keyboard-Shortcuts.pdf" diff --git a/src/widget/wmainmenubar.cpp b/src/widget/wmainmenubar.cpp index 343fdbb0e0..5f869eebf2 100644 --- a/src/widget/wmainmenubar.cpp +++ b/src/widget/wmainmenubar.cpp @@ -521,6 +521,7 @@ void WMainMenuBar::initialize() { // HELP MENU QMenu* pHelpMenu = new QMenu(tr("&Help"), this); + QDir resourceDir(m_pConfig->getResourcePath()); QString externalLinkSuffix; #ifndef __APPLE__ // According to Apple's Human Interface Guidelines devs are encouraged @@ -529,6 +530,7 @@ void WMainMenuBar::initialize() { externalLinkSuffix = QChar(' ') + QChar(0x2197); // north-east arrow #endif + // Community Support QString supportTitle = tr("&Community Support") + externalLinkSuffix; QString supportText = tr("Get help with Mixxx"); auto* pHelpSupport = new QAction(supportTitle, this); @@ -538,26 +540,27 @@ void WMainMenuBar::initialize() { this, [this] { slotVisitUrl(MIXXX_SUPPORT_URL); }); pHelpMenu->addAction(pHelpSupport); - QDir resourceDir(m_pConfig->getResourcePath()); + // User Manual // Default to the mixxx.org hosted version of the manual. QUrl qManualUrl(MIXXX_MANUAL_URL); + QDir manualDir(resourceDir); QString manualSuffix; #if defined(__APPLE__) // FIXME: We don't include the PDF manual in the bundle on OSX. // Default to the web-hosted version. #elif defined(__WINDOWS__) // On Windows, the manual PDF sits in the same folder as the 'skins' folder. - if (resourceDir.exists(MIXXX_MANUAL_FILENAME)) { + if (manualDir.exists(MIXXX_MANUAL_FILENAME)) { qManualUrl = QUrl::fromLocalFile( - resourceDir.absoluteFilePath(MIXXX_MANUAL_FILENAME)); + manualDir.absoluteFilePath(MIXXX_MANUAL_FILENAME)); } else { manualSuffix = externalLinkSuffix; } #elif defined(__LINUX__) // On GNU/Linux, the manual is installed to e.g. /usr/share/doc/mixxx/ - if (resourceDir.cd("../doc/mixxx") && resourceDir.exists(MIXXX_MANUAL_FILENAME)) { + if (manualDir.cd("../doc/mixxx") && manualDir.exists(MIXXX_MANUAL_FILENAME)) { qManualUrl = QUrl::fromLocalFile( - resourceDir.absoluteFilePath(MIXXX_MANUAL_FILENAME)); + manualDir.absoluteFilePath(MIXXX_MANUAL_FILENAME)); } else { manualSuffix = externalLinkSuffix; } @@ -565,7 +568,6 @@ void WMainMenuBar::initialize() { // No idea, default to the mixxx.org hosted version. manualSuffix = externalLinkSuffix; #endif - QString manualTitle = tr("&User Manual") + manualSuffix; QString manualText = tr("Read the Mixxx user manual."); auto* pHelpManual = new QAction(manualTitle, this); @@ -575,16 +577,48 @@ void WMainMenuBar::initialize() { this, [this, qManualUrl] { slotVisitUrl(qManualUrl.toString()); }); pHelpMenu->addAction(pHelpManual); - QString shortcutsTitle = tr("&Keyboard Shortcuts") + externalLinkSuffix; + // Keyboard Shortcuts + QUrl qKeyboardShortcutsUrl(MIXXX_MANUAL_SHORTCUTS_URL); + QDir kbdShortcutsDir(resourceDir); + QString kbdShortcutsSuffix; +#if defined(__APPLE__) + // FIXME: We don't include the PDF manual in the bundle on OSX. + // Default to the web-hosted version. +#elif defined(__WINDOWS__) + // On Windows, the shortcut PDF sits in the same folder as the 'skins' folder. + if (kbdShortcutsDir.exists(MIXXX_KBD_SHORTCUTS_FILENAME)) { + qKeyboardShortcutsUrl = QUrl::fromLocalFile( + kbdShortcutsDir.absoluteFilePath(MIXXX_KBD_SHORTCUTS_FILENAME)); + } else { + kbdShortcutsSuffix = externalLinkSuffix; + } +#elif defined(__LINUX__) + // On GNU/Linux, the shortcut is installed to e.g. /usr/share/doc/mixxx/ + if (kbdShortcutsDir.cd("../doc/mixxx") && + kbdShortcutsDir.exists(MIXXX_KBD_SHORTCUTS_FILENAME)) { + qKeyboardShortcutsUrl = QUrl::fromLocalFile( + kbdShortcutsDir.absoluteFilePath(MIXXX_KBD_SHORTCUTS_FILENAME)); + } else { + kbdShortcutsSuffix = externalLinkSuffix; + } +#else + // No idea, default to the mixxx.org hosted version. + kbdShortcutsSuffix = externalLinkSuffix; +#endif + QString shortcutsTitle = tr("&Keyboard Shortcuts") + kbdShortcutsSuffix; QString shortcutsText = tr("Speed up your workflow with keyboard shortcuts."); - auto* pHelpShortcuts = new QAction(shortcutsTitle, this); - pHelpShortcuts->setStatusTip(shortcutsText); - pHelpShortcuts->setWhatsThis(buildWhatsThis(shortcutsTitle, shortcutsText)); - connect(pHelpShortcuts, &QAction::triggered, this, [this] { - slotVisitUrl(MIXXX_MANUAL_SHORTCUTS_URL); - }); - pHelpMenu->addAction(pHelpShortcuts); - + auto* pHelpKbdShortcuts = new QAction(shortcutsTitle, this); + pHelpKbdShortcuts->setStatusTip(shortcutsText); + pHelpKbdShortcuts->setWhatsThis(buildWhatsThis(shortcutsTitle, shortcutsText)); + connect(pHelpKbdShortcuts, + &QAction::triggered, + this, + [this, qKeyboardShortcutsUrl] { + slotVisitUrl(qKeyboardShortcutsUrl.toString()); + }); + pHelpMenu->addAction(pHelpKbdShortcuts); + + // Translate This Application QString translateTitle = tr("&Translate This Application") + externalLinkSuffix; QString translateText = tr("Help translate this application into your language."); auto* pHelpTranslation = new QAction(translateTitle, this); -- cgit v1.2.3