diff --git a/configuration.c b/configuration.c index 4d5c4d8340..dc1a83b172 100644 --- a/configuration.c +++ b/configuration.c @@ -474,6 +474,7 @@ static void config_set_defaults(void) settings->menu.xmb.shader_pipeline = menu_shader_pipeline; settings->menu.xmb.font[0] = '\0'; #endif + settings->menu.materialui.menu_color_theme = 0; settings->menu.throttle_framerate = true; settings->menu.linear_filter = true; @@ -1532,6 +1533,7 @@ static bool config_load_file(const char *path, bool set_defaults) #ifdef HAVE_XMB CONFIG_GET_INT_BASE(conf, settings, menu.xmb.menu_color_theme, "xmb_menu_color_theme"); #endif + CONFIG_GET_INT_BASE(conf, settings, menu.materialui.menu_color_theme, "materialui_menu_color_theme"); CONFIG_GET_BOOL_BASE(conf, settings, menu.xmb.shadows_enable, "xmb_shadows_enable"); CONFIG_GET_INT_BASE(conf, settings, menu.xmb.shader_pipeline, "menu_shader_pipeline"); if (config_get_path(conf, "xmb_font", tmp_str, sizeof(tmp_str))) @@ -2946,6 +2948,7 @@ bool config_save_file(const char *path) #ifdef HAVE_XMB config_set_int(conf, "xmb_menu_color_theme", settings->menu.xmb.menu_color_theme); #endif + config_set_int(conf, "materialui_menu_color_theme", settings->menu.materialui.menu_color_theme); config_set_bool(conf, "xmb_shadows_enable", settings->menu.xmb.shadows_enable); config_set_int(conf, "menu_shader_pipeline", settings->menu.xmb.shader_pipeline); config_set_path(conf, "xmb_font", diff --git a/intl/msg_hash_fr.c b/intl/msg_hash_fr.c index 96047fa20d..98cd09ec1e 100644 --- a/intl/msg_hash_fr.c +++ b/intl/msg_hash_fr.c @@ -1070,7 +1070,9 @@ const char *msg_hash_to_str_fr(enum msg_hash_enums msg) return "XMB : Police"; case MENU_ENUM_LABEL_VALUE_XMB_THEME: return "XMB : Theme"; - case MENU_ENUM_LABEL_VALUE_XMB_GRADIENT: + case MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME: + return "Dégradé de font d'écran"; + case MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME: return "Dégradé de font d'écran"; case MENU_ENUM_LABEL_VALUE_XMB_SHADOWS_ENABLE: return "Ombres pour les icones"; diff --git a/intl/msg_hash_us.c b/intl/msg_hash_us.c index 28ad9a001e..442df696a3 100644 --- a/intl/msg_hash_us.c +++ b/intl/msg_hash_us.c @@ -1626,8 +1626,10 @@ static const char *menu_hash_to_str_us_label_enum(enum msg_hash_enums msg) return "xmb_font"; case MENU_ENUM_LABEL_XMB_THEME: return "xmb_theme"; - case MENU_ENUM_LABEL_XMB_GRADIENT: + case MENU_ENUM_LABEL_XMB_MENU_COLOR_THEME: return "xmb_menu_color_theme"; + case MENU_ENUM_LABEL_MATERIALUI_MENU_COLOR_THEME: + return "materialui_menu_color_theme"; case MENU_ENUM_LABEL_XMB_SHADOWS_ENABLE: return "xmb_shadows_enable"; case MENU_ENUM_LABEL_XMB_RIBBON_ENABLE: @@ -2832,7 +2834,9 @@ const char *msg_hash_to_str_us(enum msg_hash_enums msg) return "XMB Font"; case MENU_ENUM_LABEL_VALUE_XMB_THEME: return "XMB Theme"; - case MENU_ENUM_LABEL_VALUE_XMB_GRADIENT: + case MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME: + return "Menu Color Theme"; + case MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME: return "Menu Color Theme"; case MENU_ENUM_LABEL_VALUE_XMB_SHADOWS_ENABLE: return "Icon Shadows Enable"; diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index 6e76d73ad7..3aae6366b2 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -682,7 +682,7 @@ static void menu_action_setting_disp_set_label_xmb_theme( } } -static void menu_action_setting_disp_set_label_xmb_gradient( +static void menu_action_setting_disp_set_label_xmb_menu_color_theme( file_list_t* list, unsigned *w, unsigned type, unsigned i, const char *label, @@ -731,6 +731,36 @@ static void menu_action_setting_disp_set_label_xmb_gradient( } } +static void menu_action_setting_disp_set_label_materialui_menu_color_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(); + + strlcpy(s2, path, len2); + *w = 19; + + if (!settings) + return; + + switch (settings->menu.materialui.menu_color_theme) + { + case 0: + strlcpy(s, "White", len); + break; + case 1: + strlcpy(s, "Dark", len); + break; + default: + break; + } +} + static void menu_action_setting_disp_set_label_thumbnails( file_list_t* list, unsigned *w, unsigned type, unsigned i, @@ -1413,9 +1443,13 @@ static int menu_cbs_init_bind_get_string_representation_compare_label( BIND_ACTION_GET_VALUE(cbs, menu_action_setting_disp_set_label_xmb_theme); break; - case MENU_ENUM_LABEL_XMB_GRADIENT: + case MENU_ENUM_LABEL_XMB_MENU_COLOR_THEME: BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_xmb_gradient); + menu_action_setting_disp_set_label_xmb_menu_color_theme); + break; + case MENU_ENUM_LABEL_MATERIALUI_MENU_COLOR_THEME: + BIND_ACTION_GET_VALUE(cbs, + menu_action_setting_disp_set_label_materialui_menu_color_theme); break; case MENU_ENUM_LABEL_THUMBNAILS: BIND_ACTION_GET_VALUE(cbs, @@ -1517,7 +1551,7 @@ static int menu_cbs_init_bind_get_string_representation_compare_label( break; case MENU_LABEL_XMB_GRADIENT: BIND_ACTION_GET_VALUE(cbs, - menu_action_setting_disp_set_label_xmb_gradient); + menu_action_setting_disp_set_label_xmb_menu_color_theme); break; case MENU_LABEL_THUMBNAILS: BIND_ACTION_GET_VALUE(cbs, diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 55b8acc52a..423e36159a 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -780,10 +780,10 @@ static void mui_frame(void *data) 0.22, 0.28, 0.31, 1, }; float almost_black[16] = { - 0.13, 0.13, 0.13, 1, - 0.13, 0.13, 0.13, 1, - 0.13, 0.13, 0.13, 1, - 0.13, 0.13, 0.13, 1, + 0.13, 0.13, 0.13, 0.90, + 0.13, 0.13, 0.13, 0.90, + 0.13, 0.13, 0.13, 0.90, + 0.13, 0.13, 0.13, 0.90, }; /* This controls the main background color */ @@ -811,6 +811,7 @@ static void mui_frame(void *data) float *highlighted_entry_color = lightblue_bg; float *footer_bg_color = white_bg; float *body_bg_color = white_transp_bg; + settings_t *settings = config_get_ptr(); uint32_t font_normal_color = 0x212121ff; uint32_t font_hover_color = 0x212121ff; @@ -822,6 +823,8 @@ static void mui_frame(void *data) if (!mui) return; + DARK_THEME = settings->menu.materialui.menu_color_theme; + clearcolor.r = 1.0f; clearcolor.g = 1.0f; clearcolor.b = 1.0f; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 5563c7dd39..b2311ef408 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4433,7 +4433,10 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) MENU_ENUM_LABEL_XMB_RIBBON_ENABLE, PARSE_ONLY_UINT, false); menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_XMB_GRADIENT, + MENU_ENUM_LABEL_XMB_MENU_COLOR_THEME, + PARSE_ONLY_UINT, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_MATERIALUI_MENU_COLOR_THEME, PARSE_ONLY_UINT, false); menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_RGUI_SHOW_START_SCREEN, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index df0a5295db..6521adf6e9 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -6923,8 +6923,8 @@ static bool setting_append_list( CONFIG_UINT( list, list_info, &settings->menu.xmb.menu_color_theme, - msg_hash_to_str(MENU_ENUM_LABEL_XMB_GRADIENT), - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_XMB_GRADIENT), + msg_hash_to_str(MENU_ENUM_LABEL_XMB_MENU_COLOR_THEME), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME), menu_background_gradient, &group_info, &subgroup_info, @@ -6932,7 +6932,25 @@ static bool setting_append_list( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 8, 1, true, true); - menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_XMB_GRADIENT); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_XMB_MENU_COLOR_THEME); + } + + /* only MaterialUI uses these values, don't show them on other drivers */ + if (string_is_equal(settings->menu.driver, "glui")) + { + CONFIG_UINT( + list, list_info, + &settings->menu.materialui.menu_color_theme, + msg_hash_to_str(MENU_ENUM_LABEL_MATERIALUI_MENU_COLOR_THEME), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME), + menu_background_gradient, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + menu_settings_list_current_add_range(list, list_info, 0, 1, 1, true, true); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_MATERIALUI_MENU_COLOR_THEME); } CONFIG_BOOL( diff --git a/msg_hash.h b/msg_hash.h index 5b5e7f3327..4923f60f66 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -496,11 +496,12 @@ enum msg_hash_enums MENU_ENUM_LABEL_XMB_ALPHA_FACTOR, MENU_ENUM_LABEL_XMB_FONT, MENU_ENUM_LABEL_XMB_THEME, - MENU_ENUM_LABEL_XMB_GRADIENT, + MENU_ENUM_LABEL_XMB_MENU_COLOR_THEME, MENU_ENUM_LABEL_XMB_SHADOWS_ENABLE, MENU_ENUM_LABEL_XMB_RIBBON_ENABLE, MENU_ENUM_LABEL_THUMBNAILS, MENU_ENUM_LABEL_TIMEDATE_ENABLE, + MENU_ENUM_LABEL_MATERIALUI_MENU_COLOR_THEME, MENU_ENUM_LABEL_VALUE_MENU_WALLPAPER, MENU_ENUM_LABEL_VALUE_DYNAMIC_WALLPAPER, @@ -517,12 +518,14 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_XMB_ALPHA_FACTOR, MENU_ENUM_LABEL_VALUE_XMB_FONT, MENU_ENUM_LABEL_VALUE_XMB_THEME, - MENU_ENUM_LABEL_VALUE_XMB_GRADIENT, + MENU_ENUM_LABEL_VALUE_XMB_MENU_COLOR_THEME, MENU_ENUM_LABEL_VALUE_XMB_SHADOWS_ENABLE, MENU_ENUM_LABEL_VALUE_XMB_RIBBON_ENABLE, MENU_ENUM_LABEL_VALUE_THUMBNAILS, MENU_ENUM_LABEL_VALUE_TIMEDATE_ENABLE, + MENU_ENUM_LABEL_VALUE_MATERIALUI_MENU_COLOR_THEME, + /* UI settings */ MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION, MENU_ENUM_LABEL_UI_COMPANION_ENABLE,