Merge pull request #2809 from lakkatv/master

(XMB) Theme switching
This commit is contained in:
Twinaphex 2016-03-21 20:56:53 +01:00
commit cf0dd7f5e8
9 changed files with 83 additions and 8 deletions

View File

@ -511,6 +511,7 @@ static bool default_block_config_read = true;
static unsigned xmb_scale_factor = 100;
static unsigned xmb_alpha_factor = 75;
static unsigned xmb_theme = 0;
static bool show_advanced_settings = true;
static const uint32_t menu_entry_normal_color = 0xffffffff;

View File

@ -480,6 +480,7 @@ static void config_set_defaults(void)
def_menu, sizeof(settings->menu.driver));
settings->menu.xmb_scale_factor = xmb_scale_factor;
settings->menu.xmb_alpha_factor = xmb_alpha_factor;
settings->menu.xmb_theme = xmb_theme;
settings->menu.xmb_font[0] = '\0';
settings->menu.throttle_framerate = true;
settings->menu.linear_filter = true;
@ -1530,6 +1531,7 @@ static bool config_load_file(const char *path, bool set_defaults)
config_get_array(conf, "menu_driver", settings->menu.driver, sizeof(settings->menu.driver));
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_scale_factor, "xmb_scale_factor");
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_alpha_factor, "xmb_alpha_factor");
CONFIG_GET_INT_BASE(conf, settings, menu.xmb_theme, "xmb_theme");
config_get_path(conf, "xmb_font", settings->menu.xmb_font, sizeof(settings->menu.xmb_font));
#endif
config_get_array(conf, "video_context_driver", settings->video.context_driver, sizeof(settings->video.context_driver));
@ -2754,6 +2756,7 @@ bool config_save_file(const char *path)
#ifdef HAVE_MENU
config_set_int(conf, "xmb_scale_factor", settings->menu.xmb_scale_factor);
config_set_int(conf, "xmb_alpha_factor", settings->menu.xmb_alpha_factor);
config_set_int(conf, "xmb_theme", settings->menu.xmb_theme);
config_set_path(conf, "xmb_font",
!string_is_empty(settings->menu.xmb_font) ? settings->menu.xmb_font : "");
config_set_path(conf, "rgui_browser_directory",

View File

@ -166,6 +166,7 @@ typedef struct settings
unsigned title_color;
unsigned xmb_scale_factor;
unsigned xmb_alpha_factor;
unsigned xmb_theme;
char xmb_font[PATH_MAX_LENGTH];
bool throttle_framerate;
bool linear_filter;

View File

@ -585,6 +585,36 @@ static void menu_action_setting_disp_set_label_poll_type_behavior(
}
}
static void menu_action_setting_disp_set_label_xmb_theme(
file_list_t* list,
unsigned *w, unsigned type, unsigned i,
const char *label,
char *s, size_t len,
const char *entry_label,
const char *path,
char *s2, size_t len2)
{
settings_t *settings = config_get_ptr();
if (!settings)
return;
strlcpy(s2, path, len2);
*w = 19;
switch (settings->menu.xmb_theme)
{
case 0:
snprintf(s, len, "%s", "Monochrome");
break;
case 1:
snprintf(s, len, "%s", "FlatUI");
break;
case 2:
snprintf(s, len, "%s", "Custom");
break;
}
}
static void menu_action_setting_disp_set_label_menu_toggle_gamepad_combo(
file_list_t* list,
unsigned *w, unsigned type, unsigned i,
@ -1139,6 +1169,10 @@ static int menu_cbs_init_bind_get_string_representation_compare_label(
BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_poll_type_behavior);
break;
case MENU_LABEL_XMB_THEME:
BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_xmb_theme);
break;
case MENU_LABEL_INPUT_MENU_TOGGLE_GAMEPAD_COMBO:
BIND_ACTION_GET_VALUE(cbs,
menu_action_setting_disp_set_label_menu_toggle_gamepad_combo);

View File

