IR: Easy Learn (#350)

* initial working commit

* update names + format

* add skip functionality

* misc tweaks

* change back gpio label

* remove gpio setting changes

* misc fixes

* bug fixes and polish

* add subtitle button and reorganize order

* update ir settings to version 2

* ir settings v1 migration support

* fixes

* format

* misc fixes

* Simplify and standardize settings handling

* Auto-calculate easy_mode_button_count

* Case insensitive match existing remote buttons

* Display button name more prominently

* Sort submenu indexes and handling

* Fine to keep text highlighted

* Some formatting for less conflicts

* Not sure how these got lost kek

* Update changelog

---------

Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>
This commit is contained in:
jay candel
2025-01-22 11:46:40 +08:00
committed by GitHub
parent e6ccd22c30
commit 0a8b9a701a
10 changed files with 277 additions and 38 deletions

View File

@@ -5,6 +5,7 @@ enum SubmenuIndex {
SubmenuIndexLearnNewRemote,
SubmenuIndexSavedRemotes,
SubmenuIndexGpioSettings,
SubmenuIndexEasyLearn,
SubmenuIndexLearnNewRemoteRaw,
SubmenuIndexDebug
};
@@ -44,6 +45,19 @@ void infrared_scene_start_on_enter(void* context) {
infrared_scene_start_submenu_callback,
infrared);
char easy_learn_text[24];
snprintf(
easy_learn_text,
sizeof(easy_learn_text),
"Easy Learn [%s]",
infrared->app_state.is_easy_mode ? "X" : " ");
submenu_add_item(
submenu,
easy_learn_text,
SubmenuIndexEasyLearn,
infrared_scene_start_submenu_callback,
infrared);
submenu_add_lockable_item(
submenu,
"Learn New Remote RAW",
@@ -70,7 +84,7 @@ void infrared_scene_start_on_enter(void* context) {
const uint32_t submenu_index =
scene_manager_get_scene_state(scene_manager, InfraredSceneStart);
submenu_set_selected_item(submenu, submenu_index);
scene_manager_set_scene_state(scene_manager, InfraredSceneStart, SubmenuIndexUniversalRemotes);
// scene_manager_set_scene_state(scene_manager, InfraredSceneStart, SubmenuIndexUniversalRemotes);
view_dispatcher_switch_to_view(infrared->view_dispatcher, InfraredViewSubmenu);
}
@@ -104,6 +118,17 @@ bool infrared_scene_start_on_event(void* context, SceneManagerEvent event) {
scene_manager_next_scene(scene_manager, InfraredSceneRemoteList);
} else if(submenu_index == SubmenuIndexGpioSettings) {
scene_manager_next_scene(scene_manager, InfraredSceneGpioSettings);
} else if(submenu_index == SubmenuIndexEasyLearn) {
infrared->app_state.is_easy_mode = !infrared->app_state.is_easy_mode;
infrared_save_settings(infrared);
// Update the menu item text without scene transition
char easy_learn_text[24];
snprintf(
easy_learn_text,
sizeof(easy_learn_text),
"Easy Learn [%s]",
infrared->app_state.is_easy_mode ? "X" : " ");
submenu_change_item_label(infrared->submenu, SubmenuIndexEasyLearn, easy_learn_text);
} else if(submenu_index == SubmenuIndexDebug) {
scene_manager_next_scene(scene_manager, InfraredSceneDebug);
}