summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/SOURCES1
-rw-r--r--apps/lang/english.lang67
-rw-r--r--apps/menus/display_menu.c159
-rw-r--r--apps/menus/exported_menus.h10
-rw-r--r--apps/menus/main_menu.c16
-rw-r--r--apps/menus/theme_menu.c223
6 files changed, 293 insertions, 183 deletions
diff --git a/apps/SOURCES b/apps/SOURCES
index 4cc7fee5e8..3686fc29f7 100644
--- a/apps/SOURCES
+++ b/apps/SOURCES
@@ -11,6 +11,7 @@ language.c
11main.c 11main.c
12menu.c 12menu.c
13menus/display_menu.c 13menus/display_menu.c
14menus/theme_menu.c
14#if CONFIG_CODEC == SWCODEC 15#if CONFIG_CODEC == SWCODEC
15menus/eq_menu.c 16menus/eq_menu.c
16#endif 17#endif
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 14f99d97c5..2b35e9147a 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -11248,15 +11248,15 @@
11248 user: 11248 user:
11249 <source> 11249 <source>
11250 *: none 11250 *: none
11251 lcd_color: "Line Selector Primary Colour" 11251 lcd_color: "Primary Colour"
11252 </source> 11252 </source>
11253 <dest> 11253 <dest>
11254 *: none 11254 *: none
11255 lcd_color: "Line Selector Primary Colour" 11255 lcd_color: "Primary Colour"
11256 </dest> 11256 </dest>
11257 <voice> 11257 <voice>
11258 *: none 11258 *: none
11259 lcd_color: "Line Selector Primary Colour" 11259 lcd_color: "Primary Colour"
11260 </voice> 11260 </voice>
11261</phrase> 11261</phrase>
11262<phrase> 11262<phrase>
@@ -11265,15 +11265,15 @@
11265 user: 11265 user:
11266 <source> 11266 <source>
11267 *: none 11267 *: none
11268 lcd_color: "Line Selector Secondary Colour" 11268 lcd_color: "Secondary Colour"
11269 </source> 11269 </source>
11270 <dest> 11270 <dest>
11271 *: none 11271 *: none
11272 lcd_color: "Line Selector Secondary Colour" 11272 lcd_color: "Secondary Colour"
11273 </dest> 11273 </dest>
11274 <voice> 11274 <voice>
11275 *: none 11275 *: none
11276 lcd_color: "Line Selector Secondary Colour" 11276 lcd_color: "Secondary Colour"
11277 </voice> 11277 </voice>
11278</phrase> 11278</phrase>
11279<phrase> 11279<phrase>
@@ -11282,15 +11282,15 @@
11282 user: 11282 user:
11283 <source> 11283 <source>
11284 *: none 11284 *: none
11285 lcd_color: "Line Selector Text Colour" 11285 lcd_color: "Text Colour"
11286 </source> 11286 </source>
11287 <dest> 11287 <dest>
11288 *: none 11288 *: none
11289 lcd_color: "Line Selector Text Colour" 11289 lcd_color: "Text Colour"
11290 </dest> 11290 </dest>
11291 <voice> 11291 <voice>
11292 *: none 11292 *: none
11293 lcd_color: "Line Selector Text Colour" 11293 lcd_color: "Text Colour"
11294 </voice> 11294 </voice>
11295</phrase> 11295</phrase>
11296<phrase> 11296<phrase>
@@ -11341,3 +11341,52 @@
11341 *: "Central Eurpean" 11341 *: "Central Eurpean"
11342 </voice> 11342 </voice>
11343</phrase> 11343</phrase>
11344<phrase>
11345 id: LANG_THEME_MENU
11346 desc: in the settings menu
11347 user:
11348 <source>
11349 *: "Theme Settings"
11350 </source>
11351 <dest>
11352 *: "Theme Settings"
11353 </dest>
11354 <voice>
11355 *: "Theme Settings"
11356 </voice>
11357</phrase>
11358<phrase>
11359 id: LANG_COLORS_MENU
11360 desc: colours menu under theme settings
11361 user:
11362 <source>
11363 *: none
11364 lcd_color: "Colours"
11365 </source>
11366 <dest>
11367 *: none
11368 lcd_color: "Colours"
11369 </dest>
11370 <voice>
11371 *: none
11372 lcd_color: "Colours"
11373 </voice>
11374</phrase>
11375
11376<phrase>
11377 id: LANG_SELECTOR_COLOR_MENU
11378 desc: line selector color menu title
11379 user:
11380 <source>
11381 *: none
11382 lcd_color: "Line Selector Colours"
11383 </source>
11384 <dest>
11385 *: none
11386 lcd_color: "Line Selector Colours"
11387 </dest>
11388 <voice>
11389 *: none
11390 lcd_color: "Line Selector Colours"
11391 </voice>
11392</phrase>
diff --git a/apps/menus/display_menu.c b/apps/menus/display_menu.c
index 11d1f25e7f..a68defdfd4 100644
--- a/apps/menus/display_menu.c
+++ b/apps/menus/display_menu.c
@@ -115,113 +115,7 @@ MENUITEM_SETTING(invert, &global_settings.invert, NULL);
115#ifdef HAVE_LCD_FLIP 115#ifdef HAVE_LCD_FLIP
116MENUITEM_SETTING(flip_display, &global_settings.flip_display, flipdisplay_callback); 116MENUITEM_SETTING(flip_display, &global_settings.flip_display, flipdisplay_callback);
117#endif 117#endif
118MENUITEM_SETTING(cursor_style, &global_settings.cursor_style, NULL);
119#endif /* HAVE_LCD_BITMAP */ 118#endif /* HAVE_LCD_BITMAP */
120#if LCD_DEPTH > 1
121/**
122* Menu to clear the backdrop image
123 */
124static int clear_main_backdrop(void)
125{
126 global_settings.backdrop_file[0]=0;
127 unload_main_backdrop();
128 show_main_backdrop();
129 settings_save();
130 return 0;
131}
132MENUITEM_FUNCTION(clear_main_bd, 0, ID2P(LANG_CLEAR_BACKDROP),
133 clear_main_backdrop, NULL, NULL, Icon_NOICON);
134#endif /* LCD_DEPTH > 1 */
135#ifdef HAVE_LCD_COLOR
136/**
137 * Menu for fore/back colors
138 */
139static int set_fg_color(void)
140{
141 int res;
142 res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_FOREGROUND_COLOR),
143 &global_settings.fg_color,global_settings.bg_color);
144
145 screens[SCREEN_MAIN].set_foreground(global_settings.fg_color);
146 settings_save();
147 return res;
148}
149
150static int set_bg_color(void)
151{
152 int res;
153 res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_BACKGROUND_COLOR),
154 &global_settings.bg_color,global_settings.fg_color);
155
156 screens[SCREEN_MAIN].set_background(global_settings.bg_color);
157 settings_save();
158 return res;
159}
160
161/* Line selector colour */
162static int set_lss_color(void)
163{
164 int res;
165 res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_START_COLOR),
166 &global_settings.lss_color,-1);
167
168 screens[SCREEN_MAIN].set_selector_start(global_settings.lss_color);
169 settings_save();
170 return res;
171}
172
173static int set_lse_color(void)
174{
175 int res;
176 res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_END_COLOR),
177 &global_settings.lse_color,-1);
178
179 screens[SCREEN_MAIN].set_selector_end(global_settings.lse_color);
180 settings_save();
181 return res;
182}
183
184/* Line selector text colour */
185static int set_lst_color(void)
186{
187 int res;
188 res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_TEXT_COLOR),
189 &global_settings.lst_color,global_settings.lss_color);
190
191 screens[SCREEN_MAIN].set_selector_text(global_settings.lst_color);
192 settings_save();
193 return res;
194}
195
196static int reset_color(void)
197{
198 global_settings.fg_color = LCD_DEFAULT_FG;
199 global_settings.bg_color = LCD_DEFAULT_BG;
200 global_settings.lss_color = LCD_DEFAULT_LS;
201 global_settings.lse_color = LCD_DEFAULT_BG;
202 global_settings.lst_color = LCD_DEFAULT_FG;
203
204 screens[SCREEN_MAIN].set_foreground(global_settings.fg_color);
205 screens[SCREEN_MAIN].set_background(global_settings.bg_color);
206 screens[SCREEN_MAIN].set_selector_start(global_settings.lss_color);
207 screens[SCREEN_MAIN].set_selector_end(global_settings.lse_color);
208 screens[SCREEN_MAIN].set_selector_text(global_settings.lst_color);
209 settings_save();
210 return 0;
211}
212MENUITEM_FUNCTION(set_bg_col, 0, ID2P(LANG_BACKGROUND_COLOR),
213 set_bg_color, NULL, NULL, Icon_NOICON);
214MENUITEM_FUNCTION(set_fg_col, 0, ID2P(LANG_FOREGROUND_COLOR),
215 set_fg_color, NULL, NULL, Icon_NOICON);
216MENUITEM_FUNCTION(set_lss_col, 0, ID2P(LANG_SELECTOR_START_COLOR),
217 set_lss_color, NULL, NULL, Icon_NOICON);
218MENUITEM_FUNCTION(set_lse_col, 0, ID2P(LANG_SELECTOR_END_COLOR),
219 set_lse_color, NULL, NULL, Icon_NOICON);
220MENUITEM_FUNCTION(set_lst_col, 0, ID2P(LANG_SELECTOR_TEXT_COLOR),
221 set_lst_color, NULL, NULL, Icon_NOICON);
222MENUITEM_FUNCTION(reset_colors, 0, ID2P(LANG_RESET_COLORS),
223 reset_color, NULL, NULL, Icon_NOICON);
224#endif
225 119
226/* now the actual menu */ 120/* now the actual menu */
227MAKE_MENU(lcd_settings,ID2P(LANG_LCD_MENU), 121MAKE_MENU(lcd_settings,ID2P(LANG_LCD_MENU),
@@ -256,17 +150,7 @@ MAKE_MENU(lcd_settings,ID2P(LANG_LCD_MENU),
256# ifdef HAVE_LCD_FLIP 150# ifdef HAVE_LCD_FLIP
257 ,&flip_display 151 ,&flip_display
258# endif 152# endif
259 ,&cursor_style
260#endif /* HAVE_LCD_BITMAP */ 153#endif /* HAVE_LCD_BITMAP */
261#ifdef HAVE_LCD_COLOR
262 ,&set_lss_col, &set_lse_col, &set_lst_col
263#endif
264#if LCD_DEPTH > 1
265 ,&clear_main_bd,
266#endif
267#ifdef HAVE_LCD_COLOR
268 &set_bg_col, &set_fg_col, &reset_colors
269#endif
270 ); 154 );
271/* LCD MENU */ 155/* LCD MENU */
272/***********************************/ 156/***********************************/
@@ -594,57 +478,16 @@ MAKE_MENU(peak_meter_menu, ID2P(LANG_PM_MENU), NULL, Icon_NOICON,
594 478
595 479
596 480
597struct browse_folder_info {
598 const char* dir;
599 int show_options;
600};
601#ifdef HAVE_LCD_BITMAP
602static struct browse_folder_info fonts = {FONT_DIR, SHOW_FONT};
603#endif
604static struct browse_folder_info wps = {WPS_DIR, SHOW_WPS};
605#ifdef HAVE_REMOTE_LCD
606static struct browse_folder_info rwps = {WPS_DIR, SHOW_RWPS};
607#endif
608
609static int browse_folder(void *param)
610{
611 const struct browse_folder_info *info =
612 (const struct browse_folder_info*)param;
613 return rockbox_browse(info->dir, info->show_options);
614}
615
616#ifdef HAVE_LCD_BITMAP
617MENUITEM_FUNCTION(browse_fonts, MENU_FUNC_USEPARAM,
618 ID2P(LANG_CUSTOM_FONT),
619 browse_folder, (void*)&fonts, NULL, Icon_NOICON);
620#endif
621MENUITEM_FUNCTION(browse_wps, MENU_FUNC_USEPARAM,
622 ID2P(LANG_WHILE_PLAYING),
623 browse_folder, (void*)&wps, NULL, Icon_NOICON);
624#ifdef HAVE_REMOTE_LCD
625MENUITEM_FUNCTION(browse_rwps, MENU_FUNC_USEPARAM,
626 ID2P(LANG_REMOTE_WHILE_PLAYING),
627 browse_folder, (void*)&rwps, NULL, Icon_NOICON);
628#endif
629
630MENUITEM_SETTING(show_icons, &global_settings.show_icons, NULL);
631MENUITEM_SETTING(codepage_setting, &global_settings.default_codepage, NULL); 481MENUITEM_SETTING(codepage_setting, &global_settings.default_codepage, NULL);
632 482
633 483
634MAKE_MENU(display_menu, ID2P(LANG_DISPLAY), 484MAKE_MENU(display_menu, ID2P(LANG_DISPLAY),
635 NULL, Icon_Display_menu, 485 NULL, Icon_Display_menu,
636#ifdef HAVE_LCD_BITMAP
637 &browse_fonts,
638#endif
639 &browse_wps,
640#ifdef HAVE_REMOTE_LCD
641 &browse_rwps,
642#endif
643 &lcd_settings, 486 &lcd_settings,
644#ifdef HAVE_REMOTE_LCD 487#ifdef HAVE_REMOTE_LCD
645 &lcd_remote_settings, 488 &lcd_remote_settings,
646#endif 489#endif
647 &show_icons, &scroll_settings_menu, 490 &scroll_settings_menu,
648#ifdef HAVE_LCD_BITMAP 491#ifdef HAVE_LCD_BITMAP
649 &bars_menu, &peak_meter_menu, 492 &bars_menu, &peak_meter_menu,
650#endif 493#endif
diff --git a/apps/menus/exported_menus.h b/apps/menus/exported_menus.h
index a4f8512a73..6318007c64 100644
--- a/apps/menus/exported_menus.h
+++ b/apps/menus/exported_menus.h
@@ -34,14 +34,20 @@ extern const struct menu_item_ex
34 settings_menu_item, /* settings_menu.c */ 34 settings_menu_item, /* settings_menu.c */
35 playlist_settings, /* playlist_menu.c */ 35 playlist_settings, /* playlist_menu.c */
36 playlist_options, /* playlist_menu.c */ 36 playlist_options, /* playlist_menu.c */
37 equalizer_menu, /* eq_menu.c */ 37 equalizer_menu, /* eq_menu.c */
38 info_menu; /* info_menu.c */ 38 info_menu, /* info_menu.c */
39 theme_menu; /* theme_menu.c */
39 40
40#ifdef HAVE_WM8758 41#ifdef HAVE_WM8758
41extern const struct menu_item_ex hw_eq_menu; /* eq_menu.c */ 42extern const struct menu_item_ex hw_eq_menu; /* eq_menu.c */
42#endif 43#endif
43 44
44 45
46struct browse_folder_info {
47 const char* dir;
48 int show_options;
49};
50int browse_folder(void *param); /* in theme_menu.c as it is mostly used there */
45 51
46#endif /* ! PLUGIN */ 52#endif /* ! PLUGIN */
47#endif /*_EXPORTED_MENUS_H */ 53#endif /*_EXPORTED_MENUS_H */
diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c
index 822301fe52..2dd0899a3b 100644
--- a/apps/menus/main_menu.c
+++ b/apps/menus/main_menu.c
@@ -49,18 +49,7 @@
49 49
50 50
51 51
52struct browse_folder_info {
53 const char* dir;
54 int show_options;
55};
56static struct browse_folder_info theme = {THEME_DIR, SHOW_CFG};
57static struct browse_folder_info config = {ROCKBOX_DIR, SHOW_CFG}; 52static struct browse_folder_info config = {ROCKBOX_DIR, SHOW_CFG};
58int browse_folder(void *param)
59{
60 const struct browse_folder_info *info =
61 (const struct browse_folder_info*)param;
62 return rockbox_browse(info->dir, info->show_options);
63}
64 53
65/***********************************/ 54/***********************************/
66/* MANAGE SETTINGS MENU */ 55/* MANAGE SETTINGS MENU */
@@ -454,8 +443,6 @@ MAKE_MENU(info_menu, ID2P(LANG_SYSTEM), 0, Icon_Questionmark,
454/***********************************/ 443/***********************************/
455/* MAIN MENU */ 444/* MAIN MENU */
456 445
457MENUITEM_FUNCTION(browse_themes, MENU_FUNC_USEPARAM, ID2P(LANG_CUSTOM_THEME),
458 browse_folder, (void*)&theme, NULL, Icon_Folder);
459 446
460#ifdef HAVE_LCD_CHARCELLS 447#ifdef HAVE_LCD_CHARCELLS
461int mainmenu_callback(int action,const struct menu_item_ex *this_item) 448int mainmenu_callback(int action,const struct menu_item_ex *this_item)
@@ -478,10 +465,11 @@ int mainmenu_callback(int action,const struct menu_item_ex *this_item)
478MAKE_MENU(main_menu_, ID2P(LANG_SETTINGS), mainmenu_callback, 465MAKE_MENU(main_menu_, ID2P(LANG_SETTINGS), mainmenu_callback,
479 Icon_Submenu_Entered, 466 Icon_Submenu_Entered,
480 &sound_settings, 467 &sound_settings,
481 &settings_menu_item, &manage_settings, &browse_themes, 468 &settings_menu_item, &theme_menu,
482#ifdef HAVE_RECORDING 469#ifdef HAVE_RECORDING
483 &recording_settings, 470 &recording_settings,
484#endif 471#endif
472 &manage_settings,
485 ); 473 );
486/* MAIN MENU */ 474/* MAIN MENU */
487/***********************************/ 475/***********************************/
diff --git a/apps/menus/theme_menu.c b/apps/menus/theme_menu.c
new file mode 100644
index 0000000000..723f9fe4ad
--- /dev/null
+++ b/apps/menus/theme_menu.c
@@ -0,0 +1,223 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2007 Jonathan Gordon
11 *
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.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
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
38#if (LCD_DEPTH > 1) || (defined(HAVE_LCD_REMOTE) && (LCD_REMOTE_DEPTH > 1))
39#include "backdrop.h"
40#endif
41#include "exported_menus.h"
42
43
44#if LCD_DEPTH > 1
45/**
46* Menu to clear the backdrop image
47 */
48static int clear_main_backdrop(void)
49{
50 global_settings.backdrop_file[0]=0;
51 unload_main_backdrop();
52 show_main_backdrop();
53 settings_save();
54 return 0;
55}
56MENUITEM_FUNCTION(clear_main_bd, 0, ID2P(LANG_CLEAR_BACKDROP),
57 clear_main_backdrop, NULL, NULL, Icon_NOICON);
58#endif
59#ifdef HAVE_LCD_COLOR
60/**
61 * Menu for fore/back colors
62 */
63static 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 return res;
72}
73
74static int set_bg_color(void)
75{
76 int res;
77 res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_BACKGROUND_COLOR),
78 &global_settings.bg_color,global_settings.fg_color);
79
80 screens[SCREEN_MAIN].set_background(global_settings.bg_color);
81 settings_save();
82 return res;
83}
84
85/* Line selector colour */
86static int set_lss_color(void)
87{
88 int res;
89 res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_START_COLOR),
90 &global_settings.lss_color,-1);
91
92 screens[SCREEN_MAIN].set_selector_start(global_settings.lss_color);
93 settings_save();
94 return res;
95}
96
97static int set_lse_color(void)
98{
99 int res;
100 res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_END_COLOR),
101 &global_settings.lse_color,-1);
102
103 screens[SCREEN_MAIN].set_selector_end(global_settings.lse_color);
104 settings_save();
105 return res;
106}
107
108/* Line selector text colour */
109static int set_lst_color(void)
110{
111 int res;
112 res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_TEXT_COLOR),
113 &global_settings.lst_color,global_settings.lss_color);
114
115 screens[SCREEN_MAIN].set_selector_text(global_settings.lst_color);
116 settings_save();
117 return res;
118}
119
120static int reset_color(void)
121{
122 global_settings.fg_color = LCD_DEFAULT_FG;
123 global_settings.bg_color = LCD_DEFAULT_BG;
124 global_settings.lss_color = LCD_DEFAULT_LS;
125 global_settings.lse_color = LCD_DEFAULT_BG;
126 global_settings.lst_color = LCD_DEFAULT_FG;
127
128 screens[SCREEN_MAIN].set_foreground(global_settings.fg_color);
129 screens[SCREEN_MAIN].set_background(global_settings.bg_color);
130 screens[SCREEN_MAIN].set_selector_start(global_settings.lss_color);
131 screens[SCREEN_MAIN].set_selector_end(global_settings.lse_color);
132 screens[SCREEN_MAIN].set_selector_text(global_settings.lst_color);
133 settings_save();
134 return 0;
135}
136MENUITEM_FUNCTION(set_bg_col, 0, ID2P(LANG_BACKGROUND_COLOR),
137 set_bg_color, NULL, NULL, Icon_NOICON);
138MENUITEM_FUNCTION(set_fg_col, 0, ID2P(LANG_FOREGROUND_COLOR),
139 set_fg_color, NULL, NULL, Icon_NOICON);
140MENUITEM_FUNCTION(set_lss_col, 0, ID2P(LANG_SELECTOR_START_COLOR),
141 set_lss_color, NULL, NULL, Icon_NOICON);
142MENUITEM_FUNCTION(set_lse_col, 0, ID2P(LANG_SELECTOR_END_COLOR),
143 set_lse_color, NULL, NULL, Icon_NOICON);
144MENUITEM_FUNCTION(set_lst_col, 0, ID2P(LANG_SELECTOR_TEXT_COLOR),
145 set_lst_color, NULL, NULL, Icon_NOICON);
146MENUITEM_FUNCTION(reset_colors, 0, ID2P(LANG_RESET_COLORS),
147 reset_color, NULL, NULL, Icon_NOICON);
148
149MAKE_MENU(lss_settings, ID2P(LANG_SELECTOR_COLOR_MENU),
150 NULL, Icon_NOICON,
151 &set_lss_col, &set_lse_col, &set_lst_col
152 );
153
154/* now the actual menu */
155MAKE_MENU(colors_settings, ID2P(LANG_COLORS_MENU),
156 NULL, Icon_Display_menu,
157 &lss_settings,
158 &set_bg_col, &set_fg_col, &reset_colors
159 );
160
161#endif /* HAVE_LCD_COLOR */
162/* LCD MENU */
163/***********************************/
164
165#ifdef HAVE_LCD_BITMAP
166static struct browse_folder_info fonts = {FONT_DIR, SHOW_FONT};
167#endif
168static struct browse_folder_info wps = {WPS_DIR, SHOW_WPS};
169#ifdef HAVE_REMOTE_LCD
170static struct browse_folder_info rwps = {WPS_DIR, SHOW_RWPS};
171#endif
172static struct browse_folder_info themes = {THEME_DIR, SHOW_CFG};
173
174int browse_folder(void *param)
175{
176 const struct browse_folder_info *info =
177 (const struct browse_folder_info*)param;
178 return rockbox_browse(info->dir, info->show_options);
179}
180
181#ifdef HAVE_LCD_BITMAP
182MENUITEM_FUNCTION(browse_fonts, MENU_FUNC_USEPARAM,
183 ID2P(LANG_CUSTOM_FONT),
184 browse_folder, (void*)&fonts, NULL, Icon_Font);
185#endif
186MENUITEM_FUNCTION(browse_wps, MENU_FUNC_USEPARAM,
187 ID2P(LANG_WHILE_PLAYING),
188 browse_folder, (void*)&wps, NULL, Icon_Wps);
189#ifdef HAVE_REMOTE_LCD
190MENUITEM_FUNCTION(browse_rwps, MENU_FUNC_USEPARAM,
191 ID2P(LANG_REMOTE_WHILE_PLAYING),
192 browse_folder, (void*)&rwps, NULL, Icon_Wps);
193#endif
194
195MENUITEM_SETTING(show_icons, &global_settings.show_icons, NULL);
196MENUITEM_FUNCTION(browse_themes, MENU_FUNC_USEPARAM,
197 ID2P(LANG_CUSTOM_THEME),
198 browse_folder, (void*)&themes, NULL, Icon_Config);
199#ifdef HAVE_LCD_BITMAP
200MENUITEM_SETTING(cursor_style, &global_settings.cursor_style, NULL);
201#endif
202
203MAKE_MENU(theme_menu, ID2P(LANG_THEME_MENU),
204 NULL, Icon_Wps,
205 &browse_themes,
206#ifdef HAVE_LCD_BITMAP
207 &browse_fonts,
208#endif
209 &browse_wps,
210#ifdef HAVE_REMOTE_LCD
211 &browse_rwps,
212#endif
213 &show_icons,
214#if LCD_DEPTH > 1
215 &clear_main_bd,
216#endif
217#ifdef HAVE_LCD_BITMAP
218 &cursor_style,
219#endif
220#ifdef HAVE_LCD_COLOR
221 &colors_settings,
222#endif
223 );