diff --git a/core_info.c b/core_info.c index d6e98c8bf6..7db0c0c9ad 100644 --- a/core_info.c +++ b/core_info.c @@ -22,6 +22,8 @@ #include #include +#include + #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -87,10 +89,7 @@ static void core_info_list_resolve_all_firmware( core_info_t *info = (core_info_t*)&core_info_list->list[i]; config_file_t *config = (config_file_t*)info->config_data; - if (!config) - continue; - - if (!config_get_uint(config, "firmware_count", &count)) + if (!config || !config_get_uint(config, "firmware_count", &count)) continue; info->firmware = (core_info_firmware_t*) @@ -101,9 +100,11 @@ static void core_info_list_resolve_all_firmware( for (c = 0; c < count; c++) { - char path_key[64] = {0}; - char desc_key[64] = {0}; - char opt_key[64] = {0}; + char path_key[64]; + char desc_key[64]; + char opt_key[64]; + + path_key[0] = desc_key[0] = opt_key[0] = '\0'; snprintf(path_key, sizeof(path_key), "firmware%u_path", c); snprintf(desc_key, sizeof(desc_key), "firmware%u_desc", c); @@ -162,21 +163,24 @@ static void core_info_list_free(core_info_list_t *core_info_list) free(core_info_list); } -static config_file_t *core_info_list_iterate( +static bool core_info_list_iterate( + char *s, size_t len, struct string_list *contents, size_t i) { - char info_path_base[PATH_MAX_LENGTH] = {0}; - char info_path[PATH_MAX_LENGTH] = {0}; + char info_path_base[PATH_MAX_LENGTH]; + char *substr = NULL; settings_t *settings = config_get_ptr(); - if (!contents->elems[i].data) - return NULL; + if (!contents || !contents->elems[i].data) + return false; + + info_path_base[0] = '\0'; fill_pathname_base_noext(info_path_base, contents->elems[i].data, sizeof(info_path_base)); #if defined(RARCH_MOBILE) || (defined(RARCH_CONSOLE) && !defined(PSP) && !defined(_3DS) && !defined(VITA)) - char *substr = strrchr(info_path_base, '_'); + substr = strrchr(info_path_base, '_'); if (substr) *substr = '\0'; #endif @@ -185,28 +189,21 @@ static config_file_t *core_info_list_iterate( file_path_str(FILE_PATH_CORE_INFO_EXTENSION), sizeof(info_path_base)); - fill_pathname_join(info_path, + fill_pathname_join(s, (!string_is_empty(settings->path.libretro_info)) ? settings->path.libretro_info : settings->directory.libretro, - info_path_base, sizeof(info_path)); + info_path_base, len); - return config_file_new(info_path); + return true; } -static core_info_list_t *core_info_list_new(void) +static core_info_list_t *core_info_list_new(const char *path) { size_t i; core_info_t *core_info = NULL; core_info_list_t *core_info_list = NULL; - struct string_list *contents = NULL; - settings_t *settings = config_get_ptr(); - - if (!settings) - return NULL; - - contents = dir_list_new_special( - settings->directory.libretro, - DIR_LIST_CORES, NULL); + struct string_list *contents = dir_list_new_special( + path, DIR_LIST_CORES, NULL); if (!contents) return NULL; @@ -219,17 +216,23 @@ static core_info_list_t *core_info_list_new(void) if (!core_info) goto error; - core_info_list->list = core_info; + core_info_list->list = core_info; core_info_list->count = contents->size; for (i = 0; i < contents->size; i++) { - config_file_t *conf = core_info_list_iterate(contents, i); + char info_path[PATH_MAX_LENGTH]; - if (conf) + info_path[0] = '\0'; + + if ( + core_info_list_iterate(info_path, sizeof(info_path), + contents, i) + && path_is_valid(info_path)) { - bool tmp_bool = false; - unsigned count = 0; + bool tmp_bool = false; + unsigned count = 0; + config_file_t *conf = config_file_new(info_path); config_get_string(conf, "display_name", &core_info[i].display_name); @@ -403,20 +406,22 @@ static bool core_info_list_update_missing_firmware_internal( const char *systemdir) { size_t i; - char path[PATH_MAX_LENGTH] = {0}; + char path[PATH_MAX_LENGTH]; core_info_t *info = NULL; if (!core_info_list || !core) return false; - info = core_info_find_internal(core_info_list, core); + path[0] = '\0'; + info = core_info_find_internal(core_info_list, core); if (!info) return false; + runloop_ctl(RUNLOOP_CTL_UNSET_MISSING_BIOS, NULL); for (i = 0; i < info->firmware_count; i++) { - if (!info->firmware[i].path) + if (string_is_empty(info->firmware[i].path)) continue; fill_pathname_join(path, systemdir, @@ -452,12 +457,13 @@ static void core_info_list_get_missing_firmware( const core_info_firmware_t **firmware, size_t *num_firmware) { size_t i; - char path[PATH_MAX_LENGTH] = {0}; + char path[PATH_MAX_LENGTH]; core_info_t *info = NULL; if (!core_info_list || !core) return; + path[0] = '\0'; *firmware = NULL; *num_firmware = 0; @@ -511,7 +517,10 @@ void core_info_deinit_list(void) bool core_info_init_list(void) { - core_info_curr_list = core_info_list_new(); + settings_t *settings = config_get_ptr(); + + if (settings) + core_info_curr_list = core_info_list_new(settings->directory.libretro); if (!core_info_curr_list) return false; @@ -625,58 +634,43 @@ void core_info_list_get_supported_cores(core_info_list_t *core_info_list, void core_info_get_name(const char *path, char *s, size_t len) { size_t i; - core_info_t *core_info = NULL; - core_info_list_t *core_info_list = NULL; - struct string_list *contents = NULL; settings_t *settings = config_get_ptr(); - - if (!settings) - return; - - contents = dir_list_new_special( + struct string_list *contents = dir_list_new_special( settings->directory.libretro, DIR_LIST_CORES, NULL); if (!contents) return; - core_info_list = (core_info_list_t*)calloc(1, sizeof(*core_info_list)); - if (!core_info_list) - goto error; - - core_info = (core_info_t*)calloc(contents->size, sizeof(*core_info)); - if (!core_info) - goto error; - - core_info_list->list = core_info; - core_info_list->count = contents->size; - for (i = 0; i < contents->size; i++) { - config_file_t *conf = NULL; + char info_path[PATH_MAX_LENGTH]; + config_file_t *conf = NULL; + char *new_core_name = NULL; + + info_path[0] = '\0'; if (!string_is_equal(contents->elems[i].data, path)) continue; - conf = core_info_list_iterate(contents, i); + if (!core_info_list_iterate(info_path, + sizeof(info_path), contents, i) + && path_is_valid(info_path)) + continue; - if (conf) - { - config_get_string(conf, "corename", - &core_info[i].core_name); - core_info[i].config_data = (void*)conf; - } + conf = config_file_new(info_path); - core_info[i].path = strdup(contents->elems[i].data); + config_get_string(conf, "corename", + &new_core_name); + strlcpy(s, new_core_name, len); - strlcpy(s, core_info[i].core_name, len); + config_file_free(conf); + break; } -error: if (contents) dir_list_free(contents); contents = NULL; - core_info_list_free(core_info_list); } size_t core_info_list_num_info_files(core_info_list_t *core_info_list) @@ -699,10 +693,8 @@ size_t core_info_list_num_info_files(core_info_list_t *core_info_list) bool core_info_unsupported_content_path(const char *path) { size_t i; - const char *delim; const char *archive_path = NULL; - - delim = path_get_archive_delim(path); + const char *delim = path_get_archive_delim(path); if (delim) archive_path = delim - 1; @@ -718,18 +710,19 @@ bool core_info_unsupported_content_path(const char *path) { const core_info_t *info = &core_info_curr_list->list[i]; - if (string_list_find_elem(info->supported_extensions_list, "zip") || - string_list_find_elem(info->supported_extensions_list, "7z")) - return false; + if ( !string_list_find_elem(info->supported_extensions_list, "zip") + && !string_list_find_elem(info->supported_extensions_list, "7z")) + continue; + + return false; } } for (i = 0; i < core_info_curr_list->count; i++) { const core_info_t *info = &core_info_curr_list->list[i]; - bool path_in_ext_list = string_list_find_elem(info->supported_extensions_list, path_get_extension(path)); - if (path_in_ext_list) + if (string_list_find_elem(info->supported_extensions_list, path_get_extension(path))) return false; } @@ -739,8 +732,8 @@ bool core_info_unsupported_content_path(const char *path) bool core_info_database_supports_content_path(const char *database_path, const char *path) { size_t i; - char *database; - const char *delim; + char *database = NULL; + const char *delim = NULL; const char *archive_path = NULL; if (!core_info_curr_list) @@ -763,31 +756,30 @@ bool core_info_database_supports_content_path(const char *database_path, const c { const core_info_t *info = &core_info_curr_list->list[i]; - if (string_list_find_elem(info->databases_list, database)) - { - if (string_list_find_elem(info->supported_extensions_list, "zip") || - string_list_find_elem(info->supported_extensions_list, "7z")) - { - free(database); - return false; - } - } + if (!string_list_find_elem(info->databases_list, database)) + continue; + + if ( !string_list_find_elem(info->supported_extensions_list, "zip") + && !string_list_find_elem(info->supported_extensions_list, "7z")) + continue; + + free(database); + return false; } } for (i = 0; i < core_info_curr_list->count; i++) { const core_info_t *info = &core_info_curr_list->list[i]; - bool path_in_ext_list = string_list_find_elem(info->supported_extensions_list, path_get_extension(path)); - if (path_in_ext_list) - { - if (string_list_find_elem(info->databases_list, database)) - { - free(database); - return true; - } - } + if (!string_list_find_elem(info->supported_extensions_list, path_get_extension(path))) + continue; + + if (!string_list_find_elem(info->databases_list, database)) + continue; + + free(database); + return true; } free(database); @@ -805,12 +797,15 @@ bool core_info_list_get_display_name(core_info_list_t *core_info_list, for (i = 0; i < core_info_list->count; i++) { const core_info_t *info = &core_info_list->list[i]; - if (string_is_equal(path_basename(info->path), path_basename(path)) - && info->display_name) - { - strlcpy(s, info->display_name, len); - return true; - } + + if (!string_is_equal(path_basename(info->path), path_basename(path))) + continue; + + if (!info->display_name) + continue; + + strlcpy(s, info->display_name, len); + return true; } return false; @@ -818,40 +813,25 @@ bool core_info_list_get_display_name(core_info_list_t *core_info_list, bool core_info_get_display_name(const char *path, char *s, size_t len) { - char *core_name = NULL; + bool ret = true; char *display_name = NULL; - config_file_t *conf = NULL; - - if (!path_file_exists(path)) - return false; - - conf = config_file_new(path); + config_file_t *conf = config_file_new(path); if (!conf) - return false; - - config_get_string(conf, "corename", - &core_name); - config_get_string(conf, "display_name", - &display_name); - - if (!core_name || !display_name) + { + ret = false; goto error; + } - config_file_free(conf); + config_get_string(conf, "display_name", &display_name); - snprintf(s, len,"%s",display_name); - - free(core_name); - free(display_name); - - return true; + if (display_name) + snprintf(s, len, "%s", display_name); error: config_file_free(conf); - if (core_name) - free(core_name); if (display_name) free(display_name); - return false; + + return ret; } diff --git a/frontend/drivers/platform_ctr.c b/frontend/drivers/platform_ctr.c index ed2cbbbcbb..ed804786a9 100644 --- a/frontend/drivers/platform_ctr.c +++ b/frontend/drivers/platform_ctr.c @@ -390,7 +390,10 @@ static int frontend_ctr_parse_drive_list(void *data) return -1; menu_entries_append_enum(list, - "sdmc:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "sdmc:/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); #endif return 0; diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m index 07b113b557..88f1d2bedd 100644 --- a/frontend/drivers/platform_darwin.m +++ b/frontend/drivers/platform_darwin.m @@ -640,9 +640,14 @@ static int frontend_darwin_parse_drive_list(void *data) CFSearchPathForDirectoriesInDomains(CFDocumentDirectory, CFUserDomainMask, 1, home_dir_buf, sizeof(home_dir_buf)); menu_entries_append_enum(list, - home_dir_buf, "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); - menu_entries_append_enum(list, "/", "", - MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + home_dir_buf, + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); + menu_entries_append_enum(list, "/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); ret = 0; diff --git a/frontend/drivers/platform_gx.c b/frontend/drivers/platform_gx.c index a6f6edd8e0..0f17afa3bd 100644 --- a/frontend/drivers/platform_gx.c +++ b/frontend/drivers/platform_gx.c @@ -472,14 +472,26 @@ static int frontend_gx_parse_drive_list(void *data) file_list_t *list = (file_list_t*)data; #ifdef HW_RVL menu_entries_append_enum(list, - "sd:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "sd:/", + msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "usb:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "usb:/", + msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); #endif menu_entries_append_enum(list, - "carda:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "carda:/", + msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "cardb:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "cardb:/", + msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); #endif return 0; diff --git a/frontend/drivers/platform_linux.c b/frontend/drivers/platform_linux.c index 6ca9c5c0b8..7d92d2aec2 100644 --- a/frontend/drivers/platform_linux.c +++ b/frontend/drivers/platform_linux.c @@ -61,6 +61,7 @@ #include "platform_linux.h" #ifdef HAVE_MENU +#include "../../menu/menu_driver.h" #include "../../menu/menu_display.h" #include "../../menu/menu_entries.h" #endif @@ -1857,24 +1858,29 @@ static int frontend_linux_parse_drive_list(void *data) menu_entries_append_enum(list, app_dir, msg_hash_to_str(MSG_APPLICATION_DIR), - MSG_APPLICATION_DIR, FILE_TYPE_DIRECTORY, 0, 0); + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, internal_storage_app_path, msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR), - MSG_EXTERNAL_APPLICATION_DIR, - FILE_TYPE_DIRECTORY, 0, 0); + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, internal_storage_path, msg_hash_to_str(MSG_INTERNAL_STORAGE), - MSG_INTERNAL_STORAGE, FILE_TYPE_DIRECTORY, 0, 0); + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, "/storage", msg_hash_to_str(MSG_REMOVABLE_STORAGE), - MSG_REMOVABLE_STORAGE, FILE_TYPE_DIRECTORY, 0, 0); + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); #endif - menu_entries_append_enum(list, "/", "", - MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + menu_entries_append_enum(list, "/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); #endif return 0; diff --git a/frontend/drivers/platform_ps3.c b/frontend/drivers/platform_ps3.c index e735f16a41..8e318b1e41 100644 --- a/frontend/drivers/platform_ps3.c +++ b/frontend/drivers/platform_ps3.c @@ -497,29 +497,65 @@ static int frontend_ps3_parse_drive_list(void *data) file_list_t *list = (file_list_t*)data; menu_entries_append_enum(list, - "/app_home/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "/app_home/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "/dev_hdd0/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "/dev_hdd0/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "/dev_hdd1/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "/dev_hdd1/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "/dev_bdvd/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "/dev_bdvd/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "/host_root/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "/host_root/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "/dev_usb000/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "/dev_usb000/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "/dev_usb001/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "/dev_usb001/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "/dev_usb002/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "/dev_usb002/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "/dev_usb003/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "/dev_usb003/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "/dev_usb004/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "/dev_usb004/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "/dev_usb005/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "/dev_usb005/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "/dev_usb006/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "/dev_usb006/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); #endif return 0; diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 31c1e28561..9321651336 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -468,18 +468,36 @@ static int frontend_psp_parse_drive_list(void *data) #ifdef VITA menu_entries_append_enum(list, - "app0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "app0:/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "ur0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "ur0:/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "ux0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "ux0:/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); #else menu_entries_append_enum(list, - "ms0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "ms0:/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "ef0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "ef0:/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "host0:/", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "host0:/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); #endif #endif diff --git a/frontend/drivers/platform_wiiu.c b/frontend/drivers/platform_wiiu.c index 85662c5efe..f4e886c9ad 100644 --- a/frontend/drivers/platform_wiiu.c +++ b/frontend/drivers/platform_wiiu.c @@ -138,8 +138,10 @@ static int frontend_wiiu_parse_drive_list(void *data) if (!list) return -1; - menu_entries_append_enum(list, - WIIU_SD_PATH, "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + menu_entries_append_enum(list, WIIU_SD_PATH, + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); return 0; } diff --git a/frontend/drivers/platform_win32.c b/frontend/drivers/platform_win32.c index 2d0b934010..4b69b5ff03 100644 --- a/frontend/drivers/platform_win32.c +++ b/frontend/drivers/platform_win32.c @@ -236,7 +236,10 @@ static int frontend_win32_parse_drive_list(void *data) drive[0] = 'A' + i; if (drives & (1 << i)) menu_entries_append_enum(list, - drive, "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + drive, + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); } #endif diff --git a/frontend/drivers/platform_xdk.cpp b/frontend/drivers/platform_xdk.cpp index ce96775ab7..8d996136b3 100644 --- a/frontend/drivers/platform_xdk.cpp +++ b/frontend/drivers/platform_xdk.cpp @@ -1373,18 +1373,36 @@ static int frontend_xdk_parse_drive_list(void *data) #if defined(_XBOX1) menu_entries_append_enum(list, - "C:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "C:", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "D:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "D:", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "E:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "E:", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "F:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "F:", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); menu_entries_append_enum(list, - "G:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "G:", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); #elif defined(_XBOX360) menu_entries_append_enum(list, - "game:", "", MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0); + "game:", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); #endif #endif diff --git a/intl/msg_hash_chs.c b/intl/msg_hash_chs.c index b709742a9e..fd0ef1df5b 100644 --- a/intl/msg_hash_chs.c +++ b/intl/msg_hash_chs.c @@ -2116,8 +2116,8 @@ const char *msg_hash_to_str_chs(enum msg_hash_enums msg) return "选择数据库"; case MENU_ENUM_LABEL_VALUE_DELETE_ENTRY: return "移除"; - case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST: - return "选择文件并探测核心"; + case MENU_ENUM_LABEL_VALUE_FAVORITES: + return "选择文件并探测核心"; /* TODO/FIXME - update */ case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT: return "<游戏内容目录>"; case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT: @@ -2452,8 +2452,6 @@ const char *msg_hash_to_str_chs(enum msg_hash_enums msg) return "线性"; case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE: return "使用核心加载压缩包"; - case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT: - return "选择文件"; case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY: return "加载最近的游戏内容"; case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST: diff --git a/intl/msg_hash_de.c b/intl/msg_hash_de.c index f733340ef1..7d5127f881 100644 --- a/intl/msg_hash_de.c +++ b/intl/msg_hash_de.c @@ -103,24 +103,6 @@ int menu_hash_get_help_de_enum(enum msg_hash_enums msg, char *s, size_t len) break; } break; - case MENU_ENUM_LABEL_LOAD_CONTENT: - snprintf(s, len, - "Lade Content. \n" - "Suche nach Content. \n" - " \n" - "Um Content zu laden benötigst du den passenden \n" - "Libretro-Core und die Content-Datei. \n" - " \n" - "Um einzustellen, welcher Ordner standardmäßig \n" - "geöffnet wird, um nach Content zu suchen, solltest \n" - "du das Content-Verzeichnis setzen. Wenn es nicht \n" - "gesetzt ist, wird es im Root-Verzeichen starten. \n" - " \n" - "Der Browser wird nur Dateierweiterungen des \n" - "zuletzt geladenen Cores zeigen und diesen Core \n" - "nutzen, wenn Content geladen wird." - ); - break; case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY: snprintf(s, len, "Lade Content aus dem Verlauf. \n" diff --git a/intl/msg_hash_de.h b/intl/msg_hash_de.h index 09fb655303..f14d94adc9 100644 --- a/intl/msg_hash_de.h +++ b/intl/msg_hash_de.h @@ -146,8 +146,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER, "Datenbankmanager") MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, "Von der Playlist löschen") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, - "Lade Content (Core erkennen)") /* FIXME */ +MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES, + "Lesezeichen") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, "") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, @@ -280,8 +280,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR, "Linear") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, "Lade Archiv") -MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT, - "Lade Content") /* FIXME */ MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, "Lade Content (Verlauf)") /* FIXME/UPDATE */ MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, diff --git a/intl/msg_hash_eo.h b/intl/msg_hash_eo.h index 9fd9252a77..6ebaf86f80 100644 --- a/intl/msg_hash_eo.h +++ b/intl/msg_hash_eo.h @@ -484,8 +484,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION, "Database Selection") MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, "Remove") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, - "Select File And Detect Core") +MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES, + "Favorites") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, "") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, @@ -818,8 +818,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR, "Linear") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, "Load Archive With Core") -MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT, - "Select File") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, "Load Recent") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, diff --git a/intl/msg_hash_es.c b/intl/msg_hash_es.c index 6b9d709e88..478c410e32 100644 --- a/intl/msg_hash_es.c +++ b/intl/msg_hash_es.c @@ -1372,8 +1372,6 @@ const char *msg_hash_to_str_es(enum msg_hash_enums msg) return "Error:"; case MSG_FAILED_TO_APPLY_SHADER: return "Error al aplicar shader."; - case MSG_FAILED_TO_LOAD_CONTENT: - return "Error al cargar el contenido"; case MSG_FAILED_TO_LOAD_MOVIE_FILE: return "Error al cargar el archivo de película"; case MSG_FAILED_TO_LOAD_OVERLAY: @@ -1655,8 +1653,8 @@ const char *msg_hash_to_str_es(enum msg_hash_enums msg) return "Proporción personalizada"; case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER: return "Gestor de bases de datos"; - case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST: - return "Seleccionar archivo y detectar núcleo"; + case MENU_ENUM_LABEL_VALUE_FAVORITES: + return "Seleccionar archivo y detectar núcleo"; /* TODO/FIXME - update */ case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT: return "(Carpeta de contenido)"; case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT: @@ -1794,8 +1792,6 @@ const char *msg_hash_to_str_es(enum msg_hash_enums msg) return "Nivel de registro del núcleo"; case MENU_ENUM_LABEL_VALUE_LINEAR: return "Lineal"; - case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT: - return "Seleccionar archivo"; case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY: return "Cargar archivos recientes"; case MENU_ENUM_LABEL_VALUE_LOAD_STATE: diff --git a/intl/msg_hash_fr.h b/intl/msg_hash_fr.h index 8b27411d2f..107d9c1148 100644 --- a/intl/msg_hash_fr.h +++ b/intl/msg_hash_fr.h @@ -480,8 +480,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION, "Database Selection") MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, "Remove") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, - "Via les fichiers (détecter le coeur)") +MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES, + "Via les fichiers") /* TODO/FIXME - update */ MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, "") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, @@ -812,8 +812,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR, "Linéaire") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, "Charger l'archive") -MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT, - "Via les fichiers") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, "Récemment ouvert") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, diff --git a/intl/msg_hash_it.c b/intl/msg_hash_it.c index c2159671d6..480fad296c 100644 --- a/intl/msg_hash_it.c +++ b/intl/msg_hash_it.c @@ -1611,8 +1611,8 @@ const char *msg_hash_to_str_it(enum msg_hash_enums msg) return "Abilita riavvolgi"; case MENU_ENUM_LABEL_VALUE_CONTENT_COLLECTION_LIST: return "Collezione"; - case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST: - return "Seleziona il file ed intercetta il core"; + case MENU_ENUM_LABEL_VALUE_FAVORITES: + return "Seleziona il file ed intercetta il core"; /* TODO/FIXME - update */ case MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST: return "Scarica su directories"; case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY: @@ -1729,8 +1729,6 @@ const char *msg_hash_to_str_it(enum msg_hash_enums msg) return "Nessun oggetto."; case MENU_ENUM_LABEL_VALUE_CORE_LIST: return "Carica Core"; - case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT: - return "Seleziona contenuto"; case MENU_ENUM_LABEL_VALUE_CLOSE_CONTENT: return "Chiudi"; case MENU_ENUM_LABEL_VALUE_MANAGEMENT: diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index e583fe216d..26cc96c72d 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -498,8 +498,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION, "Database Selection") MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, "削除") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, - "ファイルを選択とコア検出") +MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES, + "ファイルを選択とコア検出") /* TODO/FIXME - update */ MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, "") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, @@ -834,8 +834,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR, "Linear") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, "コアでアーカイブをロード") -MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT, - "ファイル選択") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, "最近のものをロード") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 77618556b5..2c16baa047 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -307,8 +307,8 @@ MSG_HASH(MENU_ENUM_LABEL_DEFERRED_WIFI_SETTINGS_LIST, "deferred_wifi_settings_list") MSG_HASH(MENU_ENUM_LABEL_DELETE_ENTRY, "delete_entry") -MSG_HASH(MENU_ENUM_LABEL_DETECT_CORE_LIST, - "detect_core_list") +MSG_HASH(MENU_ENUM_LABEL_FAVORITES, + "favorites") MSG_HASH(MENU_ENUM_LABEL_DIRECTORY_SETTINGS, "directory_settings") MSG_HASH(MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS, @@ -349,6 +349,8 @@ MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_CORE_DETECTED, "file_browser_core_detected") MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION, "file_browser_core_select_from_collection") +MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION_CURRENT_CORE, + "file_browser_core_select_from_collection_current_core") MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY, "file_browser_directory") MSG_HASH(MENU_ENUM_LABEL_FILE_BROWSER_IMAGE, @@ -517,8 +519,6 @@ MSG_HASH(MENU_ENUM_LABEL_LOAD_ARCHIVE, "load_archive") MSG_HASH(MENU_ENUM_LABEL_LOAD_ARCHIVE_DETECT_CORE, "load_archive_detect_core") -MSG_HASH(MENU_ENUM_LABEL_LOAD_CONTENT, - "load_content_default") MSG_HASH(MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY, "load_recent") MSG_HASH(MENU_ENUM_LABEL_LOAD_CONTENT_LIST, @@ -1109,6 +1109,8 @@ MSG_HASH(MENU_ENUM_LABEL_SECONDS, "seconds") MSG_HASH(MENU_ENUM_LABEL_STATUS, "status") MSG_HASH(MENU_ENUM_LABEL_DETECT_CORE_LIST_OK, "detect_core_list_ok") +MSG_HASH(MENU_ENUM_LABEL_DETECT_CORE_LIST_OK_CURRENT_CORE, + "detect_core_list_ok_current_core") MSG_HASH(MENU_ENUM_LABEL_NO_DISK, "no_disk") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_RPL_ENTRY_ACTIONS, @@ -1153,3 +1155,5 @@ MSG_HASH(MENU_ENUM_LABEL_SHADER_PIPELINE_SNOW, "shader_pipeline_snow") MSG_HASH(MENU_ENUM_LABEL_INPUT_UNIFIED_MENU_CONTROLS, "unified_menu_controls") +MSG_HASH(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + "detect_core_list_push_dir") diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index 9229711edc..ba2abb1167 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -484,8 +484,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION, "Database Selectie") MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, "Verwijderen") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, - "Selecteer Bestand En Detecteer Core") +MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES, + "Favorieten") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, "") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, @@ -818,8 +818,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR, "Linear") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, "Laad Archief Met Core") -MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT, - "Selecteer Bestand") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, "Recentelijk gebruikt") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, diff --git a/intl/msg_hash_pl.c b/intl/msg_hash_pl.c index c32a710bd4..bee8cf1bc7 100644 --- a/intl/msg_hash_pl.c +++ b/intl/msg_hash_pl.c @@ -176,7 +176,7 @@ const char *msg_hash_to_str_pl(enum msg_hash_enums msg) return "Włąsny współczynnik"; case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER: return "Menedżer bazy danych"; - case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST: + case MENU_ENUM_LABEL_VALUE_FAVORITES: /* TODO/FIXME - update */ return "Wybierz plik i dopasuj rdzeń"; case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT: return ""; @@ -312,8 +312,6 @@ const char *msg_hash_to_str_pl(enum msg_hash_enums msg) return "Liniowe"; case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE: return "Wczytaj archiwum"; - case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT: - return "Wybierz plik"; case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY: return "Wczytaj z ostatnio używanych"; case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST: diff --git a/intl/msg_hash_pt.c b/intl/msg_hash_pt.c index dcf67ab273..a720feee37 100644 --- a/intl/msg_hash_pt.c +++ b/intl/msg_hash_pt.c @@ -90,26 +90,6 @@ int menu_hash_get_help_pt_enum(enum msg_hash_enums msg, char *s, size_t len) break; } break; - case MENU_ENUM_LABEL_LOAD_CONTENT: - snprintf(s, len, - "Carregar Conteúdo. \n" - "Busca conteúdo. \n" - " \n" - "Para carregar conteúdo, você precisa de \n" - "um core libretro para usar, e um arquivo \n" - "de conteúdo. \n" - " \n" - "Para controlar onde o menu começa a \n" - "buscar conteúdo, defina o Diretório \n" - "de Navegação. Se não estiver definido, \n" - "o Retroarch começará no diretório raiz. \n" - " \n" - "O navegador vai filtrar pelas extensões \n" - "do mais recente core definido em 'Core', \n" - "e o usará quando o conteúdo estiver \n" - "carregado." - ); - break; case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY: snprintf(s, len, "Carregando conteúdo do histórico. \n" @@ -1114,8 +1094,8 @@ const char *msg_hash_to_str_pt(enum msg_hash_enums msg) return "Relação de Aspecto Personalizada"; case MENU_ENUM_LABEL_VALUE_DATABASE_MANAGER: return "Gerenciador de Databases"; - case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST: - return "Selecionar Arquivo e Detectar Core"; + case MENU_ENUM_LABEL_VALUE_FAVORITES: + return "Selecionar Arquivo e Detectar Core"; /* TODO/FIXME - update */ case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT: return ""; case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT: @@ -1246,8 +1226,6 @@ const char *msg_hash_to_str_pt(enum msg_hash_enums msg) return "Linear"; case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE: return "Carregar Arquivo"; - case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT: - return "Selecionar Arquivo"; case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY: return "Selecionar do Histórico"; case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST: diff --git a/intl/msg_hash_ru.h b/intl/msg_hash_ru.h index 27bdd8a455..413c096a39 100644 --- a/intl/msg_hash_ru.h +++ b/intl/msg_hash_ru.h @@ -484,8 +484,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION, "Database Selection") MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, "Remove") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, - "Select File And Detect Core") +MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES, + "Favorites") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, "") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, @@ -818,8 +818,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR, "Linear") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, "Load Archive With Core") -MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT, - "Select File") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, "Load Recent") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index bc7e9dd724..b785717911 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -488,8 +488,8 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_DATABASE_SELECTION, "Database Selection") MSG_HASH(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY, "Remove") -MSG_HASH(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST, - "Select File And Detect Core") +MSG_HASH(MENU_ENUM_LABEL_VALUE_FAVORITES, + "Favorites") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT, "") MSG_HASH(MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT, @@ -826,8 +826,6 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LINEAR, "Linear") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE, "Load Archive With Core") -MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT, - "Select File") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY, "Load Recent") MSG_HASH(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, diff --git a/intl/msg_hash_vn.c b/intl/msg_hash_vn.c index 8766639869..30915360e2 100644 --- a/intl/msg_hash_vn.c +++ b/intl/msg_hash_vn.c @@ -2162,8 +2162,8 @@ const char *msg_hash_to_str_vn(enum msg_hash_enums msg) return "Database Selection"; case MENU_ENUM_LABEL_VALUE_DELETE_ENTRY: return "Remove"; - case MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST: - return "Select File And Detect Core"; + case MENU_ENUM_LABEL_VALUE_FAVORITES: + return "Favorites"; case MENU_ENUM_LABEL_VALUE_DIRECTORY_CONTENT: return ""; case MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT: @@ -2497,8 +2497,6 @@ const char *msg_hash_to_str_vn(enum msg_hash_enums msg) return "Linear"; case MENU_ENUM_LABEL_VALUE_LOAD_ARCHIVE: return "Tải Archive With Core"; - case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT: - return "Select File"; case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_HISTORY: return "Tải Recent"; case MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST: diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 299108bfec..47e2f4c4e9 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -533,12 +533,13 @@ static int general_push(menu_displaylist_info_t *info, strlcpy(info->exts, list->all_ext, sizeof(info->exts)); else if (system_menu->valid_extensions) { - if (*system_menu->valid_extensions) + if (!string_is_empty(system_menu->valid_extensions)) strlcpy(info->exts, system_menu->valid_extensions, sizeof(info->exts)); } else strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); + break; case PUSH_ARCHIVE_OPEN: if (system_menu->valid_extensions) @@ -567,8 +568,14 @@ static int general_push(menu_displaylist_info_t *info, } break; case PUSH_DETECT_CORE_LIST: - if (!string_is_empty(list->all_ext)) + if (list && !string_is_empty(list->all_ext)) strlcpy(info->exts, list->all_ext, sizeof(info->exts)); + else if (system_menu->valid_extensions) + { + if (!string_is_empty(system_menu->valid_extensions)) + strlcpy(info->exts, system_menu->valid_extensions, + sizeof(info->exts)); + } break; } @@ -1111,7 +1118,7 @@ static int menu_cbs_init_bind_deferred_push_compare_label( BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_core_settings_list); break; case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: - case MENU_ENUM_LABEL_DETECT_CORE_LIST: + case MENU_ENUM_LABEL_FAVORITES: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_detect_core_list); break; default: @@ -1341,7 +1348,7 @@ static int menu_cbs_init_bind_deferred_push_compare_label( BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_content_history_path); break; case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: - case MENU_LABEL_DETECT_CORE_LIST: + case MENU_LABEL_FAVORITES: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_detect_core_list); break; default: diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index eb56c8eb51..6a4fcecf39 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -1620,6 +1620,18 @@ static int menu_cbs_init_bind_get_string_representation_compare_label( { switch (cbs->enum_idx) { + case MENU_ENUM_LABEL_VIDEO_DRIVER: + case MENU_ENUM_LABEL_AUDIO_DRIVER: + case MENU_ENUM_LABEL_INPUT_DRIVER: + case MENU_ENUM_LABEL_JOYPAD_DRIVER: + case MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER: + case MENU_ENUM_LABEL_RECORD_DRIVER: + case MENU_ENUM_LABEL_LOCATION_DRIVER: + case MENU_ENUM_LABEL_CAMERA_DRIVER: + case MENU_ENUM_LABEL_WIFI_DRIVER: + case MENU_ENUM_LABEL_MENU_DRIVER: + BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label); + break; case MENU_ENUM_LABEL_STATE_SLOT: BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_state); @@ -1703,8 +1715,7 @@ static int menu_cbs_init_bind_get_string_representation_compare_label( case MENU_ENUM_LABEL_CONTENT_COLLECTION_LIST: case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY: case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: - case MENU_ENUM_LABEL_DETECT_CORE_LIST: - case MENU_ENUM_LABEL_LOAD_CONTENT: + case MENU_ENUM_LABEL_FAVORITES: case MENU_ENUM_LABEL_CORE_OPTIONS: case MENU_ENUM_LABEL_CORE_CHEAT_OPTIONS: case MENU_ENUM_LABEL_SHADER_OPTIONS: @@ -1778,6 +1789,7 @@ static int menu_cbs_init_bind_get_string_representation_compare_type( menu_action_setting_disp_set_label_core_option_create); break; case FILE_TYPE_CORE: + case FILE_TYPE_DIRECT_LOAD: BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_menu_file_core); break; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 314598f6fb..4ecf62f23c 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -71,6 +71,7 @@ typedef struct #endif /* FIXME - Global variables, refactor */ +static char filebrowser_label[PATH_MAX_LENGTH]; static char detect_content_path[PATH_MAX_LENGTH]; unsigned rpl_entry_selection_ptr = 0; unsigned rdb_entry_start_game_selection_ptr = 0; @@ -294,7 +295,7 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_GENERIC; break; case ACTION_OK_DL_AUDIO_DSP_PLUGIN: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info.directory_ptr = idx; info_path = settings->directory.audio_filter; info_label = msg_hash_to_str(MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN); @@ -302,7 +303,7 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE; break; case ACTION_OK_DL_SHADER_PASS: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info.type = type; info.directory_ptr = idx; info_path = settings->directory.video_shader; @@ -326,7 +327,7 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_GENERIC; break; case ACTION_OK_DL_FILE_BROWSER_SELECT_DIR: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_SELECT_DIR; if (path) strlcpy(menu->deferred_path, path, sizeof(menu->deferred_path)); @@ -344,7 +345,7 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_GENERIC; break; case ACTION_OK_DL_SHADER_PRESET: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info.type = type; info.directory_ptr = idx; info_path = settings->directory.video_shader; @@ -352,7 +353,6 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE; break; case ACTION_OK_DL_CONTENT_LIST: - menu_displaylist_reset_filebrowser(); info.type = FILE_TYPE_DIRECTORY; info.directory_ptr = idx; info_path = new_path; @@ -360,6 +360,7 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_GENERIC; break; case ACTION_OK_DL_SCAN_DIR_LIST: + filebrowser_types = FILEBROWSER_SCAN_DIR; info.type = FILE_TYPE_DIRECTORY; info.directory_ptr = idx; info_path = new_path; @@ -367,7 +368,7 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_FILE_BROWSER_SCAN_DIR; break; case ACTION_OK_DL_REMAP_FILE: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info.type = type; info.directory_ptr = idx; info_path = settings->directory.input_remapping; @@ -377,7 +378,7 @@ int generic_action_ok_displaylist_push(const char *path, case ACTION_OK_DL_RECORD_CONFIGFILE: { global_t *global = global_get_ptr(); - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info.type = type; info.directory_ptr = idx; info_path = global->record.config_dir; @@ -386,7 +387,7 @@ int generic_action_ok_displaylist_push(const char *path, } break; case ACTION_OK_DL_DISK_IMAGE_APPEND_LIST: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info.type = type; info.directory_ptr = idx; info_path = settings->directory.menu_content; @@ -394,7 +395,7 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE; break; case ACTION_OK_DL_PLAYLIST_COLLECTION: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info.type = type; info.directory_ptr = idx; info_path = path; @@ -402,7 +403,7 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_GENERIC; break; case ACTION_OK_DL_CHEAT_FILE: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info.type = type; info.directory_ptr = idx; info_path = settings->path.cheat_database; @@ -410,7 +411,7 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_FILE; break; case ACTION_OK_DL_CORE_LIST: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info.type = type; info.directory_ptr = idx; info_path = settings->directory.libretro; @@ -418,7 +419,7 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_CORE; break; case ACTION_OK_DL_CONTENT_COLLECTION_LIST: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_SELECT_COLLECTION; info.type = type; info.directory_ptr = idx; info_path = settings->directory.playlist; @@ -426,7 +427,7 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_COLLECTION; break; case ACTION_OK_DL_RDB_ENTRY: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; fill_pathname_join_delim(tmp, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL), path, '|', sizeof(tmp)); @@ -500,7 +501,7 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_GENERIC; break; case ACTION_OK_DL_DATABASE_MANAGER_LIST: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; fill_pathname_join(tmp, settings->path.content_database, path, sizeof(tmp)); @@ -513,7 +514,7 @@ int generic_action_ok_displaylist_push(const char *path, dl_type = DISPLAYLIST_GENERIC; break; case ACTION_OK_DL_CURSOR_MANAGER_LIST: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; fill_pathname_join(tmp, settings->directory.cursor, path, sizeof(tmp)); @@ -1424,6 +1425,18 @@ static int generic_action_ok(const char *path, command_event(CMD_EVENT_RESUME, NULL); break; case ACTION_OK_SET_DIRECTORY: + flush_type = MENU_SETTINGS; + { + rarch_setting_t *setting = menu_setting_find(filebrowser_label); + + if (setting) + { + setting_set_with_string_representation( + setting, action_path); + ret = menu_setting_generic(setting, false); + } + } + break; case ACTION_OK_SET_PATH: flush_type = MENU_SETTINGS; { @@ -1816,6 +1829,7 @@ static int action_ok_remap_file_save_game(const char *path, int action_ok_path_use_directory(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { + filebrowser_types = FILEBROWSER_NONE; return generic_action_ok(NULL, label, type, idx, entry_idx, ACTION_OK_SET_DIRECTORY, MSG_UNKNOWN); } @@ -1875,6 +1889,47 @@ static int action_ok_core_deferred_set(const char *path, return menu_cbs_exit(); } +static int action_ok_core_deferred_set_current_core(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + size_t selection; + char core_display_name[PATH_MAX_LENGTH]; + const char *entry_path = NULL; + const char *entry_label = NULL; + const char *entry_crc32 = NULL; + const char *db_name = NULL; + playlist_t *playlist = NULL; + + core_display_name[0] = '\0'; + + if (!menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection)) + return menu_cbs_exit(); + + menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &playlist); + + retro_assert(playlist != NULL); + + core_info_get_name(path, core_display_name, sizeof(core_display_name)); + + idx = rdb_entry_start_game_selection_ptr; + + playlist_get_index(playlist, idx, + &entry_path, &entry_label, NULL, NULL, &entry_crc32, &db_name); + + playlist_update(playlist, idx, + entry_path, entry_label, + path , core_display_name, + entry_crc32, + db_name); + + playlist_write_file(playlist); + + menu_entries_pop_stack(&selection, 0, 1); + menu_navigation_ctl(MENU_NAVIGATION_CTL_SET_SELECTION, &selection); + + return 0; +} + static int action_ok_deferred_list_stub(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -1944,6 +1999,13 @@ static int action_ok_file_load_imageviewer(const char *path, CONTENT_MODE_LOAD_CONTENT_WITH_IMAGEVIEWER_CORE_FROM_MENU); } +static int action_ok_file_load_current_core(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_file_load(path, detect_content_path, + CORE_TYPE_FFMPEG, CONTENT_MODE_LOAD_CONTENT_WITH_CURRENT_CORE_FROM_MENU); +} + static int action_ok_file_load_detect_core(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -2693,7 +2755,6 @@ static int action_ok_shader_apply_changes(const char *path, static int action_ok_lookup_setting(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - menu_displaylist_reset_filebrowser(); return menu_setting_set(type, label, MENU_ACTION_OK, false); } @@ -3099,13 +3160,23 @@ static int action_ok_scan_directory_list(const char *path, entry_idx, ACTION_OK_DL_SCAN_DIR_LIST); } +static int action_ok_push_random_dir(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + settings_t *settings = config_get_ptr(); + return generic_action_ok_displaylist_push(path, path, + msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES), + type, idx, + entry_idx, ACTION_OK_DL_CONTENT_LIST); +} + static int action_ok_push_downloads_dir(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { settings_t *settings = config_get_ptr(); - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; return generic_action_ok_displaylist_push(path, settings->directory.core_assets, - msg_hash_to_str(MENU_ENUM_LABEL_DETECT_CORE_LIST), + msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES), type, idx, entry_idx, ACTION_OK_DL_CONTENT_LIST); } @@ -3127,6 +3198,7 @@ int action_ok_push_generic_list(const char *path, int action_ok_push_filebrowser_list_dir_select(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { + strlcpy(filebrowser_label, label, sizeof(filebrowser_label)); return generic_action_ok_displaylist_push(path, NULL, label, type, idx, entry_idx, ACTION_OK_DL_FILE_BROWSER_SELECT_DIR); } @@ -3134,6 +3206,7 @@ int action_ok_push_filebrowser_list_dir_select(const char *path, static int action_ok_push_default(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { + filebrowser_types = FILEBROWSER_NONE; return generic_action_ok_displaylist_push(path, NULL, label, type, idx, entry_idx, ACTION_OK_DL_PUSH_DEFAULT); } @@ -3611,6 +3684,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION: BIND_ACTION_OK(cbs, action_ok_core_deferred_set); break; + case MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION_CURRENT_CORE: + BIND_ACTION_OK(cbs, action_ok_core_deferred_set_current_core); + break; case MENU_ENUM_LABEL_START_CORE: BIND_ACTION_OK(cbs, action_ok_start_core); break; @@ -3789,16 +3865,21 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, BIND_ACTION_OK(cbs, action_ok_scan_directory_list); break; case MENU_ENUM_LABEL_SCAN_FILE: - case MENU_ENUM_LABEL_LOAD_CONTENT: - case MENU_ENUM_LABEL_DETECT_CORE_LIST: + case MENU_ENUM_LABEL_FAVORITES: BIND_ACTION_OK(cbs, action_ok_push_content_list); break; + case MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR: + BIND_ACTION_OK(cbs, action_ok_push_random_dir); + break; case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: BIND_ACTION_OK(cbs, action_ok_push_downloads_dir); break; case MENU_ENUM_LABEL_DETECT_CORE_LIST_OK: BIND_ACTION_OK(cbs, action_ok_file_load_detect_core); break; + case MENU_ENUM_LABEL_DETECT_CORE_LIST_OK_CURRENT_CORE: + BIND_ACTION_OK(cbs, action_ok_file_load_current_core); + break; case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY: case MENU_ENUM_LABEL_CURSOR_MANAGER_LIST: case MENU_ENUM_LABEL_DATABASE_MANAGER_LIST: @@ -3994,8 +4075,7 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, break; case MENU_LABEL_SCAN_FILE: case MENU_LABEL_SCAN_DIRECTORY: - case MENU_LABEL_LOAD_CONTENT: - case MENU_LABEL_DETECT_CORE_LIST: + case MENU_LABEL_FAVORITES: BIND_ACTION_OK(cbs, action_ok_push_content_list); break; case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: @@ -4130,7 +4210,7 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, case FILE_TYPE_CARCHIVE: switch (menu_label_hash) { - case MENU_LABEL_DETECT_CORE_LIST: + case MENU_LABEL_FAVORITES: BIND_ACTION_OK(cbs, action_ok_compressed_archive_push_detect_core); break; case MENU_LABEL_SCAN_FILE: @@ -4242,7 +4322,7 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, break; #endif case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: - case MENU_ENUM_LABEL_DETECT_CORE_LIST: + case MENU_ENUM_LABEL_FAVORITES: case MENU_ENUM_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE: #ifdef HAVE_COMPRESSION if (type == FILE_TYPE_IN_CARCHIVE) @@ -4273,7 +4353,7 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, break; #endif case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: - case MENU_LABEL_DETECT_CORE_LIST: + case MENU_LABEL_FAVORITES: case MENU_LABEL_DEFERRED_ARCHIVE_OPEN_DETECT_CORE: #ifdef HAVE_COMPRESSION if (type == FILE_TYPE_IN_CARCHIVE) @@ -4306,6 +4386,9 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, /* TODO/FIXME - handle scan case */ BIND_ACTION_OK(cbs, action_ok_file_load_imageviewer); break; + case FILE_TYPE_DIRECT_LOAD: + BIND_ACTION_OK(cbs, action_ok_file_load); + break; case MENU_SETTINGS: case MENU_SETTING_GROUP: case MENU_SETTING_SUBGROUP: diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index 79f0d22f8d..83736870f4 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -229,7 +229,7 @@ default_title_generic_macro(action_get_title_list_rdb_entry_database_info,MENU_E static int action_get_title_default(const char *path, const char *label, unsigned menu_type, char *s, size_t len) { - snprintf(s, len, "%s %s", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT), path); + snprintf(s, len, "%s %s", "Select File", path); return 0; } diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 447d294615..0258810844 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -664,6 +664,7 @@ static void mui_render_label_value(mui_handle_t *mui, case FILE_TYPE_COMPRESSED: case FILE_TYPE_MORE: case FILE_TYPE_CORE: + case FILE_TYPE_DIRECT_LOAD: case FILE_TYPE_RDB: case FILE_TYPE_CURSOR: case FILE_TYPE_PLAIN: @@ -1673,21 +1674,16 @@ static int mui_list_push(void *data, void *userdata, { case DISPLAYLIST_LOAD_CONTENT_LIST: menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); + menu_entries_append_enum(info->list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT), - msg_hash_to_str(MENU_ENUM_LABEL_LOAD_CONTENT), - MENU_ENUM_LABEL_LOAD_CONTENT, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_FAVORITES), + msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES), + MENU_ENUM_LABEL_FAVORITES, MENU_SETTING_ACTION, 0, 0); core_info_get_list(&list); if (core_info_list_num_info_files(list)) { - menu_entries_append_enum(info->list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST), - msg_hash_to_str(MENU_ENUM_LABEL_DETECT_CORE_LIST), - MENU_ENUM_LABEL_DETECT_CORE_LIST, - MENU_SETTING_ACTION, 0, 0); - menu_entries_append_enum(info->list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST), msg_hash_to_str(MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST), diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 7c12d1bc2e..0402ca32a8 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1867,6 +1867,11 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb, case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE: case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME: return xmb->textures.list[XMB_TEXTURE_SAVESTATE]; + case MENU_ENUM_LABEL_FAVORITES: + case MENU_ENUM_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: + return xmb->textures.list[XMB_TEXTURE_FOLDER]; + case MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR: + return xmb->textures.list[XMB_TEXTURE_RDB]; default: break; } @@ -1908,6 +1913,7 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb, case FILE_TYPE_MOVIE: return xmb->textures.list[XMB_TEXTURE_MOVIE]; case FILE_TYPE_CORE: + case FILE_TYPE_DIRECT_LOAD: return xmb->textures.list[XMB_TEXTURE_CORE]; case FILE_TYPE_RDB: return xmb->textures.list[XMB_TEXTURE_RDB]; @@ -2126,6 +2132,7 @@ static void xmb_draw_items(xmb_handle_t *xmb, case FILE_TYPE_COMPRESSED: case FILE_TYPE_MORE: case FILE_TYPE_CORE: + case FILE_TYPE_DIRECT_LOAD: case FILE_TYPE_RDB: case FILE_TYPE_CURSOR: case FILE_TYPE_PLAIN: diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 1868c1eae3..d0900a5f39 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -76,6 +76,11 @@ #include "../wifi/wifi_driver.h" #include "../tasks/tasks_internal.h" +static char new_path_entry[4096] = {0}; +static char new_lbl_entry[4096] = {0}; +static char new_entry[4096] = {0}; +enum menu_displaylist_ctl_state new_type = 0; + #ifdef HAVE_NETWORKING static void print_buf_lines(file_list_t *list, char *buf, const char *label, int buf_size, @@ -176,16 +181,20 @@ static void print_buf_lines(file_list_t *list, char *buf, path_remove_extension(core_path); last = (char*)strrchr(core_path, '_'); + if (!string_is_empty(last)) { if (!string_is_equal(last, "_libretro")) *last = '\0'; } + strlcat(core_path, file_path_str(FILE_PATH_CORE_INFO_EXTENSION), sizeof(core_path)); - if (core_info_get_display_name( + if ( + path_file_exists(core_path) + && core_info_get_display_name( core_path, display_name, sizeof(display_name))) menu_entries_set_alt_at_offset(list, j, display_name); } @@ -3197,15 +3206,7 @@ static int menu_displaylist_parse_options_remappings( return 0; } -enum filebrowser_enums -{ - FILEBROWSER_NONE = 0, - FILEBROWSER_SELECT_DIR, - FILEBROWSER_SCAN_DIR, - FILEBROWSER_SELECT_COLLECTION -}; - -static unsigned filebrowser_types = 0; +unsigned filebrowser_types = 0; static int menu_displaylist_parse_playlists( menu_displaylist_info_t *info, bool horizontal) @@ -3215,7 +3216,7 @@ static int menu_displaylist_parse_playlists( unsigned items_found = 0; settings_t *settings = config_get_ptr(); - if (!*info->path) + if (string_is_empty(info->path)) { if (frontend_driver_parse_drive_list(info->list) != 0) menu_entries_append_enum(info->list, "/", "", @@ -3304,12 +3305,8 @@ static int menu_displaylist_parse_playlists( string_list_free(str_list); - if (items_found == 0) - { - if (horizontal) - return 0; + if (items_found == 0 && !horizontal) goto no_playlists; - } return 0; @@ -3333,7 +3330,7 @@ static int menu_displaylist_parse_cores( unsigned items_found = 0; settings_t *settings = config_get_ptr(); - if (!*info->path) + if (string_is_empty(info->path)) { if (frontend_driver_parse_drive_list(info->list) != 0) menu_entries_append_enum(info->list, "/", "", @@ -3423,7 +3420,7 @@ static int menu_displaylist_parse_cores( /* Need to preserve slash first time. */ path = str_list->elems[i].data; - if (*info->path) + if (!string_is_empty(info->path)) path = path_basename(path); #ifndef HAVE_DYNAMIC @@ -3532,7 +3529,7 @@ static int menu_displaylist_parse_generic( unsigned items_found = 0; settings_t *settings = config_get_ptr(); - if (!*info->path) + if (string_is_empty(info->path)) { if (frontend_driver_parse_drive_list(info->list) != 0) menu_entries_append_enum(info->list, "/", "", @@ -3558,7 +3555,7 @@ static int menu_displaylist_parse_generic( true, settings->show_hidden_files, true, false); #ifdef HAVE_LIBRETRODB - if (BIT32_GET(filebrowser_types, FILEBROWSER_SCAN_DIR)) + if (filebrowser_types == FILEBROWSER_SCAN_DIR) menu_entries_prepend(info->list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_THIS_DIRECTORY), msg_hash_to_str(MENU_ENUM_LABEL_SCAN_THIS_DIRECTORY), @@ -3566,7 +3563,7 @@ static int menu_displaylist_parse_generic( FILE_TYPE_SCAN_DIRECTORY, 0 ,0); #endif - if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_DIR)) + if (filebrowser_types == FILEBROWSER_SELECT_DIR) menu_entries_prepend(info->list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_USE_THIS_DIRECTORY), msg_hash_to_str(MENU_ENUM_LABEL_USE_THIS_DIRECTORY), @@ -3638,19 +3635,19 @@ static int menu_displaylist_parse_generic( if (!is_dir) { - if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_DIR)) + if (filebrowser_types == FILEBROWSER_SELECT_DIR) continue; - if (BIT32_GET(filebrowser_types, FILEBROWSER_SCAN_DIR)) + if (filebrowser_types == FILEBROWSER_SCAN_DIR) continue; } /* Need to preserve slash first time. */ path = str_list->elems[i].data; - if (*info->path && !path_is_compressed) + if (!string_is_empty(info->path) && !path_is_compressed) path = path_basename(path); - if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_COLLECTION)) + if (filebrowser_types == FILEBROWSER_SELECT_COLLECTION) { if (is_dir) file_type = FILE_TYPE_DIRECTORY; @@ -3735,9 +3732,9 @@ static int menu_displaylist_parse_generic( } /* We don't want to show 'filter by extension' for this. */ - if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_DIR)) + if (filebrowser_types == FILEBROWSER_SELECT_DIR) goto end; - if (BIT32_GET(filebrowser_types, FILEBROWSER_SCAN_DIR)) + if (filebrowser_types == FILEBROWSER_SCAN_DIR) goto end; if (!extensions_honored) @@ -3874,6 +3871,22 @@ static bool menu_displaylist_push_list_process(menu_displaylist_info_t *info) } #endif + if (!string_is_empty(new_entry)) + { + menu_entries_prepend(info->list, + new_path_entry, + new_lbl_entry, + new_type, + FILE_TYPE_CORE, 0, 0); + menu_entries_set_alt_at_offset(info->list, 0, + new_entry); + + new_type = 0; + new_lbl_entry[0] = '\0'; + new_path_entry[0] = '\0'; + new_entry[0] = '\0'; + } + if (info->need_refresh) menu_entries_ctl(MENU_ENTRIES_CTL_REFRESH, info->list); @@ -3909,8 +3922,7 @@ static bool menu_displaylist_push_internal( } else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_MUSIC_TAB))) { - - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type = 42; strlcpy(info->exts, file_path_str(FILE_PATH_LPL_EXTENSION_NO_DOT), @@ -3925,7 +3937,7 @@ static bool menu_displaylist_push_internal( } else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_TAB))) { - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type = 42; strlcpy(info->exts, file_path_str(FILE_PATH_LPL_EXTENSION_NO_DOT), @@ -3941,7 +3953,7 @@ static bool menu_displaylist_push_internal( else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_IMAGES_TAB))) { - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type = 42; strlcpy(info->exts, file_path_str(FILE_PATH_LPL_EXTENSION_NO_DOT), @@ -3976,7 +3988,7 @@ static bool menu_displaylist_push_internal( { settings_t *settings = config_get_ptr(); - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type = 42; strlcpy(info->exts, file_path_str(FILE_PATH_LPL_EXTENSION_NO_DOT), @@ -4065,11 +4077,6 @@ static bool menu_displaylist_push(menu_displaylist_ctx_entry_t *entry) return true; } -void menu_displaylist_reset_filebrowser(void) -{ - BIT32_CLEAR_ALL(filebrowser_types); -} - static void menu_displaylist_parse_playlist_history( menu_handle_t *menu, menu_displaylist_info_t *info, @@ -4247,24 +4254,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) break; } - switch (type) - { - case DISPLAYLIST_FILE_BROWSER_SCAN_DIR: - menu_displaylist_reset_filebrowser(); - BIT32_SET(filebrowser_types, FILEBROWSER_SCAN_DIR); - break; - case DISPLAYLIST_FILE_BROWSER_SELECT_DIR: - menu_displaylist_reset_filebrowser(); - BIT32_SET(filebrowser_types, FILEBROWSER_SELECT_DIR); - break; - case DISPLAYLIST_FILE_BROWSER_SELECT_COLLECTION: - menu_displaylist_reset_filebrowser(); - BIT32_SET(filebrowser_types, FILEBROWSER_SELECT_COLLECTION); - break; - default: - break; - } - switch (type) { case DISPLAYLIST_NONE: @@ -5535,20 +5524,21 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) info->need_refresh = true; break; case DISPLAYLIST_LOAD_CONTENT_LIST: - menu_entries_append_enum(info->list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT), - msg_hash_to_str(MENU_ENUM_LABEL_LOAD_CONTENT), - MENU_ENUM_LABEL_LOAD_CONTENT, - MENU_SETTING_ACTION, 0, 0); + if (frontend_driver_parse_drive_list(info->list) != 0) + menu_entries_append_enum(info->list, "/", + msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR), + MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR, + MENU_SETTING_ACTION, 0, 0); + + if (!string_is_empty(settings->directory.menu_content)) + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_FAVORITES), + msg_hash_to_str(MENU_ENUM_LABEL_FAVORITES), + MENU_ENUM_LABEL_FAVORITES, + MENU_SETTING_ACTION, 0, 0); if (core_info_list_num_info_files(list)) { - menu_entries_append_enum(info->list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST), - msg_hash_to_str(MENU_ENUM_LABEL_DETECT_CORE_LIST), - MENU_ENUM_LABEL_DETECT_CORE_LIST, - MENU_SETTING_ACTION, 0, 0); - menu_entries_append_enum(info->list, msg_hash_to_str( MENU_ENUM_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST), @@ -5908,15 +5898,46 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) if (cores_names_size == 0) { - menu_entries_append_enum(info->list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORES_AVAILABLE), - msg_hash_to_str(MENU_ENUM_LABEL_NO_CORES_AVAILABLE), - MENU_ENUM_LABEL_NO_CORES_AVAILABLE, - 0, 0, 0); - info->download_core = true; + if (!path_is_empty(RARCH_PATH_CORE)) + { + + menu_entries_append_enum(info->list, + path_get(RARCH_PATH_CORE), + path_get(RARCH_PATH_CORE), + MENU_ENUM_LABEL_DETECT_CORE_LIST_OK, + FILE_TYPE_DIRECT_LOAD, + 0, + 0); + + { + const char *core_name = NULL; + struct retro_system_info *system = NULL; + + menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_GET, + &system); + + if (system) + core_name = system->library_name; + + if (!string_is_empty(core_name)) + menu_entries_set_alt_at_offset(info->list, 0, + core_name); + } + } + else + { + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORES_AVAILABLE), + msg_hash_to_str(MENU_ENUM_LABEL_NO_CORES_AVAILABLE), + MENU_ENUM_LABEL_NO_CORES_AVAILABLE, + 0, 0, 0); + info->download_core = true; + } } - else + + if (cores_names_size != 0) { + unsigned j = 0; struct string_list *cores_paths = string_list_new_special(STRING_LIST_SUPPORTED_CORES_PATHS, (void*)menu->deferred_path, @@ -5924,29 +5945,50 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) for (i = 0; i < cores_names_size; i++) { - switch (type) + if ( !path_is_empty(RARCH_PATH_CORE) && + string_is_equal(cores_paths->elems[i].data, path_get(RARCH_PATH_CORE))) { - case DISPLAYLIST_CORES_COLLECTION_SUPPORTED: - menu_entries_append_enum(info->list, cores_paths->elems[i].data, "", - MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION, - FILE_TYPE_CORE, 0, 0); - break; - default: - menu_entries_append_enum(info->list, cores_paths->elems[i].data, - msg_hash_to_str(MENU_ENUM_LABEL_DETECT_CORE_LIST_OK), - MENU_ENUM_LABEL_DETECT_CORE_LIST_OK, - FILE_TYPE_CORE, 0, 0); - break; + strlcpy(new_path_entry, cores_paths->elems[i].data, sizeof(new_path_entry)); + snprintf(new_entry, sizeof(new_entry), "Current core (%s)", cores_names->elems[i].data); + if (type == DISPLAYLIST_CORES_COLLECTION_SUPPORTED) + { + new_lbl_entry[0] = '\0'; + new_type = MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION_CURRENT_CORE; + } + else + { + strlcpy(new_lbl_entry, cores_paths->elems[i].data, sizeof(new_lbl_entry)); + new_type = MENU_ENUM_LABEL_DETECT_CORE_LIST_OK_CURRENT_CORE; + } } + else + { + switch (type) + { + case DISPLAYLIST_CORES_COLLECTION_SUPPORTED: + menu_entries_append_enum(info->list, cores_paths->elems[i].data, "", + MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION, + FILE_TYPE_CORE, 0, 0); + break; + default: + menu_entries_append_enum(info->list, cores_paths->elems[i].data, + msg_hash_to_str(MENU_ENUM_LABEL_DETECT_CORE_LIST_OK), + MENU_ENUM_LABEL_DETECT_CORE_LIST_OK, + FILE_TYPE_CORE, 0, 0); + break; + } - menu_entries_set_alt_at_offset(info->list, i, - cores_names->elems[i].data); + menu_entries_set_alt_at_offset(info->list, j, + cores_names->elems[i].data); + j++; + } } string_list_free(cores_paths); } string_list_free(cores_names); + } break; case DISPLAYLIST_CORE_INFO: @@ -6009,7 +6051,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) info->need_push = true; break; case DISPLAYLIST_DATABASES: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_RDB; strlcpy(info->exts, file_path_str(FILE_PATH_RDB_EXTENSION), @@ -6048,7 +6090,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) info->need_push = true; break; case DISPLAYLIST_DATABASE_CURSORS: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_CURSOR; strlcpy(info->exts, "dbc", sizeof(info->exts)); strlcpy(info->path, settings->directory.cursor, sizeof(info->path)); @@ -6059,14 +6101,14 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) ext_name[0] = '\0'; - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_PLAIN; if (frontend_driver_get_core_extension(ext_name, sizeof(ext_name))) strlcpy(info->exts, ext_name, sizeof(info->exts)); } break; case DISPLAYLIST_CONFIG_FILES: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_CONFIG; strlcpy(info->exts, "cfg", sizeof(info->exts)); break; @@ -6077,7 +6119,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) (void)attr; - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_SHADER_PRESET; #ifdef HAVE_CG @@ -6098,7 +6140,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) union string_list_elem_attr attr = {0}; struct string_list *str_list = string_list_new(); - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_SHADER; (void)attr; @@ -6117,12 +6159,12 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) } break; case DISPLAYLIST_VIDEO_FILTERS: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_VIDEOFILTER; strlcpy(info->exts, "filt", sizeof(info->exts)); break; case DISPLAYLIST_IMAGES: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_IMAGE; { union string_list_elem_attr attr = {0}; @@ -6146,37 +6188,37 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) } break; case DISPLAYLIST_AUDIO_FILTERS: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_AUDIOFILTER; strlcpy(info->exts, "dsp", sizeof(info->exts)); break; case DISPLAYLIST_CHEAT_FILES: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_CHEAT; strlcpy(info->exts, "cht", sizeof(info->exts)); break; case DISPLAYLIST_CONTENT_HISTORY: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_PLAIN; strlcpy(info->exts, "lpl", sizeof(info->exts)); break; case DISPLAYLIST_FONTS: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_FONT; strlcpy(info->exts, "ttf", sizeof(info->exts)); break; case DISPLAYLIST_OVERLAYS: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_OVERLAY; strlcpy(info->exts, "cfg", sizeof(info->exts)); break; case DISPLAYLIST_RECORD_CONFIG_FILES: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_RECORD_CONFIG; strlcpy(info->exts, "cfg", sizeof(info->exts)); break; case DISPLAYLIST_REMAP_FILES: - menu_displaylist_reset_filebrowser(); + filebrowser_types = FILEBROWSER_NONE; info->type_default = FILE_TYPE_REMAP; strlcpy(info->exts, "rmp", sizeof(info->exts)); break; diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index d03324acea..dfd2de0d26 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -159,6 +159,14 @@ enum menu_displaylist_ctl_state DISPLAYLIST_PENDING_CLEAR }; +enum filebrowser_enums +{ + FILEBROWSER_NONE = 0, + FILEBROWSER_SELECT_DIR, + FILEBROWSER_SCAN_DIR, + FILEBROWSER_SELECT_COLLECTION +}; + typedef struct menu_displaylist_info { bool need_sort; @@ -205,6 +213,8 @@ void menu_displaylist_reset_filebrowser(void); bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data); +extern unsigned filebrowser_types; + RETRO_END_DECLS #endif diff --git a/msg_hash.h b/msg_hash.h index 777a62f85d..bc1a0af2a0 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -125,6 +125,8 @@ enum msg_file_type FILE_TYPE_ISO, FILE_TYPE_LUTRO, + FILE_TYPE_DIRECT_LOAD, + FILE_TYPE_LAST }; @@ -672,6 +674,7 @@ enum msg_hash_enums MENU_ENUM_LABEL_FILE_BROWSER_FONT, MENU_ENUM_LABEL_FILE_BROWSER_RDB, MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION, + MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION_CURRENT_CORE, MENU_ENUM_LABEL_FILE_BROWSER_CORE_DETECTED, MENU_ENUM_LABEL_FILE_BROWSER_IMAGE, MENU_ENUM_LABEL_FILE_BROWSER_IMAGE_OPEN_WITH_VIEWER, @@ -831,6 +834,7 @@ enum msg_hash_enums MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_CHEEVOS_LIST, MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_LIST, + MENU_LABEL(FILE_DETECT_CORE_LIST_PUSH_DIR), MENU_LABEL(DOWNLOADED_FILE_DETECT_CORE_LIST), MENU_ENUM_LABEL_VALUE_SEARCH, @@ -1166,10 +1170,10 @@ enum msg_hash_enums MENU_LABEL(DUMMY_ON_CORE_SHUTDOWN), MENU_LABEL(CHECK_FOR_MISSING_FIRMWARE), + MENU_LABEL(DETECT_CORE_LIST_OK_CURRENT_CORE), MENU_LABEL(DETECT_CORE_LIST_OK), - MENU_LABEL(DETECT_CORE_LIST), + MENU_LABEL(FAVORITES), MENU_LABEL(START_CORE), - MENU_LABEL(LOAD_CONTENT), MENU_LABEL(CORE_UPDATER_LIST), MENU_LABEL(CORE_UPDATER_AUTO_EXTRACT_ARCHIVE), MENU_LABEL(CORE_UPDATER_BUILDBOT_URL), @@ -1692,6 +1696,7 @@ enum msg_hash_enums #define MENU_LABEL_RDB_ENTRY_RELEASE_YEAR 0x14c9c6bfU #define MENU_LABEL_RDB_ENTRY_MAX_USERS 0xfae91cc4U +#define MENU_LABEL_FAVORITES 0x67325138U #define MENU_LABEL_DETECT_CORE_LIST 0xaa07c341U #define MENU_LABEL_DETECT_CORE_LIST_OK 0xabba2a7aU #define MENU_LABEL_CORE_LIST 0xa22bb14dU @@ -1749,7 +1754,6 @@ enum msg_hash_enums #define MENU_LABEL_HELP_AUDIO_VIDEO_TROUBLESHOOTING 0xd44d395cU /* Main menu */ -#define MENU_LABEL_LOAD_CONTENT 0x828943c3U #define MENU_LABEL_LOAD_CONTENT_LIST 0x5745de1fU #define MENU_LABEL_LOAD_CONTENT_HISTORY 0xfe1d79e5U #define MENU_LABEL_ADD_CONTENT_LIST 0x046f4668U