From 788bb4de50551e48942cdb6cbe2a11766188e78d Mon Sep 17 00:00:00 2001 From: radius Date: Sat, 10 Feb 2018 19:46:15 -0500 Subject: [PATCH] subsystem part 1: proper labels for each entry --- .vscode/settings.json | 3 ++- menu/cbs/menu_cbs_sublabel.c | 22 ++++++++++++++++++++ menu/drivers/xmb.c | 37 +++++++++++++++++++++++++++------ menu/widgets/menu_filebrowser.c | 2 +- 4 files changed, 56 insertions(+), 8 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index e90ca77e4a..ee551d7617 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,6 +12,7 @@ "files.associations": { "frontend_driver.h": "c", "*.in": "c", - "*.rh": "c" + "*.rh": "c", + "menu_driver.h": "c" }, } \ No newline at end of file diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index 4210b08fe9..2bbc492b04 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -37,6 +37,9 @@ #include "../../network/netplay/netplay_discovery.h" #endif +#include "../../retroarch.h" +#include "../../content.h" + #define default_sublabel_macro(func_name, lbl) \ static int (func_name)(file_list_t *list, unsigned type, unsigned i, const char *label, const char *path, char *s, size_t len) \ { \ @@ -396,6 +399,22 @@ static int action_bind_sublabel_cheevos_entry( return 0; } +static int action_bind_sublabel_subsystem_add( + file_list_t *list, + unsigned type, unsigned i, + const char *label, const char *path, + char *s, size_t len) +{ + rarch_system_info_t *system = runloop_get_system_info(); + const struct retro_subsystem_info* subsystem = NULL; + subsystem = system->subsystem.data + (type - MENU_SETTINGS_SUBSYSTEM_ADD); + if (subsystem && pending_subsystem_rom_id < subsystem->num_roms) + snprintf(s, len, " Current Content: %s", pending_subsystem == type - MENU_SETTINGS_SUBSYSTEM_ADD ? subsystem->roms[pending_subsystem_rom_id].desc : subsystem->roms[0].desc); + return 0; +} + + + #ifdef HAVE_NETWORKING static int action_bind_sublabel_netplay_room( file_list_t *list, @@ -744,6 +763,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_DISK_IMAGE_APPEND: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_disk_image_append); break; + case MENU_ENUM_LABEL_SUBSYSTEM_ADD: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_subsystem_add); + break; case MENU_ENUM_LABEL_DISK_CYCLE_TRAY_STATUS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_disk_cycle_tray_status); break; diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index b77a5ec19e..9b85bbc773 100755 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -4445,12 +4445,37 @@ static int xmb_list_push(void *data, void *userdata, for (i = 0; i < system->subsystem.size; i++, subsystem++) { char s[PATH_MAX_LENGTH]; - snprintf(s, sizeof(s), "Load: %s %c", subsystem->desc, i == pending_subsystem ? '*': ' '); - menu_entries_append_enum(info->list, - s, - msg_hash_to_str(MENU_ENUM_LABEL_SUBSYSTEM_ADD), - MENU_ENUM_LABEL_SUBSYSTEM_ADD, - MENU_SETTINGS_SUBSYSTEM_ADD + i, 0, 0); + if (pending_subsystem == i) + { + if (pending_subsystem_rom_id < subsystem->num_roms) + { + snprintf(s, sizeof(s), "Load %s %c", subsystem->desc, i == pending_subsystem ? '*': ' '); + menu_entries_append_enum(info->list, + s, + msg_hash_to_str(MENU_ENUM_LABEL_SUBSYSTEM_ADD), + MENU_ENUM_LABEL_SUBSYSTEM_ADD, + MENU_SETTINGS_SUBSYSTEM_ADD + i, 0, 0); + } + else + { + /* To-Do: replace the MENU_ENUM_LABEL_SUBSYSTEM_ADD for the proper labels and trigger the load action */ + snprintf(s, sizeof(s), "Start %s %c", subsystem->desc, i == pending_subsystem ? '*': ' '); + menu_entries_append_enum(info->list, + s, + msg_hash_to_str(MENU_ENUM_LABEL_SUBSYSTEM_ADD), + MENU_ENUM_LABEL_SUBSYSTEM_ADD, + MENU_SETTINGS_SUBSYSTEM_ADD + i, 0, 0); + } + } + else + { + snprintf(s, sizeof(s), "Load %s %c", subsystem->desc, i == pending_subsystem ? '*': ' '); + menu_entries_append_enum(info->list, + s, + msg_hash_to_str(MENU_ENUM_LABEL_SUBSYSTEM_ADD), + MENU_ENUM_LABEL_SUBSYSTEM_ADD, + MENU_SETTINGS_SUBSYSTEM_ADD + i, 0, 0); + } } } } diff --git a/menu/widgets/menu_filebrowser.c b/menu/widgets/menu_filebrowser.c index 5545a52d07..9431280080 100644 --- a/menu/widgets/menu_filebrowser.c +++ b/menu/widgets/menu_filebrowser.c @@ -89,7 +89,7 @@ void filebrowser_parse(void *data, unsigned type_data) rarch_system_info_t *system = runloop_get_system_info(); const struct retro_subsystem_info* subsystem = NULL; subsystem = system->subsystem.data + pending_subsystem; - if (subsystem) + if (subsystem && pending_subsystem_rom_id < subsystem->num_roms) { RARCH_LOG("[subsystem] valid xtensions: %s\n", subsystem->roms[pending_subsystem_rom_id].valid_extensions); str_list = dir_list_new(path,