From 15cf483cd9c9d13c253239583171fb642aaf5fb2 Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Wed, 5 Aug 2020 14:21:06 +0100 Subject: [PATCH] (RGUI/GLUI) Clean up 'scan content' menu entries --- config.def.h | 9 ++++- configuration.c | 3 +- configuration.h | 1 + intl/msg_hash_lbl.h | 4 +++ intl/msg_hash_us.h | 20 +++++++++-- menu/cbs/menu_cbs_sublabel.c | 4 +++ menu/drivers/materialui.c | 6 ++++ menu/drivers/ozone/ozone_texture.c | 1 + menu/drivers/xmb.c | 2 ++ menu/menu_defines.h | 11 ++++++ menu/menu_displaylist.c | 52 +++++++++++++-------------- menu/menu_setting.c | 58 +++++++++++++++++++++++++++++- msg_hash.h | 4 +++ 13 files changed, 144 insertions(+), 31 deletions(-) diff --git a/config.def.h b/config.def.h index 156f5c988a..6c0d3eb8b9 100644 --- a/config.def.h +++ b/config.def.h @@ -520,7 +520,14 @@ static const bool content_show_netplay = true; #endif #endif static const bool content_show_history = true; -static const bool content_show_add = true; + +/* Specifies 'add content' visibility when using + * menus WITH a dedicated 'Import Content' tab */ +#define DEFAULT_MENU_CONTENT_SHOW_ADD true +/* Specifies 'add content' visibility when using + * menus WITHOUT a dedicated 'Import Content' tab */ +#define DEFAULT_MENU_CONTENT_SHOW_ADD_ENTRY MENU_ADD_CONTENT_ENTRY_DISPLAY_PLAYLISTS_TAB + static const bool content_show_playlists = true; #if defined(HAVE_LIBRETRODB) #define DEFAULT_MENU_CONTENT_SHOW_EXPLORE true diff --git a/configuration.c b/configuration.c index 2365d7b503..bcfc2be52a 100644 --- a/configuration.c +++ b/configuration.c @@ -1589,7 +1589,7 @@ static struct config_bool_setting *populate_settings_bool( SETTING_BOOL("content_show_netplay", &settings->bools.menu_content_show_netplay, true, content_show_netplay, false); #endif SETTING_BOOL("content_show_history", &settings->bools.menu_content_show_history, true, content_show_history, false); - SETTING_BOOL("content_show_add", &settings->bools.menu_content_show_add, true, content_show_add, false); + SETTING_BOOL("content_show_add", &settings->bools.menu_content_show_add, true, DEFAULT_MENU_CONTENT_SHOW_ADD, false); SETTING_BOOL("content_show_playlists", &settings->bools.menu_content_show_playlists, true, content_show_playlists, false); #if defined(HAVE_LIBRETRODB) SETTING_BOOL("content_show_explore", &settings->bools.menu_content_show_explore, true, DEFAULT_MENU_CONTENT_SHOW_EXPLORE, false); @@ -1869,6 +1869,7 @@ static struct config_uint_setting *populate_settings_uint( SETTING_UINT("menu_timedate_style", &settings->uints.menu_timedate_style, true, DEFAULT_MENU_TIMEDATE_STYLE, false); SETTING_UINT("menu_timedate_date_separator", &settings->uints.menu_timedate_date_separator, true, DEFAULT_MENU_TIMEDATE_DATE_SEPARATOR, false); SETTING_UINT("menu_ticker_type", &settings->uints.menu_ticker_type, true, DEFAULT_MENU_TICKER_TYPE, false); + SETTING_UINT("content_show_add_entry", &settings->uints.menu_content_show_add_entry, true, DEFAULT_MENU_CONTENT_SHOW_ADD_ENTRY, false); #ifdef HAVE_RGUI SETTING_UINT("rgui_menu_color_theme", &settings->uints.menu_rgui_color_theme, true, DEFAULT_RGUI_COLOR_THEME, false); SETTING_UINT("rgui_thumbnail_downscaler", &settings->uints.menu_rgui_thumbnail_downscaler, true, rgui_thumbnail_downscaler, false); diff --git a/configuration.h b/configuration.h index f2ba7dad07..821f72472f 100644 --- a/configuration.h +++ b/configuration.h @@ -602,6 +602,7 @@ typedef struct settings unsigned menu_rgui_aspect_ratio_lock; unsigned menu_rgui_particle_effect; unsigned menu_ticker_type; + unsigned menu_content_show_add_entry; unsigned playlist_entry_remove_enable; unsigned playlist_show_inline_core_name; diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 9e3a77cd62..b3c0fa98e5 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -3316,6 +3316,10 @@ MSG_HASH( MENU_ENUM_LABEL_CONTENT_SHOW_ADD, "content_show_add" ) +MSG_HASH( + MENU_ENUM_LABEL_CONTENT_SHOW_ADD_ENTRY, + "content_show_add_entry" + ) MSG_HASH( MENU_ENUM_LABEL_CONTENT_SHOW_PLAYLISTS, "content_show_playlists" diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 2d34825526..ed834656d6 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -101,11 +101,11 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST, - "Scan Content" + "Import Content" ) MSG_HASH( MENU_ENUM_SUBLABEL_ADD_CONTENT_LIST, - "Scan content and add to database." + "Create and update playlists by scanning content." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_SHOW_WIMP, @@ -3914,6 +3914,22 @@ MSG_HASH( MENU_ENUM_SUBLABEL_CONTENT_SHOW_ADD, "Show the import content tab inside the main menu." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD_ENTRY, + "Show Import Content" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CONTENT_SHOW_ADD_ENTRY, + "Show an import content entry inside the main menu or playlists tab/submenu." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_ADD_CONTENT_ENTRY_DISPLAY_MAIN_TAB, + "Main Menu" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_MENU_ADD_CONTENT_ENTRY_DISPLAY_PLAYLISTS_TAB, + "Playlists Menu" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_PLAYLISTS, "Show Playlist Tabs" diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index 132411c86d..cd1be7ef75 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -729,6 +729,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_settings_tab, DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_settings_tab_enable_password, MENU_ENUM_SUBLABEL_CONTENT_SHOW_SETTINGS_PASSWORD) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_history_tab, MENU_ENUM_SUBLABEL_CONTENT_SHOW_HISTORY) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_import_content_tab, MENU_ENUM_SUBLABEL_CONTENT_SHOW_ADD) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_import_content_entry, MENU_ENUM_SUBLABEL_CONTENT_SHOW_ADD_ENTRY) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_playlist_tabs, MENU_ENUM_SUBLABEL_CONTENT_SHOW_PLAYLISTS) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_explore_tab, MENU_ENUM_SUBLABEL_CONTENT_SHOW_EXPLORE) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_main_menu_enable_settings, MENU_ENUM_SUBLABEL_XMB_MAIN_MENU_ENABLE_SETTINGS) @@ -1930,6 +1931,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_CONTENT_SHOW_ADD: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_import_content_tab); break; + case MENU_ENUM_LABEL_CONTENT_SHOW_ADD_ENTRY: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_import_content_entry); + break; case MENU_ENUM_LABEL_CONTENT_SHOW_PLAYLISTS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_menu_playlist_tabs); break; diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index ec56f08dae..ce91bc0627 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -8442,6 +8442,12 @@ static int materialui_list_push(void *data, void *userdata, } #endif #endif + if (settings->uints.menu_content_show_add_entry == + MENU_ADD_CONTENT_ENTRY_DISPLAY_MAIN_TAB) + { + entry.enum_idx = MENU_ENUM_LABEL_ADD_CONTENT_LIST; + menu_displaylist_setting(&entry); + } if (settings->bools.menu_content_show_netplay) { diff --git a/menu/drivers/ozone/ozone_texture.c b/menu/drivers/ozone/ozone_texture.c index 2061d3db1c..00d53842d3 100644 --- a/menu/drivers/ozone/ozone_texture.c +++ b/menu/drivers/ozone/ozone_texture.c @@ -277,6 +277,7 @@ uintptr_t ozone_entries_icon_get_texture(ozone_handle_t *ozone, case MENU_ENUM_LABEL_USER_SETTINGS: return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_USER]; case MENU_ENUM_LABEL_DIRECTORY_SETTINGS: + case MENU_ENUM_LABEL_ADD_CONTENT_LIST: case MENU_ENUM_LABEL_SCAN_DIRECTORY: case MENU_ENUM_LABEL_MANUAL_CONTENT_SCAN_LIST: case MENU_ENUM_LABEL_REMAP_FILE_SAVE_CONTENT_DIR: diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 263b9872f4..9ef9f18c74 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -2533,6 +2533,8 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb, case MENU_ENUM_LABEL_FAVORITES: /* "Start Directory" */ case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: return xmb->textures.list[XMB_TEXTURE_FOLDER]; + case MENU_ENUM_LABEL_ADD_CONTENT_LIST: + return xmb->textures.list[XMB_TEXTURE_ADD]; case MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR: return xmb->textures.list[XMB_TEXTURE_RDB]; diff --git a/menu/menu_defines.h b/menu/menu_defines.h index c92eddd7d4..baa37e7e1c 100644 --- a/menu/menu_defines.h +++ b/menu/menu_defines.h @@ -122,6 +122,17 @@ enum menu_timedate_date_separator_type MENU_TIMEDATE_DATE_SEPARATOR_LAST }; +/* Specifies location of the 'Scan Content' menu + * entry when using menu drivers without a + * dedicated 'Import Content' (horizontal) tab */ +enum menu_add_content_entry_display_type +{ + MENU_ADD_CONTENT_ENTRY_DISPLAY_HIDDEN = 0, + MENU_ADD_CONTENT_ENTRY_DISPLAY_MAIN_TAB, + MENU_ADD_CONTENT_ENTRY_DISPLAY_PLAYLISTS_TAB, + MENU_ADD_CONTENT_ENTRY_DISPLAY_LAST +}; + enum rgui_color_theme { RGUI_THEME_CUSTOM = 0, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 90094bef05..b9c8cc2368 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -3077,36 +3077,24 @@ static unsigned menu_displaylist_parse_playlists( if (!horizontal) { const char *menu_ident = menu_driver_ident(); + bool show_add_content = false; - /* When using MaterialUI with the navigation bar - * hidden, these 'add content' entries are accessible - * from the main menu 'Scan Content' entry. Placing - * them here as well is unnecessary/ugly duplication */ - if (settings->bools.menu_content_show_add && - !(string_is_equal(menu_ident, "glui") && - !settings->bools.menu_materialui_show_nav_bar)) - { -#ifdef HAVE_LIBRETRODB - if (menu_entries_append_enum(info->list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_DIRECTORY), - msg_hash_to_str(MENU_ENUM_LABEL_SCAN_DIRECTORY), - MENU_ENUM_LABEL_SCAN_DIRECTORY, - MENU_SETTING_ACTION, 0, 0)) - count++; - if (menu_entries_append_enum(info->list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_FILE), - msg_hash_to_str(MENU_ENUM_LABEL_SCAN_FILE), - MENU_ENUM_LABEL_SCAN_FILE, - MENU_SETTING_ACTION, 0, 0)) - count++; +#if defined(HAVE_XMB) || defined(HAVE_OZONE) + if (string_is_equal(menu_ident, "xmb") || + string_is_equal(menu_ident, "ozone")) + show_add_content = settings->bools.menu_content_show_add; + else #endif + show_add_content = (settings->uints.menu_content_show_add_entry == + MENU_ADD_CONTENT_ENTRY_DISPLAY_PLAYLISTS_TAB); + + if (show_add_content) if (menu_entries_append_enum(info->list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_MANUAL_CONTENT_SCAN_LIST), - msg_hash_to_str(MENU_ENUM_LABEL_MANUAL_CONTENT_SCAN_LIST), - MENU_ENUM_LABEL_MANUAL_CONTENT_SCAN_LIST, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST), + msg_hash_to_str(MENU_ENUM_LABEL_ADD_CONTENT_LIST), + MENU_ENUM_LABEL_ADD_CONTENT_LIST, MENU_SETTING_ACTION, 0, 0)) count++; - } #if defined(HAVE_LIBRETRODB) if (settings->bools.menu_content_show_explore) @@ -7486,6 +7474,7 @@ unsigned menu_displaylist_build_list( {MENU_ENUM_LABEL_CONTENT_SHOW_NETPLAY, PARSE_ONLY_BOOL, true }, {MENU_ENUM_LABEL_CONTENT_SHOW_HISTORY, PARSE_ONLY_BOOL, true }, {MENU_ENUM_LABEL_CONTENT_SHOW_ADD, PARSE_ONLY_BOOL, true }, + {MENU_ENUM_LABEL_CONTENT_SHOW_ADD_ENTRY, PARSE_ONLY_UINT, true }, {MENU_ENUM_LABEL_CONTENT_SHOW_PLAYLISTS, PARSE_ONLY_BOOL, true }, {MENU_ENUM_LABEL_TIMEDATE_ENABLE, PARSE_ONLY_BOOL, true }, {MENU_ENUM_LABEL_TIMEDATE_STYLE, PARSE_ONLY_UINT, true }, @@ -11248,6 +11237,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, settings_t *settings = config_get_ptr(); rarch_system_info_t *sys_info = runloop_get_system_info(); const char *menu_ident = menu_driver_ident(); + bool show_add_content = false; if (rarch_ctl(RARCH_CTL_CORE_IS_RUNNING, NULL)) { @@ -11330,11 +11320,21 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, MENU_SETTING_ACTION, 0, 0)) count++; - if (settings->bools.menu_content_show_add) +#if defined(HAVE_XMB) || defined(HAVE_OZONE) + if (string_is_equal(menu_ident, "xmb") || + string_is_equal(menu_ident, "ozone")) + show_add_content = settings->bools.menu_content_show_add; + else +#endif + show_add_content = (settings->uints.menu_content_show_add_entry == + MENU_ADD_CONTENT_ENTRY_DISPLAY_MAIN_TAB); + + if (show_add_content) if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(info->list, MENU_ENUM_LABEL_ADD_CONTENT_LIST, PARSE_ACTION, false) == 0) count++; + #ifdef HAVE_NETWORKING if (settings->bools.menu_content_show_netplay) if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(info->list, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index ec81d5b76e..a19c04f00f 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -3415,6 +3415,36 @@ static void setting_get_string_representation_uint_menu_timedate_date_separator( } } +static void setting_get_string_representation_uint_menu_add_content_entry_display_type( + rarch_setting_t *setting, + char *s, size_t len) +{ + if (!setting) + return; + + switch (*setting->value.target.unsigned_integer) + { + case MENU_ADD_CONTENT_ENTRY_DISPLAY_HIDDEN: + strlcpy(s, + msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_OFF), + len); + break; + case MENU_ADD_CONTENT_ENTRY_DISPLAY_MAIN_TAB: + strlcpy(s, + msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_MENU_ADD_CONTENT_ENTRY_DISPLAY_MAIN_TAB), + len); + break; + case MENU_ADD_CONTENT_ENTRY_DISPLAY_PLAYLISTS_TAB: + strlcpy(s, + msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_MENU_ADD_CONTENT_ENTRY_DISPLAY_PLAYLISTS_TAB), + len); + break; + } +} + static void setting_get_string_representation_uint_rgui_menu_color_theme( rarch_setting_t *setting, char *s, size_t len) @@ -14328,12 +14358,16 @@ static bool setting_append_list( SD_FLAG_NONE); #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_add, MENU_ENUM_LABEL_CONTENT_SHOW_ADD, MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD, - content_show_add, + DEFAULT_MENU_CONTENT_SHOW_ADD, MENU_ENUM_LABEL_VALUE_OFF, MENU_ENUM_LABEL_VALUE_ON, &group_info, @@ -14343,6 +14377,28 @@ static bool setting_append_list( general_read_handler, SD_FLAG_NONE); SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED); + } + else +#endif + { + CONFIG_UINT( + list, list_info, + &settings->uints.menu_content_show_add_entry, + MENU_ENUM_LABEL_CONTENT_SHOW_ADD_ENTRY, + MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD_ENTRY, + DEFAULT_MENU_CONTENT_SHOW_ADD_ENTRY, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; + (*list)[list_info->index - 1].get_string_representation = + &setting_get_string_representation_uint_menu_add_content_entry_display_type; + menu_settings_list_current_add_range(list, list_info, 0, MENU_ADD_CONTENT_ENTRY_DISPLAY_LAST-1, 1, true, true); + (*list)[list_info->index - 1].ui_type = ST_UI_TYPE_UINT_COMBOBOX; + SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED); + } CONFIG_BOOL( list, list_info, diff --git a/msg_hash.h b/msg_hash.h index 384944375e..e5cd0138ce 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1079,6 +1079,7 @@ enum msg_hash_enums MENU_LABEL(CONTENT_SHOW_NETPLAY), MENU_LABEL(CONTENT_SHOW_HISTORY), MENU_LABEL(CONTENT_SHOW_ADD), + MENU_LABEL(CONTENT_SHOW_ADD_ENTRY), MENU_LABEL(CONTENT_SHOW_PLAYLISTS), MENU_LABEL(CONTENT_SHOW_EXPLORE), MENU_LABEL(XMB_RIBBON_ENABLE), @@ -1164,6 +1165,9 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_SCROLL_NORMAL, MENU_ENUM_LABEL_VALUE_SCROLL_FAST, + MENU_ENUM_LABEL_VALUE_MENU_ADD_CONTENT_ENTRY_DISPLAY_MAIN_TAB, + MENU_ENUM_LABEL_VALUE_MENU_ADD_CONTENT_ENTRY_DISPLAY_PLAYLISTS_TAB, + /* UI settings */ MENU_LABEL(VIDEO_DISABLE_COMPOSITION), MENU_LABEL(UI_COMPANION_ENABLE),