Skip to content

Commit f5b63a4

Browse files
authored
Kiosk mode fixes (#18224)
1 parent 601fd41 commit f5b63a4

7 files changed

Lines changed: 137 additions & 80 deletions

File tree

intl/msg_hash_us.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ MSG_HASH(
147147
)
148148
MSG_HASH(
149149
MENU_ENUM_LABEL_VALUE_MENU_DISABLE_KIOSK_MODE,
150-
"Disable Kiosk Mode (Restart required)"
150+
"Disable Kiosk Mode"
151151
)
152152
MSG_HASH(
153153
MENU_ENUM_SUBLABEL_MENU_DISABLE_KIOSK_MODE,
@@ -12219,7 +12219,7 @@ MSG_HASH(
1221912219
)
1222012220
MSG_HASH(
1222112221
MENU_ENUM_LABEL_VALUE_XMB_MAIN_MENU_ENABLE_SETTINGS,
12222-
"Enable Settings Tab (Restart required)"
12222+
"Enable Settings Tab"
1222312223
)
1222412224
MSG_HASH(
1222512225
MENU_ENUM_SUBLABEL_XMB_MAIN_MENU_ENABLE_SETTINGS,

menu/cbs/menu_cbs_ok.c

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3299,16 +3299,27 @@ static void menu_input_st_string_cb_disable_kiosk_mode(void *userdata,
32993299
{
33003300
if (str && *str)
33013301
{
3302-
const char *label = menu_input_dialog_get_buffer();
3303-
settings_t *settings = config_get_ptr();
3304-
const char *path_kiosk_mode_password =
3305-
settings->paths.kiosk_mode_password;
3302+
const char *label = menu_input_dialog_get_buffer();
3303+
settings_t *settings = config_get_ptr();
3304+
const char *password = settings->paths.kiosk_mode_password;
33063305

3307-
if (string_is_equal(label, path_kiosk_mode_password))
3306+
if (string_is_equal(label, password))
33083307
{
33093308
const char *_msg = msg_hash_to_str(MSG_INPUT_KIOSK_MODE_PASSWORD_OK);
3309+
33103310
settings->bools.kiosk_mode_enable = false;
33113311

3312+
/* Refresh menu tabs list and current page */
3313+
{
3314+
struct menu_state *menu_st = menu_state_get_ptr();
3315+
menu_st->selection_ptr = 0;
3316+
menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH;
3317+
3318+
if (menu_st->driver_ctx->environ_cb)
3319+
menu_st->driver_ctx->environ_cb(MENU_ENVIRON_RESET_HORIZONTAL_LIST,
3320+
NULL, menu_st->userdata);
3321+
}
3322+
33123323
runloop_msg_queue_push(_msg, strlen(_msg), 1, 100, true, NULL,
33133324
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_SUCCESS);
33143325
}
@@ -3328,16 +3339,27 @@ static void menu_input_st_string_cb_enable_settings(void *userdata,
33283339
{
33293340
if (str && *str)
33303341
{
3331-
const char *label =
3332-
menu_input_dialog_get_buffer();
3333-
settings_t *settings = config_get_ptr();
3334-
const char *menu_content_show_settings_password = settings->paths.menu_content_show_settings_password;
3342+
const char *label = menu_input_dialog_get_buffer();
3343+
settings_t *settings = config_get_ptr();
3344+
const char *password = settings->paths.menu_content_show_settings_password;
33353345

3336-
if (string_is_equal(label, menu_content_show_settings_password))
3346+
if (string_is_equal(label, password))
33373347
{
33383348
const char *_msg = msg_hash_to_str(MSG_INPUT_ENABLE_SETTINGS_PASSWORD_OK);
3349+
33393350
settings->bools.menu_content_show_settings = true;
33403351

3352+
/* Refresh menu tabs list and current page */
3353+
{
3354+
struct menu_state *menu_st = menu_state_get_ptr();
3355+
menu_st->selection_ptr = 0;
3356+
menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH;
3357+
3358+
if (menu_st->driver_ctx->environ_cb)
3359+
menu_st->driver_ctx->environ_cb(MENU_ENVIRON_RESET_HORIZONTAL_LIST,
3360+
NULL, menu_st->userdata);
3361+
}
3362+
33413363
runloop_msg_queue_push(_msg, strlen(_msg), 1, 100, true, NULL,
33423364
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_SUCCESS);
33433365
}

menu/drivers/materialui.c

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9390,17 +9390,20 @@ static void materialui_populate_nav_bar(materialui_handle_t *mui,
93909390
}
93919391

93929392
/* > Settings */
9393-
mui->nav_bar.menu_tabs[menu_tab_index].type =
9394-
MUI_NAV_BAR_MENU_TAB_SETTINGS;
9395-
mui->nav_bar.menu_tabs[menu_tab_index].texture_index =
9396-
MUI_TEXTURE_TAB_SETTINGS;
9397-
mui->nav_bar.menu_tabs[menu_tab_index].active =
9398-
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_SETTINGS_TAB));
9393+
if (!settings->bools.kiosk_mode_enable)
9394+
{
9395+
mui->nav_bar.menu_tabs[menu_tab_index].type =
9396+
MUI_NAV_BAR_MENU_TAB_SETTINGS;
9397+
mui->nav_bar.menu_tabs[menu_tab_index].texture_index =
9398+
MUI_TEXTURE_TAB_SETTINGS;
9399+
mui->nav_bar.menu_tabs[menu_tab_index].active =
9400+
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_SETTINGS_TAB));
93999401

9400-
if (mui->nav_bar.menu_tabs[menu_tab_index].active)
9401-
mui->nav_bar.active_menu_tab_index = menu_tab_index;
9402+
if (mui->nav_bar.menu_tabs[menu_tab_index].active)
9403+
mui->nav_bar.active_menu_tab_index = menu_tab_index;
94029404

9403-
menu_tab_index++;
9405+
menu_tab_index++;
9406+
}
94049407

94059408
/* Cache current number of menu tabs */
94069409
mui->nav_bar.num_menu_tabs = menu_tab_index;
@@ -11869,7 +11872,9 @@ static void materialui_list_insert(void *userdata,
1186911872
node->icon_texture_index = MUI_TEXTURE_SAVE_STATE;
1187011873
node->icon_type = MUI_ICON_TYPE_INTERNAL;
1187111874
}
11872-
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_UNDO_LOAD_STATE)))
11875+
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_UNDO_LOAD_STATE))
11876+
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS))
11877+
)
1187311878
{
1187411879
node->icon_texture_index = MUI_TEXTURE_UNDO_LOAD_STATE;
1187511880
node->icon_type = MUI_ICON_TYPE_INTERNAL;
@@ -11878,6 +11883,7 @@ static void materialui_list_insert(void *userdata,
1187811883
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_UNDO_SAVE_STATE))
1187911884
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_OVERRIDE_UNLOAD))
1188011885
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_RELOAD_CHEATS))
11886+
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE))
1188111887
)
1188211888
{
1188311889
node->icon_texture_index = MUI_TEXTURE_UNDO_SAVE_STATE;

menu/drivers/ozone.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2149,6 +2149,8 @@ static uintptr_t ozone_entries_icon_get_texture(
21492149
case MENU_ENUM_LABEL_CORE_OPTIONS_RESET:
21502150
case MENU_ENUM_LABEL_REMAP_FILE_RESET:
21512151
case MENU_ENUM_LABEL_OVERRIDE_UNLOAD:
2152+
case MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE:
2153+
case MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS:
21522154
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_UNDO];
21532155
case MENU_ENUM_LABEL_CORE_OPTIONS_FLUSH:
21542156
case MENU_ENUM_LABEL_REMAP_FILE_FLUSH:

menu/drivers/xmb.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3717,6 +3717,8 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
37173717
case MENU_ENUM_LABEL_CORE_OPTIONS_RESET:
37183718
case MENU_ENUM_LABEL_REMAP_FILE_RESET:
37193719
case MENU_ENUM_LABEL_OVERRIDE_UNLOAD:
3720+
case MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE:
3721+
case MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS:
37203722
return xmb->textures.list[XMB_TEXTURE_UNDO];
37213723
case MENU_ENUM_LABEL_CORE_OPTIONS_FLUSH:
37223724
case MENU_ENUM_LABEL_REMAP_FILE_FLUSH:

menu/menu_displaylist.c

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4332,6 +4332,33 @@ static unsigned menu_displaylist_parse_information_list(file_list_t *info_list)
43324332
count++;
43334333
}
43344334

