Skip to content

Commit 85aa59d

Browse files
authored
Enable database filter for genre and region (#18122)
1 parent 5e5f047 commit 85aa59d

9 files changed

Lines changed: 87 additions & 11 deletions

database_info.c

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,41 @@ int database_info_build_query_enum(char *s, size_t len,
430430
s[ _len] = '}';
431431
s[++_len] = '\0';
432432
break;
433+
case DATABASE_QUERY_ENTRY_GENRE:
434+
s[ _len] = '{';
435+
s[++_len] = '\'';
436+
s[++_len] = 'g';
437+
s[++_len] = 'e';
438+
s[++_len] = 'n';
439+
s[++_len] = 'r';
440+
s[++_len] = 'e';
441+
s[++_len] = '\'';
442+
s[++_len] = ':';
443+
s[++_len] = '"';
444+
s[++_len] = '\0';
445+
_len += strlcpy(s + _len, path, len - _len);
446+
s[ _len] = '"';
447+
s[++_len] = '}';
448+
s[++_len] = '\0';
449+
break;
450+
case DATABASE_QUERY_ENTRY_REGION:
451+
s[ _len] = '{';
452+
s[++_len] = '\'';
453+
s[++_len] = 'r';
454+
s[++_len] = 'e';
455+
s[++_len] = 'g';
456+
s[++_len] = 'i';
457+
s[++_len] = 'o';
458+
s[++_len] = 'n';
459+
s[++_len] = '\'';
460+
s[++_len] = ':';
461+
s[++_len] = '"';
462+
s[++_len] = '\0';
463+
_len += strlcpy(s + _len, path, len - _len);
464+
s[ _len] = '"';
465+
s[++_len] = '}';
466+
s[++_len] = '\0';
467+
break;
433468
case DATABASE_QUERY_NONE:
434469
s[ _len] = '{';
435470
s[++_len] = '\'';

database_info.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ enum database_query_type
6767
DATABASE_QUERY_ENTRY_FAMITSU_MAGAZINE_RATING,
6868
DATABASE_QUERY_ENTRY_RELEASEDATE_MONTH,
6969
DATABASE_QUERY_ENTRY_RELEASEDATE_YEAR,
70-
DATABASE_QUERY_ENTRY_MAX_USERS
70+
DATABASE_QUERY_ENTRY_MAX_USERS,
71+
DATABASE_QUERY_ENTRY_GENRE,
72+
DATABASE_QUERY_ENTRY_REGION
7173
};
7274

7375
typedef struct

intl/msg_hash_lbl.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3108,6 +3108,14 @@ MSG_HASH(
31083108
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_MAX_USERS,
31093109
"deferred_cursor_manager_list_rdb_entry_max_users"
31103110
)
3111+
MSG_HASH(
3112+
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_GENRE,
3113+
"deferred_cursor_manager_list_rdb_entry_genre"
3114+
)
3115+
MSG_HASH(
3116+
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_REGION,
3117+
"deferred_cursor_manager_list_rdb_entry_region"
3118+
)
31113119
MSG_HASH(
31123120
MENU_ENUM_LABEL_RDB_ENTRY_DEVELOPER,
31133121
"rdb_entry_developer"

intl/msg_hash_us.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13922,6 +13922,14 @@ MSG_HASH(
1392213922
MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_RATING,
1392313923
"Database - Filter: Edge Magazine Rating"
1392413924
)
13925+
MSG_HASH(
13926+
MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_GENRE,
13927+
"Database - Filter: Genre"
13928+
)
13929+
MSG_HASH(
13930+
MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_REGION,
13931+
"Database - Filter: Region"
13932+
)
1392513933
MSG_HASH(
1392613934
MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_DATABASE_INFO,
1392713935
"Database Info"

menu/cbs/menu_cbs_deferred_push.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,11 +408,13 @@ GENERIC_DEFERRED_CURSOR_MANAGER(deferred_push_cursor_manager_list_deferred_query
408408
GENERIC_DEFERRED_CURSOR_MANAGER(deferred_push_cursor_manager_list_deferred_query_rdb_entry_esrb_rating, DATABASE_QUERY_ENTRY_ESRB_RATING)
409409
GENERIC_DEFERRED_CURSOR_MANAGER(deferred_push_cursor_manager_list_deferred_query_rdb_entry_enhancement_hw, DATABASE_QUERY_ENTRY_ENHANCEMENT_HW)
410410
GENERIC_DEFERRED_CURSOR_MANAGER(deferred_push_cursor_manager_list_deferred_query_rdb_entry_franchise, DATABASE_QUERY_ENTRY_FRANCHISE)
411+
GENERIC_DEFERRED_CURSOR_MANAGER(deferred_push_cursor_manager_list_deferred_query_rdb_entry_genre, DATABASE_QUERY_ENTRY_GENRE)
411412
GENERIC_DEFERRED_CURSOR_MANAGER(deferred_push_cursor_manager_list_deferred_query_rdb_entry_publisher, DATABASE_QUERY_ENTRY_PUBLISHER)
412413
GENERIC_DEFERRED_CURSOR_MANAGER(deferred_push_cursor_manager_list_deferred_query_rdb_entry_developer, DATABASE_QUERY_ENTRY_DEVELOPER)
413414
GENERIC_DEFERRED_CURSOR_MANAGER(deferred_push_cursor_manager_list_deferred_query_rdb_entry_origin, DATABASE_QUERY_ENTRY_ORIGIN)
414415
GENERIC_DEFERRED_CURSOR_MANAGER(deferred_push_cursor_manager_list_deferred_query_rdb_entry_releasemonth, DATABASE_QUERY_ENTRY_RELEASEDATE_MONTH)
415416
GENERIC_DEFERRED_CURSOR_MANAGER(deferred_push_cursor_manager_list_deferred_query_rdb_entry_releaseyear, DATABASE_QUERY_ENTRY_RELEASEDATE_YEAR)
417+
GENERIC_DEFERRED_CURSOR_MANAGER(deferred_push_cursor_manager_list_deferred_query_rdb_entry_region, DATABASE_QUERY_ENTRY_REGION)
416418
#endif
417419

418420
#define CHECK_SIZE(desired_size) \
@@ -847,6 +849,7 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
847849
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_DEVELOPER, deferred_push_cursor_manager_list_deferred_query_rdb_entry_developer},
848850
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ORIGIN, deferred_push_cursor_manager_list_deferred_query_rdb_entry_origin},
849851
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_FRANCHISE, deferred_push_cursor_manager_list_deferred_query_rdb_entry_franchise},
852+
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_GENRE, deferred_push_cursor_manager_list_deferred_query_rdb_entry_genre},
850853
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ENHANCEMENT_HW, deferred_push_cursor_manager_list_deferred_query_rdb_entry_enhancement_hw},
851854
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ESRB_RATING, deferred_push_cursor_manager_list_deferred_query_rdb_entry_esrb_rating},
852855
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_BBFC_RATING, deferred_push_cursor_manager_list_deferred_query_rdb_entry_bbfc_rating},
@@ -859,6 +862,7 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
859862
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_MAX_USERS, deferred_push_cursor_manager_list_deferred_query_rdb_entry_max_users},
860863
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_RELEASEMONTH, deferred_push_cursor_manager_list_deferred_query_rdb_entry_releasemonth},
861864
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_RELEASEYEAR, deferred_push_cursor_manager_list_deferred_query_rdb_entry_releaseyear},
865+
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_REGION, deferred_push_cursor_manager_list_deferred_query_rdb_entry_region},
862866
#endif
863867
{MENU_ENUM_LABEL_ACHIEVEMENT_PAUSE_MENU, deferred_push_achievement_pause_menu},
864868
{MENU_ENUM_LABEL_ACHIEVEMENT_LIST, deferred_push_achievement_list},
@@ -1158,6 +1162,12 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
11581162
case MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_RELEASEYEAR:
11591163
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_cursor_manager_list_deferred_query_rdb_entry_releaseyear);
11601164
break;
1165+
case MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_GENRE:
1166+
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_cursor_manager_list_deferred_query_rdb_entry_genre);
1167+
break;
1168+
case MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_REGION:
1169+
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_cursor_manager_list_deferred_query_rdb_entry_region);
1170+
break;
11611171
#endif
11621172
case MENU_ENUM_LABEL_NETWORK_INFORMATION:
11631173
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_network_information);

