mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-06-17 20:19:43 -07:00
Add popup before asset swap reboot
This commit is contained in:
@@ -3,15 +3,13 @@
|
||||
#include <power/power_service/power.h>
|
||||
#include <lib/flipper_format/flipper_format.h>
|
||||
|
||||
bool settings_changed;
|
||||
bool assets_changed;
|
||||
|
||||
static void xtreme_settings_scene_start_base_graphics_changed(VariableItem* item) {
|
||||
XtremeSettingsApp* app = variable_item_get_context(item);
|
||||
bool value = variable_item_get_current_value_index(item);
|
||||
variable_item_set_current_value_text(item, value ? "SFW" : "NSFW");
|
||||
XTREME_SETTINGS()->sfw_mode = value;
|
||||
settings_changed = true;
|
||||
assets_changed = true;
|
||||
app->settings_changed = true;
|
||||
app->assets_changed = true;
|
||||
}
|
||||
|
||||
static void xtreme_settings_scene_start_asset_pack_changed(VariableItem* item) {
|
||||
@@ -19,8 +17,8 @@ static void xtreme_settings_scene_start_asset_pack_changed(VariableItem* item) {
|
||||
uint8_t index = variable_item_get_current_value_index(item);
|
||||
variable_item_set_current_value_text(item, index == 0 ? "OFF" : *asset_packs_get(app->asset_packs, index - 1));
|
||||
strlcpy(XTREME_SETTINGS()->asset_pack, index == 0 ? "" : *asset_packs_get(app->asset_packs, index - 1), MAX_PACK_NAME_LEN);
|
||||
settings_changed = true;
|
||||
assets_changed = true;
|
||||
app->settings_changed = true;
|
||||
app->assets_changed = true;
|
||||
}
|
||||
|
||||
#define CYCLE_ANIMS_COUNT 13
|
||||
@@ -42,17 +40,19 @@ const char* const cycle_anims_names[CYCLE_ANIMS_COUNT] = {
|
||||
const int32_t cycle_anims_values[CYCLE_ANIMS_COUNT] =
|
||||
{-1, 0, 30, 60, 300, 600, 900, 1800, 3600, 7200, 21600, 43200, 86400};
|
||||
static void xtreme_settings_scene_start_cycle_anims_changed(VariableItem* item) {
|
||||
XtremeSettingsApp* app = variable_item_get_context(item);
|
||||
uint8_t index = variable_item_get_current_value_index(item);
|
||||
variable_item_set_current_value_text(item, cycle_anims_names[index]);
|
||||
XTREME_SETTINGS()->cycle_anims = cycle_anims_values[index];
|
||||
settings_changed = true;
|
||||
app->settings_changed = true;
|
||||
}
|
||||
|
||||
static void xtreme_settings_scene_start_unlock_anims_changed(VariableItem* item) {
|
||||
XtremeSettingsApp* 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()->unlock_anims = value;
|
||||
settings_changed = true;
|
||||
app->settings_changed = true;
|
||||
}
|
||||
|
||||
#define BATTERY_STYLE_COUNT 7
|
||||
@@ -68,10 +68,11 @@ const uint32_t battery_style_values[BATTERY_STYLE_COUNT] = {
|
||||
BatteryStyleBarPercent
|
||||
};
|
||||
static void xtreme_settings_scene_start_battery_style_changed(VariableItem* item) {
|
||||
XtremeSettingsApp* app = variable_item_get_context(item);
|
||||
uint8_t index = variable_item_get_current_value_index(item);
|
||||
variable_item_set_current_value_text(item, battery_style_names[index]);
|
||||
XTREME_SETTINGS()->battery_style = battery_style_values[index];
|
||||
settings_changed = true;
|
||||
app->settings_changed = true;
|
||||
}
|
||||
|
||||
static void xtreme_settings_scene_start_xp_level_changed(VariableItem* item) {
|
||||
@@ -112,8 +113,6 @@ static void xtreme_settings_scene_start_subghz_bypass_changed(VariableItem* item
|
||||
|
||||
void xtreme_settings_scene_start_on_enter(void* context) {
|
||||
XtremeSettingsApp* app = context;
|
||||
settings_changed = false;
|
||||
assets_changed = false;
|
||||
XtremeSettings* xtreme_settings = XTREME_SETTINGS();
|
||||
VariableItemList* var_item_list = app->var_item_list;
|
||||
VariableItem* item;
|
||||
@@ -246,13 +245,6 @@ bool xtreme_settings_scene_start_on_event(void* context, SceneManagerEvent event
|
||||
void xtreme_settings_scene_start_on_exit(void* context) {
|
||||
XtremeSettingsApp* app = context;
|
||||
|
||||
if (settings_changed) {
|
||||
XTREME_SETTINGS_SAVE();
|
||||
if (assets_changed) {
|
||||
power_reboot(PowerBootModeNormal);
|
||||
}
|
||||
}
|
||||
|
||||
Dolphin* dolphin = furi_record_open(RECORD_DOLPHIN);
|
||||
DolphinStats stats = dolphin_stats(dolphin);
|
||||
if (app->dolphin_level != stats.level) {
|
||||
|
||||
@@ -6,9 +6,27 @@ static bool xtreme_settings_custom_event_callback(void* context, uint32_t event)
|
||||
return scene_manager_handle_custom_event(app->scene_manager, event);
|
||||
}
|
||||
|
||||
void xtreme_settings_reboot(void* context) {
|
||||
UNUSED(context);
|
||||
power_reboot(PowerBootModeNormal);
|
||||
}
|
||||
|
||||
static bool xtreme_settings_back_event_callback(void* context) {
|
||||
furi_assert(context);
|
||||
XtremeSettingsApp* app = context;
|
||||
if (app->settings_changed) {
|
||||
XTREME_SETTINGS_SAVE();
|
||||
if (app->assets_changed) {
|
||||
popup_set_header(app->popup, "Rebooting...", 64, 24, AlignCenter, AlignCenter);
|
||||
popup_set_text(app->popup, "Swapping assets...", 64, 42, AlignCenter, AlignCenter);
|
||||
popup_set_callback(app->popup, xtreme_settings_reboot);
|
||||
popup_set_context(app->popup, app);
|
||||
popup_set_timeout(app->popup, 1000);
|
||||
popup_enable_timeout(app->popup);
|
||||
view_dispatcher_switch_to_view(app->view_dispatcher, XtremeSettingsAppViewPopup);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return scene_manager_handle_back_event(app->scene_manager);
|
||||
}
|
||||
|
||||
@@ -36,6 +54,12 @@ XtremeSettingsApp* xtreme_settings_app_alloc() {
|
||||
XtremeSettingsAppViewVarItemList,
|
||||
variable_item_list_get_view(app->var_item_list));
|
||||
|
||||
app->popup = popup_alloc();
|
||||
view_dispatcher_add_view(
|
||||
app->view_dispatcher,
|
||||
XtremeSettingsAppViewPopup,
|
||||
popup_get_view(app->popup));
|
||||
|
||||
// Set first scene
|
||||
scene_manager_next_scene(app->scene_manager, XtremeSettingsAppSceneStart);
|
||||
return app;
|
||||
@@ -47,6 +71,8 @@ void xtreme_settings_app_free(XtremeSettingsApp* app) {
|
||||
// Gui modules
|
||||
view_dispatcher_remove_view(app->view_dispatcher, XtremeSettingsAppViewVarItemList);
|
||||
variable_item_list_free(app->var_item_list);
|
||||
view_dispatcher_remove_view(app->view_dispatcher, XtremeSettingsAppViewPopup);
|
||||
popup_free(app->popup);
|
||||
|
||||
// View Dispatcher and Scene Manager
|
||||
view_dispatcher_free(app->view_dispatcher);
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <gui/scene_manager.h>
|
||||
#include <assets_icons.h>
|
||||
#include <gui/modules/variable_item_list.h>
|
||||
#include <gui/modules/popup.h>
|
||||
#include "xtreme_settings.h"
|
||||
#include "xtreme_assets.h"
|
||||
#include "scenes/xtreme_settings_scene.h"
|
||||
@@ -22,10 +23,14 @@ typedef struct {
|
||||
SceneManager* scene_manager;
|
||||
ViewDispatcher* view_dispatcher;
|
||||
VariableItemList* var_item_list;
|
||||
Popup* popup;
|
||||
int dolphin_level;
|
||||
bool settings_changed;
|
||||
bool assets_changed;
|
||||
asset_packs_t asset_packs;
|
||||
} XtremeSettingsApp;
|
||||
|
||||
typedef enum {
|
||||
XtremeSettingsAppViewVarItemList,
|
||||
XtremeSettingsAppViewPopup,
|
||||
} XtremeSettingsAppView;
|
||||
|
||||
Reference in New Issue
Block a user