diff --git a/nyx/nyx_gui/frontend/gui.h b/nyx/nyx_gui/frontend/gui.h index 7c884bc..f867df9 100644 --- a/nyx/nyx_gui/frontend/gui.h +++ b/nyx/nyx_gui/frontend/gui.h @@ -38,6 +38,7 @@ lv_style_t hint_small_style_white; lv_style_t monospace_text; lv_obj_t *payload_list; +lv_obj_t *autorcm_btn; lv_img_dsc_t *icon_switch; lv_img_dsc_t *icon_payload; diff --git a/nyx/nyx_gui/frontend/gui_emmc_tools.c b/nyx/nyx_gui/frontend/gui_emmc_tools.c index 0071e8b..f2f231a 100644 --- a/nyx/nyx_gui/frontend/gui_emmc_tools.c +++ b/nyx/nyx_gui/frontend/gui_emmc_tools.c @@ -18,6 +18,7 @@ #include "gui.h" #include "gui_emmc_tools.h" +#include "gui_tools.h" #include "fe_emmc_tools.h" #include "../config/config.h" #include "../hos/pkg1.h" @@ -156,6 +157,22 @@ static void _create_window_backup_restore(emmcPartType_t type, const char* win_l restore_emmc_selected(type, &emmc_tool_gui_ctxt); nyx_window_toggle_buttons(win, false); + + // Refresh AutoRCM button. + if (emmc_btn_ctxt.restore && (type == PART_BOOT) && !emmc_btn_ctxt.raw_emummc) + { + if (get_autorcm_status(false)) + lv_btn_set_state(autorcm_btn, LV_BTN_STATE_TGL_REL); + else + lv_btn_set_state(autorcm_btn, LV_BTN_STATE_REL); + nyx_generic_onoff_toggle(autorcm_btn); + + if (h_cfg.rcm_patched) + { + lv_obj_set_click(autorcm_btn, false); + lv_btn_set_state(autorcm_btn, LV_BTN_STATE_INA); + } + } } static lv_res_t _emmc_backup_buttons_decider(lv_obj_t *btn) diff --git a/nyx/nyx_gui/frontend/gui_tools.c b/nyx/nyx_gui/frontend/gui_tools.c index f1f9843..6746ded 100644 --- a/nyx/nyx_gui/frontend/gui_tools.c +++ b/nyx/nyx_gui/frontend/gui_tools.c @@ -44,7 +44,7 @@ extern void emmcsn_path_impl(char *path, char *sub_dir, char *filename, sdmmc_st #pragma GCC push_options #pragma GCC target ("thumb") -static bool _get_autorcm_status(bool change) +bool get_autorcm_status(bool change) { u8 corr_mod_byte0; sdmmc_storage_t storage; @@ -108,7 +108,7 @@ static lv_res_t _create_mbox_autorcm_status(lv_obj_t *btn) lv_obj_t * mbox = lv_mbox_create(dark_bg, NULL); lv_mbox_set_recolor_text(mbox, true); - bool enabled = _get_autorcm_status(true); + bool enabled = get_autorcm_status(true); if (enabled) { @@ -820,7 +820,7 @@ static void _create_tab_tools_arc_autorcm(lv_theme_t *th, lv_obj_t *parent) lv_btn_set_action(btn3, LV_BTN_ACTION_CLICK, _create_mbox_autorcm_status); // Set default state for AutoRCM and lock it out if patched unit. - if (_get_autorcm_status(false)) + if (get_autorcm_status(false)) lv_btn_set_state(btn3, LV_BTN_STATE_TGL_REL); else lv_btn_set_state(btn3, LV_BTN_STATE_REL); @@ -831,6 +831,7 @@ static void _create_tab_tools_arc_autorcm(lv_theme_t *th, lv_obj_t *parent) lv_obj_set_click(btn3, false); lv_btn_set_state(btn3, LV_BTN_STATE_INA); } + autorcm_btn = btn3; char *txt_buf = (char *)malloc(0x1000); diff --git a/nyx/nyx_gui/frontend/gui_tools.h b/nyx/nyx_gui/frontend/gui_tools.h index 73a78ce..b58aef8 100644 --- a/nyx/nyx_gui/frontend/gui_tools.h +++ b/nyx/nyx_gui/frontend/gui_tools.h @@ -21,5 +21,6 @@ void create_tab_tools(lv_theme_t *th, lv_obj_t *parent); void sept_run_dump(); +bool get_autorcm_status(bool change); #endif