menu/cbs/menu_cbs_ok.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8913,6 +8913,8 @@ static int is_rdb_entry(enum msg_hash_enums enum_idx)
89138913
case MENU_ENUM_LABEL_RDB_ENTRY_RELEASE_MONTH:
89148914
case MENU_ENUM_LABEL_RDB_ENTRY_RELEASE_YEAR:
89158915
case MENU_ENUM_LABEL_RDB_ENTRY_MAX_USERS:
8916+
case MENU_ENUM_LABEL_RDB_ENTRY_GENRE:
8917+
case MENU_ENUM_LABEL_RDB_ENTRY_REGION:
89168918
break;
89178919
default:
89188920
return -1;

menu/cbs/menu_cbs_title.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -850,6 +850,7 @@ DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_developer,MENU_ENUM_
850850
DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_publisher,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_PUBLISHER)
851851
DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_origin,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_ORIGIN)
852852
DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_franchise,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_FRANCHISE)
853+
DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_genre,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_GENRE)
853854
DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_edge_magazine_rating,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_RATING)
854855
DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_edge_magazine_issue,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_ISSUE)
855856
DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_releasedate_by_month,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_RELEASEDATE_BY_MONTH)
@@ -860,6 +861,7 @@ DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_pegi_rating,MENU_ENU
860861
DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_cero_rating,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_CERO_RATING)
861862
DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_bbfc_rating,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_BBFC_RATING)
862863
DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_max_users,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_MAX_USERS)
864+
DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_region,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_REGION)
863865
DEFAULT_TITLE_GENERIC_MACRO(action_get_title_list_rdb_entry_database_info,MENU_ENUM_LABEL_VALUE_DATABASE_CURSOR_LIST_ENTRY_DATABASE_INFO)
864866

