From e997171d3c6c7821d2db2f070ef9562f2fb11f1c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 25 Oct 2015 10:25:07 +0100 Subject: [PATCH] Reimplement Playlist Settings --- menu/cbs/menu_cbs_deferred_push.c | 8 ++++++++ menu/cbs/menu_cbs_ok.c | 16 ++++++++++++++++ menu/intl/menu_hash_us.c | 8 +++++++- menu/menu_cbs.h | 1 + menu/menu_displaylist.c | 7 ++++++- menu/menu_hash.h | 5 ++++- menu/menu_setting.c | 9 ++++++++- 7 files changed, 50 insertions(+), 4 deletions(-) diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 8a7ee26cc5..5cdc67315b 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -79,6 +79,11 @@ static int deferred_push_input_settings_list(menu_displaylist_info_t *info) return deferred_push_dlist(info, DISPLAYLIST_INPUT_SETTINGS_LIST); } +static int deferred_push_playlist_settings_list(menu_displaylist_info_t *info) +{ + return deferred_push_dlist(info, DISPLAYLIST_PLAYLIST_SETTINGS_LIST); +} + static int deferred_push_accounts_cheevos_list(menu_displaylist_info_t *info) { return deferred_push_dlist(info, DISPLAYLIST_ACCOUNTS_CHEEVOS_LIST); @@ -574,6 +579,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label(menu_file_list_cbs_t * case MENU_LABEL_DEFERRED_INPUT_SETTINGS_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_input_settings_list); break; + case MENU_LABEL_DEFERRED_PLAYLIST_SETTINGS_LIST: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_playlist_settings_list); + break; case MENU_LABEL_DEFERRED_ACCOUNTS_CHEEVOS_LIST: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_accounts_cheevos_list); break; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index dc7f728aca..dfcd017779 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -312,6 +312,12 @@ int generic_action_ok_displaylist_push(const char *path, info_path = path; info_label = menu_hash_to_str(MENU_LABEL_DEFERRED_INPUT_SETTINGS_LIST); break; + case ACTION_OK_DL_PLAYLIST_SETTINGS_LIST: + info.directory_ptr = idx; + info.type = type; + info_path = path; + info_label = menu_hash_to_str(MENU_LABEL_DEFERRED_PLAYLIST_SETTINGS_LIST); + break; case ACTION_OK_DL_ACCOUNTS_CHEEVOS_LIST: info.directory_ptr = idx; info.type = type; @@ -1587,6 +1593,13 @@ static int action_ok_push_input_settings_list(const char *path, ACTION_OK_DL_INPUT_SETTINGS_LIST); } +static int action_ok_push_playlist_settings_list(const char *path, + const char *label, unsigned type, size_t idx, size_t entry_idx) +{ + return generic_action_ok_displaylist_push(path, label, 0, 0, entry_idx, + ACTION_OK_DL_PLAYLIST_SETTINGS_LIST); +} + static int action_ok_push_user_binds_list(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { @@ -1909,6 +1922,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs, case MENU_LABEL_INPUT_SETTINGS: BIND_ACTION_OK(cbs, action_ok_push_input_settings_list); break; + case MENU_LABEL_PLAYLIST_SETTINGS: + BIND_ACTION_OK(cbs, action_ok_push_playlist_settings_list); + break; case MENU_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS: BIND_ACTION_OK(cbs, action_ok_push_accounts_cheevos_list); break; diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c index 6a16e666d7..e868b12a1b 100644 --- a/menu/intl/menu_hash_us.c +++ b/menu/intl/menu_hash_us.c @@ -48,6 +48,12 @@ static const char *menu_hash_to_str_us_label(uint32_t hash) return "accounts_list"; case MENU_LABEL_INPUT_SETTINGS_BEGIN: return "input_settings_begin"; + case MENU_LABEL_PLAYLIST_SETTINGS_BEGIN: + return "playlist_settings_begin"; + case MENU_LABEL_PLAYLIST_SETTINGS: + return "playlist_settings"; + case MENU_LABEL_DEFERRED_PLAYLIST_SETTINGS_LIST: + return "deferred_playlist_settings"; case MENU_LABEL_INPUT_SETTINGS: return "input_settings"; case MENU_LABEL_DEBUG_PANEL_ENABLE: @@ -1513,7 +1519,7 @@ const char *menu_hash_to_str_us(uint32_t hash) case MENU_LABEL_VALUE_NETWORK_SETTINGS: return "Network"; case MENU_LABEL_VALUE_PLAYLIST_SETTINGS: - return "Playlist"; + return "Playlists"; case MENU_LABEL_VALUE_USER_SETTINGS: return "User"; case MENU_LABEL_VALUE_DIRECTORY_SETTINGS: diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index be15073bf9..2b758a329d 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -42,6 +42,7 @@ enum ACTION_OK_DL_PUSH_DEFAULT, ACTION_OK_DL_DOWNLOADS_DIR, ACTION_OK_DL_INPUT_SETTINGS_LIST, + ACTION_OK_DL_PLAYLIST_SETTINGS_LIST, ACTION_OK_DL_ACCOUNTS_LIST, ACTION_OK_DL_ACCOUNTS_CHEEVOS_LIST, ACTION_OK_DL_USER_BINDS_LIST, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 256690afbd..3842e56148 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2477,6 +2477,11 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) info->need_push = true; break; case DISPLAYLIST_PLAYLIST_SETTINGS_LIST: + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_HISTORY_LIST_ENABLE), PARSE_ONLY_BOOL, false); + ret = menu_displaylist_parse_settings(menu, info, + menu_hash_to_str(MENU_LABEL_CONTENT_HISTORY_SIZE), PARSE_ONLY_UINT, false); + info->need_push = true; break; case DISPLAYLIST_INPUT_SETTINGS_LIST: ret = menu_displaylist_parse_settings(menu, info, @@ -2562,7 +2567,7 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) ret = menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_VALUE_NETWORK_SETTINGS), PARSE_ONLY_GROUP, false); ret = menu_displaylist_parse_settings(menu, info, - menu_hash_to_str(MENU_LABEL_VALUE_PLAYLIST_SETTINGS), PARSE_ONLY_GROUP, false); + menu_hash_to_str(MENU_LABEL_PLAYLIST_SETTINGS), PARSE_ACTION, false); ret = menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_VALUE_USER_SETTINGS), PARSE_ONLY_GROUP, false); ret = menu_displaylist_parse_settings(menu, info, diff --git a/menu/menu_hash.h b/menu/menu_hash.h index ee4d3d0600..0ef2e05ded 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -24,6 +24,9 @@ extern "C" { #define MENU_LABEL_INPUT_SETTINGS 0x78b4a7c5U +#define MENU_LABEL_PLAYLIST_SETTINGS_BEGIN 0x80a8d2cbU +#define MENU_LABEL_DEFERRED_PLAYLIST_SETTINGS_LIST 0x9518e0c7U + #define MENU_LABEL_INPUT_SETTINGS_BEGIN 0xddee308bU #define MENU_LABEL_DEFERRED_INPUT_SETTINGS_LIST 0x050bec60U @@ -813,7 +816,7 @@ extern "C" { #define MENU_LABEL_UI_SETTINGS 0xf8da6ef4U #define MENU_LABEL_VALUE_UI_SETTINGS 0x76ebdc06U #define MENU_LABEL_PATCH_SETTINGS 0xa78b0986U -#define MENU_LABEL_PLAYLIST_SETTINGS 0x4d276288U +#define MENU_LABEL_PLAYLIST_SETTINGS 0xdb3e0e07U #define MENU_LABEL_VALUE_PLAYLIST_SETTINGS 0x4d276288U #define MENU_LABEL_CORE_UPDATER_SETTINGS 0x124ad454U #define MENU_LABEL_VALUE_CORE_UPDATER_SETTINGS 0x124ad454U diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 66c2707400..7b3c7860d9 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -3179,6 +3179,13 @@ static bool setting_append_list_main_menu_options( subgroup_info.name, parent_group); + CONFIG_ACTION( + menu_hash_to_str(MENU_LABEL_PLAYLIST_SETTINGS), + menu_hash_to_str(MENU_LABEL_VALUE_PLAYLIST_SETTINGS), + group_info.name, + subgroup_info.name, + parent_group); + for (user = 0; user < MAX_USERS; user++) setting_append_list_input_player_options(list, list_info, parent_group, user); @@ -5962,7 +5969,7 @@ static bool setting_append_list_playlist_options( settings_t *settings = config_get_ptr(); START_GROUP(group_info, - menu_hash_to_str(MENU_LABEL_VALUE_PLAYLIST_SETTINGS), + menu_hash_to_str(MENU_LABEL_PLAYLIST_SETTINGS_BEGIN), parent_group); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED);