diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 8cb2e26fe947..97df86100c2a 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -147,7 +147,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_DISABLE_KIOSK_MODE, - "Disable Kiosk Mode (Restart required)" + "Disable Kiosk Mode" ) MSG_HASH( MENU_ENUM_SUBLABEL_MENU_DISABLE_KIOSK_MODE, @@ -12219,7 +12219,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_XMB_MAIN_MENU_ENABLE_SETTINGS, - "Enable Settings Tab (Restart required)" + "Enable Settings Tab" ) MSG_HASH( MENU_ENUM_SUBLABEL_XMB_MAIN_MENU_ENABLE_SETTINGS, diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 208321460f7c..926011f25c48 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -3299,16 +3299,27 @@ static void menu_input_st_string_cb_disable_kiosk_mode(void *userdata, { if (str && *str) { - const char *label = menu_input_dialog_get_buffer(); - settings_t *settings = config_get_ptr(); - const char *path_kiosk_mode_password = - settings->paths.kiosk_mode_password; + const char *label = menu_input_dialog_get_buffer(); + settings_t *settings = config_get_ptr(); + const char *password = settings->paths.kiosk_mode_password; - if (string_is_equal(label, path_kiosk_mode_password)) + if (string_is_equal(label, password)) { const char *_msg = msg_hash_to_str(MSG_INPUT_KIOSK_MODE_PASSWORD_OK); + settings->bools.kiosk_mode_enable = false; + /* Refresh menu tabs list and current page */ + { + struct menu_state *menu_st = menu_state_get_ptr(); + menu_st->selection_ptr = 0; + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH; + + if (menu_st->driver_ctx->environ_cb) + menu_st->driver_ctx->environ_cb(MENU_ENVIRON_RESET_HORIZONTAL_LIST, + NULL, menu_st->userdata); + } + runloop_msg_queue_push(_msg, strlen(_msg), 1, 100, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_SUCCESS); } @@ -3328,16 +3339,27 @@ static void menu_input_st_string_cb_enable_settings(void *userdata, { if (str && *str) { - const char *label = - menu_input_dialog_get_buffer(); - settings_t *settings = config_get_ptr(); - const char *menu_content_show_settings_password = settings->paths.menu_content_show_settings_password; + const char *label = menu_input_dialog_get_buffer(); + settings_t *settings = config_get_ptr(); + const char *password = settings->paths.menu_content_show_settings_password; - if (string_is_equal(label, menu_content_show_settings_password)) + if (string_is_equal(label, password)) { const char *_msg = msg_hash_to_str(MSG_INPUT_ENABLE_SETTINGS_PASSWORD_OK); + settings->bools.menu_content_show_settings = true; + /* Refresh menu tabs list and current page */ + { + struct menu_state *menu_st = menu_state_get_ptr(); + menu_st->selection_ptr = 0; + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH; + + if (menu_st->driver_ctx->environ_cb) + menu_st->driver_ctx->environ_cb(MENU_ENVIRON_RESET_HORIZONTAL_LIST, + NULL, menu_st->userdata); + } + runloop_msg_queue_push(_msg, strlen(_msg), 1, 100, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_SUCCESS); } diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 870b77e068d7..eb4cef825324 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -9390,17 +9390,20 @@ static void materialui_populate_nav_bar(materialui_handle_t *mui, } /* > Settings */ - mui->nav_bar.menu_tabs[menu_tab_index].type = - MUI_NAV_BAR_MENU_TAB_SETTINGS; - mui->nav_bar.menu_tabs[menu_tab_index].texture_index = - MUI_TEXTURE_TAB_SETTINGS; - mui->nav_bar.menu_tabs[menu_tab_index].active = - string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_SETTINGS_TAB)); + if (!settings->bools.kiosk_mode_enable) + { + mui->nav_bar.menu_tabs[menu_tab_index].type = + MUI_NAV_BAR_MENU_TAB_SETTINGS; + mui->nav_bar.menu_tabs[menu_tab_index].texture_index = + MUI_TEXTURE_TAB_SETTINGS; + mui->nav_bar.menu_tabs[menu_tab_index].active = + string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_SETTINGS_TAB)); - if (mui->nav_bar.menu_tabs[menu_tab_index].active) - mui->nav_bar.active_menu_tab_index = menu_tab_index; + if (mui->nav_bar.menu_tabs[menu_tab_index].active) + mui->nav_bar.active_menu_tab_index = menu_tab_index; - menu_tab_index++; + menu_tab_index++; + } /* Cache current number of menu tabs */ mui->nav_bar.num_menu_tabs = menu_tab_index; @@ -11869,7 +11872,9 @@ static void materialui_list_insert(void *userdata, node->icon_texture_index = MUI_TEXTURE_SAVE_STATE; node->icon_type = MUI_ICON_TYPE_INTERNAL; } - else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_UNDO_LOAD_STATE))) + else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_UNDO_LOAD_STATE)) + || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS)) + ) { node->icon_texture_index = MUI_TEXTURE_UNDO_LOAD_STATE; node->icon_type = MUI_ICON_TYPE_INTERNAL; @@ -11878,6 +11883,7 @@ static void materialui_list_insert(void *userdata, string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_UNDO_SAVE_STATE)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_OVERRIDE_UNLOAD)) || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_RELOAD_CHEATS)) + || string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE)) ) { node->icon_texture_index = MUI_TEXTURE_UNDO_SAVE_STATE; diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index 53cebb4bc08d..de79b8fe4d11 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -2149,6 +2149,8 @@ static uintptr_t ozone_entries_icon_get_texture( case MENU_ENUM_LABEL_CORE_OPTIONS_RESET: case MENU_ENUM_LABEL_REMAP_FILE_RESET: case MENU_ENUM_LABEL_OVERRIDE_UNLOAD: + case MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE: + case MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS: return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_UNDO]; case MENU_ENUM_LABEL_CORE_OPTIONS_FLUSH: case MENU_ENUM_LABEL_REMAP_FILE_FLUSH: diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index d3c53b7b83ae..036a531c8a6c 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -3717,6 +3717,8 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb, case MENU_ENUM_LABEL_CORE_OPTIONS_RESET: case MENU_ENUM_LABEL_REMAP_FILE_RESET: case MENU_ENUM_LABEL_OVERRIDE_UNLOAD: + case MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE: + case MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS: return xmb->textures.list[XMB_TEXTURE_UNDO]; case MENU_ENUM_LABEL_CORE_OPTIONS_FLUSH: case MENU_ENUM_LABEL_REMAP_FILE_FLUSH: diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index aac97e055bb8..0d5548ba0b48 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4332,6 +4332,33 @@ static unsigned menu_displaylist_parse_information_list(file_list_t *info_list) count++; } + /* Move password-hidden enablers under Information if visible */ + { + const char *menu_ident = menu_driver_ident(); + settings_t *settings = config_get_ptr(); + + if ( !settings->bools.menu_content_show_settings + && !settings->bools.kiosk_mode_enable + && !( string_is_equal(menu_ident, "glui") + && settings->bools.menu_materialui_show_nav_bar) + && !string_is_empty(settings->paths.menu_content_show_settings_password)) + if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info_list, + MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS, + PARSE_ACTION, + false) == 0) + count++; + + if ( settings->bools.kiosk_mode_enable + && !string_is_empty(settings->paths.kiosk_mode_password)) + if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info_list, + MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE, + PARSE_ACTION, + false) == 0) + count++; + } + return count; } @@ -15076,6 +15103,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, MENU_ADD_CONTENT_ENTRY_DISPLAY_MAIN_TAB) && !settings->bools.kiosk_mode_enable; bool show_settings = settings->bools.menu_content_show_settings + && !settings->bools.kiosk_mode_enable && ( (string_is_equal(menu_ident, "rgui")) || (string_is_equal(menu_ident, "glui") && !settings->bools.menu_materialui_show_nav_bar)); @@ -15261,23 +15289,30 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, MENU_ENUM_LABEL_SETTINGS, PARSE_ACTION, false) == 0) count++; - if ( !settings->bools.menu_content_show_settings - && !string_is_empty(settings->paths.menu_content_show_settings_password)) - if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( - info->list, - MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS, - PARSE_ACTION, - false) == 0) - count++; + /* Move password-hidden enablers under Information if visible */ + if (!settings->bools.menu_show_information) + { + if ( !settings->bools.menu_content_show_settings + && !settings->bools.kiosk_mode_enable + && !( string_is_equal(menu_ident, "glui") + && settings->bools.menu_materialui_show_nav_bar) + && !string_is_empty(settings->paths.menu_content_show_settings_password)) + if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS, + PARSE_ACTION, + false) == 0) + count++; - if ( settings->bools.kiosk_mode_enable - && !string_is_empty(settings->paths.kiosk_mode_password)) - if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( - info->list, - MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE, - PARSE_ACTION, - false) == 0) - count++; + if ( settings->bools.kiosk_mode_enable + && !string_is_empty(settings->paths.kiosk_mode_password)) + if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE, + PARSE_ACTION, + false) == 0) + count++; + } if (settings->bools.menu_show_information) if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(info->list, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index e3030d6f3641..2cc6ba37e453 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -18738,43 +18738,39 @@ static bool setting_append_list( general_read_handler, SD_FLAG_NONE); - if ( string_is_equal(settings->arrays.menu_driver, "xmb") - || string_is_equal(settings->arrays.menu_driver, "ozone")) - { - CONFIG_BOOL( - list, list_info, - &settings->bools.kiosk_mode_enable, - MENU_ENUM_LABEL_MENU_ENABLE_KIOSK_MODE, - MENU_ENUM_LABEL_VALUE_MENU_ENABLE_KIOSK_MODE, - DEFAULT_KIOSK_MODE_ENABLE, - MENU_ENUM_LABEL_VALUE_OFF, - MENU_ENUM_LABEL_VALUE_ON, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler, - SD_FLAG_NONE); - (*list)[list_info->index - 1].action_ok = setting_bool_action_left_with_refresh; - (*list)[list_info->index - 1].action_left = setting_bool_action_left_with_refresh; - (*list)[list_info->index - 1].action_right = setting_bool_action_right_with_refresh; + CONFIG_BOOL( + list, list_info, + &settings->bools.kiosk_mode_enable, + MENU_ENUM_LABEL_MENU_ENABLE_KIOSK_MODE, + MENU_ENUM_LABEL_VALUE_MENU_ENABLE_KIOSK_MODE, + DEFAULT_KIOSK_MODE_ENABLE, + MENU_ENUM_LABEL_VALUE_OFF, + MENU_ENUM_LABEL_VALUE_ON, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler, + SD_FLAG_NONE); + (*list)[list_info->index - 1].action_ok = setting_bool_action_left_with_refresh; + (*list)[list_info->index - 1].action_left = setting_bool_action_left_with_refresh; + (*list)[list_info->index - 1].action_right = setting_bool_action_right_with_refresh; - CONFIG_STRING( - list, list_info, - settings->paths.kiosk_mode_password, - sizeof(settings->paths.kiosk_mode_password), - MENU_ENUM_LABEL_MENU_KIOSK_MODE_PASSWORD, - MENU_ENUM_LABEL_VALUE_MENU_KIOSK_MODE_PASSWORD, - "", - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT); - (*list)[list_info->index - 1].ui_type = ST_UI_TYPE_PASSWORD_LINE_EDIT; - (*list)[list_info->index - 1].action_start = setting_generic_action_start_default; - } + CONFIG_STRING( + list, list_info, + settings->paths.kiosk_mode_password, + sizeof(settings->paths.kiosk_mode_password), + MENU_ENUM_LABEL_MENU_KIOSK_MODE_PASSWORD, + MENU_ENUM_LABEL_VALUE_MENU_KIOSK_MODE_PASSWORD, + "", + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT); + (*list)[list_info->index - 1].ui_type = ST_UI_TYPE_PASSWORD_LINE_EDIT; + (*list)[list_info->index - 1].action_start = setting_generic_action_start_default; #ifdef HAVE_THREADS CONFIG_BOOL( @@ -19355,10 +19351,6 @@ static bool setting_append_list( #endif #endif -#if defined(HAVE_XMB) || defined(HAVE_OZONE) - if ( string_is_equal(settings->arrays.menu_driver, "xmb") - || string_is_equal(settings->arrays.menu_driver, "ozone")) - { CONFIG_BOOL( list, list_info, &settings->bools.menu_content_show_settings, @@ -19390,8 +19382,6 @@ static bool setting_append_list( SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT | SD_FLAG_LAKKA_ADVANCED); (*list)[list_info->index - 1].ui_type = ST_UI_TYPE_PASSWORD_LINE_EDIT; (*list)[list_info->index - 1].action_start = setting_generic_action_start_default; - } -#endif CONFIG_BOOL( list, list_info,