summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorronso0 <ronso0@mixxx.org>2020-10-24 22:38:39 +0200
committerronso0 <ronso0@mixxx.org>2020-10-24 22:38:39 +0200
commit9a7ef97a210a4ccea6e12993bff833a227a07bbb (patch)
tree49acbf515e1e66b81fc4bd05b2fa937ac7788132
parentf229b6856d9fa8bd82cb499d0f9632ef25608b44 (diff)
Controlpickermenu Hotcues: show up to 16, put more into submenu
-rw-r--r--src/controllers/controlpickermenu.cpp25
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"));