From a115b6bd844542acf12ce4b5f472e41451078303 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 5 Jul 2019 19:55:04 +0200 Subject: [PATCH] Implement deferred list for Load CD --- intl/msg_hash_lbl.h | 2 ++ menu/cbs/menu_cbs_deferred_push.c | 6 ++++++ menu/cbs/menu_cbs_ok.c | 22 ++++++++++++++++++--- menu/menu_cbs.h | 2 ++ menu/menu_displaylist.c | 33 +++++++++++++++++++++++++++++++ menu/menu_displaylist.h | 1 + menu/menu_driver.h | 1 + msg_hash.h | 1 + 8 files changed, 65 insertions(+), 3 deletions(-) diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index f10ee8292f..449f784f72 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -907,6 +907,8 @@ MSG_HASH(MENU_ENUM_LABEL_RDB_ENTRY_DESCRIPTION, "rdb_entry_description") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_DUMP_DISC_LIST, "deferred_dump_disc_list") +MSG_HASH(MENU_ENUM_LABEL_DEFERRED_LOAD_DISC_LIST, + "deferred_load_disc_list") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_DEVELOPER, "deferred_cursor_manager_list_rdb_entry_developer") MSG_HASH(MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_PUBLISHER, diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index d0978bc538..fb5caf895f 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -96,6 +96,7 @@ generic_deferred_push(deferred_push_configurations_list, DISPLAYLIST_ generic_deferred_push(deferred_push_load_content_special, DISPLAYLIST_LOAD_CONTENT_LIST) generic_deferred_push(deferred_push_load_content_list, DISPLAYLIST_LOAD_CONTENT_LIST) generic_deferred_push(deferred_push_dump_disk_list, DISPLAYLIST_DUMP_DISC) +generic_deferred_push(deferred_push_load_disk_list, DISPLAYLIST_LOAD_DISC) generic_deferred_push(deferred_push_information_list, DISPLAYLIST_INFORMATION_LIST) generic_deferred_push(deferred_push_information, DISPLAYLIST_INFORMATION) generic_deferred_push(deferred_archive_action_detect_core, DISPLAYLIST_ARCHIVE_ACTION_DETECT_CORE) @@ -645,6 +646,11 @@ static int menu_cbs_init_bind_deferred_push_compare_label( BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_dump_disk_list); return 0; } + else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_LOAD_DISC_LIST))) + { + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_load_disk_list); + return 0; + } else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_FAVORITES_LIST))) { BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_favorites_list); diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 51c23ae4d7..143b2c8719 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -266,6 +266,8 @@ static enum msg_hash_enums action_ok_dl_to_enum(unsigned lbl) return MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_TWITCH_LIST; case ACTION_OK_DL_DUMP_DISC_LIST: return MENU_ENUM_LABEL_DEFERRED_DUMP_DISC_LIST; + case ACTION_OK_DL_LOAD_DISC_LIST: + return MENU_ENUM_LABEL_DEFERRED_LOAD_DISC_LIST; case ACTION_OK_DL_ACCOUNTS_YOUTUBE_LIST: return MENU_ENUM_LABEL_DEFERRED_ACCOUNTS_YOUTUBE_LIST; case ACTION_OK_DL_PLAYLIST_COLLECTION: @@ -942,6 +944,7 @@ int generic_action_ok_displaylist_push(const char *path, case ACTION_OK_DL_BROWSE_URL_LIST: case ACTION_OK_DL_MUSIC_LIST: case ACTION_OK_DL_IMAGES_LIST: + case ACTION_OK_DL_LOAD_DISC_LIST: case ACTION_OK_DL_DUMP_DISC_LIST: action_ok_dl_lbl(action_ok_dl_to_enum(action_type), DISPLAYLIST_GENERIC); break; @@ -2128,9 +2131,17 @@ static int action_ok_mixer_stream_action_stop(const char *path, return 0; } +static int action_ok_load_cdrom(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + /* TODO/FIXME - implement */ + return 0; +} + static int action_ok_dump_cdrom(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { + /* TODO/FIXME - implement */ return 0; } @@ -4378,6 +4389,7 @@ default_action_ok_func(action_ok_push_accounts_cheevos_list, ACTION_OK_DL_ACCOUN default_action_ok_func(action_ok_push_accounts_youtube_list, ACTION_OK_DL_ACCOUNTS_YOUTUBE_LIST) default_action_ok_func(action_ok_push_accounts_twitch_list, ACTION_OK_DL_ACCOUNTS_TWITCH_LIST) default_action_ok_func(action_ok_push_dump_disc_list, ACTION_OK_DL_DUMP_DISC_LIST) +default_action_ok_func(action_ok_push_load_disc_list, ACTION_OK_DL_LOAD_DISC_LIST) default_action_ok_func(action_ok_open_archive, ACTION_OK_DL_OPEN_ARCHIVE) default_action_ok_func(action_ok_rgui_menu_theme_preset, ACTION_OK_DL_RGUI_MENU_THEME_PRESET) default_action_ok_func(action_ok_pl_thumbnails_updater_list, ACTION_OK_DL_PL_THUMBNAILS_UPDATER_LIST) @@ -5950,12 +5962,12 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_ACCOUNTS_TWITCH: BIND_ACTION_OK(cbs, action_ok_push_accounts_twitch_list); break; - case MENU_ENUM_LABEL_LOAD_DISC: - BIND_ACTION_OK(cbs, action_ok_push_load_disc); - break; case MENU_ENUM_LABEL_DUMP_DISC: BIND_ACTION_OK(cbs, action_ok_push_dump_disc_list); break; + case MENU_ENUM_LABEL_LOAD_DISC: + BIND_ACTION_OK(cbs, action_ok_push_load_disc_list); + break; case MENU_ENUM_LABEL_SHADER_OPTIONS: case MENU_ENUM_LABEL_CORE_OPTIONS: case MENU_ENUM_LABEL_CORE_CHEAT_OPTIONS: @@ -6345,6 +6357,10 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs, { BIND_ACTION_OK(cbs, action_ok_dump_cdrom); } + else if (type == MENU_SET_LOAD_CDROM_LIST) + { + BIND_ACTION_OK(cbs, action_ok_load_cdrom); + } else if (type == MENU_SETTINGS_CUSTOM_BIND_KEYBOARD || type == MENU_SETTINGS_CUSTOM_BIND) { diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 693debcb0a..a009f4cc21 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -123,6 +123,7 @@ enum ACTION_OK_DL_CORE_CONTENT_LIST, ACTION_OK_DL_CORE_CONTENT_DIRS_LIST, ACTION_OK_DL_CORE_CONTENT_DIRS_SUBDIR_LIST, + ACTION_OK_DL_DEFERRED_LOAD_DISC_LIST, ACTION_OK_DL_DEFERRED_DUMP_DISC_LIST, ACTION_OK_DL_DEFERRED_CORE_LIST, ACTION_OK_DL_DEFERRED_CORE_LIST_SET, @@ -151,6 +152,7 @@ enum ACTION_OK_DL_DIRECTORY_SETTINGS_LIST, ACTION_OK_DL_PRIVACY_SETTINGS_LIST, ACTION_OK_DL_MIDI_SETTINGS_LIST, + ACTION_OK_DL_LOAD_DISC_LIST, ACTION_OK_DL_DUMP_DISC_LIST, ACTION_OK_DL_BROWSE_URL_START, ACTION_OK_DL_CONTENT_SETTINGS, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 70126bd959..6d429e71c3 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4923,12 +4923,45 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, string_list_free(list); + info->need_push = true; + info->need_refresh = true; + info->need_clear = true; + break; + } + case DISPLAYLIST_LOAD_DISC: + { + int i; + struct string_list *list = cdrom_get_available_drives(); + + menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); + count = 0; + + for (i = 0; list && i < list->size; i++) + { + menu_entries_append_enum(info->list, + list->elems[i].data, + "", + 0, + MENU_SET_LOAD_CDROM_LIST, + 0, i); + } + + if (list->size == 0) + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_ENTRIES_TO_DISPLAY), + msg_hash_to_str(MENU_ENUM_LABEL_NO_ENTRIES_TO_DISPLAY), + MENU_ENUM_LABEL_NO_ENTRIES_TO_DISPLAY, + FILE_TYPE_NONE, 0, 0); + + string_list_free(list); + info->need_push = true; info->need_refresh = true; info->need_clear = true; break; } #else + case DISPLAYLIST_LOAD_DISC: case DISPLAYLIST_DUMP_DISC: /* No-op */ break; diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index ceea79446a..c55debd0be 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -115,6 +115,7 @@ enum menu_displaylist_ctl_state DISPLAYLIST_CONTENT_HISTORY, DISPLAYLIST_IMAGES, DISPLAYLIST_FONTS, + DISPLAYLIST_LOAD_DISC, DISPLAYLIST_DUMP_DISC, DISPLAYLIST_OVERLAYS, #ifdef HAVE_VIDEO_LAYOUT diff --git a/menu/menu_driver.h b/menu/menu_driver.h index f8067980d1..591e6e04f0 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -195,6 +195,7 @@ enum menu_settings_type #endif MENU_SET_CDROM_LIST, + MENU_SET_LOAD_CDROM_LIST, MENU_SETTINGS_LAST }; diff --git a/msg_hash.h b/msg_hash.h index e6f34394aa..ce4cd8f982 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1138,6 +1138,7 @@ enum msg_hash_enums MENU_LABEL(BROWSE_URL), MENU_LABEL(BROWSE_START), /* Deferred */ + MENU_ENUM_LABEL_DEFERRED_LOAD_DISC_LIST, MENU_ENUM_LABEL_DEFERRED_DUMP_DISC_LIST, MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST, MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_SPECIAL,