grr.. typo
[Rockbox.git] / apps / menus / theme_menu.c
blob21f7ba4a800a6e7a307cfa5c65be238b0452db4b
1 /***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
10 * Copyright (C) 2007 Jonathan Gordon
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
18 ****************************************************************************/
20 #include <stdbool.h>
21 #include <stddef.h>
22 #include <limits.h>
23 #include "config.h"
24 #include "lang.h"
25 #include "action.h"
26 #include "settings.h"
27 #include "menu.h"
28 #include "tree.h"
29 #include "list.h"
30 #ifdef HAVE_LCD_BITMAP
31 #include "peakmeter.h"
32 #endif
33 #include "talk.h"
34 #include "color_picker.h"
35 #include "lcd.h"
36 #include "lcd-remote.h"
37 #include "backdrop.h"
38 #include "exported_menus.h"
40 #if LCD_DEPTH > 1
41 /**
42 * Menu to clear the backdrop image
44 static int clear_main_backdrop(void)
46 global_settings.backdrop_file[0]=0;
47 unload_main_backdrop();
48 show_main_backdrop();
49 settings_save();
50 return 0;
52 MENUITEM_FUNCTION(clear_main_bd, 0, ID2P(LANG_CLEAR_BACKDROP),
53 clear_main_backdrop, NULL, NULL, Icon_NOICON);
54 #endif
55 #ifdef HAVE_LCD_COLOR
57 enum Colors {
58 COLOR_FG = 0,
59 COLOR_BG,
60 COLOR_LSS,
61 COLOR_LSE,
62 COLOR_LST,
63 COLOR_COUNT
65 static struct colour_info
67 int *setting;
68 int lang_id;
69 } colors[COLOR_COUNT] = {
70 [COLOR_FG] = {&global_settings.fg_color, LANG_FOREGROUND_COLOR},
71 [COLOR_BG] = {&global_settings.bg_color, LANG_BACKGROUND_COLOR},
72 [COLOR_LSS] = {&global_settings.lss_color, LANG_SELECTOR_START_COLOR},
73 [COLOR_LSE] = {&global_settings.lse_color, LANG_SELECTOR_END_COLOR},
74 [COLOR_LST] = {&global_settings.lst_color, LANG_SELECTOR_TEXT_COLOR},
77 /**
78 * Menu for fore/back/selection colors
80 static int set_color_func(void* color)
82 int res, c = (intptr_t)color;
83 res = (int)set_color(&screens[SCREEN_MAIN],str(colors[c].lang_id),
84 colors[c].setting,*colors[c].setting);
85 settings_save();
86 settings_apply(false);
87 return res;
90 static int reset_color(void)
92 global_settings.fg_color = LCD_DEFAULT_FG;
93 global_settings.bg_color = LCD_DEFAULT_BG;
94 global_settings.lss_color = LCD_DEFAULT_LS;
95 global_settings.lse_color = LCD_DEFAULT_BG;
96 global_settings.lst_color = LCD_DEFAULT_FG;
98 settings_save();
99 settings_apply(false);
100 return 0;
102 MENUITEM_FUNCTION(set_bg_col, MENU_FUNC_USEPARAM, ID2P(LANG_BACKGROUND_COLOR),
103 set_color_func, (void*)COLOR_BG, NULL, Icon_NOICON);
104 MENUITEM_FUNCTION(set_fg_col, MENU_FUNC_USEPARAM, ID2P(LANG_FOREGROUND_COLOR),
105 set_color_func, (void*)COLOR_FG, NULL, Icon_NOICON);
106 MENUITEM_FUNCTION(set_lss_col, MENU_FUNC_USEPARAM, ID2P(LANG_SELECTOR_START_COLOR),
107 set_color_func, (void*)COLOR_LSS, NULL, Icon_NOICON);
108 MENUITEM_FUNCTION(set_lse_col, MENU_FUNC_USEPARAM, ID2P(LANG_SELECTOR_END_COLOR),
109 set_color_func, (void*)COLOR_LSE, NULL, Icon_NOICON);
110 MENUITEM_FUNCTION(set_lst_col, MENU_FUNC_USEPARAM, ID2P(LANG_SELECTOR_TEXT_COLOR),
111 set_color_func, (void*)COLOR_LST, NULL, Icon_NOICON);
112 MENUITEM_FUNCTION(reset_colors, 0, ID2P(LANG_RESET_COLORS),
113 reset_color, NULL, NULL, Icon_NOICON);
115 MAKE_MENU(lss_settings, ID2P(LANG_SELECTOR_COLOR_MENU),
116 NULL, Icon_NOICON,
117 &set_lss_col, &set_lse_col, &set_lst_col
120 /* now the actual menu */
121 MAKE_MENU(colors_settings, ID2P(LANG_COLORS_MENU),
122 NULL, Icon_Display_menu,
123 &lss_settings,
124 &set_bg_col, &set_fg_col, &reset_colors
127 #endif /* HAVE_LCD_COLOR */
128 /* LCD MENU */
129 /***********************************/
131 #ifdef HAVE_LCD_BITMAP
132 static struct browse_folder_info fonts = {FONT_DIR, SHOW_FONT};
133 #endif
134 static struct browse_folder_info wps = {WPS_DIR, SHOW_WPS};
135 #ifdef HAVE_REMOTE_LCD
136 static struct browse_folder_info rwps = {WPS_DIR, SHOW_RWPS};
137 #endif
138 static struct browse_folder_info themes = {THEME_DIR, SHOW_CFG};
140 int browse_folder(void *param)
142 const struct browse_folder_info *info =
143 (const struct browse_folder_info*)param;
144 return rockbox_browse(info->dir, info->show_options);
147 #ifdef HAVE_LCD_BITMAP
148 MENUITEM_FUNCTION(browse_fonts, MENU_FUNC_USEPARAM,
149 ID2P(LANG_CUSTOM_FONT),
150 browse_folder, (void*)&fonts, NULL, Icon_Font);
151 #endif
152 MENUITEM_FUNCTION(browse_wps, MENU_FUNC_USEPARAM,
153 ID2P(LANG_WHILE_PLAYING),
154 browse_folder, (void*)&wps, NULL, Icon_Wps);
155 #ifdef HAVE_REMOTE_LCD
156 MENUITEM_FUNCTION(browse_rwps, MENU_FUNC_USEPARAM,
157 ID2P(LANG_REMOTE_WHILE_PLAYING),
158 browse_folder, (void*)&rwps, NULL, Icon_Wps);
159 #endif
161 MENUITEM_SETTING(show_icons, &global_settings.show_icons, NULL);
162 MENUITEM_FUNCTION(browse_themes, MENU_FUNC_USEPARAM,
163 ID2P(LANG_CUSTOM_THEME),
164 browse_folder, (void*)&themes, NULL, Icon_Config);
165 #ifdef HAVE_LCD_BITMAP
166 MENUITEM_SETTING(cursor_style, &global_settings.cursor_style, NULL);
167 #endif
169 MAKE_MENU(theme_menu, ID2P(LANG_THEME_MENU),
170 NULL, Icon_Wps,
171 &browse_themes,
172 #ifdef HAVE_LCD_BITMAP
173 &browse_fonts,
174 #endif
175 &browse_wps,
176 #ifdef HAVE_REMOTE_LCD
177 &browse_rwps,
178 #endif
179 &show_icons,
180 #if LCD_DEPTH > 1
181 &clear_main_bd,
182 #endif
183 #ifdef HAVE_LCD_BITMAP
184 &cursor_style,
185 #endif
186 #ifdef HAVE_LCD_COLOR
187 &colors_settings,
188 #endif