4335+
/* Move password-hidden enablers under Information if visible */
4336+
{
4337+
const char *menu_ident = menu_driver_ident();
4338+
settings_t *settings = config_get_ptr();
4339+
4340+
if ( !settings->bools.menu_content_show_settings
4341+
&& !settings->bools.kiosk_mode_enable
4342+
&& !( string_is_equal(menu_ident, "glui")
4343+
&& settings->bools.menu_materialui_show_nav_bar)
4344+
&& !string_is_empty(settings->paths.menu_content_show_settings_password))
4345+
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(
4346+
info_list,
4347+
MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS,
4348+
PARSE_ACTION,
4349+
false) == 0)
4350+
count++;
4351+
4352+
if ( settings->bools.kiosk_mode_enable
4353+
&& !string_is_empty(settings->paths.kiosk_mode_password))
4354+
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(
4355+
info_list,
4356+
MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE,
4357+
PARSE_ACTION,
4358+
false) == 0)
4359+
count++;
4360+
}
4361+
43354362
return count;
43364363
}
43374364

@@ -15076,6 +15103,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
1507615103
MENU_ADD_CONTENT_ENTRY_DISPLAY_MAIN_TAB)
1507715104
&& !settings->bools.kiosk_mode_enable;
1507815105
bool show_settings = settings->bools.menu_content_show_settings
15106+
&& !settings->bools.kiosk_mode_enable
1507915107
&& ( (string_is_equal(menu_ident, "rgui"))
1508015108
|| (string_is_equal(menu_ident, "glui")
1508115109
&& !settings->bools.menu_materialui_show_nav_bar));
@@ -15261,23 +15289,30 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
1526115289
MENU_ENUM_LABEL_SETTINGS, PARSE_ACTION, false) == 0)
1526215290
count++;
1526315291

