Show xfwfirstboot slideshow on click version text

This commit is contained in:
Willy-JL
2023-03-28 07:53:53 +01:00
parent 73aee87eb1
commit 64bd2052e0
4 changed files with 145 additions and 116 deletions

View File

@@ -11,129 +11,140 @@ void callback_reboot(void* context) {
power_reboot(PowerBootModeNormal);
}
bool xtreme_app_apply(XtremeApp* app) {
Storage* storage = furi_record_open(RECORD_STORAGE);
if(app->save_mainmenu_apps) {
Stream* stream = file_stream_alloc(storage);
if(file_stream_open(stream, XTREME_APPS_PATH, FSAM_READ_WRITE, FSOM_CREATE_ALWAYS)) {
CharList_it_t it;
CharList_it(it, app->mainmenu_app_paths);
for(uint i = 0; i < CharList_size(app->mainmenu_app_paths); i++) {
stream_write_format(stream, "%s\n", *CharList_get(app->mainmenu_app_paths, i));
}
}
file_stream_close(stream);
stream_free(stream);
}
if(app->save_subghz_frequencies) {
FlipperFormat* file = flipper_format_file_alloc(storage);
do {
FrequencyList_it_t it;
if(!flipper_format_file_open_always(file, EXT_PATH("subghz/assets/setting_user")))
break;
if(!flipper_format_write_header_cstr(
file, SUBGHZ_SETTING_FILE_TYPE, SUBGHZ_SETTING_FILE_VERSION))
break;
while(flipper_format_delete_key(file, "Add_standard_frequencies"))
;
flipper_format_write_bool(
file, "Add_standard_frequencies", &app->subghz_use_defaults, 1);
if(!flipper_format_rewind(file)) break;
while(flipper_format_delete_key(file, "Frequency"))
;
FrequencyList_it(it, app->subghz_static_freqs);
for(uint i = 0; i < FrequencyList_size(app->subghz_static_freqs); i++) {
flipper_format_write_uint32(
file, "Frequency", FrequencyList_get(app->subghz_static_freqs, i), 1);
}
if(!flipper_format_rewind(file)) break;
while(flipper_format_delete_key(file, "Hopper_frequency"))
;
for(uint i = 0; i < FrequencyList_size(app->subghz_hopper_freqs); i++) {
flipper_format_write_uint32(
file,
"Hopper_frequency",
FrequencyList_get(app->subghz_hopper_freqs, i),
1);
}
} while(false);
flipper_format_free(file);
}
if(app->save_subghz) {
furi_hal_subghz_set_extend_settings(app->subghz_extend, app->subghz_bypass);
}
if(app->save_name) {
if(strcmp(app->device_name, "") == 0) {
storage_simply_remove(storage, NAMECHANGER_PATH);
} else {
FlipperFormat* file = flipper_format_file_alloc(storage);
do {
if(!flipper_format_file_open_always(file, NAMECHANGER_PATH)) break;
if(!flipper_format_write_header_cstr(file, NAMECHANGER_HEADER, 1)) break;
if(!flipper_format_write_comment_cstr(
file,
"Changing the value below will change your FlipperZero device name."))
break;
if(!flipper_format_write_comment_cstr(
file,
"Note: This is limited to 8 characters using the following: a-z, A-Z, 0-9, and _"))
break;
if(!flipper_format_write_comment_cstr(
file, "It cannot contain any other characters."))
break;
if(!flipper_format_write_string_cstr(file, "Name", app->device_name)) break;
} while(0);
flipper_format_free(file);
}
}
if(app->save_level) {
Dolphin* dolphin = furi_record_open(RECORD_DOLPHIN);
int32_t xp = app->xp_level > 1 ? dolphin_get_levels()[app->xp_level - 2] : 0;
dolphin->state->data.icounter = xp + 1;
dolphin->state->dirty = true;
dolphin_state_save(dolphin->state);
furi_record_close(RECORD_DOLPHIN);
}
if(app->save_backlight) {
rgb_backlight_save_settings();
}
if(app->save_settings) {
XTREME_SETTINGS_SAVE();
}
if(app->show_slideshow) {
callback_reboot(NULL);
}
if(app->require_reboot) {
popup_set_header(app->popup, "Rebooting...", 64, 26, AlignCenter, AlignCenter);
popup_set_text(app->popup, "Applying changes...", 64, 40, AlignCenter, AlignCenter);
popup_set_callback(app->popup, callback_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, XtremeAppViewPopup);
return true;
}
furi_record_close(RECORD_STORAGE);
return false;
}
static bool xtreme_app_back_event_callback(void* context) {
furi_assert(context);
XtremeApp* app = context;
if(!scene_manager_has_previous_scene(app->scene_manager, XtremeAppSceneStart)) {
Storage* storage = furi_record_open(RECORD_STORAGE);
if(app->save_mainmenu_apps) {
Stream* stream = file_stream_alloc(storage);
if(file_stream_open(stream, XTREME_APPS_PATH, FSAM_READ_WRITE, FSOM_CREATE_ALWAYS)) {
CharList_it_t it;
CharList_it(it, app->mainmenu_app_paths);
for(uint i = 0; i < CharList_size(app->mainmenu_app_paths); i++) {
stream_write_format(stream, "%s\n", *CharList_get(app->mainmenu_app_paths, i));
}
}
file_stream_close(stream);
stream_free(stream);
}
if(app->save_subghz_frequencies) {
FlipperFormat* file = flipper_format_file_alloc(storage);
do {
FrequencyList_it_t it;
if(!flipper_format_file_open_always(file, EXT_PATH("subghz/assets/setting_user")))
break;
if(!flipper_format_write_header_cstr(
file, SUBGHZ_SETTING_FILE_TYPE, SUBGHZ_SETTING_FILE_VERSION))
break;
while(flipper_format_delete_key(file, "Add_standard_frequencies"))
;
flipper_format_write_bool(
file, "Add_standard_frequencies", &app->subghz_use_defaults, 1);
if(!flipper_format_rewind(file)) break;
while(flipper_format_delete_key(file, "Frequency"))
;
FrequencyList_it(it, app->subghz_static_freqs);
for(uint i = 0; i < FrequencyList_size(app->subghz_static_freqs); i++) {
flipper_format_write_uint32(
file, "Frequency", FrequencyList_get(app->subghz_static_freqs, i), 1);
}
if(!flipper_format_rewind(file)) break;
while(flipper_format_delete_key(file, "Hopper_frequency"))
;
for(uint i = 0; i < FrequencyList_size(app->subghz_hopper_freqs); i++) {
flipper_format_write_uint32(
file,
"Hopper_frequency",
FrequencyList_get(app->subghz_hopper_freqs, i),
1);
}
} while(false);
flipper_format_free(file);
}
if(app->save_subghz) {
furi_hal_subghz_set_extend_settings(app->subghz_extend, app->subghz_bypass);
}
if(app->save_name) {
if(strcmp(app->device_name, "") == 0) {
storage_simply_remove(storage, NAMECHANGER_PATH);
} else {
FlipperFormat* file = flipper_format_file_alloc(storage);
do {
if(!flipper_format_file_open_always(file, NAMECHANGER_PATH)) break;
if(!flipper_format_write_header_cstr(file, NAMECHANGER_HEADER, 1)) break;
if(!flipper_format_write_comment_cstr(
file,
"Changing the value below will change your FlipperZero device name."))
break;
if(!flipper_format_write_comment_cstr(
file,
"Note: This is limited to 8 characters using the following: a-z, A-Z, 0-9, and _"))
break;
if(!flipper_format_write_comment_cstr(
file, "It cannot contain any other characters."))
break;
if(!flipper_format_write_string_cstr(file, "Name", app->device_name)) break;
} while(0);
flipper_format_free(file);
}
}
if(app->save_level) {
Dolphin* dolphin = furi_record_open(RECORD_DOLPHIN);
int32_t xp = app->xp_level > 1 ? dolphin_get_levels()[app->xp_level - 2] : 0;
dolphin->state->data.icounter = xp + 1;
dolphin->state->dirty = true;
dolphin_state_save(dolphin->state);
furi_record_close(RECORD_DOLPHIN);
}
if(app->save_backlight) {
rgb_backlight_save_settings();
}
if(app->save_settings) {
XTREME_SETTINGS_SAVE();
}
if(app->require_reboot) {
popup_set_header(app->popup, "Rebooting...", 64, 26, AlignCenter, AlignCenter);
popup_set_text(app->popup, "Applying changes...", 64, 40, AlignCenter, AlignCenter);
popup_set_callback(app->popup, callback_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, XtremeAppViewPopup);
if(xtreme_app_apply(app)) {
return true;
}
furi_record_close(RECORD_STORAGE);
}
return scene_manager_handle_back_event(app->scene_manager);