Add 'load_content' parameter to parse_drive_list

This commit is contained in:
twinaphex 2017-05-26 15:52:38 +02:00
parent f89f6119e7
commit e2a6a7ad17
15 changed files with 88 additions and 60 deletions

View file

@ -381,10 +381,13 @@ enum frontend_architecture frontend_ctr_get_architecture(void)
return FRONTEND_ARCH_ARM;
}
static int frontend_ctr_parse_drive_list(void *data)
static int frontend_ctr_parse_drive_list(void *data, bool load_content)
{
#ifndef IS_SALAMANDER
file_list_t *list = (file_list_t*)data;
enum msg_hash_enums enum_idx = load_content ?
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR :
MSG_UNKNOWN;
if (!list)
return -1;
@ -392,7 +395,7 @@ static int frontend_ctr_parse_drive_list(void *data)
menu_entries_append_enum(list,
"sdmc:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
#endif

View file

@ -625,7 +625,7 @@ static enum frontend_architecture frontend_darwin_get_architecture(void)
#endif
}
static int frontend_darwin_parse_drive_list(void *data)
static int frontend_darwin_parse_drive_list(void *data, bool load_content)
{
int ret = -1;
#if TARGET_OS_IPHONE
@ -636,6 +636,9 @@ static int frontend_darwin_parse_drive_list(void *data)
char bundle_path_buf[PATH_MAX_LENGTH] = {0};
char home_dir_buf[PATH_MAX_LENGTH] = {0};
CFBundleRef bundle = CFBundleGetMainBundle();
enum msg_hash_enums enum_idx = load_content ?
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR :
MSG_UNKNOWN;
bundle_url = CFBundleCopyBundleURL(bundle);
bundle_path = CFURLCopyPath(bundle_url);
@ -648,11 +651,11 @@ static int frontend_darwin_parse_drive_list(void *data)
menu_entries_append_enum(list,
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,
enum_idx,
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,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
ret = 0;

View file

@ -469,31 +469,34 @@ static enum frontend_architecture frontend_gx_get_architecture(void)
return FRONTEND_ARCH_PPC;
}
static int frontend_gx_parse_drive_list(void *data)
static int frontend_gx_parse_drive_list(void *data, bool load_content)
{
#ifndef IS_SALAMANDER
file_list_t *list = (file_list_t*)data;
enum msg_hash_enums enum_idx = load_content ?
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR :
MSG_UNKNOWN;
#ifdef HW_RVL
menu_entries_append_enum(list,
"sd:/",
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"usb:/",
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
#endif
menu_entries_append_enum(list,
"carda:/",
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"cardb:/",
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
#endif

View file

@ -1965,10 +1965,13 @@ static void frontend_linux_init(void *data)
}
static int frontend_linux_parse_drive_list(void *data)
static int frontend_linux_parse_drive_list(void *data, bool load_content)
{
#ifdef HAVE_MENU
file_list_t *list = (file_list_t*)data;
enum msg_hash_enums enum_idx = load_content ?
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR :
MSG_UNKNOWN;
#ifdef ANDROID
if (!string_is_empty(app_dir))
@ -1976,7 +1979,7 @@ static int frontend_linux_parse_drive_list(void *data)
menu_entries_append_enum(list,
app_dir,
msg_hash_to_str(MSG_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
}
if (!string_is_empty(internal_storage_app_path))
@ -1984,7 +1987,7 @@ static int frontend_linux_parse_drive_list(void *data)
menu_entries_append_enum(list,
internal_storage_app_path,
msg_hash_to_str(MSG_EXTERNAL_APPLICATION_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
}
if (!string_is_empty(internal_storage_path))
@ -1992,7 +1995,7 @@ static int frontend_linux_parse_drive_list(void *data)
menu_entries_append_enum(list,
internal_storage_path,
msg_hash_to_str(MSG_INTERNAL_STORAGE),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
}
else
@ -2000,19 +2003,19 @@ static int frontend_linux_parse_drive_list(void *data)
menu_entries_append_enum(list,
"/storage/emulated/0",
msg_hash_to_str(MSG_REMOVABLE_STORAGE),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
}
menu_entries_append_enum(list,
"/storage",
msg_hash_to_str(MSG_REMOVABLE_STORAGE),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
#endif
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,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
#endif

View file

@ -504,70 +504,73 @@ enum frontend_architecture frontend_ps3_get_architecture(void)
return FRONTEND_ARCH_PPC;
}
static int frontend_ps3_parse_drive_list(void *data)
static int frontend_ps3_parse_drive_list(void *data, bool load_content)
{
#ifndef IS_SALAMANDER
file_list_t *list = (file_list_t*)data;
enum msg_hash_enums enum_idx = load_content ?
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR :
MSG_UNKNOWN;
menu_entries_append_enum(list,
"/app_home/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_hdd0/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_hdd1/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_bdvd/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/host_root/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb000/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb001/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb002/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb003/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb004/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb005/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"/dev_usb006/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
#endif

View file

@ -438,42 +438,45 @@ enum frontend_architecture frontend_psp_get_architecture(void)
#endif
}
static int frontend_psp_parse_drive_list(void *data)
static int frontend_psp_parse_drive_list(void *data, bool load_content)
{
#ifndef IS_SALAMANDER
file_list_t *list = (file_list_t*)data;
enum msg_hash_enums enum_idx = load_content ?
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR :
MSG_UNKNOWN;
#ifdef VITA
menu_entries_append_enum(list,
"app0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"ur0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"ux0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
#else
menu_entries_append_enum(list,
"ms0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"ef0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"host0:/",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
#endif
#endif

View file

@ -152,22 +152,25 @@ enum frontend_architecture frontend_wiiu_get_architecture(void)
return FRONTEND_ARCH_PPC;
}
static int frontend_wiiu_parse_drive_list(void *data)
static int frontend_wiiu_parse_drive_list(void *data, bool load_content)
{
#ifndef IS_SALAMANDER
file_list_t *list = (file_list_t *)data;
enum msg_hash_enums enum_idx = load_content ?
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR :
MSG_UNKNOWN;
if (!list)
return -1;
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,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list, WIIU_USB_PATH,
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
#endif
return 0;

View file

@ -232,13 +232,16 @@ enum frontend_architecture frontend_win32_get_architecture(void)
return FRONTEND_ARCH_NONE;
}
static int frontend_win32_parse_drive_list(void *data)
static int frontend_win32_parse_drive_list(void *data, bool load_content)
{
#ifdef HAVE_MENU
size_t i = 0;
unsigned drives = GetLogicalDrives();
char drive[] = " :\\";
file_list_t *list = (file_list_t*)data;
enum msg_hash_enums enum_idx = load_content ?
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR :
MSG_UNKNOWN;
for (i = 0; i < 32; i++)
{
@ -247,7 +250,7 @@ static int frontend_win32_parse_drive_list(void *data)
menu_entries_append_enum(list,
drive,
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
}
#endif

View file

@ -1383,42 +1383,45 @@ enum frontend_architecture frontend_xdk_get_architecture(void)
#endif
}
static int frontend_xdk_parse_drive_list(void *data)
static int frontend_xdk_parse_drive_list(void *data, bool load_content)
{
#ifndef IS_SALAMANDER
file_list_t *list = (file_list_t*)data;
enum msg_hash_enums enum_idx = load_content ?
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR :
MSG_UNKNOWN;
#if defined(_XBOX1)
menu_entries_append_enum(list,
"C:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"D:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"E:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"F:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
menu_entries_append_enum(list,
"G:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
#elif defined(_XBOX360)
menu_entries_append_enum(list,
"game:",
msg_hash_to_str(MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR),
MENU_ENUM_LABEL_FILE_DETECT_CORE_LIST_PUSH_DIR,
enum_idx,
MENU_SETTING_ACTION, 0, 0);
#endif
#endif

View file

@ -202,13 +202,13 @@ frontend_ctx_driver_t *frontend_get_ptr(void)
return current_frontend_ctx;
}
int frontend_driver_parse_drive_list(void *data)
int frontend_driver_parse_drive_list(void *data, bool load_content)
{
frontend_ctx_driver_t *frontend = frontend_get_ptr();
if (!frontend || !frontend->parse_drive_list)
return -1;
return frontend->parse_drive_list(data);
return frontend->parse_drive_list(data, load_content);
}
void frontend_driver_content_loaded(void)

View file

@ -76,7 +76,7 @@ typedef struct frontend_ctx_driver
void (*content_loaded)(void);
enum frontend_architecture (*get_architecture)(void);
enum frontend_powerstate (*get_powerstate)(int *seconds, int *percent);
int (*parse_drive_list)(void*);
int (*parse_drive_list)(void*, bool);
uint64_t (*get_total_mem)(void);
uint64_t (*get_used_mem)(void);
void (*install_signal_handler)(void);
@ -131,7 +131,7 @@ frontend_ctx_driver_t *frontend_get_ptr(void);
**/
frontend_ctx_driver_t *frontend_ctx_init_first(void);
int frontend_driver_parse_drive_list(void *data);
int frontend_driver_parse_drive_list(void *data, bool load_content);
void frontend_driver_content_loaded(void);

View file

@ -1780,7 +1780,7 @@ static int mui_list_push(void *data, void *userdata,
MENU_SETTING_ACTION, 0, 0);
}
if (frontend_driver_parse_drive_list(info->list) != 0)
if (frontend_driver_parse_drive_list(info->list, true) != 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,

View file

@ -76,7 +76,7 @@ bool nk_wnd_file_picker(nk_menu_handle_t *nk, char* title, char* in, char* out,
if (!drives)
{
drives = (file_list_t*)calloc(1, sizeof(file_list_t));
frontend_driver_parse_drive_list(drives);
frontend_driver_parse_drive_list(drives, false);
}
if (!string_is_empty(in) && string_is_empty(path))

View file

@ -3380,7 +3380,7 @@ static int menu_displaylist_parse_playlists(
if (string_is_empty(info->path))
{
if (frontend_driver_parse_drive_list(info->list) != 0)
if (frontend_driver_parse_drive_list(info->list, true) != 0)
menu_entries_append_enum(info->list, "/", "",
MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
return 0;
@ -3492,7 +3492,7 @@ static int menu_displaylist_parse_cores(
if (string_is_empty(info->path))
{
if (frontend_driver_parse_drive_list(info->list) != 0)
if (frontend_driver_parse_drive_list(info->list, true) != 0)
menu_entries_append_enum(info->list, "/", "",
MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
return 0;
@ -5914,7 +5914,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
MENU_SETTING_ACTION, 0, 0);
#endif
if (frontend_driver_parse_drive_list(info->list) != 0)
if (frontend_driver_parse_drive_list(info->list, true) != 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,
@ -6526,7 +6526,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
{
if (string_is_empty(info->path))
{
if (frontend_driver_parse_drive_list(info->list) != 0)
if (frontend_driver_parse_drive_list(info->list, true) != 0)
menu_entries_append_enum(info->list, "/", "",
MSG_UNKNOWN, FILE_TYPE_DIRECTORY, 0, 0);
info->need_refresh = true;

View file

@ -405,7 +405,8 @@ void menu_entries_append(file_list_t *list, const char *path, const char *label,
menu_cbs_init(list, cbs, path, label, type, idx);
}
void menu_entries_append_enum(file_list_t *list, const char *path, const char *label,
void menu_entries_append_enum(file_list_t *list, const char *path,
const char *label,
enum msg_hash_enums enum_idx,
unsigned type, size_t directory_ptr, size_t entry_idx)
{