nyx: Add Update r2p option

This commit is contained in:
CTCaer 2020-04-30 14:56:44 +03:00
parent fdfd383c34
commit f09263d3be

View file

@ -20,6 +20,7 @@
#include "../config/config.h" #include "../config/config.h"
#include "../config/ini.h" #include "../config/ini.h"
#include "../gfx/di.h" #include "../gfx/di.h"
#include "../input/joycon.h"
#include "../libs/lvgl/lvgl.h" #include "../libs/lvgl/lvgl.h"
#include "../mem/heap.h" #include "../mem/heap.h"
#include "../storage/nx_sd.h" #include "../storage/nx_sd.h"
@ -61,6 +62,20 @@ static lv_res_t auto_nogc_toggle(lv_obj_t *btn)
return LV_RES_OK; return LV_RES_OK;
} }
static lv_res_t _update_r2p_action(lv_obj_t *btn)
{
h_cfg.updater2p = !h_cfg.updater2p;
if (!h_cfg.updater2p)
lv_btn_set_state(btn, LV_BTN_STATE_REL);
else
lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL);
nyx_generic_onoff_toggle(btn);
return LV_RES_OK;
}
static lv_res_t _win_autoboot_close_action(lv_obj_t * btn) static lv_res_t _win_autoboot_close_action(lv_obj_t * btn)
{ {
if (!h_cfg.autoboot) if (!h_cfg.autoboot)
@ -1011,50 +1026,33 @@ void create_tab_options(lv_theme_t *th, lv_obj_t *parent)
line_sep = lv_line_create(sw_h3, line_sep); line_sep = lv_line_create(sw_h3, line_sep);
lv_obj_align(line_sep, label_txt2, LV_ALIGN_OUT_BOTTOM_LEFT, -(LV_DPI / 4), LV_DPI / 4); lv_obj_align(line_sep, label_txt2, LV_ALIGN_OUT_BOTTOM_LEFT, -(LV_DPI / 4), LV_DPI / 4);
// Create Backup/Restore Verification list. // Create Update r2p button.
label_txt = lv_label_create(sw_h3, NULL); lv_obj_t *btn4 = lv_btn_create(sw_h3, NULL);
lv_label_set_static_text(label_txt, SYMBOL_MODULES_ALT" Data Verification"); nyx_create_onoff_button(th, sw_h3, btn4, SYMBOL_REFRESH" Update Reboot 2 Payload", _update_r2p_action, true);
lv_obj_set_style(label_txt, th->label.prim); lv_obj_align(btn4, line_sep, LV_ALIGN_OUT_BOTTOM_LEFT, 0, LV_DPI / 10);
lv_obj_align(label_txt, line_sep, LV_ALIGN_OUT_BOTTOM_LEFT, LV_DPI / 4, LV_DPI / 4);
lv_obj_t *ddlist2 = lv_ddlist_create(sw_h3, NULL);
lv_obj_set_top(ddlist2, true);
lv_ddlist_set_draw_arrow(ddlist2, true);
lv_ddlist_set_options(ddlist2,
"Off (Fastest)\n"
"Sparse (Fast) \n"
"Full (Slow)\n"
"Full (Hashes)");
lv_ddlist_set_selected(ddlist2, n_cfg.verification);
lv_obj_align(ddlist2, label_txt, LV_ALIGN_OUT_RIGHT_MID, LV_DPI * 3 / 8, 0);
lv_ddlist_set_action(ddlist2, _data_verification_action);
if (hekate_bg)
{
lv_ddlist_set_style(ddlist2, LV_DDLIST_STYLE_BG, &ddlist_transp_bg);
lv_ddlist_set_style(ddlist2, LV_DDLIST_STYLE_BGO, &ddlist_transp_bg);
lv_ddlist_set_style(ddlist2, LV_DDLIST_STYLE_PR, &ddlist_transp_sel);
lv_ddlist_set_style(ddlist2, LV_DDLIST_STYLE_SEL, &ddlist_transp_sel);
}
label_txt2 = lv_label_create(sw_h3, NULL); label_txt2 = lv_label_create(sw_h3, NULL);
lv_label_set_static_text(label_txt2, "Set the type of data verification done for backup and restore.\n" lv_label_set_recolor(label_txt2, true);
"Can be canceled without losing the backup/restore.\n\n\n\n"); lv_label_set_static_text(label_txt2,
"If #FF8000 FSS0# is used in the selected boot entry, the reboot 2 payload\n"
"binary will be checked and forced to be updated to hekate.\n\n\n\n");
lv_obj_set_style(label_txt2, &hint_small_style); lv_obj_set_style(label_txt2, &hint_small_style);
lv_obj_align(label_txt2, label_txt, LV_ALIGN_OUT_BOTTOM_LEFT, 0, LV_DPI / 4); lv_obj_align(label_txt2, btn4, LV_ALIGN_OUT_BOTTOM_LEFT, LV_DPI / 4, LV_DPI / 12);
// Set default loaded states. // Set default loaded states.
if (h_cfg.autohosoff) if (h_cfg.autohosoff)
lv_btn_set_state(btn3, LV_BTN_STATE_TGL_REL); lv_btn_set_state(btn3, LV_BTN_STATE_TGL_REL);
if (h_cfg.autonogc) if (h_cfg.autonogc)
lv_btn_set_state(btn2, LV_BTN_STATE_TGL_REL); lv_btn_set_state(btn2, LV_BTN_STATE_TGL_REL);
if (h_cfg.updater2p)
lv_btn_set_state(btn4, LV_BTN_STATE_TGL_REL);
nyx_generic_onoff_toggle(btn2); nyx_generic_onoff_toggle(btn2);
nyx_generic_onoff_toggle(btn3); nyx_generic_onoff_toggle(btn3);
nyx_generic_onoff_toggle(btn4);
_autoboot_hide_delay_action(btn); _autoboot_hide_delay_action(btn);
lv_obj_set_top(l_cont, true); // Set the ddlist container at top. lv_obj_set_top(l_cont, true); // Set the ddlist container at top.
lv_obj_set_parent(ddlist, l_cont); // Reorder ddlist. lv_obj_set_parent(ddlist, l_cont); // Reorder ddlist.
lv_obj_set_top(ddlist, true); lv_obj_set_top(ddlist, true);
lv_obj_set_top(ddlist2, true);
} }