15264-
if ( !settings->bools.menu_content_show_settings
15265-
&& !string_is_empty(settings->paths.menu_content_show_settings_password))
15266-
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(
15267-
info->list,
15268-
MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS,
15269-
PARSE_ACTION,
15270-
false) == 0)
15271-
count++;
15292+
/* Move password-hidden enablers under Information if visible */
15293+
if (!settings->bools.menu_show_information)
15294+
{
15295+
if ( !settings->bools.menu_content_show_settings
15296+
&& !settings->bools.kiosk_mode_enable
15297+
&& !( string_is_equal(menu_ident, "glui")
15298+
&& settings->bools.menu_materialui_show_nav_bar)
15299+
&& !string_is_empty(settings->paths.menu_content_show_settings_password))
15300+
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(
15301+
info->list,
15302+
MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS,
15303+
PARSE_ACTION,
15304+
false) == 0)
15305+
count++;
1527215306

15273-
if ( settings->bools.kiosk_mode_enable
15274-
&& !string_is_empty(settings->paths.kiosk_mode_password))
15275-
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(
15276-
info->list,
15277-
MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE,
15278-
PARSE_ACTION,
15279-
false) == 0)
15280-
count++;
15307+
if ( settings->bools.kiosk_mode_enable
15308+
&& !string_is_empty(settings->paths.kiosk_mode_password))
15309+
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(
15310+
info->list,
15311+
MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE,
15312+
PARSE_ACTION,
15313+
false) == 0)
15314+
count++;
15315+
}
1528115316

