static void selected_callback(NumberWindow *window, void *data) { if (unit_mode) { ask_for_timeo(number_window_get_value(window)); window_stack_pop(true); } else { number_window_set_step_size(s_window, 1); number_window_set_label(s_window, "TIMEO units?"); unit_mode = true; } }
/** Common handler attached to every menu item. Called when you click the select (middle) button on the menu item. Either switches the value inline (e.g. for booleans), or opens a numeric stepper window (e.g. for durations). */ void pomOnMenuSelect(int index, void *context) { PomSettings *s = &app.settings; PomMenuId id = index; switch (id) { case PomMenuLanguage: if (++s->language >= PomLanguageCount) { s->language = 0; } break; case PomMenuVibrateWhileWorking: s->vibrateWhileWorking = !s->vibrateWhileWorking; break; case PomMenuTakeLongRests: s->takeLongRests = !s->takeLongRests; break; case PomMenuRestDuration: number_window_set_value(&durationChooserWindow, s->restTicks/60); number_window_set_label(&durationChooserWindow, POM_TEXT_SETTINGS_REST_DURATION[s->language]); window_stack_push((Window*)&durationChooserWindow, true); break; case PomMenuLongRestDuration: number_window_set_value(&durationChooserWindow, s->longRestTicks/60); number_window_set_label(&durationChooserWindow, POM_TEXT_SETTINGS_LONG_REST_DURATION[s->language]); window_stack_push((Window*)&durationChooserWindow, true); break; case PomMenuWorkDuration: number_window_set_value(&durationChooserWindow, s->workTicks/60); number_window_set_label(&durationChooserWindow, POM_TEXT_SETTINGS_WORK_DURATION[s->language]); window_stack_push((Window*)&durationChooserWindow, true); break; default: return; } pomUpdateMenus(); }