diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index a65fdea5e2..789c3e05da 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -694,6 +694,7 @@ static int menu_cbs_init_bind_deferred_push_compare_label(menu_file_list_cbs_t * case MENU_LABEL_CONTENT_HISTORY_PATH: cbs->action_deferred_push = deferred_push_content_history_path; break; + case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: case MENU_LABEL_DETECT_CORE_LIST: cbs->action_deferred_push = deferred_push_detect_core_list; break; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 22633ddf80..22f60948e4 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -383,6 +383,25 @@ static int action_ok_shader_preset(const char *path, return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); } +static int action_ok_push_downloads_dir(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + menu_displaylist_info_t info = {0}; + settings_t *settings = config_get_ptr(); + menu_list_t *menu_list = menu_list_get_ptr(); + + if (!menu_list) + return -1; + + info.list = menu_list->menu_stack; + info.type = MENU_FILE_DIRECTORY; + info.directory_ptr = idx; + strlcpy(info.path, settings->core_assets_directory, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); + + return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); +} + static int action_ok_push_content_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -1826,6 +1845,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_LABEL_DETECT_CORE_LIST: cbs->action_ok = action_ok_push_content_list; break; + case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: + cbs->action_ok = action_ok_push_downloads_dir; + break; case MENU_LABEL_DETECT_CORE_LIST_OK: cbs->action_ok = action_ok_file_load_detect_core; break; @@ -2061,6 +2083,7 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, case MENU_LABEL_SCAN_FILE: cbs->action_ok = action_ok_scan_file; break; + case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: case MENU_LABEL_DETECT_CORE_LIST: #ifdef HAVE_COMPRESSION if (type == MENU_FILE_IN_CARCHIVE) diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c index 39c906c02f..e81c206693 100644 --- a/menu/intl/menu_hash_us.c +++ b/menu/intl/menu_hash_us.c @@ -26,6 +26,8 @@ static const char *menu_hash_to_str_us_label(uint32_t hash) { switch (hash) { + case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: + return "downloaded_file_detect_core_list"; case MENU_LABEL_UPDATE_CORE_INFO_FILES: return "update_core_info_files"; case MENU_LABEL_DEFERRED_CORE_CONTENT_LIST: @@ -988,6 +990,8 @@ const char *menu_hash_to_str_us(uint32_t hash) return "Select From Collection"; case MENU_LABEL_VALUE_DETECT_CORE_LIST: return "Select File And Detect Core"; + case MENU_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST: + return "Select Downloaded File And Detect Core"; case MENU_LABEL_VALUE_LOAD_CONTENT_HISTORY: return "Load Recent"; case MENU_LABEL_VALUE_AUDIO_ENABLE: diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 48c1d11644..1b3b9d35f0 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -1695,6 +1695,11 @@ static int menu_displaylist_parse_load_content_list(menu_displaylist_info_t *inf menu_hash_to_str(MENU_LABEL_VALUE_DETECT_CORE_LIST), menu_hash_to_str(MENU_LABEL_DETECT_CORE_LIST), MENU_SETTING_ACTION, 0, 0); + + menu_list_push(info->list, + menu_hash_to_str(MENU_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST), + menu_hash_to_str(MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST), + MENU_SETTING_ACTION, 0, 0); } #ifdef HAVE_LIBRETRODB @@ -1980,7 +1985,8 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool *n break; case RARCH_PLAIN_FILE: default: - if (hash_label == MENU_LABEL_DETECT_CORE_LIST) + if (hash_label == MENU_LABEL_DETECT_CORE_LIST || + hash_label == MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST) { if (path_is_compressed_file(str_list->elems[i].data)) { diff --git a/menu/menu_hash.h b/menu/menu_hash.h index bef9db117f..fa3a339257 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -22,6 +22,9 @@ extern "C" { #endif +#define MENU_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST 0x39310fc8U +#define MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST 0xb4f82700U + #define MENU_LABEL_VALUE_UPDATE_CORE_INFO_FILES 0xba274810U #define MENU_LABEL_UPDATE_CORE_INFO_FILES 0x620d758dU