Browse Source

Use createCheckMenuItem() etc in Browser.

tags/v2.0.0
Andrew Belt 3 years ago
parent
commit
f27f5d48d8
2 changed files with 44 additions and 73 deletions
  1. +31
    -55
      src/app/Browser.cpp
  2. +13
    -18
      src/app/MenuBar.cpp

+ 31
- 55
src/app/Browser.cpp View File

@@ -390,33 +390,10 @@ static const std::string sortNames[] = {
}; };




struct SortItem : ui::MenuItem {
Browser* browser;
settings::BrowserSort sort;
void onAction(const ActionEvent& e) override;
void step() override {
rightText = CHECKMARK(settings::browserSort == sort);
MenuItem::step();
}
};


struct SortButton : ui::ChoiceButton { struct SortButton : ui::ChoiceButton {
Browser* browser; Browser* browser;


void onAction(const ActionEvent& e) override {
ui::Menu* menu = createMenu();
menu->box.pos = getAbsoluteOffset(math::Vec(0, box.size.y));
menu->box.size.x = box.size.x;

for (int sortId = 0; sortId <= settings::BROWSER_SORT_RANDOM; sortId++) {
SortItem* sortItem = new SortItem;
sortItem->text = sortNames[sortId];
sortItem->sort = (settings::BrowserSort) sortId;
sortItem->browser = browser;
menu->addChild(sortItem);
}
}
void onAction(const ActionEvent& e) override;


void step() override { void step() override {
text = "Sort: "; text = "Sort: ";
@@ -426,33 +403,10 @@ struct SortButton : ui::ChoiceButton {
}; };




struct ZoomItem : ui::MenuItem {
Browser* browser;
float zoom;
void onAction(const ActionEvent& e) override;
void step() override {
rightText = CHECKMARK(settings::browserZoom == zoom);
MenuItem::step();
}
};


struct ZoomButton : ui::ChoiceButton { struct ZoomButton : ui::ChoiceButton {
Browser* browser; Browser* browser;


void onAction(const ActionEvent& e) override {
ui::Menu* menu = createMenu();
menu->box.pos = getAbsoluteOffset(math::Vec(0, box.size.y));
menu->box.size.x = box.size.x;

for (float zoom = 1.f; zoom >= -2.f; zoom -= 0.5f) {
ZoomItem* sortItem = new ZoomItem;
sortItem->text = string::f("%.0f%%", std::pow(2.f, zoom) * 100.f);
sortItem->zoom = zoom;
sortItem->browser = browser;
menu->addChild(sortItem);
}
}
void onAction(const ActionEvent& e) override;


void step() override { void step() override {
text = "Zoom: "; text = "Zoom: ";
@@ -994,15 +948,37 @@ inline void TagButton::step() {
ChoiceButton::step(); ChoiceButton::step();
} }


inline void SortItem::onAction(const ActionEvent& e) {
settings::browserSort = sort;
browser->refresh();
inline void SortButton::onAction(const ActionEvent& e) {
ui::Menu* menu = createMenu();
menu->box.pos = getAbsoluteOffset(math::Vec(0, box.size.y));
menu->box.size.x = box.size.x;

for (int sortId = 0; sortId <= settings::BROWSER_SORT_RANDOM; sortId++) {
menu->addChild(createCheckMenuItem(sortNames[sortId], "",
[=]() {return settings::browserSort == sortId;},
[=]() {
settings::browserSort = (settings::BrowserSort) sortId;
browser->refresh();
}
));
}
} }


inline void ZoomItem::onAction(const ActionEvent& e) {
if (zoom != settings::browserZoom) {
settings::browserZoom = zoom;
browser->updateZoom();
inline void ZoomButton::onAction(const ActionEvent& e) {
ui::Menu* menu = createMenu();
menu->box.pos = getAbsoluteOffset(math::Vec(0, box.size.y));
menu->box.size.x = box.size.x;

for (float zoom = 1.f; zoom >= -2.f; zoom -= 0.5f) {
menu->addChild(createCheckMenuItem(string::f("%.0f%%", std::pow(2.f, zoom) * 100.f), "",
[=]() {return settings::browserZoom == zoom;},
[=]() {
if (zoom == settings::browserZoom)
return;
settings::browserZoom = zoom;
browser->updateZoom();
}
));
} }
} }




+ 13
- 18
src/app/MenuBar.cpp View File

@@ -469,11 +469,11 @@ struct SampleRateItem : ui::MenuItem {
if (settings::sampleRate == 0) { if (settings::sampleRate == 0) {
float sampleRate = APP->engine->getSampleRate(); float sampleRate = APP->engine->getSampleRate();
rightText += string::f("(%g kHz) ", sampleRate / 1000.f); rightText += string::f("(%g kHz) ", sampleRate / 1000.f);
rightText += CHECKMARK_STRING;
} }
menu->addChild(createMenuItem("Auto", rightText, [=]() {
settings::sampleRate = 0;
}));
menu->addChild(createCheckMenuItem("Auto", rightText,
[=]() {return settings::sampleRate == 0;},
[=]() {settings::sampleRate = 0;}
));


// Power-of-2 oversample times 44.1kHz or 48kHz // Power-of-2 oversample times 44.1kHz or 48kHz
for (int i = -2; i <= 4; i++) { for (int i = -2; i <= 4; i++) {
@@ -490,11 +490,10 @@ struct SampleRateItem : ui::MenuItem {
else if (oversample < 1.f) { else if (oversample < 1.f) {
rightText += string::f("(1/%.0fx)", 1.f / oversample); rightText += string::f("(1/%.0fx)", 1.f / oversample);
} }
rightText += " ";
rightText += CHECKMARK(settings::sampleRate == sampleRate);
menu->addChild(createMenuItem(text, rightText, [=]() {
settings::sampleRate = sampleRate;
}));
menu->addChild(createCheckMenuItem(text, rightText,
[=]() {return settings::sampleRate == sampleRate;},
[=]() {settings::sampleRate = sampleRate;}
));
} }
} }
return menu; return menu;
@@ -515,10 +514,7 @@ struct EngineButton : MenuButton {
settings::cpuMeter ^= true; settings::cpuMeter ^= true;
})); }));


SampleRateItem* sampleRateItem = new SampleRateItem;
sampleRateItem->text = "Sample rate";
sampleRateItem->rightText = RIGHT_ARROW;
menu->addChild(sampleRateItem);
menu->addChild(createMenuItem<SampleRateItem>("Sample rate", RIGHT_ARROW));


menu->addChild(createSubmenuItem("Threads", string::f("%d", settings::threadCount), [=](ui::Menu* menu) { menu->addChild(createSubmenuItem("Threads", string::f("%d", settings::threadCount), [=](ui::Menu* menu) {
// BUG This assumes SMT is enabled. // BUG This assumes SMT is enabled.
@@ -530,11 +526,10 @@ struct EngineButton : MenuButton {
rightText += "(most modules)"; rightText += "(most modules)";
else if (i == 1) else if (i == 1)
rightText += "(lowest CPU usage)"; rightText += "(lowest CPU usage)";
if (settings::threadCount == i)
rightText += " " CHECKMARK_STRING;
menu->addChild(createMenuItem(string::f("%d", i), rightText, [=]() {
settings::threadCount = i;
}));
menu->addChild(createCheckMenuItem(string::f("%d", i), rightText,
[=]() {return settings::threadCount == i;},
[=]() {settings::threadCount = i;}
));
} }
})); }));
} }


Loading…
Cancel
Save