865867
static int action_get_sideload_core_list(const char *path, const char *label,
@@ -1097,6 +1099,7 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
10971099
action_get_title_list_rdb_entry_origin},
10981100
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_FRANCHISE,
10991101
action_get_title_list_rdb_entry_franchise},
1102+
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_GENRE, action_get_title_list_rdb_entry_genre},
11001103
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_EDGE_MAGAZINE_RATING, action_get_title_list_rdb_entry_edge_magazine_rating},
11011104
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_EDGE_MAGAZINE_ISSUE, action_get_title_list_rdb_entry_edge_magazine_issue},
11021105
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_RELEASEMONTH,
@@ -1113,6 +1116,7 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
11131116
action_get_title_list_rdb_entry_bbfc_rating},
11141117
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_MAX_USERS,
11151118
action_get_title_list_rdb_entry_max_users},
1119+
{MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_REGION, action_get_title_list_rdb_entry_region},
11161120
{MENU_ENUM_LABEL_JOYPAD_AUTOCONFIG_DIR,
11171121
action_get_title_autoconfig_directory},
11181122
{MENU_ENUM_LABEL_CACHE_DIRECTORY,
@@ -1398,6 +1402,12 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
13981402
case MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_MAX_USERS:
13991403
BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_max_users);
14001404
break;
1405+
case MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_GENRE:
1406+
BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_genre);
1407+
break;
1408+
case MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_REGION:
1409+
BIND_ACTION_GET_TITLE(cbs, action_get_title_list_rdb_entry_region);
1410+
break;
14011411
case MENU_ENUM_LABEL_DEFERRED_CORE_LIST:
14021412
case MENU_ENUM_LABEL_DEFERRED_CORE_LIST_SET:
14031413
BIND_ACTION_GET_TITLE(cbs, action_get_title_deferred_core_list);

