feat: Selection Popup (#2358)

Co-authored-by: pablohc <pablonoviello@outlook.com>
This commit is contained in:
Uri Tauber
2026-06-29 16:59:25 -04:00
committed by GitHub
co-authored by pablohc
parent fd43ca2fe1
commit fef39da23c
11 changed files with 324 additions and 12 deletions
@@ -125,6 +125,8 @@ void StatusBarSettingsActivity::onEnter() {
void StatusBarSettingsActivity::onExit() { Activity::onExit(); }
void StatusBarSettingsActivity::loop() {
if (optionPopup.handleInput(mappedInput, [this] { requestUpdate(); })) return;
if (mappedInput.wasPressed(MappedInputManager::Button::Back)) {
finish();
return;
@@ -167,21 +169,35 @@ void StatusBarSettingsActivity::handleSelection() {
SETTINGS.statusBarBookProgressPercentage = (SETTINGS.statusBarBookProgressPercentage + 1) % 2;
break;
case ITEM_PROGRESS_BAR:
SETTINGS.statusBarProgressBar = (SETTINGS.statusBarProgressBar + 1) % PROGRESS_BAR_ITEMS;
break;
optionPopup.show(StrId::STR_PROGRESS_BAR, progressBarNames, PROGRESS_BAR_ITEMS, SETTINGS.statusBarProgressBar,
[this](int idx) {
SETTINGS.statusBarProgressBar = idx;
SETTINGS.saveToFile();
});
return;
case ITEM_PROGRESS_BAR_THICKNESS:
SETTINGS.statusBarProgressBarThickness =
(SETTINGS.statusBarProgressBarThickness + 1) % PROGRESS_BAR_THICKNESS_ITEMS;
break;
optionPopup.show(StrId::STR_PROGRESS_BAR_THICKNESS, progressBarThicknessNames, PROGRESS_BAR_THICKNESS_ITEMS,
SETTINGS.statusBarProgressBarThickness, [this](int idx) {
SETTINGS.statusBarProgressBarThickness = idx;
SETTINGS.saveToFile();
});
return;
case ITEM_TITLE:
SETTINGS.statusBarTitle = (SETTINGS.statusBarTitle + 1) % TITLE_ITEMS;
break;
optionPopup.show(StrId::STR_TITLE, titleNames, TITLE_ITEMS, SETTINGS.statusBarTitle, [this](int idx) {
SETTINGS.statusBarTitle = idx;
SETTINGS.saveToFile();
});
return;
case ITEM_BATTERY:
SETTINGS.statusBarBattery = (SETTINGS.statusBarBattery + 1) % 2;
break;
case ITEM_XTC_STATUS_BAR:
SETTINGS.xtcStatusBarMode = (SETTINGS.xtcStatusBarMode + 1) % XTC_STATUS_BAR_ITEMS;
break;
optionPopup.show(StrId::STR_XTC_STATUS_BAR, xtcStatusBarNames, XTC_STATUS_BAR_ITEMS, SETTINGS.xtcStatusBarMode,
[this](int idx) {
SETTINGS.xtcStatusBarMode = idx;
SETTINGS.saveToFile();
});
return;
case ITEM_CLOCK:
SETTINGS.statusBarClock = (SETTINGS.statusBarClock + 1) % STATUS_BAR_CLOCK_ITEMS;
break;
@@ -202,6 +218,8 @@ void StatusBarSettingsActivity::handleSelection() {
}
void StatusBarSettingsActivity::render(RenderLock&&) {
if (optionPopup.processRender(renderer, mappedInput)) return;
renderer.clearScreen();
auto metrics = UITheme::getInstance().getMetrics();