mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-25 20:32:22 +00:00
Merge pull request #9310 from jdgleaver/per-playlist-thumbs
Enable per-playlist thumbnail selection
This commit is contained in:
commit
d96d80cf5c
@ -279,6 +279,10 @@ MSG_HASH(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_DEFAULT_CORE,
|
||||
"deferred_dropdown_box_list_playlist_default_core")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE,
|
||||
"deferred_dropdown_box_list_playlist_label_display_mode")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE,
|
||||
"deferred_dropdown_box_list_playlist_right_thumbnail_mode")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE,
|
||||
"deferred_dropdown_box_list_playlist_left_thumbnail_mode")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_CONFIGURATIONS_LIST,
|
||||
"deferred_configurations_list")
|
||||
MSG_HASH(MENU_ENUM_LABEL_DEFERRED_PLAYLIST_LIST,
|
||||
@ -897,20 +901,10 @@ MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_RESET_CORES,
|
||||
"playlist_manager_reset_cores")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE,
|
||||
"playlist_manager_label_display_mode")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_DEFAULT,
|
||||
"playlist_manager_label_display_mode_default")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_PARENS,
|
||||
"playlist_manager_label_display_mode_remove_parens")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_BRACKETS,
|
||||
"playlist_manager_label_display_mode_remove_brackets")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_PARENS_AND_BRACKETS,
|
||||
"playlist_manager_label_display_mode_remove_parens_and_brackets")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION,
|
||||
"playlist_manager_label_display_mode_keep_region")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_DISC_INDEX,
|
||||
"playlist_manager_label_display_mode_keep_disc_index")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX,
|
||||
"playlist_manager_label_display_mode_keep_region_and_disc_index")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE,
|
||||
"playlist_manager_right_thumbnail_mode")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE,
|
||||
"playlist_manager_left_thumbnail_mode")
|
||||
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_SETTINGS_BEGIN,
|
||||
"playlist_settings_begin")
|
||||
MSG_HASH(MENU_ENUM_LABEL_POINTER_ENABLE,
|
||||
|
@ -2248,6 +2248,10 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX,
|
||||
"Keep region and disc index"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_THUMBNAIL_MODE_DEFAULT,
|
||||
"System Default"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_POINTER_ENABLE,
|
||||
"Touch Support"
|
||||
|
@ -151,6 +151,10 @@ char* string_tokenize(char **str, const char *delim);
|
||||
/* Removes every instance of character 'c' from 'str' */
|
||||
void string_remove_all_chars(char *str, char c);
|
||||
|
||||
/* Converts string to unsigned integer.
|
||||
* Returns 0 if string is invalid */
|
||||
unsigned string_to_unsigned(char *str);
|
||||
|
||||
RETRO_END_DECLS
|
||||
|
||||
#endif
|
||||
|
@ -318,3 +318,21 @@ void string_remove_all_chars(char *str, char c)
|
||||
|
||||
*write_ptr = '\0';
|
||||
}
|
||||
|
||||
/* Converts string to unsigned integer.
|
||||
* Returns 0 if string is invalid */
|
||||
unsigned string_to_unsigned(char *str)
|
||||
{
|
||||
char *ptr = NULL;
|
||||
|
||||
if (string_is_empty(str))
|
||||
return 0;
|
||||
|
||||
for (ptr = str; *ptr != '\0'; ptr++)
|
||||
{
|
||||
if (!isdigit(*ptr))
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (unsigned)strtoul(str, NULL, 10);
|
||||
}
|
||||
|
@ -641,6 +641,8 @@ generic_deferred_push_clear_general(deferred_push_dropdown_box_list_special, PUS
|
||||
generic_deferred_push_clear_general(deferred_push_dropdown_box_list_resolution, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_RESOLUTION)
|
||||
generic_deferred_push_clear_general(deferred_push_dropdown_box_list_playlist_default_core, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_DEFAULT_CORE)
|
||||
generic_deferred_push_clear_general(deferred_push_dropdown_box_list_playlist_label_display_mode, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LABEL_DISPLAY_MODE)
|
||||
generic_deferred_push_clear_general(deferred_push_dropdown_box_list_playlist_right_thumbnail_mode, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE)
|
||||
generic_deferred_push_clear_general(deferred_push_dropdown_box_list_playlist_left_thumbnail_mode, PUSH_DEFAULT, DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE)
|
||||
|
||||
static int menu_cbs_init_bind_deferred_push_compare_label(
|
||||
menu_file_list_cbs_t *cbs,
|
||||
@ -686,6 +688,16 @@ static int menu_cbs_init_bind_deferred_push_compare_label(
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_dropdown_box_list_playlist_label_display_mode);
|
||||
return 0;
|
||||
}
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_dropdown_box_list_playlist_right_thumbnail_mode);
|
||||
return 0;
|
||||
}
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_dropdown_box_list_playlist_left_thumbnail_mode);
|
||||
return 0;
|
||||
}
|
||||
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_BROWSE_URL_LIST)))
|
||||
{
|
||||
BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_browse_url_list);
|
||||
|
@ -1143,6 +1143,77 @@ static void menu_action_setting_disp_set_label_playlist_label_display_mode(
|
||||
}
|
||||
}
|
||||
|
||||
static const char *get_playlist_thumbnail_mode_value(playlist_t *playlist, enum playlist_thumbnail_id thumbnail_id)
|
||||
{
|
||||
enum playlist_thumbnail_mode thumbnail_mode =
|
||||
playlist_get_thumbnail_mode(playlist, thumbnail_id);
|
||||
|
||||
switch (thumbnail_mode)
|
||||
{
|
||||
case PLAYLIST_THUMBNAIL_MODE_OFF:
|
||||
return msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF);
|
||||
case PLAYLIST_THUMBNAIL_MODE_SCREENSHOTS:
|
||||
return msg_hash_to_str(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS);
|
||||
case PLAYLIST_THUMBNAIL_MODE_TITLE_SCREENS:
|
||||
return msg_hash_to_str(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_TITLE_SCREENS);
|
||||
case PLAYLIST_THUMBNAIL_MODE_BOXARTS:
|
||||
return msg_hash_to_str(MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_BOXARTS);
|
||||
default:
|
||||
/* PLAYLIST_THUMBNAIL_MODE_DEFAULT */
|
||||
break;
|
||||
}
|
||||
|
||||
return msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_THUMBNAIL_MODE_DEFAULT);
|
||||
}
|
||||
|
||||
static void menu_action_setting_disp_set_label_playlist_right_thumbnail_mode(
|
||||
file_list_t* list,
|
||||
unsigned *w, unsigned type, unsigned i,
|
||||
const char *label,
|
||||
char *s, size_t len,
|
||||
const char *path,
|
||||
char *s2, size_t len2)
|
||||
{
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
|
||||
*s = '\0';
|
||||
*w = 19;
|
||||
|
||||
strlcpy(s2, path, len2);
|
||||
|
||||
if (!playlist)
|
||||
return;
|
||||
|
||||
strlcpy(
|
||||
s,
|
||||
get_playlist_thumbnail_mode_value(playlist, PLAYLIST_THUMBNAIL_RIGHT),
|
||||
len);
|
||||
}
|
||||
|
||||
static void menu_action_setting_disp_set_label_playlist_left_thumbnail_mode(
|
||||
file_list_t* list,
|
||||
unsigned *w, unsigned type, unsigned i,
|
||||
const char *label,
|
||||
char *s, size_t len,
|
||||
const char *path,
|
||||
char *s2, size_t len2)
|
||||
{
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
|
||||
*s = '\0';
|
||||
*w = 19;
|
||||
|
||||
strlcpy(s2, path, len2);
|
||||
|
||||
if (!playlist)
|
||||
return;
|
||||
|
||||
strlcpy(
|
||||
s,
|
||||
get_playlist_thumbnail_mode_value(playlist, PLAYLIST_THUMBNAIL_LEFT),
|
||||
len);
|
||||
}
|
||||
|
||||
static void menu_action_setting_disp_set_label_core_options(file_list_t* list,
|
||||
unsigned *w, unsigned type, unsigned i,
|
||||
const char *label,
|
||||
@ -1394,6 +1465,14 @@ static int menu_cbs_init_bind_get_string_representation_compare_label(
|
||||
BIND_ACTION_GET_VALUE(cbs,
|
||||
menu_action_setting_disp_set_label_playlist_label_display_mode);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_GET_VALUE(cbs,
|
||||
menu_action_setting_disp_set_label_playlist_right_thumbnail_mode);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_GET_VALUE(cbs,
|
||||
menu_action_setting_disp_set_label_playlist_left_thumbnail_mode);
|
||||
break;
|
||||
default:
|
||||
return - 1;
|
||||
}
|
||||
|
@ -456,6 +456,47 @@ static int playlist_label_display_mode_left(unsigned type, const char *label,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void playlist_thumbnail_mode_left(playlist_t *playlist, enum playlist_thumbnail_id thumbnail_id,
|
||||
bool wraparound)
|
||||
{
|
||||
enum playlist_thumbnail_mode thumbnail_mode =
|
||||
playlist_get_thumbnail_mode(playlist, thumbnail_id);
|
||||
|
||||
if (thumbnail_mode > PLAYLIST_THUMBNAIL_MODE_DEFAULT)
|
||||
thumbnail_mode = (enum playlist_thumbnail_mode)((unsigned)thumbnail_mode - 1);
|
||||
else if (wraparound)
|
||||
thumbnail_mode = PLAYLIST_THUMBNAIL_MODE_BOXARTS;
|
||||
|
||||
playlist_set_thumbnail_mode(playlist, thumbnail_id, thumbnail_mode);
|
||||
playlist_write_file(playlist);
|
||||
}
|
||||
|
||||
static int playlist_right_thumbnail_mode_left(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
|
||||
if (!playlist)
|
||||
return -1;
|
||||
|
||||
playlist_thumbnail_mode_left(playlist, PLAYLIST_THUMBNAIL_RIGHT, wraparound);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int playlist_left_thumbnail_mode_left(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
|
||||
if (!playlist)
|
||||
return -1;
|
||||
|
||||
playlist_thumbnail_mode_left(playlist, PLAYLIST_THUMBNAIL_LEFT, wraparound);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int core_setting_left(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
@ -701,10 +742,15 @@ static int menu_cbs_init_bind_left_compare_label(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE:
|
||||
BIND_ACTION_LEFT(cbs, playlist_label_display_mode_left);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_LEFT(cbs, playlist_right_thumbnail_mode_left);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_LEFT(cbs, playlist_left_thumbnail_mode_left);
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -178,6 +178,10 @@ static enum msg_hash_enums action_ok_dl_to_enum(unsigned lbl)
|
||||
return MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_DEFAULT_CORE;
|
||||
case ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE:
|
||||
return MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE;
|
||||
case ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE:
|
||||
return MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE;
|
||||
case ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE:
|
||||
return MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE;
|
||||
case ACTION_OK_DL_MIXER_STREAM_SETTINGS_LIST:
|
||||
return MENU_ENUM_LABEL_DEFERRED_MIXER_STREAM_SETTINGS_LIST;
|
||||
case ACTION_OK_DL_ACCOUNTS_LIST:
|
||||
@ -444,6 +448,24 @@ int generic_action_ok_displaylist_push(const char *path,
|
||||
info.enum_idx = MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE;
|
||||
dl_type = DISPLAYLIST_GENERIC;
|
||||
break;
|
||||
case ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE:
|
||||
info.type = type;
|
||||
info.directory_ptr = idx;
|
||||
info_path = path;
|
||||
info_label = msg_hash_to_str(
|
||||
MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE);
|
||||
info.enum_idx = MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE;
|
||||
dl_type = DISPLAYLIST_GENERIC;
|
||||
break;
|
||||
case ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE:
|
||||
info.type = type;
|
||||
info.directory_ptr = idx;
|
||||
info_path = path;
|
||||
info_label = msg_hash_to_str(
|
||||
MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE);
|
||||
info.enum_idx = MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE;
|
||||
dl_type = DISPLAYLIST_GENERIC;
|
||||
break;
|
||||
case ACTION_OK_DL_USER_BINDS_LIST:
|
||||
info.type = type;
|
||||
info.directory_ptr = idx;
|
||||
@ -5428,6 +5450,34 @@ static int action_ok_push_dropdown_item_playlist_label_display_mode(const char *
|
||||
return action_cancel_pop_default(NULL, NULL, 0, 0);
|
||||
}
|
||||
|
||||
static int action_ok_push_dropdown_item_playlist_right_thumbnail_mode(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
|
||||
if (!playlist)
|
||||
return -1;
|
||||
|
||||
playlist_set_thumbnail_mode(playlist, PLAYLIST_THUMBNAIL_RIGHT, (enum playlist_thumbnail_mode)idx);
|
||||
playlist_write_file(playlist);
|
||||
|
||||
return action_cancel_pop_default(NULL, NULL, 0, 0);
|
||||
}
|
||||
|
||||
static int action_ok_push_dropdown_item_playlist_left_thumbnail_mode(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
|
||||
if (!playlist)
|
||||
return -1;
|
||||
|
||||
playlist_set_thumbnail_mode(playlist, PLAYLIST_THUMBNAIL_LEFT, (enum playlist_thumbnail_mode)idx);
|
||||
playlist_write_file(playlist);
|
||||
|
||||
return action_cancel_pop_default(NULL, NULL, 0, 0);
|
||||
}
|
||||
|
||||
static int action_ok_push_default(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
@ -5626,6 +5676,26 @@ static int action_ok_playlist_label_display_mode(const char *path,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_ok_playlist_right_thumbnail_mode(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
generic_action_ok_displaylist_push(
|
||||
NULL,
|
||||
NULL, NULL, 0, 0, 0,
|
||||
ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_ok_playlist_left_thumbnail_mode(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
generic_action_ok_displaylist_push(
|
||||
NULL,
|
||||
NULL, NULL, 0, 0, 0,
|
||||
ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_ok_netplay_enable_host(const char *path,
|
||||
const char *label, unsigned type, size_t idx, size_t entry_idx)
|
||||
{
|
||||
@ -6446,6 +6516,12 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE:
|
||||
BIND_ACTION_OK(cbs, action_ok_playlist_label_display_mode);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_OK(cbs, action_ok_playlist_right_thumbnail_mode);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_OK(cbs, action_ok_playlist_left_thumbnail_mode);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_UPDATE_ASSETS:
|
||||
BIND_ACTION_OK(cbs, action_ok_update_assets);
|
||||
break;
|
||||
@ -6615,6 +6691,12 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
|
||||
case MENU_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE:
|
||||
BIND_ACTION_OK(cbs, action_ok_playlist_label_display_mode);
|
||||
break;
|
||||
case MENU_LABEL_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_OK(cbs, action_ok_playlist_right_thumbnail_mode);
|
||||
break;
|
||||
case MENU_LABEL_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_OK(cbs, action_ok_playlist_left_thumbnail_mode);
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
@ -6741,6 +6823,12 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
|
||||
case MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LABEL_DISPLAY_MODE:
|
||||
BIND_ACTION_OK(cbs, action_ok_push_dropdown_item_playlist_label_display_mode);
|
||||
break;
|
||||
case MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_RIGHT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_OK(cbs, action_ok_push_dropdown_item_playlist_right_thumbnail_mode);
|
||||
break;
|
||||
case MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LEFT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_OK(cbs, action_ok_push_dropdown_item_playlist_left_thumbnail_mode);
|
||||
break;
|
||||
case MENU_SETTING_ACTION_CORE_DISK_OPTIONS:
|
||||
BIND_ACTION_OK(cbs, action_ok_push_default);
|
||||
break;
|
||||
|
@ -569,6 +569,47 @@ static int playlist_label_display_mode_right(unsigned type, const char *label,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void playlist_thumbnail_mode_right(playlist_t *playlist, enum playlist_thumbnail_id thumbnail_id,
|
||||
bool wraparound)
|
||||
{
|
||||
enum playlist_thumbnail_mode thumbnail_mode =
|
||||
playlist_get_thumbnail_mode(playlist, thumbnail_id);
|
||||
|
||||
if (thumbnail_mode < PLAYLIST_THUMBNAIL_MODE_BOXARTS)
|
||||
thumbnail_mode = (enum playlist_thumbnail_mode)((unsigned)thumbnail_mode + 1);
|
||||
else if (wraparound)
|
||||
thumbnail_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
|
||||
playlist_set_thumbnail_mode(playlist, thumbnail_id, thumbnail_mode);
|
||||
playlist_write_file(playlist);
|
||||
}
|
||||
|
||||
static int playlist_right_thumbnail_mode_right(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
|
||||
if (!playlist)
|
||||
return -1;
|
||||
|
||||
playlist_thumbnail_mode_right(playlist, PLAYLIST_THUMBNAIL_RIGHT, wraparound);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int playlist_left_thumbnail_mode_right(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
|
||||
if (!playlist)
|
||||
return -1;
|
||||
|
||||
playlist_thumbnail_mode_right(playlist, PLAYLIST_THUMBNAIL_LEFT, wraparound);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int core_setting_right(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
@ -850,6 +891,12 @@ static int menu_cbs_init_bind_right_compare_label(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE:
|
||||
BIND_ACTION_RIGHT(cbs, playlist_label_display_mode_right);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_RIGHT(cbs, playlist_right_thumbnail_mode_right);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_RIGHT(cbs, playlist_left_thumbnail_mode_right);
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
@ -271,6 +271,34 @@ static int action_start_playlist_label_display_mode(unsigned type, const char *l
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_start_playlist_right_thumbnail_mode(unsigned type, const char *label)
|
||||
{
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
|
||||
if (!playlist)
|
||||
return -1;
|
||||
|
||||
/* Set thumbnail_mode to default value */
|
||||
playlist_set_thumbnail_mode(playlist, PLAYLIST_THUMBNAIL_RIGHT, PLAYLIST_THUMBNAIL_MODE_DEFAULT);
|
||||
playlist_write_file(playlist);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_start_playlist_left_thumbnail_mode(unsigned type, const char *label)
|
||||
{
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
|
||||
if (!playlist)
|
||||
return -1;
|
||||
|
||||
/* Set thumbnail_mode to default value */
|
||||
playlist_set_thumbnail_mode(playlist, PLAYLIST_THUMBNAIL_LEFT, PLAYLIST_THUMBNAIL_MODE_DEFAULT);
|
||||
playlist_write_file(playlist);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int action_start_video_resolution(unsigned type, const char *label)
|
||||
{
|
||||
unsigned width = 0, height = 0;
|
||||
@ -354,6 +382,12 @@ static int menu_cbs_init_bind_start_compare_label(menu_file_list_cbs_t *cbs)
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE:
|
||||
BIND_ACTION_START(cbs, action_start_playlist_label_display_mode);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_START(cbs, action_start_playlist_right_thumbnail_mode);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE:
|
||||
BIND_ACTION_START(cbs, action_start_playlist_left_thumbnail_mode);
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
@ -133,6 +133,7 @@ default_sublabel_macro(action_bind_sublabel_playlist_settings_list, MENU_
|
||||
default_sublabel_macro(action_bind_sublabel_playlist_manager_list, MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_LIST)
|
||||
default_sublabel_macro(action_bind_sublabel_playlist_manager_default_core, MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_DEFAULT_CORE)
|
||||
default_sublabel_macro(action_bind_sublabel_playlist_manager_reset_cores, MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_RESET_CORES)
|
||||
default_sublabel_macro(action_bind_sublabel_playlist_manager_label_display_mode, MENU_ENUM_SUBLABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE)
|
||||
default_sublabel_macro(action_bind_sublabel_network_settings_list, MENU_ENUM_SUBLABEL_NETWORK_SETTINGS)
|
||||
default_sublabel_macro(action_bind_sublabel_network_on_demand_thumbnails, MENU_ENUM_SUBLABEL_NETWORK_ON_DEMAND_THUMBNAILS)
|
||||
default_sublabel_macro(action_bind_sublabel_user_settings_list, MENU_ENUM_SUBLABEL_USER_SETTINGS)
|
||||
@ -2475,6 +2476,37 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_RESET_CORES:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_playlist_manager_reset_cores);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_playlist_manager_label_display_mode);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE:
|
||||
settings = config_get_ptr();
|
||||
/* Uses same sublabels as MENU_ENUM_LABEL_THUMBNAILS */
|
||||
if (string_is_equal(settings->arrays.menu_driver, "rgui"))
|
||||
{
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_thumbnails_rgui);
|
||||
}
|
||||
else
|
||||
{
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_thumbnails);
|
||||
}
|
||||
break;
|
||||
case MENU_ENUM_LABEL_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE:
|
||||
settings = config_get_ptr();
|
||||
/* Uses same sublabels as MENU_ENUM_LABEL_LEFT_THUMBNAILS */
|
||||
if (string_is_equal(settings->arrays.menu_driver, "rgui"))
|
||||
{
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_left_thumbnails_rgui);
|
||||
}
|
||||
else if (string_is_equal(settings->arrays.menu_driver, "ozone"))
|
||||
{
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_left_thumbnails_ozone);
|
||||
}
|
||||
else
|
||||
{
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_left_thumbnails);
|
||||
}
|
||||
break;
|
||||
case MENU_ENUM_LABEL_USER_INTERFACE_SETTINGS:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_user_interface_settings_list);
|
||||
break;
|
||||
|
@ -1407,6 +1407,18 @@ int menu_cbs_init_bind_title(menu_file_list_cbs_t *cbs,
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_dropdown_item);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_dropdown_item);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_dropdown_item);
|
||||
return 0;
|
||||
}
|
||||
if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RPL_ENTRY_ACTIONS)))
|
||||
{
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_quick_menu_views_settings_list);
|
||||
|
@ -382,7 +382,7 @@ static void ozone_update_thumbnail_path(void *data, unsigned i, char pos)
|
||||
menu_thumbnail_get_core_name(ozone->thumbnail_path_data, &core_name);
|
||||
if (string_is_equal(core_name, "imageviewer"))
|
||||
{
|
||||
if ((pos == 'R') || (pos == 'L' && !menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT)))
|
||||
if ((pos == 'R') || (pos == 'L' && !menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_RIGHT)))
|
||||
menu_thumbnail_update_path(ozone->thumbnail_path_data, pos == 'R' ? MENU_THUMBNAIL_RIGHT : MENU_THUMBNAIL_LEFT);
|
||||
}
|
||||
else
|
||||
@ -467,7 +467,8 @@ static void ozone_refresh_thumbnail_image(void *data)
|
||||
|
||||
/* Only refresh thumbnails if thumbnails are enabled
|
||||
* and we are currently viewing a playlist */
|
||||
if ((menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT) || menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT)) &&
|
||||
if ((menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_RIGHT) ||
|
||||
menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_LEFT)) &&
|
||||
(ozone->is_playlist && ozone->depth == 1))
|
||||
ozone_update_thumbnail_image(ozone);
|
||||
}
|
||||
@ -660,10 +661,10 @@ static void ozone_context_reset(void *data, bool is_threaded)
|
||||
}
|
||||
|
||||
/* Thumbnails */
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT))
|
||||
if (menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_RIGHT))
|
||||
ozone_update_thumbnail_path(ozone, 0, 'R');
|
||||
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
ozone_update_thumbnail_path(ozone, 0, 'L');
|
||||
|
||||
ozone_update_thumbnail_image(ozone);
|
||||
@ -1388,14 +1389,15 @@ static void ozone_selection_changed(ozone_handle_t *ozone, bool allow_animation)
|
||||
ozone_update_scroll(ozone, allow_animation, node);
|
||||
|
||||
/* Update thumbnail */
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT) || menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_RIGHT) ||
|
||||
menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
{
|
||||
bool update_thumbnails = false;
|
||||
|
||||
/* Playlist updates */
|
||||
if (ozone->is_playlist && ozone->depth == 1)
|
||||
{
|
||||
ozone_set_thumbnail_content( ozone, "");
|
||||
ozone_set_thumbnail_content(ozone, "");
|
||||
update_thumbnails = true;
|
||||
}
|
||||
/* Database list updates
|
||||
@ -1408,19 +1410,19 @@ static void ozone_selection_changed(ozone_handle_t *ozone, bool allow_animation)
|
||||
/* Filebrowser image updates */
|
||||
else if (entry_type == FILE_TYPE_IMAGEVIEWER || entry_type == FILE_TYPE_IMAGE)
|
||||
{
|
||||
ozone_set_thumbnail_content(ozone, "imageviewer");
|
||||
ozone_set_thumbnail_content(ozone, "imageviewer");
|
||||
update_thumbnails = true;
|
||||
}
|
||||
|
||||
if (update_thumbnails)
|
||||
{
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT))
|
||||
if (menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_RIGHT))
|
||||
ozone_update_thumbnail_path(ozone, 0 /* will be ignored */, 'R');
|
||||
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
ozone_update_thumbnail_path(ozone, 0 /* will be ignored */, 'L');
|
||||
|
||||
ozone_update_thumbnail_image(ozone);
|
||||
ozone_update_thumbnail_image(ozone);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1785,7 +1787,8 @@ static void ozone_populate_entries(void *data, const char *path, const char *lab
|
||||
}
|
||||
|
||||
/* Thumbnails */
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT) || menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_RIGHT) ||
|
||||
menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
{
|
||||
ozone_unload_thumbnail_textures(ozone);
|
||||
|
||||
@ -1793,10 +1796,10 @@ static void ozone_populate_entries(void *data, const char *path, const char *lab
|
||||
{
|
||||
ozone_set_thumbnail_content(ozone, "");
|
||||
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT))
|
||||
if (menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_RIGHT))
|
||||
ozone_update_thumbnail_path(ozone, 0 /* will be ignored */, 'R');
|
||||
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
ozone_update_thumbnail_path(ozone, 0 /* will be ignored */, 'L');
|
||||
|
||||
ozone_update_thumbnail_image(ozone);
|
||||
|
@ -689,14 +689,14 @@ void ozone_draw_thumbnail_bar(ozone_handle_t *ozone, video_frame_info_t *video_i
|
||||
|
||||
/* Thumbnails */
|
||||
thumbnail = ozone->thumbnail &&
|
||||
menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT);
|
||||
menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_RIGHT);
|
||||
left_thumbnail = ozone->left_thumbnail &&
|
||||
menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT);
|
||||
menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_LEFT);
|
||||
|
||||
/* If user requested "left" thumbnail instead of content metadata
|
||||
* and no thumbnails are available, show a centered message and
|
||||
* return immediately */
|
||||
if (!thumbnail && !left_thumbnail && settings->uints.menu_left_thumbnails != 0)
|
||||
if (!thumbnail && !left_thumbnail && menu_thumbnail_is_enabled(ozone->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
{
|
||||
ozone_draw_no_thumbnail_available(ozone, video_info, x_position, sidebar_width, 0);
|
||||
return;
|
||||
|
@ -4347,10 +4347,11 @@ static void rgui_scan_selected_entry_thumbnail(rgui_t *rgui, bool force_load)
|
||||
if (menu_thumbnail_set_content_playlist(rgui->thumbnail_path_data,
|
||||
playlist_get_cached(), menu_navigation_get_selection()))
|
||||
{
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT))
|
||||
if (menu_thumbnail_is_enabled(rgui->thumbnail_path_data, MENU_THUMBNAIL_RIGHT))
|
||||
has_thumbnail = menu_thumbnail_update_path(rgui->thumbnail_path_data, MENU_THUMBNAIL_RIGHT);
|
||||
|
||||
if (settings->bools.menu_rgui_inline_thumbnails && menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (settings->bools.menu_rgui_inline_thumbnails &&
|
||||
menu_thumbnail_is_enabled(rgui->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
has_thumbnail = menu_thumbnail_update_path(rgui->thumbnail_path_data, MENU_THUMBNAIL_LEFT) ||
|
||||
has_thumbnail;
|
||||
}
|
||||
@ -4419,7 +4420,8 @@ static void rgui_refresh_thumbnail_image(void *userdata)
|
||||
|
||||
/* Only refresh thumbnails if thumbnails are enabled */
|
||||
if ((rgui->show_fs_thumbnail || settings->bools.menu_rgui_inline_thumbnails) &&
|
||||
(menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT) || menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT)))
|
||||
(menu_thumbnail_is_enabled(rgui->thumbnail_path_data, MENU_THUMBNAIL_RIGHT) ||
|
||||
menu_thumbnail_is_enabled(rgui->thumbnail_path_data, MENU_THUMBNAIL_LEFT)))
|
||||
{
|
||||
/* In all cases, reset current thumbnails */
|
||||
fs_thumbnail.width = 0;
|
||||
|
@ -937,7 +937,7 @@ static void xmb_update_thumbnail_path(void *data, unsigned i, char pos)
|
||||
menu_thumbnail_get_core_name(xmb->thumbnail_path_data, &core_name);
|
||||
if (string_is_equal(core_name, "imageviewer"))
|
||||
{
|
||||
if ((pos == 'R') || (pos == 'L' && !menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT)))
|
||||
if ((pos == 'R') || (pos == 'L' && !menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT)))
|
||||
menu_thumbnail_update_path(xmb->thumbnail_path_data, pos == 'R' ? MENU_THUMBNAIL_RIGHT : MENU_THUMBNAIL_LEFT);
|
||||
}
|
||||
else
|
||||
@ -1089,8 +1089,8 @@ static void xmb_refresh_thumbnail_image(void *data)
|
||||
return;
|
||||
|
||||
/* Only refresh thumbnails if thumbnails are enabled */
|
||||
if ( menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT) ||
|
||||
menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if ( menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT) ||
|
||||
menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
{
|
||||
unsigned depth = (unsigned)xmb_list_get_size(xmb, MENU_LIST_PLAIN);
|
||||
unsigned xmb_system_tab = xmb_get_system_tab(xmb, (unsigned)xmb->categories_selection_ptr);
|
||||
@ -1107,10 +1107,10 @@ static void xmb_refresh_thumbnail_image(void *data)
|
||||
(xmb_system_tab < XMB_SYSTEM_TAB_SETTINGS && depth == 4)) &&
|
||||
xmb->is_playlist)
|
||||
{
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT))
|
||||
if (menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT))
|
||||
xmb_update_thumbnail_path(xmb, 0 /* will be ignored */, 'R');
|
||||
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
xmb_update_thumbnail_path(xmb, 0 /* will be ignored */, 'L');
|
||||
|
||||
xmb_update_thumbnail_image(xmb);
|
||||
@ -1293,8 +1293,8 @@ static void xmb_selection_pointer_changed(
|
||||
ia = xmb->items_active_alpha;
|
||||
iz = xmb->items_active_zoom;
|
||||
if (
|
||||
menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT) ||
|
||||
menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT)
|
||||
menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT) ||
|
||||
menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT)
|
||||
)
|
||||
{
|
||||
bool update_thumbnails = false;
|
||||
@ -1325,10 +1325,10 @@ static void xmb_selection_pointer_changed(
|
||||
|
||||
if (update_thumbnails)
|
||||
{
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT))
|
||||
if (menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT))
|
||||
xmb_update_thumbnail_path(xmb, i /* will be ignored */, 'R');
|
||||
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
xmb_update_thumbnail_path(xmb, i /* will be ignored */, 'L');
|
||||
|
||||
xmb_update_thumbnail_image(xmb);
|
||||
@ -1534,8 +1534,8 @@ static void xmb_list_open_new(xmb_handle_t *xmb,
|
||||
|
||||
if (xmb_system_tab <= XMB_SYSTEM_TAB_SETTINGS)
|
||||
{
|
||||
if ( menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT) ||
|
||||
menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if ( menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT) ||
|
||||
menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
{
|
||||
/* This code is horrible, full of hacks...
|
||||
* This hack ensures that thumbnails are not cleared
|
||||
@ -1548,10 +1548,10 @@ static void xmb_list_open_new(xmb_handle_t *xmb,
|
||||
{
|
||||
xmb_set_thumbnail_content(xmb, NULL);
|
||||
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT))
|
||||
if (menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT))
|
||||
xmb_update_thumbnail_path(xmb, 0 /* will be ignored */, 'R');
|
||||
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
xmb_update_thumbnail_path(xmb, 0 /* will be ignored */, 'L');
|
||||
|
||||
xmb_update_thumbnail_image(xmb);
|
||||
@ -1886,7 +1886,8 @@ static void xmb_list_switch(xmb_handle_t *xmb)
|
||||
xmb_list_switch_new(xmb, selection_buf, dir, selection);
|
||||
xmb->categories_active_idx_old = (unsigned)xmb->categories_selection_ptr;
|
||||
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT) || menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT) ||
|
||||
menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
{
|
||||
xmb_unload_thumbnail_textures(xmb);
|
||||
|
||||
@ -1894,10 +1895,10 @@ static void xmb_list_switch(xmb_handle_t *xmb)
|
||||
{
|
||||
xmb_set_thumbnail_content(xmb, NULL);
|
||||
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT))
|
||||
if (menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT))
|
||||
xmb_update_thumbnail_path(xmb, 0 /* will be ignored */, 'R');
|
||||
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
xmb_update_thumbnail_path(xmb, 0 /* will be ignored */, 'L');
|
||||
|
||||
xmb_update_thumbnail_image(xmb);
|
||||
@ -2944,9 +2945,9 @@ static int xmb_draw_item(
|
||||
{
|
||||
if (xmb->savestate_thumbnail ||
|
||||
!xmb->use_ps3_layout ||
|
||||
(menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT)
|
||||
(menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT)
|
||||
&& xmb->thumbnail) ||
|
||||
(menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT)
|
||||
(menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT)
|
||||
&& xmb->left_thumbnail
|
||||
&& settings->bools.menu_xmb_vertical_thumbnails)
|
||||
)
|
||||
@ -3587,7 +3588,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
||||
xmb->icon_spacing_horizontal +
|
||||
pseudo_font_length + min_thumb_size) <= width))
|
||||
{
|
||||
if (xmb->thumbnail && menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT))
|
||||
if (xmb->thumbnail && menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT))
|
||||
{
|
||||
/* Limit thumbnail width */
|
||||
|
||||
@ -3653,7 +3654,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
||||
{
|
||||
/* Left Thumbnail in the left margin */
|
||||
|
||||
if (xmb->left_thumbnail && menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (xmb->left_thumbnail && menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
{
|
||||
/* Limit left thumbnail width */
|
||||
|
||||
@ -3718,7 +3719,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
||||
xmb->icon_spacing_horizontal +
|
||||
pseudo_font_length + min_thumb_size) <= width))
|
||||
{
|
||||
if (xmb->left_thumbnail && menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (xmb->left_thumbnail && menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
{
|
||||
/* Limit left thumbnail width */
|
||||
|
||||
@ -3782,7 +3783,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
||||
{
|
||||
/* Left Thumbnail in the left margin */
|
||||
|
||||
if (xmb->left_thumbnail && menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (xmb->left_thumbnail && menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
{
|
||||
/* Limit left thumbnail width */
|
||||
|
||||
@ -4024,7 +4025,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
||||
xmb->icon_spacing_horizontal +
|
||||
pseudo_font_length + min_thumb_size) <= width))
|
||||
{
|
||||
if (xmb->thumbnail && menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT))
|
||||
if (xmb->thumbnail && menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT))
|
||||
{
|
||||
/* Limit right thumbnail width */
|
||||
|
||||
@ -4087,7 +4088,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
||||
xmb->icon_spacing_horizontal +
|
||||
pseudo_font_length + min_thumb_size) <= width))
|
||||
{
|
||||
if (xmb->left_thumbnail && menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (xmb->left_thumbnail && menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
{
|
||||
/* Limit left thumbnail width */
|
||||
|
||||
@ -5195,12 +5196,13 @@ static void xmb_context_reset_internal(xmb_handle_t *xmb,
|
||||
|
||||
xmb_context_reset_horizontal_list(xmb);
|
||||
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT) || menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT) ||
|
||||
menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
{
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_RIGHT))
|
||||
if (menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_RIGHT))
|
||||
xmb_update_thumbnail_path(xmb, 0, 'R');
|
||||
|
||||
if (menu_thumbnail_is_enabled(MENU_THUMBNAIL_LEFT))
|
||||
if (menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT))
|
||||
xmb_update_thumbnail_path(xmb, 0, 'L');
|
||||
|
||||
xmb_update_thumbnail_image(xmb);
|
||||
|
@ -50,6 +50,8 @@ enum
|
||||
ACTION_OK_DL_DROPDOWN_BOX_LIST_RESOLUTION,
|
||||
ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_DEFAULT_CORE,
|
||||
ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE,
|
||||
ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE,
|
||||
ACTION_OK_DL_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE,
|
||||
ACTION_OK_DL_OPEN_ARCHIVE,
|
||||
ACTION_OK_DL_OPEN_ARCHIVE_DETECT_CORE,
|
||||
ACTION_OK_DL_MUSIC,
|
||||
|
@ -1762,15 +1762,17 @@ static int menu_displaylist_parse_horizontal_list(
|
||||
lpl_basename[0] = '\0';
|
||||
path_playlist[0] = '\0';
|
||||
|
||||
fill_pathname_base_noext(lpl_basename, item->path, sizeof(lpl_basename));
|
||||
menu_driver_set_thumbnail_system(lpl_basename, sizeof(lpl_basename));
|
||||
|
||||
fill_pathname_join(
|
||||
path_playlist,
|
||||
settings->paths.directory_playlist,
|
||||
item->path,
|
||||
sizeof(path_playlist));
|
||||
menu_displaylist_set_new_playlist(menu, path_playlist);
|
||||
|
||||
/* Thumbnail system must be set *after* playlist
|
||||
* is loaded/cached */
|
||||
fill_pathname_base_noext(lpl_basename, item->path, sizeof(lpl_basename));
|
||||
menu_driver_set_thumbnail_system(lpl_basename, sizeof(lpl_basename));
|
||||
}
|
||||
|
||||
playlist = playlist_get_cached();
|
||||
@ -2772,9 +2774,15 @@ static bool menu_displaylist_parse_playlist_manager_settings(
|
||||
menu_displaylist_info_t *info,
|
||||
const char *playlist_path)
|
||||
{
|
||||
enum msg_hash_enums right_thumbnail_label_value;
|
||||
enum msg_hash_enums left_thumbnail_label_value;
|
||||
settings_t *settings = config_get_ptr();
|
||||
const char *playlist_file = NULL;
|
||||
playlist_t *playlist = NULL;
|
||||
|
||||
if (!settings)
|
||||
return false;
|
||||
|
||||
if (string_is_empty(playlist_path))
|
||||
return false;
|
||||
|
||||
@ -2818,7 +2826,40 @@ static bool menu_displaylist_parse_playlist_manager_settings(
|
||||
MENU_ENUM_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE,
|
||||
MENU_SETTING_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE, 0, 0);
|
||||
|
||||
/* TODO: Add
|
||||
/* Thumbnail modes */
|
||||
|
||||
/* > Get label values */
|
||||
if (string_is_equal(settings->arrays.menu_driver, "rgui"))
|
||||
{
|
||||
right_thumbnail_label_value = MENU_ENUM_LABEL_VALUE_THUMBNAILS_RGUI;
|
||||
left_thumbnail_label_value = MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_RGUI;
|
||||
}
|
||||
else if (string_is_equal(settings->arrays.menu_driver, "ozone"))
|
||||
{
|
||||
right_thumbnail_label_value = MENU_ENUM_LABEL_VALUE_THUMBNAILS;
|
||||
left_thumbnail_label_value = MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS_OZONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
right_thumbnail_label_value = MENU_ENUM_LABEL_VALUE_THUMBNAILS;
|
||||
left_thumbnail_label_value = MENU_ENUM_LABEL_VALUE_LEFT_THUMBNAILS;
|
||||
}
|
||||
|
||||
/* > Right thumbnail mode */
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(right_thumbnail_label_value),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE),
|
||||
MENU_ENUM_LABEL_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE,
|
||||
MENU_SETTING_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE, 0, 0);
|
||||
|
||||
/* > Left thumbnail mode */
|
||||
menu_entries_append_enum(info->list,
|
||||
msg_hash_to_str(left_thumbnail_label_value),
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE),
|
||||
MENU_ENUM_LABEL_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE,
|
||||
MENU_SETTING_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE, 0, 0);
|
||||
|
||||
/* TODO - Add:
|
||||
* - Remove invalid entries */
|
||||
|
||||
return true;
|
||||
@ -3605,6 +3646,70 @@ typedef struct menu_displaylist_build_info_selective {
|
||||
bool checked;
|
||||
} menu_displaylist_build_info_selective_t;
|
||||
|
||||
static unsigned populate_playlist_thumbnail_mode_dropdown_list(
|
||||
file_list_t *list, enum playlist_thumbnail_id thumbnail_id)
|
||||
{
|
||||
unsigned count = 0;
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
|
||||
if (list && playlist)
|
||||
{
|
||||
size_t i;
|
||||
/* Get currently selected thumbnail mode */
|
||||
enum playlist_thumbnail_mode current_thumbnail_mode =
|
||||
playlist_get_thumbnail_mode(playlist, thumbnail_id);
|
||||
/* Get appropriate menu_settings_type (right/left) */
|
||||
enum menu_settings_type settings_type =
|
||||
(thumbnail_id == PLAYLIST_THUMBNAIL_RIGHT) ?
|
||||
MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_RIGHT_THUMBNAIL_MODE :
|
||||
MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LEFT_THUMBNAIL_MODE;
|
||||
|
||||
/* Loop over all thumbnail modes */
|
||||
for (i = 0; i <= (unsigned)PLAYLIST_THUMBNAIL_MODE_BOXARTS; i++)
|
||||
{
|
||||
enum msg_hash_enums label_value;
|
||||
enum playlist_thumbnail_mode thumbnail_mode =
|
||||
(enum playlist_thumbnail_mode)i;
|
||||
|
||||
/* Get appropriate entry label */
|
||||
switch (thumbnail_mode)
|
||||
{
|
||||
case PLAYLIST_THUMBNAIL_MODE_OFF:
|
||||
label_value = MENU_ENUM_LABEL_VALUE_OFF;
|
||||
break;
|
||||
case PLAYLIST_THUMBNAIL_MODE_SCREENSHOTS:
|
||||
label_value = MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS;
|
||||
break;
|
||||
case PLAYLIST_THUMBNAIL_MODE_TITLE_SCREENS:
|
||||
label_value = MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_TITLE_SCREENS;
|
||||
break;
|
||||
case PLAYLIST_THUMBNAIL_MODE_BOXARTS:
|
||||
label_value = MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_BOXARTS;
|
||||
break;
|
||||
default:
|
||||
/* PLAYLIST_THUMBNAIL_MODE_DEFAULT */
|
||||
label_value = MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_THUMBNAIL_MODE_DEFAULT;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Add entry */
|
||||
if (menu_entries_append_enum(list,
|
||||
msg_hash_to_str(label_value),
|
||||
"",
|
||||
MENU_ENUM_LABEL_NO_ITEMS,
|
||||
settings_type,
|
||||
0, 0))
|
||||
count++;
|
||||
|
||||
/* Add checkmark if item is currently selected */
|
||||
if (current_thumbnail_mode == thumbnail_mode)
|
||||
menu_entries_set_checked(list, i, true);
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ctl_state type)
|
||||
{
|
||||
unsigned i;
|
||||
@ -3829,72 +3934,66 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct
|
||||
break;
|
||||
case DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LABEL_DISPLAY_MODE:
|
||||
{
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
|
||||
if (playlist)
|
||||
{
|
||||
enum playlist_label_display_mode label_display_mode = playlist_get_label_display_mode(playlist);
|
||||
size_t i;
|
||||
enum playlist_label_display_mode current_display_mode =
|
||||
playlist_get_label_display_mode(playlist);
|
||||
|
||||
if (menu_entries_append_enum(list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_DEFAULT),
|
||||
"",
|
||||
MENU_ENUM_LABEL_NO_ITEMS,
|
||||
MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LABEL_DISPLAY_MODE,
|
||||
0, 0))
|
||||
count++;
|
||||
for (i = 0; i <= (unsigned)LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX; i++)
|
||||
{
|
||||
enum msg_hash_enums label_value;
|
||||
enum playlist_label_display_mode display_mode =
|
||||
(enum playlist_label_display_mode)i;
|
||||
|
||||
if (menu_entries_append_enum(list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_PARENS),
|
||||
"",
|
||||
MENU_ENUM_LABEL_NO_ITEMS,
|
||||
MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LABEL_DISPLAY_MODE,
|
||||
0, 0))
|
||||
count++;
|
||||
switch (display_mode)
|
||||
{
|
||||
case LABEL_DISPLAY_MODE_REMOVE_PARENTHESES:
|
||||
label_value = MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_PARENS;
|
||||
break;
|
||||
case LABEL_DISPLAY_MODE_REMOVE_BRACKETS:
|
||||
label_value = MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_BRACKETS;
|
||||
break;
|
||||
case LABEL_DISPLAY_MODE_REMOVE_PARENTHESES_AND_BRACKETS:
|
||||
label_value = MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_PARENS_AND_BRACKETS;
|
||||
break;
|
||||
case LABEL_DISPLAY_MODE_KEEP_REGION:
|
||||
label_value = MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION;
|
||||
break;
|
||||
case LABEL_DISPLAY_MODE_KEEP_DISC_INDEX:
|
||||
label_value = MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_DISC_INDEX;
|
||||
break;
|
||||
case LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX:
|
||||
label_value = MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX;
|
||||
break;
|
||||
default:
|
||||
/* LABEL_DISPLAY_MODE_DEFAULT */
|
||||
label_value = MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_DEFAULT;
|
||||
break;
|
||||
}
|
||||
|
||||
if (menu_entries_append_enum(list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_BRACKETS),
|
||||
"",
|
||||
MENU_ENUM_LABEL_NO_ITEMS,
|
||||
MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LABEL_DISPLAY_MODE,
|
||||
0, 0))
|
||||
count++;
|
||||
|
||||
if (menu_entries_append_enum(list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_PARENS_AND_BRACKETS),
|
||||
"",
|
||||
MENU_ENUM_LABEL_NO_ITEMS,
|
||||
MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LABEL_DISPLAY_MODE,
|
||||
0, 0))
|
||||
count++;
|
||||
|
||||
if (menu_entries_append_enum(list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION),
|
||||
"",
|
||||
MENU_ENUM_LABEL_NO_ITEMS,
|
||||
MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LABEL_DISPLAY_MODE,
|
||||
0, 0))
|
||||
count++;
|
||||
|
||||
if (menu_entries_append_enum(list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_DISC_INDEX),
|
||||
"",
|
||||
MENU_ENUM_LABEL_NO_ITEMS,
|
||||
MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LABEL_DISPLAY_MODE,
|
||||
0, 0))
|
||||
count++;
|
||||
|
||||
if (menu_entries_append_enum(list,
|
||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX),
|
||||
if (menu_entries_append_enum(list,
|
||||
msg_hash_to_str(label_value),
|
||||
"",
|
||||
MENU_ENUM_LABEL_NO_ITEMS,
|
||||
MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LABEL_DISPLAY_MODE,
|
||||
0, 0))
|
||||
count++;
|
||||
|
||||
menu_entries_set_checked(list, label_display_mode, true);
|
||||
if (current_display_mode == display_mode)
|
||||
menu_entries_set_checked(list, i, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE:
|
||||
count = populate_playlist_thumbnail_mode_dropdown_list(list, PLAYLIST_THUMBNAIL_RIGHT);
|
||||
break;
|
||||
case DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE:
|
||||
count = populate_playlist_thumbnail_mode_dropdown_list(list, PLAYLIST_THUMBNAIL_LEFT);
|
||||
break;
|
||||
case DISPLAYLIST_PERFCOUNTERS_CORE:
|
||||
case DISPLAYLIST_PERFCOUNTERS_FRONTEND:
|
||||
{
|
||||
@ -6803,6 +6902,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
||||
case DISPLAYLIST_DROPDOWN_LIST_RESOLUTION:
|
||||
case DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_DEFAULT_CORE:
|
||||
case DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LABEL_DISPLAY_MODE:
|
||||
case DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE:
|
||||
case DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE:
|
||||
case DISPLAYLIST_PERFCOUNTERS_CORE:
|
||||
case DISPLAYLIST_PERFCOUNTERS_FRONTEND:
|
||||
case DISPLAYLIST_MENU_SETTINGS_LIST:
|
||||
@ -6824,6 +6925,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
||||
case DISPLAYLIST_DROPDOWN_LIST_RESOLUTION:
|
||||
case DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_DEFAULT_CORE:
|
||||
case DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LABEL_DISPLAY_MODE:
|
||||
case DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE:
|
||||
case DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE:
|
||||
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),
|
||||
|
@ -58,6 +58,8 @@ enum menu_displaylist_ctl_state
|
||||
DISPLAYLIST_DROPDOWN_LIST_RESOLUTION,
|
||||
DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_DEFAULT_CORE,
|
||||
DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LABEL_DISPLAY_MODE,
|
||||
DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE,
|
||||
DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE,
|
||||
DISPLAYLIST_CDROM_DETAIL_INFO,
|
||||
DISPLAYLIST_INFO,
|
||||
DISPLAYLIST_HELP,
|
||||
|
@ -88,6 +88,8 @@ enum menu_settings_type
|
||||
MENU_SETTING_DROPDOWN_ITEM_RESOLUTION,
|
||||
MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_DEFAULT_CORE,
|
||||
MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LABEL_DISPLAY_MODE,
|
||||
MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_RIGHT_THUMBNAIL_MODE,
|
||||
MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LEFT_THUMBNAIL_MODE,
|
||||
MENU_SETTING_DROPDOWN_SETTING_CORE_OPTIONS_ITEM,
|
||||
MENU_SETTING_DROPDOWN_SETTING_STRING_OPTIONS_ITEM,
|
||||
MENU_SETTING_DROPDOWN_SETTING_FLOAT_ITEM,
|
||||
@ -123,6 +125,8 @@ enum menu_settings_type
|
||||
MENU_SETTING_ACTION_RESUME_ACHIEVEMENTS,
|
||||
MENU_SETTING_PLAYLIST_MANAGER_DEFAULT_CORE,
|
||||
MENU_SETTING_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE,
|
||||
MENU_SETTING_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE,
|
||||
MENU_SETTING_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE,
|
||||
MENU_WIFI,
|
||||
MENU_ROOM,
|
||||
MENU_ROOM_LAN,
|
||||
|
@ -51,6 +51,8 @@ struct menu_thumbnail_path_data
|
||||
char content_img[PATH_MAX_LENGTH];
|
||||
char right_path[PATH_MAX_LENGTH];
|
||||
char left_path[PATH_MAX_LENGTH];
|
||||
enum playlist_thumbnail_mode playlist_right_mode;
|
||||
enum playlist_thumbnail_mode playlist_left_mode;
|
||||
};
|
||||
|
||||
/* Initialisation */
|
||||
@ -65,6 +67,12 @@ menu_thumbnail_path_data_t *menu_thumbnail_path_init(void)
|
||||
calloc(1, sizeof(*path_data));
|
||||
if (!path_data)
|
||||
return NULL;
|
||||
|
||||
/* Set these manually, since the default enum
|
||||
* may not necessarily have a value of zero */
|
||||
path_data->playlist_right_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
path_data->playlist_left_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
|
||||
return path_data;
|
||||
}
|
||||
|
||||
@ -75,14 +83,17 @@ void menu_thumbnail_path_reset(menu_thumbnail_path_data_t *path_data)
|
||||
if (!path_data)
|
||||
return;
|
||||
|
||||
path_data->system[0] = '\0';
|
||||
path_data->content_path[0] = '\0';
|
||||
path_data->content_label[0] = '\0';
|
||||
path_data->system[0] = '\0';
|
||||
path_data->content_path[0] = '\0';
|
||||
path_data->content_label[0] = '\0';
|
||||
path_data->content_core_name[0] = '\0';
|
||||
path_data->content_db_name[0] = '\0';
|
||||
path_data->content_img[0] = '\0';
|
||||
path_data->right_path[0] = '\0';
|
||||
path_data->left_path[0] = '\0';
|
||||
path_data->content_db_name[0] = '\0';
|
||||
path_data->content_img[0] = '\0';
|
||||
path_data->right_path[0] = '\0';
|
||||
path_data->left_path[0] = '\0';
|
||||
|
||||
path_data->playlist_right_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
path_data->playlist_left_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
}
|
||||
|
||||
/* Utility Functions */
|
||||
@ -118,21 +129,27 @@ bool menu_thumbnail_get_sub_directory(unsigned type_idx, const char **sub_direct
|
||||
/* Returns currently set thumbnail 'type' (Named_Snaps,
|
||||
* Named_Titles, Named_Boxarts) for specified thumbnail
|
||||
* identifier (right, left) */
|
||||
const char *menu_thumbnail_get_type(enum menu_thumbnail_id thumbnail_id)
|
||||
const char *menu_thumbnail_get_type(menu_thumbnail_path_data_t *path_data, enum menu_thumbnail_id thumbnail_id)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
unsigned type = 0;
|
||||
|
||||
if (!settings)
|
||||
if (!path_data || !settings)
|
||||
return msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF);
|
||||
|
||||
switch (thumbnail_id)
|
||||
{
|
||||
case MENU_THUMBNAIL_RIGHT:
|
||||
type = settings->uints.menu_thumbnails;
|
||||
if (path_data->playlist_right_mode != PLAYLIST_THUMBNAIL_MODE_DEFAULT)
|
||||
type = (unsigned)path_data->playlist_right_mode - 1;
|
||||
else
|
||||
type = settings->uints.menu_thumbnails;
|
||||
break;
|
||||
case MENU_THUMBNAIL_LEFT:
|
||||
type = settings->uints.menu_left_thumbnails;
|
||||
if (path_data->playlist_left_mode != PLAYLIST_THUMBNAIL_MODE_DEFAULT)
|
||||
type = (unsigned)path_data->playlist_left_mode - 1;
|
||||
else
|
||||
type = settings->uints.menu_left_thumbnails;
|
||||
break;
|
||||
default:
|
||||
return msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF);
|
||||
@ -156,19 +173,25 @@ const char *menu_thumbnail_get_type(enum menu_thumbnail_id thumbnail_id)
|
||||
|
||||
/* Returns true if specified thumbnail is enabled
|
||||
* (i.e. if 'type' is not equal to MENU_ENUM_LABEL_VALUE_OFF) */
|
||||
bool menu_thumbnail_is_enabled(enum menu_thumbnail_id thumbnail_id)
|
||||
bool menu_thumbnail_is_enabled(menu_thumbnail_path_data_t *path_data, enum menu_thumbnail_id thumbnail_id)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
if (!settings)
|
||||
if (!path_data || !settings)
|
||||
return false;
|
||||
|
||||
switch (thumbnail_id)
|
||||
{
|
||||
case MENU_THUMBNAIL_RIGHT:
|
||||
return settings->uints.menu_thumbnails != 0;
|
||||
if (path_data->playlist_right_mode != PLAYLIST_THUMBNAIL_MODE_DEFAULT)
|
||||
return path_data->playlist_right_mode != PLAYLIST_THUMBNAIL_MODE_OFF;
|
||||
else
|
||||
return settings->uints.menu_thumbnails != 0;
|
||||
case MENU_THUMBNAIL_LEFT:
|
||||
return settings->uints.menu_left_thumbnails != 0;
|
||||
if (path_data->playlist_left_mode != PLAYLIST_THUMBNAIL_MODE_DEFAULT)
|
||||
return path_data->playlist_left_mode != PLAYLIST_THUMBNAIL_MODE_OFF;
|
||||
else
|
||||
return settings->uints.menu_left_thumbnails != 0;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -206,6 +229,8 @@ static void fill_content_img(menu_thumbnail_path_data_t *path_data)
|
||||
* associated database name */
|
||||
bool menu_thumbnail_set_system(menu_thumbnail_path_data_t *path_data, const char *system)
|
||||
{
|
||||
playlist_t *playlist = playlist_get_cached();
|
||||
|
||||
if (!path_data)
|
||||
return false;
|
||||
|
||||
@ -217,6 +242,10 @@ bool menu_thumbnail_set_system(menu_thumbnail_path_data_t *path_data, const char
|
||||
/* 'Reset' path_data system string */
|
||||
path_data->system[0] = '\0';
|
||||
|
||||
/* Must also reset playlist thumbnail display modes */
|
||||
path_data->playlist_right_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
path_data->playlist_left_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
|
||||
if (string_is_empty(system))
|
||||
return false;
|
||||
|
||||
@ -227,6 +256,44 @@ bool menu_thumbnail_set_system(menu_thumbnail_path_data_t *path_data, const char
|
||||
else
|
||||
strlcpy(path_data->system, system, sizeof(path_data->system));
|
||||
|
||||
/* Addendum: Now that we have per-playlist thumbnail display
|
||||
* modes, we must extract them here - otherwise
|
||||
* menu_thumbnail_is_enabled() will go out of sync */
|
||||
if (playlist)
|
||||
{
|
||||
/* History/favourites are a special case: 'system'
|
||||
* can only be set to these values if we have a
|
||||
* valid playlist (cf. menu_displaylist_parse_playlist()) */
|
||||
bool playlist_valid =
|
||||
string_is_equal(system, "history") ||
|
||||
string_is_equal(system, "favorites");
|
||||
|
||||
if (!playlist_valid)
|
||||
{
|
||||
/* This means we have to work a little harder
|
||||
* i.e. check whether the cached playlist file
|
||||
* matches the database name */
|
||||
const char *playlist_path = playlist_get_conf_path(playlist);
|
||||
char playlist_name[PATH_MAX_LENGTH];
|
||||
|
||||
playlist_name[0] = '\0';
|
||||
|
||||
if (!string_is_empty(playlist_path))
|
||||
fill_pathname_base_noext(playlist_name, playlist_path, sizeof(playlist_name));
|
||||
|
||||
playlist_valid = string_is_equal(playlist_name, system);
|
||||
}
|
||||
|
||||
/* If we have a valid playlist, extract thumbnail modes */
|
||||
if (playlist_valid)
|
||||
{
|
||||
path_data->playlist_right_mode =
|
||||
playlist_get_thumbnail_mode(playlist, PLAYLIST_THUMBNAIL_RIGHT);
|
||||
path_data->playlist_left_mode =
|
||||
playlist_get_thumbnail_mode(playlist, PLAYLIST_THUMBNAIL_LEFT);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -249,6 +316,10 @@ bool menu_thumbnail_set_content(menu_thumbnail_path_data_t *path_data, const cha
|
||||
path_data->content_db_name[0] = '\0';
|
||||
path_data->content_img[0] = '\0';
|
||||
|
||||
/* Must also reset playlist thumbnail display modes */
|
||||
path_data->playlist_right_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
path_data->playlist_left_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
|
||||
if (string_is_empty(label))
|
||||
return false;
|
||||
|
||||
@ -290,6 +361,10 @@ bool menu_thumbnail_set_content_image(menu_thumbnail_path_data_t *path_data, con
|
||||
path_data->content_db_name[0] = '\0';
|
||||
path_data->content_img[0] = '\0';
|
||||
|
||||
/* Must also reset playlist thumbnail display modes */
|
||||
path_data->playlist_right_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
path_data->playlist_left_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
|
||||
if (string_is_empty(img_dir))
|
||||
return false;
|
||||
|
||||
@ -347,7 +422,7 @@ bool menu_thumbnail_set_content_playlist(menu_thumbnail_path_data_t *path_data,
|
||||
const char *core_name = NULL;
|
||||
const char *db_name = NULL;
|
||||
const struct playlist_entry *entry = NULL;
|
||||
|
||||
|
||||
if (!path_data)
|
||||
return false;
|
||||
|
||||
@ -363,6 +438,10 @@ bool menu_thumbnail_set_content_playlist(menu_thumbnail_path_data_t *path_data,
|
||||
path_data->content_db_name[0] = '\0';
|
||||
path_data->content_img[0] = '\0';
|
||||
|
||||
/* Must also reset playlist thumbnail display modes */
|
||||
path_data->playlist_right_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
path_data->playlist_left_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
|
||||
if (!playlist)
|
||||
return false;
|
||||
|
||||
@ -437,6 +516,14 @@ bool menu_thumbnail_set_content_playlist(menu_thumbnail_path_data_t *path_data,
|
||||
}
|
||||
}
|
||||
|
||||
/* Playlist entry is valid -> it is now 'safe' to
|
||||
* extract any remaining playlist metadata
|
||||
* (i.e. thumbnail display modes) */
|
||||
path_data->playlist_right_mode =
|
||||
playlist_get_thumbnail_mode(playlist, PLAYLIST_THUMBNAIL_RIGHT);
|
||||
path_data->playlist_left_mode =
|
||||
playlist_get_thumbnail_mode(playlist, PLAYLIST_THUMBNAIL_LEFT);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -452,7 +539,7 @@ bool menu_thumbnail_set_content_playlist(menu_thumbnail_path_data_t *path_data,
|
||||
bool menu_thumbnail_update_path(menu_thumbnail_path_data_t *path_data, enum menu_thumbnail_id thumbnail_id)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
const char *type = menu_thumbnail_get_type(thumbnail_id);
|
||||
const char *type = menu_thumbnail_get_type(path_data, thumbnail_id);
|
||||
const char *system_name = NULL;
|
||||
char *thumbnail_path = NULL;
|
||||
char content_dir[PATH_MAX_LENGTH];
|
||||
@ -483,7 +570,7 @@ bool menu_thumbnail_update_path(menu_thumbnail_path_data_t *path_data, enum menu
|
||||
if (string_is_empty(settings->paths.directory_thumbnails))
|
||||
return false;
|
||||
|
||||
if (!menu_thumbnail_is_enabled(thumbnail_id))
|
||||
if (!menu_thumbnail_is_enabled(path_data, thumbnail_id))
|
||||
return false;
|
||||
|
||||
/* Generate new path */
|
||||
|
@ -73,11 +73,11 @@ bool menu_thumbnail_get_sub_directory(unsigned type_idx, const char **sub_direct
|
||||
/* Returns currently set thumbnail 'type' (Named_Snaps,
|
||||
* Named_Titles, Named_Boxarts) for specified thumbnail
|
||||
* identifier (right, left) */
|
||||
const char *menu_thumbnail_get_type(enum menu_thumbnail_id thumbnail_id);
|
||||
const char *menu_thumbnail_get_type(menu_thumbnail_path_data_t *path_data, enum menu_thumbnail_id thumbnail_id);
|
||||
|
||||
/* Returns true if specified thumbnail is enabled
|
||||
* (i.e. if 'type' is not equal to MENU_ENUM_LABEL_VALUE_OFF) */
|
||||
bool menu_thumbnail_is_enabled(enum menu_thumbnail_id thumbnail_id);
|
||||
bool menu_thumbnail_is_enabled(menu_thumbnail_path_data_t *path_data, enum menu_thumbnail_id thumbnail_id);
|
||||
|
||||
/* Setters */
|
||||
|
||||
|
24
msg_hash.h
24
msg_hash.h
@ -1154,6 +1154,8 @@ enum msg_hash_enums
|
||||
MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_RESOLUTION,
|
||||
MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_DEFAULT_CORE,
|
||||
MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LABEL_DISPLAY_MODE,
|
||||
MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE,
|
||||
MENU_ENUM_LABEL_DEFERRED_DROPDOWN_BOX_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE,
|
||||
MENU_ENUM_LABEL_DEFERRED_MIXER_STREAM_SETTINGS_LIST,
|
||||
MENU_ENUM_LABEL_DEFERRED_CONFIGURATIONS_LIST,
|
||||
MENU_ENUM_LABEL_DEFERRED_FAVORITES_LIST,
|
||||
@ -1842,13 +1844,18 @@ enum msg_hash_enums
|
||||
|
||||
MENU_LABEL(PLAYLIST_MANAGER_LABEL_DISPLAY_MODE),
|
||||
|
||||
MENU_LABEL(PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_DEFAULT),
|
||||
MENU_LABEL(PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_PARENS),
|
||||
MENU_LABEL(PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_BRACKETS),
|
||||
MENU_LABEL(PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_PARENS_AND_BRACKETS),
|
||||
MENU_LABEL(PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION),
|
||||
MENU_LABEL(PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_DISC_INDEX),
|
||||
MENU_LABEL(PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX),
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_DEFAULT,
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_PARENS,
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_BRACKETS,
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_PARENS_AND_BRACKETS,
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION,
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_DISC_INDEX,
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX,
|
||||
|
||||
MENU_LABEL(PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE),
|
||||
MENU_LABEL(PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE),
|
||||
|
||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_THUMBNAIL_MODE_DEFAULT,
|
||||
|
||||
MENU_LABEL(CORE_UPDATER_SETTINGS),
|
||||
MENU_LABEL(LAKKA_SERVICES),
|
||||
@ -2555,6 +2562,9 @@ enum msg_hash_enums
|
||||
|
||||
#define MENU_LABEL_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE 0xE0E1CD5BU
|
||||
|
||||
#define MENU_LABEL_PLAYLIST_MANAGER_RIGHT_THUMBNAIL_MODE 0x9F3BC635U
|
||||
#define MENU_LABEL_PLAYLIST_MANAGER_LEFT_THUMBNAIL_MODE 0x6B80B382U
|
||||
|
||||
/* Menu settings */
|
||||
#define MENU_LABEL_XMB_FONT 0x0ECA56CA2
|
||||
|
||||
|
188
playlist.c
188
playlist.c
@ -43,10 +43,13 @@
|
||||
struct content_playlist
|
||||
{
|
||||
bool modified;
|
||||
enum playlist_label_display_mode label_display_mode;
|
||||
size_t size;
|
||||
size_t cap;
|
||||
|
||||
enum playlist_label_display_mode label_display_mode;
|
||||
enum playlist_thumbnail_mode right_thumbnail_mode;
|
||||
enum playlist_thumbnail_mode left_thumbnail_mode;
|
||||
|
||||
char *conf_path;
|
||||
char *default_core_path;
|
||||
char *default_core_name;
|
||||
@ -227,13 +230,6 @@ char *playlist_get_conf_path(playlist_t *playlist)
|
||||
return playlist->conf_path;
|
||||
}
|
||||
|
||||
enum playlist_label_display_mode playlist_get_label_display_mode(playlist_t *playlist)
|
||||
{
|
||||
if (!playlist)
|
||||
return LABEL_DISPLAY_MODE_DEFAULT;
|
||||
return playlist->label_display_mode;
|
||||
}
|
||||
|
||||
/**
|
||||
* playlist_get_index:
|
||||
* @playlist : Playlist handle.
|
||||
@ -1217,24 +1213,25 @@ void playlist_write_file(playlist_t *playlist)
|
||||
playlist->entries[i].db_name ? playlist->entries[i].db_name : ""
|
||||
);
|
||||
|
||||
/* Add default core assignment metadata lines
|
||||
/* Add metadata lines
|
||||
* (we add these at the end of the file to prevent
|
||||
* breakage if the playlist is loaded with an older
|
||||
* version of RetroArch */
|
||||
if (!string_is_empty(playlist->default_core_path) &&
|
||||
!string_is_empty(playlist->default_core_name))
|
||||
{
|
||||
filestream_printf(file, "default_core_path = \"%s\"\ndefault_core_name = \"%s\"\nlabel_display_mode = \"%d\"\n",
|
||||
playlist->default_core_path,
|
||||
playlist->default_core_name,
|
||||
playlist->label_display_mode
|
||||
);
|
||||
}
|
||||
filestream_printf(
|
||||
file,
|
||||
"default_core_path = \"%s\"\n"
|
||||
"default_core_name = \"%s\"\n"
|
||||
"label_display_mode = \"%d\"\n"
|
||||
"thumbnail_mode = \"%d|%d\"\n",
|
||||
playlist->default_core_path ? "" : playlist->default_core_path,
|
||||
playlist->default_core_name ? "" : playlist->default_core_name,
|
||||
playlist->label_display_mode,
|
||||
playlist->right_thumbnail_mode, playlist->left_thumbnail_mode);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
char label_display_mode[4] = {0};
|
||||
char uint_str[4];
|
||||
JSONContext context = {0};
|
||||
context.writer = JSON_Writer_Create(NULL);
|
||||
context.file = file;
|
||||
@ -1258,7 +1255,7 @@ void playlist_write_file(playlist_t *playlist)
|
||||
JSON_Writer_WriteColon(context.writer);
|
||||
JSON_Writer_WriteSpace(context.writer, 1);
|
||||
JSON_Writer_WriteString(context.writer, "1.2",
|
||||
STRLEN_CONST("1.2"), JSON_UTF8);
|
||||
STRLEN_CONST("1.3"), JSON_UTF8);
|
||||
JSON_Writer_WriteComma(context.writer);
|
||||
JSON_Writer_WriteNewLine(context.writer);
|
||||
|
||||
@ -1294,15 +1291,42 @@ void playlist_write_file(playlist_t *playlist)
|
||||
JSON_Writer_WriteComma(context.writer);
|
||||
JSON_Writer_WriteNewLine(context.writer);
|
||||
|
||||
snprintf(label_display_mode, sizeof(label_display_mode), "%u", playlist->label_display_mode);
|
||||
uint_str[0] = '\0';
|
||||
snprintf(uint_str, sizeof(uint_str), "%u", playlist->label_display_mode);
|
||||
|
||||
JSON_Writer_WriteSpace(context.writer, 2);
|
||||
JSON_Writer_WriteString(context.writer, "label_display_mode",
|
||||
STRLEN_CONST("label_display_mode"), JSON_UTF8);
|
||||
JSON_Writer_WriteColon(context.writer);
|
||||
JSON_Writer_WriteSpace(context.writer, 1);
|
||||
JSON_Writer_WriteNumber(context.writer, label_display_mode,
|
||||
strlen(label_display_mode), JSON_UTF8);
|
||||
JSON_Writer_WriteNumber(context.writer, uint_str,
|
||||
strlen(uint_str), JSON_UTF8);
|
||||
JSON_Writer_WriteComma(context.writer);
|
||||
JSON_Writer_WriteNewLine(context.writer);
|
||||
|
||||
uint_str[0] = '\0';
|
||||
snprintf(uint_str, sizeof(uint_str), "%u", playlist->right_thumbnail_mode);
|
||||
|
||||
JSON_Writer_WriteSpace(context.writer, 2);
|
||||
JSON_Writer_WriteString(context.writer, "right_thumbnail_mode",
|
||||
STRLEN_CONST("right_thumbnail_mode"), JSON_UTF8);
|
||||
JSON_Writer_WriteColon(context.writer);
|
||||
JSON_Writer_WriteSpace(context.writer, 1);
|
||||
JSON_Writer_WriteNumber(context.writer, uint_str,
|
||||
strlen(uint_str), JSON_UTF8);
|
||||
JSON_Writer_WriteComma(context.writer);
|
||||
JSON_Writer_WriteNewLine(context.writer);
|
||||
|
||||
uint_str[0] = '\0';
|
||||
snprintf(uint_str, sizeof(uint_str), "%u", playlist->left_thumbnail_mode);
|
||||
|
||||
JSON_Writer_WriteSpace(context.writer, 2);
|
||||
JSON_Writer_WriteString(context.writer, "left_thumbnail_mode",
|
||||
STRLEN_CONST("left_thumbnail_mode"), JSON_UTF8);
|
||||
JSON_Writer_WriteColon(context.writer);
|
||||
JSON_Writer_WriteSpace(context.writer, 1);
|
||||
JSON_Writer_WriteNumber(context.writer, uint_str,
|
||||
strlen(uint_str), JSON_UTF8);
|
||||
JSON_Writer_WriteComma(context.writer);
|
||||
JSON_Writer_WriteNewLine(context.writer);
|
||||
|
||||
@ -1892,6 +1916,10 @@ static JSON_Parser_HandlerResult JSONObjectMemberHandler(JSON_Parser parser, cha
|
||||
pCtx->current_meta_val = &pCtx->playlist->default_core_name;
|
||||
else if (string_is_equal(pValue, "label_display_mode"))
|
||||
pCtx->current_meta_int_val = (int*)&pCtx->playlist->label_display_mode;
|
||||
else if (string_is_equal(pValue, "right_thumbnail_mode"))
|
||||
pCtx->current_meta_int_val = (int*)&pCtx->playlist->right_thumbnail_mode;
|
||||
else if (string_is_equal(pValue, "left_thumbnail_mode"))
|
||||
pCtx->current_meta_int_val = (int*)&pCtx->playlist->left_thumbnail_mode;
|
||||
else
|
||||
{
|
||||
/* ignore unknown members */
|
||||
@ -2088,8 +2116,8 @@ json_cleanup:
|
||||
metadata_char = filestream_getc(file);
|
||||
}
|
||||
|
||||
/* Search backwards for the next three newlines */
|
||||
while (metadata_counter < 3)
|
||||
/* Search backwards for the next four newlines */
|
||||
while (metadata_counter < 4)
|
||||
{
|
||||
filestream_seek(file, -2, SEEK_CUR);
|
||||
if (filestream_error(file))
|
||||
@ -2128,19 +2156,57 @@ json_cleanup:
|
||||
metadata_line,
|
||||
STRLEN_CONST("label_display_mode")) == 0)
|
||||
{
|
||||
char *start = NULL;
|
||||
start = strchr(metadata_line, '\"');
|
||||
unsigned display_mode;
|
||||
char display_mode_str[4] = {0};
|
||||
|
||||
if (start)
|
||||
get_old_format_metadata_value(
|
||||
metadata_line, display_mode_str, sizeof(display_mode_str));
|
||||
|
||||
display_mode = string_to_unsigned(display_mode_str);
|
||||
|
||||
if (display_mode <= LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX)
|
||||
playlist->label_display_mode = (enum playlist_label_display_mode)display_mode;
|
||||
}
|
||||
|
||||
/* > Get thumbnail modes */
|
||||
if (!filestream_gets(file, metadata_line, sizeof(metadata_line)))
|
||||
goto end;
|
||||
|
||||
if (strncmp("thumbnail_mode",
|
||||
metadata_line,
|
||||
STRLEN_CONST("thumbnail_mode")) == 0)
|
||||
{
|
||||
char thumbnail_mode_str[8] = {0};
|
||||
struct string_list *thumbnail_modes = NULL;
|
||||
|
||||
get_old_format_metadata_value(
|
||||
metadata_line, thumbnail_mode_str, sizeof(thumbnail_mode_str));
|
||||
|
||||
thumbnail_modes = string_split(thumbnail_mode_str, "|");
|
||||
|
||||
if (thumbnail_modes)
|
||||
{
|
||||
start++;
|
||||
if (thumbnail_modes->size == 2)
|
||||
{
|
||||
unsigned thumbnail_mode;
|
||||
|
||||
if (*start >= '0' && *start <= '9')
|
||||
playlist->label_display_mode = (enum playlist_label_display_mode)(*start - '0');
|
||||
/* Right thumbnail mode */
|
||||
thumbnail_mode = string_to_unsigned(thumbnail_modes->elems[0].data);
|
||||
if (thumbnail_mode <= PLAYLIST_THUMBNAIL_MODE_BOXARTS)
|
||||
playlist->right_thumbnail_mode = (enum playlist_thumbnail_mode)thumbnail_mode;
|
||||
|
||||
/* Left thumbnail mode */
|
||||
thumbnail_mode = string_to_unsigned(thumbnail_modes->elems[1].data);
|
||||
if (thumbnail_mode <= PLAYLIST_THUMBNAIL_MODE_BOXARTS)
|
||||
playlist->left_thumbnail_mode = (enum playlist_thumbnail_mode)thumbnail_mode;
|
||||
}
|
||||
|
||||
string_list_free(thumbnail_modes);
|
||||
}
|
||||
}
|
||||
|
||||
/* > Populate playlist fields, if required */
|
||||
/* > Populate default core path/name, if required
|
||||
* (if one is empty, the other should be ignored) */
|
||||
if (!string_is_empty(default_core_path) &&
|
||||
!string_is_empty(default_core_name))
|
||||
{
|
||||
@ -2245,14 +2311,16 @@ playlist_t *playlist_init(const char *path, size_t size)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
playlist->modified = false;
|
||||
playlist->size = 0;
|
||||
playlist->cap = size;
|
||||
playlist->conf_path = strdup(path);
|
||||
playlist->default_core_name = NULL;
|
||||
playlist->default_core_path = NULL;
|
||||
playlist->entries = entries;
|
||||
playlist->label_display_mode = LABEL_DISPLAY_MODE_DEFAULT;
|
||||
playlist->modified = false;
|
||||
playlist->size = 0;
|
||||
playlist->cap = size;
|
||||
playlist->conf_path = strdup(path);
|
||||
playlist->default_core_name = NULL;
|
||||
playlist->default_core_path = NULL;
|
||||
playlist->entries = entries;
|
||||
playlist->label_display_mode = LABEL_DISPLAY_MODE_DEFAULT;
|
||||
playlist->right_thumbnail_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
playlist->left_thumbnail_mode = PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
|
||||
playlist_read_file(playlist, path);
|
||||
|
||||
@ -2439,6 +2507,28 @@ char *playlist_get_default_core_name(playlist_t *playlist)
|
||||
return playlist->default_core_name;
|
||||
}
|
||||
|
||||
enum playlist_label_display_mode playlist_get_label_display_mode(playlist_t *playlist)
|
||||
{
|
||||
if (!playlist)
|
||||
return LABEL_DISPLAY_MODE_DEFAULT;
|
||||
return playlist->label_display_mode;
|
||||
}
|
||||
|
||||
enum playlist_thumbnail_mode playlist_get_thumbnail_mode(
|
||||
playlist_t *playlist, enum playlist_thumbnail_id thumbnail_id)
|
||||
{
|
||||
if (!playlist)
|
||||
return PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
|
||||
if (thumbnail_id == PLAYLIST_THUMBNAIL_RIGHT)
|
||||
return playlist->right_thumbnail_mode;
|
||||
else if (thumbnail_id == PLAYLIST_THUMBNAIL_LEFT)
|
||||
return playlist->left_thumbnail_mode;
|
||||
|
||||
/* Fallback */
|
||||
return PLAYLIST_THUMBNAIL_MODE_DEFAULT;
|
||||
}
|
||||
|
||||
void playlist_set_default_core_path(playlist_t *playlist, const char *core_path)
|
||||
{
|
||||
char real_core_path[PATH_MAX_LENGTH];
|
||||
@ -2489,3 +2579,21 @@ void playlist_set_label_display_mode(playlist_t *playlist, enum playlist_label_d
|
||||
playlist->modified = true;
|
||||
}
|
||||
}
|
||||
|
||||
void playlist_set_thumbnail_mode(
|
||||
playlist_t *playlist, enum playlist_thumbnail_id thumbnail_id, enum playlist_thumbnail_mode thumbnail_mode)
|
||||
{
|
||||
if (!playlist)
|
||||
return;
|
||||
|
||||
if (thumbnail_id == PLAYLIST_THUMBNAIL_RIGHT)
|
||||
{
|
||||
playlist->right_thumbnail_mode = thumbnail_mode;
|
||||
playlist->modified = true;
|
||||
}
|
||||
else if (thumbnail_id == PLAYLIST_THUMBNAIL_LEFT)
|
||||
{
|
||||
playlist->left_thumbnail_mode = thumbnail_mode;
|
||||
playlist->modified = true;
|
||||
}
|
||||
}
|
||||
|
26
playlist.h
26
playlist.h
@ -40,8 +40,8 @@ enum playlist_runtime_status
|
||||
|
||||
enum playlist_file_mode
|
||||
{
|
||||
PLAYLIST_LOAD,
|
||||
PLAYLIST_SAVE
|
||||
PLAYLIST_LOAD = 0,
|
||||
PLAYLIST_SAVE
|
||||
};
|
||||
|
||||
enum playlist_label_display_mode
|
||||
@ -55,6 +55,24 @@ enum playlist_label_display_mode
|
||||
LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX
|
||||
};
|
||||
|
||||
enum playlist_thumbnail_mode
|
||||
{
|
||||
PLAYLIST_THUMBNAIL_MODE_DEFAULT = 0,
|
||||
PLAYLIST_THUMBNAIL_MODE_OFF,
|
||||
PLAYLIST_THUMBNAIL_MODE_SCREENSHOTS,
|
||||
PLAYLIST_THUMBNAIL_MODE_TITLE_SCREENS,
|
||||
PLAYLIST_THUMBNAIL_MODE_BOXARTS
|
||||
};
|
||||
|
||||
/* Note: We already have a left/right enum defined
|
||||
* in menu_thumbnail_path.h - but we can't include
|
||||
* menu code here, so have to make a 'duplicate'... */
|
||||
enum playlist_thumbnail_id
|
||||
{
|
||||
PLAYLIST_THUMBNAIL_RIGHT = 0,
|
||||
PLAYLIST_THUMBNAIL_LEFT
|
||||
};
|
||||
|
||||
struct playlist_entry
|
||||
{
|
||||
char *path;
|
||||
@ -237,10 +255,14 @@ void playlist_get_db_name(playlist_t *playlist, size_t idx,
|
||||
char *playlist_get_default_core_path(playlist_t *playlist);
|
||||
char *playlist_get_default_core_name(playlist_t *playlist);
|
||||
enum playlist_label_display_mode playlist_get_label_display_mode(playlist_t *playlist);
|
||||
enum playlist_thumbnail_mode playlist_get_thumbnail_mode(
|
||||
playlist_t *playlist, enum playlist_thumbnail_id thumbnail_id);
|
||||
|
||||
void playlist_set_default_core_path(playlist_t *playlist, const char *core_path);
|
||||
void playlist_set_default_core_name(playlist_t *playlist, const char *core_name);
|
||||
void playlist_set_label_display_mode(playlist_t *playlist, enum playlist_label_display_mode label_display_mode);
|
||||
void playlist_set_thumbnail_mode(
|
||||
playlist_t *playlist, enum playlist_thumbnail_id thumbnail_id, enum playlist_thumbnail_mode thumbnail_mode);
|
||||
|
||||
RETRO_END_DECLS
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user