From cf2a1265db2baed3fd13f1d0fb9abff852f90308 Mon Sep 17 00:00:00 2001 From: Willy-JL Date: Mon, 16 Jan 2023 19:18:28 +0000 Subject: [PATCH] Add a cycle animations setting --- .../desktop/animations/animation_manager.c | 5 +++- .../services/desktop/desktop_settings.h | 1 + .../scenes/desktop_settings_scene_start.c | 28 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/applications/services/desktop/animations/animation_manager.c b/applications/services/desktop/animations/animation_manager.c index 9f6df386c..f76c45383 100644 --- a/applications/services/desktop/animations/animation_manager.c +++ b/applications/services/desktop/animations/animation_manager.c @@ -118,9 +118,12 @@ static void animation_manager_check_blocking_callback(const void* message, void* static void animation_manager_timer_callback(void* context) { furi_assert(context); AnimationManager* animation_manager = context; - if(animation_manager->new_idle_callback) { + DesktopSettings* settings = malloc(sizeof(DesktopSettings)); + DESKTOP_SETTINGS_LOAD(settings); + if(!settings->dont_cycle_animations && animation_manager->new_idle_callback) { animation_manager->new_idle_callback(animation_manager->context); } + free(settings); } static void animation_manager_interact_callback(void* context) { diff --git a/applications/services/desktop/desktop_settings.h b/applications/services/desktop/desktop_settings.h index 55d8640f5..c8be1d6b6 100644 --- a/applications/services/desktop/desktop_settings.h +++ b/applications/services/desktop/desktop_settings.h @@ -64,4 +64,5 @@ typedef struct { uint8_t displayBatteryPercentage; bool is_sfwmode; uint8_t sfw_mode; + uint8_t dont_cycle_animations; } DesktopSettings; diff --git a/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c b/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c index 9901740b6..6e64fe80d 100644 --- a/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c +++ b/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c @@ -39,6 +39,14 @@ const uint32_t displayBatteryPercentage_value[BATTERY_VIEW_COUNT] = { uint8_t origBattDisp_value = 0; +#define CYCLE_ANIMATIONS_COUNT 2 +const char* const cycle_animations_text[CYCLE_ANIMATIONS_COUNT] = { + "ON", + "OFF", +}; +const uint32_t cycle_animations_value[CYCLE_ANIMATIONS_COUNT] = + {0, 1}; + static void desktop_settings_scene_start_var_list_enter_callback(void* context, uint32_t index) { DesktopSettingsApp* app = context; view_dispatcher_send_custom_event(app->view_dispatcher, index); @@ -60,6 +68,14 @@ static void desktop_settings_scene_start_battery_view_changed(VariableItem* item app->settings.displayBatteryPercentage = index; } +static void desktop_settings_scene_start_cycle_animations_changed(VariableItem* item) { + DesktopSettingsApp* app = variable_item_get_context(item); + uint8_t index = variable_item_get_current_value_index(item); + + variable_item_set_current_value_text(item, cycle_animations_text[index]); + app->settings.dont_cycle_animations = auto_lock_delay_value[index]; +} + void desktop_settings_scene_start_on_enter(void* context) { DesktopSettingsApp* app = context; VariableItemList* variable_item_list = app->variable_item_list; @@ -102,6 +118,18 @@ void desktop_settings_scene_start_on_enter(void* context) { variable_item_set_current_value_index(item, value_index); variable_item_set_current_value_text(item, battery_view_count_text[value_index]); + item = variable_item_list_add( + variable_item_list, + "Cycle animations", + CYCLE_ANIMATIONS_COUNT, + desktop_settings_scene_start_cycle_animations_changed, + app); + + value_index = value_index_uint32( + app->settings.dont_cycle_animations, cycle_animations_value, CYCLE_ANIMATIONS_COUNT); + variable_item_set_current_value_index(item, value_index); + variable_item_set_current_value_text(item, cycle_animations_text[value_index]); + variable_item_list_set_enter_callback( variable_item_list, desktop_settings_scene_start_var_list_enter_callback, app); view_dispatcher_switch_to_view(app->view_dispatcher, DesktopSettingsAppViewVarItemList);