summaryrefslogtreecommitdiff
path: root/src/ui/screen_settings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/screen_settings.cpp')
-rw-r--r--src/ui/screen_settings.cpp47
1 files changed, 34 insertions, 13 deletions
diff --git a/src/ui/screen_settings.cpp b/src/ui/screen_settings.cpp
index a2dc4296..6ee8405e 100644
--- a/src/ui/screen_settings.cpp
+++ b/src/ui/screen_settings.cpp
@@ -422,19 +422,40 @@ auto Appearance::CommitBrightness() -> void {
nvs_.ScreenBrightness(current_brightness_);
}
-InputMethod::InputMethod(models::TopBar& bar)
- : MenuScreen(bar, "Input Method") {
- lv_obj_t* wheel_label = lv_label_create(content_);
- lv_label_set_text(wheel_label, "What does the wheel do?");
- lv_obj_t* wheel_dropdown = lv_dropdown_create(content_);
- lv_dropdown_set_options(wheel_dropdown, "Scroll\nDirectional\nBig Button");
- lv_group_add_obj(group_, wheel_dropdown);
-
- lv_obj_t* buttons_label = lv_label_create(content_);
- lv_label_set_text(buttons_label, "What do the buttons do?");
- lv_obj_t* buttons_dropdown = lv_dropdown_create(content_);
- lv_dropdown_set_options(buttons_dropdown, "Volume\nScroll");
- lv_group_add_obj(group_, buttons_dropdown);
+InputMethod::InputMethod(models::TopBar& bar, drivers::NvsStorage& nvs)
+ : MenuScreen(bar, "Input Method"), nvs_(nvs) {
+ lv_obj_t* primary_label = lv_label_create(content_);
+ lv_label_set_text(primary_label, "Control scheme");
+ lv_obj_t* primary_dropdown = lv_dropdown_create(content_);
+ lv_dropdown_set_options(
+ primary_dropdown,
+ "Side buttons only\nButtons and touch\nD-Pad\nClickwheel");
+ lv_group_add_obj(group_, primary_dropdown);
+
+ lv_dropdown_set_selected(primary_dropdown,
+ static_cast<uint16_t>(nvs.PrimaryInput()));
+
+ lv_bind(primary_dropdown, LV_EVENT_VALUE_CHANGED, [this](lv_obj_t* obj) {
+ drivers::NvsStorage::InputModes mode;
+ switch (lv_dropdown_get_selected(obj)) {
+ case 0:
+ mode = drivers::NvsStorage::InputModes::kButtonsOnly;
+ break;
+ case 1:
+ mode = drivers::NvsStorage::InputModes::kButtonsWithWheel;
+ break;
+ case 2:
+ mode = drivers::NvsStorage::InputModes::kDirectionalWheel;
+ break;
+ case 3:
+ mode = drivers::NvsStorage::InputModes::kRotatingWheel;
+ break;
+ default:
+ return;
+ }
+ nvs_.PrimaryInput(mode);
+ events::Ui().Dispatch(internal::ControlSchemeChanged{});
+ });
}
Storage::Storage(models::TopBar& bar) : MenuScreen(bar, "Storage") {