diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 0642e5f048..57e8977f46 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4385,6 +4385,32 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct switch (type) { + case DISPLAYLIST_MENU_SOUNDS_LIST: + if (menu_displaylist_parse_settings_enum(list, + MENU_ENUM_LABEL_AUDIO_ENABLE_MENU, + PARSE_ONLY_BOOL, false) == 0) + count++; + + if (menu_displaylist_parse_settings_enum(list, + MENU_ENUM_LABEL_MENU_SOUND_OK, + PARSE_ONLY_BOOL, false) == 0) + count++; + + if (menu_displaylist_parse_settings_enum(list, + MENU_ENUM_LABEL_MENU_SOUND_CANCEL, + PARSE_ONLY_BOOL, false) == 0) + count++; + + if (menu_displaylist_parse_settings_enum(list, + MENU_ENUM_LABEL_MENU_SOUND_NOTICE, + PARSE_ONLY_BOOL, false) == 0) + count++; + + if (menu_displaylist_parse_settings_enum(list, + MENU_ENUM_LABEL_MENU_SOUND_BGM, + PARSE_ONLY_BOOL, false) == 0) + count++; + break; case DISPLAYLIST_QUICK_MENU_VIEWS_SETTINGS_LIST: if (menu_displaylist_parse_settings_enum(list, MENU_ENUM_LABEL_QUICK_MENU_SHOW_TAKE_SCREENSHOT, @@ -5968,9 +5994,17 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist case DISPLAYLIST_CONFIGURATION_SETTINGS_LIST: case DISPLAYLIST_CORE_SETTINGS_LIST: case DISPLAYLIST_QUICK_MENU_VIEWS_SETTINGS_LIST: + case DISPLAYLIST_MENU_SOUNDS_LIST: menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); count = menu_displaylist_build_list(info->list, type); + if (count == 0) + menu_entries_append_enum(info->list, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_SETTINGS_FOUND), + msg_hash_to_str(MENU_ENUM_LABEL_NO_SETTINGS_FOUND), + MENU_ENUM_LABEL_NO_SETTINGS_FOUND, + 0, 0, 0); + info->need_refresh = true; info->need_push = true; break; @@ -6453,44 +6487,6 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist MENU_ENUM_LABEL_NO_SETTINGS_FOUND, 0, 0, 0); - info->need_refresh = true; - info->need_push = true; - break; - case DISPLAYLIST_MENU_SOUNDS_LIST: - menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); - - if (menu_displaylist_parse_settings_enum(info->list, - MENU_ENUM_LABEL_AUDIO_ENABLE_MENU, - PARSE_ONLY_BOOL, false) == 0) - count++; - - if (menu_displaylist_parse_settings_enum(info->list, - MENU_ENUM_LABEL_MENU_SOUND_OK, - PARSE_ONLY_BOOL, false) == 0) - count++; - - if (menu_displaylist_parse_settings_enum(info->list, - MENU_ENUM_LABEL_MENU_SOUND_CANCEL, - PARSE_ONLY_BOOL, false) == 0) - count++; - - if (menu_displaylist_parse_settings_enum(info->list, - MENU_ENUM_LABEL_MENU_SOUND_NOTICE, - PARSE_ONLY_BOOL, false) == 0) - count++; - - if (menu_displaylist_parse_settings_enum(info->list, - MENU_ENUM_LABEL_MENU_SOUND_BGM, - PARSE_ONLY_BOOL, false) == 0) - count++; - - if (count == 0) - menu_entries_append_enum(info->list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_SETTINGS_FOUND), - msg_hash_to_str(MENU_ENUM_LABEL_NO_SETTINGS_FOUND), - MENU_ENUM_LABEL_NO_SETTINGS_FOUND, - 0, 0, 0); - info->need_refresh = true; info->need_push = true; break; diff --git a/ui/drivers/qt/options/audio.cpp b/ui/drivers/qt/options/audio.cpp index 766855fa7b..67530bf6cf 100644 --- a/ui/drivers/qt/options/audio.cpp +++ b/ui/drivers/qt/options/audio.cpp @@ -76,15 +76,23 @@ MenuSoundsPage::MenuSoundsPage(QObject *parent) : QWidget *MenuSoundsPage::widget() { - QWidget *widget = new QWidget(); + unsigned i; + QWidget *widget = new QWidget(); + FormLayout *layout = new FormLayout; + file_list_t *list = (file_list_t*)calloc(1, sizeof(*list)); - FormLayout *layout = new FormLayout; + menu_displaylist_build_list( + list, DISPLAYLIST_MENU_SOUNDS_LIST); - layout->add(MENU_ENUM_LABEL_AUDIO_ENABLE_MENU); - layout->add(MENU_ENUM_LABEL_MENU_SOUND_OK); - layout->add(MENU_ENUM_LABEL_MENU_SOUND_CANCEL); - layout->add(MENU_ENUM_LABEL_MENU_SOUND_NOTICE); - layout->add(MENU_ENUM_LABEL_MENU_SOUND_BGM); + for (i = 0; i < list->size; i++) + { + menu_file_list_cbs_t *cbs = (menu_file_list_cbs_t*) + file_list_get_actiondata_at_offset(list, i); + + layout->add(cbs->enum_idx); + } + + file_list_free(list); widget->setLayout(layout);