diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/menus/theme_menu.c | 109 |
1 files changed, 36 insertions, 73 deletions
diff --git a/apps/menus/theme_menu.c b/apps/menus/theme_menu.c index 43d52cf29c..0c17c0c373 100644 --- a/apps/menus/theme_menu.c +++ b/apps/menus/theme_menu.c | |||
@@ -40,7 +40,6 @@ | |||
40 | #endif | 40 | #endif |
41 | #include "exported_menus.h" | 41 | #include "exported_menus.h" |
42 | 42 | ||
43 | |||
44 | #if LCD_DEPTH > 1 | 43 | #if LCD_DEPTH > 1 |
45 | /** | 44 | /** |
46 | * Menu to clear the backdrop image | 45 | * Menu to clear the backdrop image |
@@ -57,66 +56,35 @@ MENUITEM_FUNCTION(clear_main_bd, 0, ID2P(LANG_CLEAR_BACKDROP), | |||
57 | clear_main_backdrop, NULL, NULL, Icon_NOICON); | 56 | clear_main_backdrop, NULL, NULL, Icon_NOICON); |
58 | #endif | 57 | #endif |
59 | #ifdef HAVE_LCD_COLOR | 58 | #ifdef HAVE_LCD_COLOR |
60 | /** | ||
61 | * Menu for fore/back colors | ||
62 | */ | ||
63 | static int set_fg_color(void) | ||
64 | { | ||
65 | int res; | ||
66 | res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_FOREGROUND_COLOR), | ||
67 | &global_settings.fg_color,global_settings.bg_color); | ||
68 | |||
69 | screens[SCREEN_MAIN].set_foreground(global_settings.fg_color); | ||
70 | settings_save(); | ||
71 | settings_apply(); | ||
72 | return res; | ||
73 | } | ||
74 | |||
75 | static int set_bg_color(void) | ||
76 | { | ||
77 | int res; | ||
78 | res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_BACKGROUND_COLOR), | ||
79 | &global_settings.bg_color,global_settings.fg_color); | ||
80 | |||
81 | screens[SCREEN_MAIN].set_background(global_settings.bg_color); | ||
82 | settings_save(); | ||
83 | settings_apply(); | ||
84 | return res; | ||
85 | } | ||
86 | 59 | ||
87 | /* Line selector colour */ | 60 | enum Colors { |
88 | static int set_lss_color(void) | 61 | COLOR_FG = 0, |
62 | COLOR_BG, | ||
63 | COLOR_LSS, | ||
64 | COLOR_LSE, | ||
65 | COLOR_LST, | ||
66 | COLOR_COUNT | ||
67 | }; | ||
68 | static struct colour_info | ||
89 | { | 69 | { |
90 | int res; | 70 | int *setting; |
91 | res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_START_COLOR), | 71 | int lang_id; |
92 | &global_settings.lss_color,-1); | 72 | } colors[COLOR_COUNT] = { |
73 | [COLOR_FG] = {&global_settings.fg_color, LANG_FOREGROUND_COLOR}, | ||
74 | [COLOR_BG] = {&global_settings.bg_color, LANG_BACKGROUND_COLOR}, | ||
75 | [COLOR_LSS] = {&global_settings.lss_color, LANG_SELECTOR_START_COLOR}, | ||
76 | [COLOR_LSE] = {&global_settings.lse_color, LANG_SELECTOR_END_COLOR}, | ||
77 | [COLOR_LST] = {&global_settings.lst_color, LANG_SELECTOR_TEXT_COLOR}, | ||
78 | }; | ||
93 | 79 | ||
94 | screens[SCREEN_MAIN].set_selector_start(global_settings.lss_color); | 80 | /** |
95 | settings_save(); | 81 | * Menu for fore/back/selection colors |
96 | settings_apply(); | 82 | */ |
97 | return res; | 83 | static int set_color_func(void* color) |
98 | } | ||
99 | |||
100 | static int set_lse_color(void) | ||
101 | { | ||
102 | int res; | ||
103 | res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_END_COLOR), | ||
104 | &global_settings.lse_color,-1); | ||
105 | |||
106 | screens[SCREEN_MAIN].set_selector_end(global_settings.lse_color); | ||
107 | settings_save(); | ||
108 | settings_apply(); | ||
109 | return res; | ||
110 | } | ||
111 | |||
112 | /* Line selector text colour */ | ||
113 | static int set_lst_color(void) | ||
114 | { | 84 | { |
115 | int res; | 85 | int res, c = (intptr_t)color; |
116 | res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_TEXT_COLOR), | 86 | res = (int)set_color(&screens[SCREEN_MAIN],str(colors[c].lang_id), |
117 | &global_settings.lst_color,global_settings.lss_color); | 87 | colors[c].setting,*colors[c].setting); |
118 | |||
119 | screens[SCREEN_MAIN].set_selector_text(global_settings.lst_color); | ||
120 | settings_save(); | 88 | settings_save(); |
121 | settings_apply(); | 89 | settings_apply(); |
122 | return res; | 90 | return res; |
@@ -129,26 +97,21 @@ static int reset_color(void) | |||
129 | global_settings.lss_color = LCD_DEFAULT_LS; | 97 | global_settings.lss_color = LCD_DEFAULT_LS; |
130 | global_settings.lse_color = LCD_DEFAULT_BG; | 98 | global_settings.lse_color = LCD_DEFAULT_BG; |
131 | global_settings.lst_color = LCD_DEFAULT_FG; | 99 | global_settings.lst_color = LCD_DEFAULT_FG; |
132 | 100 | ||
133 | screens[SCREEN_MAIN].set_foreground(global_settings.fg_color); | ||
134 | screens[SCREEN_MAIN].set_background(global_settings.bg_color); | ||
135 | screens[SCREEN_MAIN].set_selector_start(global_settings.lss_color); | ||
136 | screens[SCREEN_MAIN].set_selector_end(global_settings.lse_color); | ||
137 | screens[SCREEN_MAIN].set_selector_text(global_settings.lst_color); | ||
138 | settings_save(); | 101 | settings_save(); |
139 | settings_apply(); | 102 | settings_apply(); |
140 | return 0; | 103 | return 0; |
141 | } | 104 | } |
142 | MENUITEM_FUNCTION(set_bg_col, 0, ID2P(LANG_BACKGROUND_COLOR), | 105 | MENUITEM_FUNCTION(set_bg_col, MENU_FUNC_USEPARAM, ID2P(LANG_BACKGROUND_COLOR), |
143 | set_bg_color, NULL, NULL, Icon_NOICON); | 106 | set_color_func, (void*)COLOR_BG, NULL, Icon_NOICON); |
144 | MENUITEM_FUNCTION(set_fg_col, 0, ID2P(LANG_FOREGROUND_COLOR), | 107 | MENUITEM_FUNCTION(set_fg_col, MENU_FUNC_USEPARAM, ID2P(LANG_FOREGROUND_COLOR), |
145 | set_fg_color, NULL, NULL, Icon_NOICON); | 108 | set_color_func, (void*)COLOR_FG, NULL, Icon_NOICON); |
146 | MENUITEM_FUNCTION(set_lss_col, 0, ID2P(LANG_SELECTOR_START_COLOR), | 109 | MENUITEM_FUNCTION(set_lss_col, MENU_FUNC_USEPARAM, ID2P(LANG_SELECTOR_START_COLOR), |
147 | set_lss_color, NULL, NULL, Icon_NOICON); | 110 | set_color_func, (void*)COLOR_LSS, NULL, Icon_NOICON); |
148 | MENUITEM_FUNCTION(set_lse_col, 0, ID2P(LANG_SELECTOR_END_COLOR), | 111 | MENUITEM_FUNCTION(set_lse_col, MENU_FUNC_USEPARAM, ID2P(LANG_SELECTOR_END_COLOR), |
149 | set_lse_color, NULL, NULL, Icon_NOICON); | 112 | set_color_func, (void*)COLOR_LSE, NULL, Icon_NOICON); |
150 | MENUITEM_FUNCTION(set_lst_col, 0, ID2P(LANG_SELECTOR_TEXT_COLOR), | 113 | MENUITEM_FUNCTION(set_lst_col, MENU_FUNC_USEPARAM, ID2P(LANG_SELECTOR_TEXT_COLOR), |
151 | set_lst_color, NULL, NULL, Icon_NOICON); | 114 | set_color_func, (void*)COLOR_LST, NULL, Icon_NOICON); |
152 | MENUITEM_FUNCTION(reset_colors, 0, ID2P(LANG_RESET_COLORS), | 115 | MENUITEM_FUNCTION(reset_colors, 0, ID2P(LANG_RESET_COLORS), |
153 | reset_color, NULL, NULL, Icon_NOICON); | 116 | reset_color, NULL, NULL, Icon_NOICON); |
154 | 117 | ||