1528215317
if (settings->bools.menu_show_information)
1528315318
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(info->list,

menu/menu_setting.c

Lines changed: 32 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -18738,43 +18738,39 @@ static bool setting_append_list(
1873818738
general_read_handler,
1873918739
SD_FLAG_NONE);
1874018740

18741-
if ( string_is_equal(settings->arrays.menu_driver, "xmb")
18742-
|| string_is_equal(settings->arrays.menu_driver, "ozone"))
18743-
{
18744-
CONFIG_BOOL(
18745-
list, list_info,
18746-
&settings->bools.kiosk_mode_enable,
18747-
MENU_ENUM_LABEL_MENU_ENABLE_KIOSK_MODE,
18748-
MENU_ENUM_LABEL_VALUE_MENU_ENABLE_KIOSK_MODE,
18749-
DEFAULT_KIOSK_MODE_ENABLE,
18750-
MENU_ENUM_LABEL_VALUE_OFF,
18751-
MENU_ENUM_LABEL_VALUE_ON,
18752-
&group_info,
18753-
&subgroup_info,
18754-
parent_group,
18755-
general_write_handler,
18756-
general_read_handler,
18757-
SD_FLAG_NONE);
18758-
(*list)[list_info->index - 1].action_ok = setting_bool_action_left_with_refresh;
18759-
(*list)[list_info->index - 1].action_left = setting_bool_action_left_with_refresh;
18760-
(*list)[list_info->index - 1].action_right = setting_bool_action_right_with_refresh;
18741+
CONFIG_BOOL(
18742+
list, list_info,
18743+
&settings->bools.kiosk_mode_enable,
18744+
MENU_ENUM_LABEL_MENU_ENABLE_KIOSK_MODE,
18745+
MENU_ENUM_LABEL_VALUE_MENU_ENABLE_KIOSK_MODE,
18746+
DEFAULT_KIOSK_MODE_ENABLE,
18747+
MENU_ENUM_LABEL_VALUE_OFF,
18748+
MENU_ENUM_LABEL_VALUE_ON,
18749+
&group_info,
18750+
&subgroup_info,
18751+
parent_group,
18752+
general_write_handler,
18753+
general_read_handler,
18754+
SD_FLAG_NONE);
18755+
(*list)[list_info->index - 1].action_ok = setting_bool_action_left_with_refresh;
18756+
(*list)[list_info->index - 1].action_left = setting_bool_action_left_with_refresh;
18757+
(*list)[list_info->index - 1].action_right = setting_bool_action_right_with_refresh;
1876118758

18762-
CONFIG_STRING(
18763-
list, list_info,
18764-
settings->paths.kiosk_mode_password,
18765-
sizeof(settings->paths.kiosk_mode_password),
18766-
MENU_ENUM_LABEL_MENU_KIOSK_MODE_PASSWORD,
18767-
MENU_ENUM_LABEL_VALUE_MENU_KIOSK_MODE_PASSWORD,
18768-
"",
18769-
&group_info,
18770-
&subgroup_info,
18771-
parent_group,
18772-
general_write_handler,
18773-
general_read_handler);
18774-
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT);
18775-
(*list)[list_info->index - 1].ui_type = ST_UI_TYPE_PASSWORD_LINE_EDIT;
18776-
(*list)[list_info->index - 1].action_start = setting_generic_action_start_default;
18777-
}
18759+
CONFIG_STRING(
18760+
list, list_info,
18761+
settings->paths.kiosk_mode_password,
18762+
sizeof(settings->paths.kiosk_mode_password),
18763+
MENU_ENUM_LABEL_MENU_KIOSK_MODE_PASSWORD,
18764+
MENU_ENUM_LABEL_VALUE_MENU_KIOSK_MODE_PASSWORD,
18765+
"",
18766+
&group_info,
18767+
&subgroup_info,
18768+
parent_group,
18769+
general_write_handler,
18770+
general_read_handler);
18771+
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT);
18772+
(*list)[list_info->index - 1].ui_type = ST_UI_TYPE_PASSWORD_LINE_EDIT;
18773+
(*list)[list_info->index - 1].action_start = setting_generic_action_start_default;
1877818774

1877918775
#ifdef HAVE_THREADS
1878018776
CONFIG_BOOL(
@@ -19355,10 +19351,6 @@ static bool setting_append_list(
1935519351
#endif
1935619352
#endif
1935719353

19358-
#if defined(HAVE_XMB) || defined(HAVE_OZONE)
19359-
if ( string_is_equal(settings->arrays.menu_driver, "xmb")
19360-
|| string_is_equal(settings->arrays.menu_driver, "ozone"))
19361-
{
1936219354
CONFIG_BOOL(
1936319355
list, list_info,
1936419356
&settings->bools.menu_content_show_settings,
@@ -19390,8 +19382,6 @@ static bool setting_append_list(
1939019382
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT | SD_FLAG_LAKKA_ADVANCED);
1939119383
(*list)[list_info->index - 1].ui_type = ST_UI_TYPE_PASSWORD_LINE_EDIT;
1939219384
(*list)[list_info->index - 1].action_start = setting_generic_action_start_default;
19393-
}
19394-
#endif
1939519385

1939619386
CONFIG_BOOL(
1939719387
list, list_info,

0 commit comments

Comments
 (0)