diff --git a/applications/services/dolphin/dolphin.c b/applications/services/dolphin/dolphin.c index e5b0ba52b..c46a843c8 100644 --- a/applications/services/dolphin/dolphin.c +++ b/applications/services/dolphin/dolphin.c @@ -7,6 +7,7 @@ #include #include #include "furi_hal_random.h" +#include #define DOLPHIN_LOCK_EVENT_FLAG (0x1) #define TAG "Dolphin" @@ -92,8 +93,10 @@ Dolphin* dolphin_alloc() { dolphin->state = dolphin_state_alloc(); dolphin->event_queue = furi_message_queue_alloc(8, sizeof(DolphinEvent)); dolphin->pubsub = furi_pubsub_alloc(); + int32_t butthurt = XTREME_SETTINGS()->butthurt_timer; + butthurt = butthurt == 0 ? 43200 : butthurt; dolphin->butthurt_timer = xTimerCreate( - NULL, HOURS_IN_TICKS(2 * 24), pdTRUE, dolphin, dolphin_butthurt_timer_callback); + NULL, (butthurt > 0) ? (butthurt * 1000) : -1, pdTRUE, dolphin, dolphin_butthurt_timer_callback); dolphin->flush_timer = xTimerCreate(NULL, 30 * 1000, pdFALSE, dolphin, dolphin_flush_timer_callback); dolphin->clear_limits_timer = xTimerCreate( diff --git a/applications/services/xtreme/settings.h b/applications/services/xtreme/settings.h index b4f12b1b8..7bbb07c9b 100644 --- a/applications/services/xtreme/settings.h +++ b/applications/services/xtreme/settings.h @@ -29,6 +29,7 @@ typedef struct { bool bar_background; bool bad_bt; bool sort_ignore_dirs; + int32_t butthurt_timer; } XtremeSettings; XtremeSettings* XTREME_SETTINGS(); diff --git a/applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c b/applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c index 83fbdd77b..fead7956a 100644 --- a/applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c +++ b/applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c @@ -116,14 +116,6 @@ static void xtreme_app_scene_main_subghz_bypass_changed(VariableItem* item) { app->save_subghz = true; } -static void xtreme_app_scene_main_sort_folders_before_changed(VariableItem* item) { - XtremeApp* app = variable_item_get_context(item); - bool value = variable_item_get_current_value_index(item); - variable_item_set_current_value_text(item, value ? "ON" : "OFF"); - XTREME_SETTINGS()->sort_ignore_dirs = !value; - app->save_settings = true; -} - static void xtreme_app_scene_main_xp_level_changed(VariableItem* item) { XtremeApp* app = variable_item_get_context(item); app->dolphin_level = variable_item_get_current_value_index(item) + 1; @@ -133,6 +125,36 @@ static void xtreme_app_scene_main_xp_level_changed(VariableItem* item) { app->save_level = true; } +const char* const butthurt_timer_names[] = { + "OFF", + "30 M", + "1 H", + "2 H", + "4 H", + "6 H", + "8 H", + "12 H", + "24 H", + "48 H"}; +const int32_t butthurt_timer_values[COUNT_OF(butthurt_timer_names)] = + {-1, 1800, 3600, 7200, 14400, 21600, 28800, 0, 86400, 172800}; +static void xtreme_app_scene_main_butthurt_timer_changed(VariableItem* item) { + XtremeApp* app = variable_item_get_context(item); + uint8_t index = variable_item_get_current_value_index(item); + variable_item_set_current_value_text(item, butthurt_timer_names[index]); + XTREME_SETTINGS()->butthurt_timer = butthurt_timer_values[index]; + app->save_settings = true; + app->require_reboot = true; +} + +static void xtreme_app_scene_main_sort_folders_before_changed(VariableItem* item) { + XtremeApp* app = variable_item_get_context(item); + bool value = variable_item_get_current_value_index(item); + variable_item_set_current_value_text(item, value ? "ON" : "OFF"); + XTREME_SETTINGS()->sort_ignore_dirs = !value; + app->save_settings = true; +} + void xtreme_app_scene_main_on_enter(void* context) { XtremeApp* app = context; XtremeSettings* xtreme_settings = XTREME_SETTINGS(); @@ -272,16 +294,7 @@ void xtreme_app_scene_main_on_enter(void* context) { variable_item_set_current_value_text(item, app->subghz_bypass ? "ON" : "OFF"); - variable_item_list_add(var_item_list, " = Misc =", 0, NULL, app); - - item = variable_item_list_add( - var_item_list, - "Sort Dirs First", - 2, - xtreme_app_scene_main_sort_folders_before_changed, - app); - variable_item_set_current_value_index(item, !xtreme_settings->sort_ignore_dirs); - variable_item_set_current_value_text(item, !xtreme_settings->sort_ignore_dirs ? "ON" : "OFF"); + variable_item_list_add(var_item_list, " = Dolphin =", 0, NULL, app); char level_str[4]; snprintf(level_str, 4, "%i", app->dolphin_level); @@ -294,6 +307,29 @@ void xtreme_app_scene_main_on_enter(void* context) { variable_item_set_current_value_index(item, app->dolphin_level - 1); variable_item_set_current_value_text(item, level_str); + item = variable_item_list_add( + var_item_list, + "Butthurt Timer", + COUNT_OF(butthurt_timer_names), + xtreme_app_scene_main_butthurt_timer_changed, + app); + value_index = value_index_int32( + xtreme_settings->butthurt_timer, butthurt_timer_values, COUNT_OF(butthurt_timer_names)); + variable_item_set_current_value_index(item, value_index); + variable_item_set_current_value_text(item, butthurt_timer_names[value_index]); + + + variable_item_list_add(var_item_list, " = Misc =", 0, NULL, app); + + item = variable_item_list_add( + var_item_list, + "Sort Dirs First", + 2, + xtreme_app_scene_main_sort_folders_before_changed, + app); + variable_item_set_current_value_index(item, !xtreme_settings->sort_ignore_dirs); + variable_item_set_current_value_text(item, !xtreme_settings->sort_ignore_dirs ? "ON" : "OFF"); + FuriString* version_tag = furi_string_alloc_printf( "%s %s", version_get_gitbranchnum(NULL), version_get_builddate(NULL)); variable_item_list_add(var_item_list, furi_string_get_cstr(version_tag), 0, NULL, app);