@ -48,10 +48,6 @@
#include "../../tasks/tasks_internal.h"
#ifndef XMB_THEME
#define XMB_THEME "monochrome"
#endif
#ifndef XMB_DELAY
#define XMB_DELAY 10
#endif
@ -231,6 +227,22 @@ typedef struct xmb_handle
gfx_font_raster_block_t raster_block;
} xmb_handle_t;
static char* xmb_theme()
{
settings_t *settings = config_get_ptr();
switch (settings->menu.xmb_theme)
{
case 0:
return "monochrome";
case 1:
return "flatui";
case 2:
return "custom";
default:
return "monochrome";
}
}
static void xmb_fill_default_background_path(xmb_handle_t *xmb,
char *path, size_t size)
{
@ -243,7 +255,7 @@ static void xmb_fill_default_background_path(xmb_handle_t *xmb,
fill_pathname_join(mediapath, settings->assets_directory,
"xmb", sizeof(mediapath));
fill_pathname_join(themepath, mediapath, XMB_THEME, sizeof(themepath));
fill_pathname_join(themepath, mediapath, xmb_theme(), sizeof(themepath));
fill_pathname_join(iconpath, themepath, xmb->icon.dir, sizeof(iconpath));
fill_pathname_slash(iconpath, sizeof(iconpath));
@ -1265,7 +1277,7 @@ static void xmb_refresh_horizontal_list(xmb_handle_t *xmb)
fill_pathname_join(mediapath, settings->assets_directory,
"xmb", sizeof(mediapath));
fill_pathname_join(themepath, mediapath, XMB_THEME, sizeof(themepath));
fill_pathname_join(themepath, mediapath, xmb_theme(), sizeof(themepath));
xmb_context_destroy_horizontal_list(xmb);
if (xmb->horizontal_list)
@ -2062,7 +2074,7 @@ static void xmb_font(xmb_handle_t *xmb)
fill_pathname_join(mediapath,
settings->assets_directory, "xmb", sizeof(mediapath));
fill_pathname_join(themepath,
mediapath, XMB_THEME, sizeof(themepath));
mediapath, xmb_theme(), sizeof(themepath));
if (string_is_empty(settings->menu.xmb_font))
fill_pathname_join(fontpath, themepath, "font.ttf", sizeof(fontpath));
else
@ -2484,7 +2496,7 @@ static void xmb_context_reset(void *data)
fill_pathname_join(mediapath, settings->assets_directory,
"xmb", sizeof(mediapath));
fill_pathname_join(themepath, mediapath, XMB_THEME, sizeof(themepath));
fill_pathname_join(themepath, mediapath, xmb_theme(), sizeof(themepath));
fill_pathname_join(iconpath, themepath, xmb->icon.dir, sizeof(iconpath));
fill_pathname_slash(iconpath, sizeof(iconpath));

View File

@ -292,6 +292,8 @@ static const char *menu_hash_to_str_us_label(uint32_t hash)
return "dpi_override_value";
case MENU_LABEL_XMB_FONT:
return "xmb_font";
case MENU_LABEL_XMB_THEME:
return "xmb_theme";
case MENU_LABEL_XMB_SCALE_FACTOR:
return "xmb_scale_factor";
case MENU_LABEL_XMB_ALPHA_FACTOR:
@ -1040,6 +1042,8 @@ const char *menu_hash_to_str_us(uint32_t hash)
return "XMB Alpha Factor";
case MENU_LABEL_VALUE_XMB_FONT:
return "XMB Font";
case MENU_LABEL_VALUE_XMB_THEME:
return "XMB Theme";
case MENU_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE:
return "Suspend Screensaver";
case MENU_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION:

View File

@ -287,6 +287,9 @@ static const char *menu_hash_to_str_us_label(uint32_t hash)
return "dpi_override_value";
case MENU_LABEL_XMB_FONT:
return "xmb_font";
case MENU_LABEL_XMB_THEME:
return "xmb_theme";
case MENU_LABEL_XMB_SCALE_FACTOR:
case MENU_LABEL_XMB_SCALE_FACTOR:
return "xmb_scale_factor";
case MENU_LABEL_XMB_ALPHA_FACTOR:
@ -1027,6 +1030,8 @@ const char *menu_hash_to_str_us(uint32_t hash)
return "XMB Alphá Factor";
case MENU_LABEL_VALUE_XMB_FONT:
return "XMB Foñt";
case MENU_LABEL_VALUE_XMB_THEME:
return "XMB Thèmê";
case MENU_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE:
return "Suspeñd Scrêénsàver";
case MENU_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION:

View File

@ -386,6 +386,8 @@ extern "C" {
#define MENU_LABEL_VALUE_XMB_ALPHA_FACTOR 0x0D5A712F1
#define MENU_LABEL_XMB_FONT 0x0ECA56CA2
#define MENU_LABEL_VALUE_XMB_FONT 0x0020337E7
#define MENU_LABEL_XMB_THEME 0x824c5a7eU
#define MENU_LABEL_VALUE_XMB_THEME 0x3603f65fU
#define MENU_LABEL_VOLUME_UP 0xa66e9681U
#define MENU_LABEL_VOLUME_DOWN 0xfc64f3d4U
#define MENU_LABEL_LOG_VERBOSITY 0x6648c96dU

View File

@ -5897,6 +5897,19 @@ static bool setting_append_list(
general_write_handler,
general_read_handler);
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY);
CONFIG_UINT(
list, list_info,
&settings->menu.xmb_theme,
menu_hash_to_str(MENU_LABEL_XMB_THEME),
menu_hash_to_str(MENU_LABEL_VALUE_XMB_THEME),
xmb_theme,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
menu_settings_list_current_add_range(list, list_info, 0, 2, 1, true, true);
}
CONFIG_BOOL(