mirror of
https://github.com/libretro/RetroArch
synced 2025-03-28 19:20:35 +00:00
Add enhanced search functionality to the 'Manage Cores' menu (#12516)
This commit is contained in:
parent
766c59d469
commit
3c2e3f1ce9
@ -1209,6 +1209,7 @@ static int menu_cbs_init_bind_left_compare_type(menu_file_list_cbs_t *cbs,
|
||||
case MENU_SETTING_GROUP:
|
||||
case MENU_SETTINGS_CORE_INFO_NONE:
|
||||
case MENU_SETTING_ACTION_FAVORITES_DIR:
|
||||
case MENU_SETTING_ACTION_CORE_MANAGER_OPTIONS:
|
||||
if (
|
||||
string_ends_with_size(menu_label, "_tab",
|
||||
strlen(menu_label), STRLEN_CONST("_tab"))
|
||||
|
@ -1030,6 +1030,7 @@ static int menu_cbs_init_bind_right_compare_type(menu_file_list_cbs_t *cbs,
|
||||
case MENU_SETTING_GROUP:
|
||||
case MENU_SETTINGS_CORE_INFO_NONE:
|
||||
case MENU_SETTING_ACTION_FAVORITES_DIR:
|
||||
case MENU_SETTING_ACTION_CORE_MANAGER_OPTIONS:
|
||||
if (
|
||||
string_ends_with_size(menu_label, "_tab",
|
||||
strlen(menu_label), STRLEN_CONST("_tab"))
|
||||
|
@ -561,7 +561,6 @@ DEFAULT_TITLE_MACRO(action_get_online_updater_list, MENU_ENUM_LABEL_
|
||||
DEFAULT_TITLE_MACRO(action_get_netplay_list, MENU_ENUM_LABEL_VALUE_NETPLAY)
|
||||
DEFAULT_TITLE_MACRO(action_get_online_thumbnails_updater_list, MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST)
|
||||
DEFAULT_TITLE_MACRO(action_get_online_pl_thumbnails_updater_list, MENU_ENUM_LABEL_VALUE_PL_THUMBNAILS_UPDATER_LIST)
|
||||
DEFAULT_TITLE_MACRO(action_get_core_manager_list, MENU_ENUM_LABEL_VALUE_CORE_MANAGER_LIST)
|
||||
DEFAULT_TITLE_MACRO(action_get_add_content_list, MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST)
|
||||
DEFAULT_TITLE_MACRO(action_get_configurations_list, MENU_ENUM_LABEL_VALUE_CONFIGURATIONS_LIST)
|
||||
DEFAULT_TITLE_MACRO(action_get_core_options_list, MENU_ENUM_LABEL_VALUE_CORE_OPTIONS)
|
||||
@ -744,6 +743,7 @@ DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_title_deferred_images_list, MENU
|
||||
DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_title_deferred_music_list, MENU_ENUM_LABEL_VALUE_GOTO_MUSIC)
|
||||
DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_title_deferred_video_list, MENU_ENUM_LABEL_VALUE_GOTO_VIDEO)
|
||||
DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_core_updater_list, MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST)
|
||||
DEFAULT_TITLE_SEARCH_FILTER_MACRO(action_get_core_manager_list, MENU_ENUM_LABEL_VALUE_CORE_MANAGER_LIST)
|
||||
|
||||
DEFAULT_FILL_TITLE_SEARCH_FILTER_MACRO(action_get_title_video_shader_preset, MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_TWO)
|
||||
DEFAULT_FILL_TITLE_SEARCH_FILTER_MACRO(action_get_title_cheat_file_load, MENU_ENUM_LABEL_VALUE_CHEAT_FILE)
|
||||
|
@ -8340,7 +8340,8 @@ static void materialui_populate_entries(
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_SHADER_PASS)) ||
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_FILE_LOAD)) ||
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_FILE_LOAD_APPEND)) ||
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_OVERLAY));
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_OVERLAY)) ||
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_LIST));
|
||||
|
||||
if (!mui->is_file_list)
|
||||
mui->is_dropdown_list = string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST)) ||
|
||||
|
@ -860,8 +860,9 @@ static unsigned menu_displaylist_parse_core_manager_list(
|
||||
|
||||
if (core_info_list)
|
||||
{
|
||||
core_info_t *core_info = NULL;
|
||||
size_t menu_index = 0;
|
||||
menu_serch_terms_t *search_terms = menu_entries_search_get_terms();
|
||||
core_info_t *core_info = NULL;
|
||||
size_t menu_index = 0;
|
||||
size_t i;
|
||||
|
||||
/* Sort cores alphabetically */
|
||||
@ -875,6 +876,30 @@ static unsigned menu_displaylist_parse_core_manager_list(
|
||||
|
||||
if (core_info)
|
||||
{
|
||||
/* If a search is active, skip non-matching
|
||||
* entries */
|
||||
if (search_terms)
|
||||
{
|
||||
bool entry_valid = true;
|
||||
size_t j;
|
||||
|
||||
for (j = 0; j < search_terms->size; j++)
|
||||
{
|
||||
const char *search_term = search_terms->terms[j];
|
||||
|
||||
if (!string_is_empty(search_term) &&
|
||||
!string_is_empty(core_info->display_name) &&
|
||||
!strcasestr(core_info->display_name, search_term))
|
||||
{
|
||||
entry_valid = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!entry_valid)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (menu_entries_append_enum(info->list,
|
||||
core_info->path,
|
||||
"",
|
||||
@ -11078,6 +11103,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
||||
* the navigation pointer if the current size is
|
||||
* different */
|
||||
static size_t prev_count = 0;
|
||||
size_t selection = menu_navigation_get_selection();
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
|
||||
count = menu_displaylist_parse_core_manager_list(info,
|
||||
settings);
|
||||
@ -11089,7 +11115,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
||||
MENU_ENUM_LABEL_NO_ENTRIES_TO_DISPLAY,
|
||||
FILE_TYPE_NONE, 0, 0);
|
||||
|
||||
if (count != prev_count)
|
||||
if ((count != prev_count) ||
|
||||
(selection >= count))
|
||||
{
|
||||
info->need_refresh = true;
|
||||
info->need_navigation_clear = true;
|
||||
|
@ -5009,7 +5009,9 @@ bool menu_driver_search_filter_enabled(const char *label, unsigned type)
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_FILE_LOAD)) ||
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_FILE_LOAD_APPEND)) ||
|
||||
/* > Overlays */
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_OVERLAY));
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_OVERLAY)) ||
|
||||
/* > Manage Cores */
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_CORE_MANAGER_LIST));
|
||||
|
||||
return filter_enabled;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user