menu/menu_displaylist.c

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2888,16 +2888,13 @@ static int menu_displaylist_parse_database_entry(menu_handle_t *menu,
28882888

28892889
if (db_info_entry->genre)
28902890
{
2891-
char tmp[NAME_MAX_LENGTH];
2892-
size_t _len = strlcpy(tmp,
2893-
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_GENRE),
2894-
sizeof(tmp));
2895-
_len += strlcpy(tmp + _len, ": ", sizeof(tmp) - _len);
2896-
strlcpy(tmp + _len, db_info_entry->genre, sizeof(tmp) - _len);
2897-
menu_entries_append(info->list, tmp,
2898-
msg_hash_to_str(MENU_ENUM_LABEL_RDB_ENTRY_GENRE),
2899-
MENU_ENUM_LABEL_RDB_ENTRY_GENRE,
2900-
0, 0, 0, NULL);
2891+
2892+
if (create_string_list_rdb_entry_string(
2893+
MENU_ENUM_LABEL_RDB_ENTRY_GENRE,
2894+
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_RDB_ENTRY_GENRE),
2895+
msg_hash_to_str(MENU_ENUM_LABEL_RDB_ENTRY_GENRE),
2896+
db_info_entry->genre, info->path, info->list) == -1)
2897+
goto error;
29012898
}
29022899

29032900
if (db_info_entry->publisher)

msg_hash.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2046,6 +2046,7 @@ enum msg_hash_enums
20462046
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_PUBLISHER,
20472047
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_ORIGIN,
20482048
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_FRANCHISE,
2049+
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_GENRE,
20492050
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_EDGE_MAGAZINE_RATING,
20502051
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_EDGE_MAGAZINE_ISSUE,
20512052
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_FAMITSU_MAGAZINE_RATING,
@@ -2058,6 +2059,7 @@ enum msg_hash_enums
20582059
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_CERO_RATING,
20592060
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_BBFC_RATING,
20602061
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_MAX_USERS,
2062+
MENU_ENUM_LABEL_DEFERRED_CURSOR_MANAGER_LIST_RDB_ENTRY_REGION,
20612063
MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL,
20622064
MENU_ENUM_LABEL_DEFERRED_RPL_ENTRY_ACTIONS,
20632065
MENU_ENUM_LABEL_DEFERRED_CORE_LIST,
@@ -3581,6 +3583,7 @@ enum msg_hash_enums
35813583
MENU_LABEL(DATABASE_CURSOR_LIST_ENTRY_PUBLISHER),
35823584
MENU_LABEL(DATABASE_CURSOR_LIST_ENTRY_ORIGIN),
35833585
MENU_LABEL(DATABASE_CURSOR_LIST_ENTRY_FRANCHISE),
3586+
MENU_LABEL(DATABASE_CURSOR_LIST_ENTRY_GENRE),
35843587
MENU_LABEL(DATABASE_CURSOR_LIST_ENTRY_ESRB_RATING),
35853588
MENU_LABEL(DATABASE_CURSOR_LIST_ENTRY_ELSPA_RATING),
35863589
MENU_LABEL(DATABASE_CURSOR_LIST_ENTRY_PEGI_RATING),
@@ -3591,6 +3594,7 @@ enum msg_hash_enums
35913594
MENU_LABEL(DATABASE_CURSOR_LIST_ENTRY_EDGE_MAGAZINE_RATING),
35923595
MENU_LABEL(DATABASE_CURSOR_LIST_ENTRY_RELEASEDATE_BY_MONTH),
35933596
MENU_LABEL(DATABASE_CURSOR_LIST_ENTRY_RELEASEDATE_BY_YEAR),
3597+
MENU_LABEL(DATABASE_CURSOR_LIST_ENTRY_REGION),
35943598
MENU_LABEL(DATABASE_CURSOR_LIST_ENTRY_DATABASE_INFO),
35953599

35963600
MENU_ENUM_LABEL_VALUE_NO,

0 commit comments

Comments
 (0)