Add a cycle animations setting

This commit is contained in:
Willy-JL
2023-01-16 19:18:28 +00:00
parent 38d5e8d46d
commit cf2a1265db
3 changed files with 33 additions and 1 deletions

View File

@@ -118,9 +118,12 @@ static void animation_manager_check_blocking_callback(const void* message, void*
static void animation_manager_timer_callback(void* context) { static void animation_manager_timer_callback(void* context) {
furi_assert(context); furi_assert(context);
AnimationManager* animation_manager = 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); animation_manager->new_idle_callback(animation_manager->context);
} }
free(settings);
} }
static void animation_manager_interact_callback(void* context) { static void animation_manager_interact_callback(void* context) {

View File

@@ -64,4 +64,5 @@ typedef struct {
uint8_t displayBatteryPercentage; uint8_t displayBatteryPercentage;
bool is_sfwmode; bool is_sfwmode;
uint8_t sfw_mode; uint8_t sfw_mode;
uint8_t dont_cycle_animations;
} DesktopSettings; } DesktopSettings;

View File

@@ -39,6 +39,14 @@ const uint32_t displayBatteryPercentage_value[BATTERY_VIEW_COUNT] = {
uint8_t origBattDisp_value = 0; 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) { static void desktop_settings_scene_start_var_list_enter_callback(void* context, uint32_t index) {
DesktopSettingsApp* app = context; DesktopSettingsApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, index); 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; 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) { void desktop_settings_scene_start_on_enter(void* context) {
DesktopSettingsApp* app = context; DesktopSettingsApp* app = context;
VariableItemList* variable_item_list = app->variable_item_list; 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_index(item, value_index);
variable_item_set_current_value_text(item, battery_view_count_text[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_set_enter_callback(
variable_item_list, desktop_settings_scene_start_var_list_enter_callback, app); variable_item_list, desktop_settings_scene_start_var_list_enter_callback, app);
view_dispatcher_switch_to_view(app->view_dispatcher, DesktopSettingsAppViewVarItemList); view_dispatcher_switch_to_view(app->view_dispatcher, DesktopSettingsAppViewVarItemList);