diff options
author | ronso0 <ronso0@mixxx.org> | 2020-10-24 22:38:39 +0200 |
---|---|---|
committer | ronso0 <ronso0@mixxx.org> | 2020-10-24 22:38:39 +0200 |
commit | 9a7ef97a210a4ccea6e12993bff833a227a07bbb (patch) | |
tree | 49acbf515e1e66b81fc4bd05b2fa937ac7788132 | |
parent | f229b6856d9fa8bd82cb499d0f9632ef25608b44 (diff) |
Controlpickermenu Hotcues: show up to 16, put more into submenu
-rw-r--r-- | src/controllers/controlpickermenu.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/controllers/controlpickermenu.cpp b/src/controllers/controlpickermenu.cpp index aefb3fa833..09b9d23c6d 100644 --- a/src/controllers/controlpickermenu.cpp +++ b/src/controllers/controlpickermenu.cpp @@ -329,7 +329,7 @@ ControlPickerMenu::ControlPickerMenu(QWidget* pParent) tr("Go to cue point and play after release"), cueMenu); // Hotcues - QMenu* hotcueMenu = addSubmenu(tr("Hotcues")); + QMenu* hotcueMainMenu = addSubmenu(tr("Hotcues")); QString hotcueActivateTitle = tr("Hotcue %1"); QString hotcueClearTitle = tr("Clear Hotcue %1"); QString hotcueSetTitle = tr("Set Hotcue %1"); @@ -344,8 +344,25 @@ ControlPickerMenu::ControlPickerMenu(QWidget* pParent) QString hotcueGotoAndStopDescription = tr("Jump to hotcue %1 and stop"); QString hotcueGotoAndPlayDescription = tr("Jump to hotcue %1 and play"); QString hotcuePreviewDescription = tr("Preview from hotcue %1"); + // add menus for hotcues 1-16. + // though, keep the menu small put additional hotcues in a separate menu, + // but don't create that submenu for less than 4 additional hotcues. + int preferredHotcuesVisible = 16; + int moreMenuThreshold = 4; + QMenu* parentMenu = hotcueMainMenu; + QMenu* hotcueMoreMenu = nullptr; + bool moreHotcues = NUM_HOT_CUES >= preferredHotcuesVisible + moreMenuThreshold; + if (moreHotcues) { + // populate menu here, add it below #preferredHotcuesVisible + hotcueMoreMenu = new QMenu( + tr("Hotcues %1-%2").arg(preferredHotcuesVisible + 1).arg(NUM_HOT_CUES), + hotcueMainMenu); + } for (int i = 1; i <= NUM_HOT_CUES; ++i) { - QMenu* hotcueSubMenu = addSubmenu(tr("Hotcue %1").arg(QString::number(i)), hotcueMenu); + if (moreHotcues && i > preferredHotcuesVisible) { + parentMenu = hotcueMoreMenu; + } + QMenu* hotcueSubMenu = addSubmenu(tr("Hotcue %1").arg(QString::number(i)), parentMenu); addDeckAndSamplerControl(QString("hotcue_%1_activate").arg(i), hotcueActivateTitle.arg(QString::number(i)), hotcueActivateDescription.arg(QString::number(i)), @@ -375,6 +392,10 @@ ControlPickerMenu::ControlPickerMenu(QWidget* pParent) hotcuePreviewDescription.arg(QString::number(i)), hotcueSubMenu); } + if (moreHotcues) { + hotcueMainMenu->addSeparator(); + hotcueMainMenu->addMenu(hotcueMoreMenu); + } // Loops QMenu* loopMenu = addSubmenu(tr("Looping")); |