Index: apps/lang/english.lang =================================================================== --- apps/lang/english.lang (revision 14900) +++ apps/lang/english.lang (working copy) @@ -11327,4 +11327,17 @@ lcd_color: "Bar (Gradient Colour)" - + + id: LANG_THEME_MENU + desc: in the settings menu + user: + + *: "Theme Settings" + + + *: "Theme Settings" + + + *: "Theme Settings" + + Index: apps/menus/exported_menus.h =================================================================== --- apps/menus/exported_menus.h (revision 14900) +++ apps/menus/exported_menus.h (working copy) @@ -34,8 +34,9 @@ settings_menu_item, /* settings_menu.c */ playlist_settings, /* playlist_menu.c */ playlist_options, /* playlist_menu.c */ - equalizer_menu, /* eq_menu.c */ - info_menu; /* info_menu.c */ + equalizer_menu, /* eq_menu.c */ + info_menu, /* info_menu.c */ + theme_menu; /* theme_menu.c */ #ifdef HAVE_WM8758 extern const struct menu_item_ex hw_eq_menu; /* eq_menu.c */ Index: apps/menus/theme_menu.c =================================================================== --- apps/menus/theme_menu.c (revision 0) +++ apps/menus/theme_menu.c (revision 0) @@ -0,0 +1,219 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2007 Jonathan Gordon + * + * All files in this archive are subject to the GNU General Public License. + * See the file COPYING in the source tree root for full license agreement. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#include +#include +#include +#include "config.h" +#include "lang.h" +#include "action.h" +#include "settings.h" +#include "menu.h" +#include "tree.h" +#include "list.h" +#ifdef HAVE_LCD_BITMAP +#include "peakmeter.h" +#endif +#include "talk.h" +#include "color_picker.h" +#include "lcd.h" +#include "lcd-remote.h" + +#if (LCD_DEPTH > 1) || (defined(HAVE_LCD_REMOTE) && (LCD_REMOTE_DEPTH > 1)) +#include "backdrop.h" +#endif + +#if LCD_DEPTH > 1 +/** +* Menu to clear the backdrop image + */ +static int clear_main_backdrop(void) +{ + global_settings.backdrop_file[0]=0; + unload_main_backdrop(); + show_main_backdrop(); + settings_save(); + return 0; +} +MENUITEM_FUNCTION(clear_main_bd, 0, ID2P(LANG_CLEAR_BACKDROP), + clear_main_backdrop, NULL, NULL, Icon_NOICON); +#ifdef HAVE_LCD_COLOR +/** + * Menu for fore/back colors + */ +static int set_fg_color(void) +{ + int res; + res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_FOREGROUND_COLOR), + &global_settings.fg_color,global_settings.bg_color); + + screens[SCREEN_MAIN].set_foreground(global_settings.fg_color); + settings_save(); + return res; +} + +static int set_bg_color(void) +{ + int res; + res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_BACKGROUND_COLOR), + &global_settings.bg_color,global_settings.fg_color); + + screens[SCREEN_MAIN].set_background(global_settings.bg_color); + settings_save(); + return res; +} + +/* Line selector colour */ +static int set_lss_color(void) +{ + int res; + res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_START_COLOR), + &global_settings.lss_color,-1); + + screens[SCREEN_MAIN].set_selector_start(global_settings.lss_color); + settings_save(); + return res; +} + +static int set_lse_color(void) +{ + int res; + res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_END_COLOR), + &global_settings.lse_color,-1); + + screens[SCREEN_MAIN].set_selector_end(global_settings.lse_color); + settings_save(); + return res; +} + +/* Line selector text colour */ +static int set_lst_color(void) +{ + int res; + res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_TEXT_COLOR), + &global_settings.lst_color,global_settings.lss_color); + + screens[SCREEN_MAIN].set_selector_text(global_settings.lst_color); + settings_save(); + return res; +} + +static int reset_color(void) +{ + global_settings.fg_color = LCD_DEFAULT_FG; + global_settings.bg_color = LCD_DEFAULT_BG; + global_settings.lss_color = LCD_DEFAULT_LS; + global_settings.lse_color = LCD_DEFAULT_BG; + global_settings.lst_color = LCD_DEFAULT_FG; + + screens[SCREEN_MAIN].set_foreground(global_settings.fg_color); + screens[SCREEN_MAIN].set_background(global_settings.bg_color); + screens[SCREEN_MAIN].set_selector_start(global_settings.lss_color); + screens[SCREEN_MAIN].set_selector_end(global_settings.lse_color); + screens[SCREEN_MAIN].set_selector_text(global_settings.lst_color); + settings_save(); + return 0; +} +MENUITEM_FUNCTION(set_bg_col, 0, ID2P(LANG_BACKGROUND_COLOR), + set_bg_color, NULL, NULL, Icon_NOICON); +MENUITEM_FUNCTION(set_fg_col, 0, ID2P(LANG_FOREGROUND_COLOR), + set_fg_color, NULL, NULL, Icon_NOICON); +MENUITEM_FUNCTION(set_lss_col, 0, ID2P(LANG_SELECTOR_START_COLOR), + set_lss_color, NULL, NULL, Icon_NOICON); +MENUITEM_FUNCTION(set_lse_col, 0, ID2P(LANG_SELECTOR_END_COLOR), + set_lse_color, NULL, NULL, Icon_NOICON); +MENUITEM_FUNCTION(set_lst_col, 0, ID2P(LANG_SELECTOR_TEXT_COLOR), + set_lst_color, NULL, NULL, Icon_NOICON); +MENUITEM_FUNCTION(reset_colors, 0, ID2P(LANG_RESET_COLORS), + reset_color, NULL, NULL, Icon_NOICON); +#endif + +/* now the actual menu */ +MAKE_MENU(lcd_theme_settings,ID2P(LANG_LCD_MENU), + NULL, Icon_Display_menu +#ifdef HAVE_LCD_COLOR + ,&set_lss_col, &set_lse_col, &set_lst_col +#endif + ,&clear_main_bd, +#ifdef HAVE_LCD_COLOR + &set_bg_col, &set_fg_col, &reset_colors +#endif + ); + +#endif /* LCD_DEPTH > 1 */ +/* LCD MENU */ +/***********************************/ + +struct browse_folder_info { + const char* dir; + int show_options; +}; +#ifdef HAVE_LCD_BITMAP +static struct browse_folder_info fonts = {FONT_DIR, SHOW_FONT}; +#endif +static struct browse_folder_info wps = {WPS_DIR, SHOW_WPS}; +#ifdef HAVE_REMOTE_LCD +static struct browse_folder_info rwps = {WPS_DIR, SHOW_RWPS}; +#endif + +static int browse_folder(void *param) +{ + const struct browse_folder_info *info = + (const struct browse_folder_info*)param; + return rockbox_browse(info->dir, info->show_options); +} + +#ifdef HAVE_LCD_BITMAP +MENUITEM_FUNCTION(browse_fonts, MENU_FUNC_USEPARAM, + ID2P(LANG_CUSTOM_FONT), + browse_folder, (void*)&fonts, NULL, Icon_NOICON); +#endif +MENUITEM_FUNCTION(browse_wps, MENU_FUNC_USEPARAM, + ID2P(LANG_WHILE_PLAYING), + browse_folder, (void*)&wps, NULL, Icon_NOICON); +#ifdef HAVE_REMOTE_LCD +MENUITEM_FUNCTION(browse_rwps, MENU_FUNC_USEPARAM, + ID2P(LANG_REMOTE_WHILE_PLAYING), + browse_folder, (void*)&rwps, NULL, Icon_NOICON); +#endif + +MENUITEM_SETTING(show_icons, &global_settings.show_icons, NULL); +int browse_themes_func(void) +{ + return rockbox_browse(THEME_DIR, SHOW_CFG); +} +MENUITEM_FUNCTION(browse_themes, 0, ID2P(LANG_CUSTOM_THEME), + browse_themes_func, NULL, NULL, Icon_Folder); + + +MAKE_MENU(theme_menu, ID2P(LANG_THEME_MENU), + NULL, Icon_Wps, + &browse_themes, +#ifdef HAVE_LCD_BITMAP + &browse_fonts, +#endif + &browse_wps, +#ifdef HAVE_REMOTE_LCD + &browse_rwps, +#endif +#if LCD_DEPTH > 1 + &lcd_theme_settings, +#endif + &show_icons + ); Index: apps/menus/main_menu.c =================================================================== --- apps/menus/main_menu.c (revision 14900) +++ apps/menus/main_menu.c (working copy) @@ -53,7 +53,6 @@ const char* dir; int show_options; }; -static struct browse_folder_info theme = {THEME_DIR, SHOW_CFG}; static struct browse_folder_info config = {ROCKBOX_DIR, SHOW_CFG}; int browse_folder(void *param) { @@ -454,8 +453,6 @@ /***********************************/ /* MAIN MENU */ -MENUITEM_FUNCTION(browse_themes, MENU_FUNC_USEPARAM, ID2P(LANG_CUSTOM_THEME), - browse_folder, (void*)&theme, NULL, Icon_Folder); #ifdef HAVE_LCD_CHARCELLS int mainmenu_callback(int action,const struct menu_item_ex *this_item) @@ -478,7 +475,7 @@ MAKE_MENU(main_menu_, ID2P(LANG_SETTINGS), mainmenu_callback, Icon_Submenu_Entered, &sound_settings, - &settings_menu_item, &manage_settings, &browse_themes, + &settings_menu_item, &manage_settings, &theme_menu, #ifdef HAVE_RECORDING &recording_settings, #endif Index: apps/menus/display_menu.c =================================================================== --- apps/menus/display_menu.c (revision 14900) +++ apps/menus/display_menu.c (working copy) @@ -117,112 +117,7 @@ #endif MENUITEM_SETTING(cursor_style, &global_settings.cursor_style, NULL); #endif /* HAVE_LCD_BITMAP */ -#if LCD_DEPTH > 1 -/** -* Menu to clear the backdrop image - */ -static int clear_main_backdrop(void) -{ - global_settings.backdrop_file[0]=0; - unload_main_backdrop(); - show_main_backdrop(); - settings_save(); - return 0; -} -MENUITEM_FUNCTION(clear_main_bd, 0, ID2P(LANG_CLEAR_BACKDROP), - clear_main_backdrop, NULL, NULL, Icon_NOICON); -#endif /* LCD_DEPTH > 1 */ -#ifdef HAVE_LCD_COLOR -/** - * Menu for fore/back colors - */ -static int set_fg_color(void) -{ - int res; - res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_FOREGROUND_COLOR), - &global_settings.fg_color,global_settings.bg_color); - screens[SCREEN_MAIN].set_foreground(global_settings.fg_color); - settings_save(); - return res; -} - -static int set_bg_color(void) -{ - int res; - res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_BACKGROUND_COLOR), - &global_settings.bg_color,global_settings.fg_color); - - screens[SCREEN_MAIN].set_background(global_settings.bg_color); - settings_save(); - return res; -} - -/* Line selector colour */ -static int set_lss_color(void) -{ - int res; - res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_START_COLOR), - &global_settings.lss_color,-1); - - screens[SCREEN_MAIN].set_selector_start(global_settings.lss_color); - settings_save(); - return res; -} - -static int set_lse_color(void) -{ - int res; - res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_END_COLOR), - &global_settings.lse_color,-1); - - screens[SCREEN_MAIN].set_selector_end(global_settings.lse_color); - settings_save(); - return res; -} - -/* Line selector text colour */ -static int set_lst_color(void) -{ - int res; - res = (int)set_color(&screens[SCREEN_MAIN],str(LANG_SELECTOR_TEXT_COLOR), - &global_settings.lst_color,global_settings.lss_color); - - screens[SCREEN_MAIN].set_selector_text(global_settings.lst_color); - settings_save(); - return res; -} - -static int reset_color(void) -{ - global_settings.fg_color = LCD_DEFAULT_FG; - global_settings.bg_color = LCD_DEFAULT_BG; - global_settings.lss_color = LCD_DEFAULT_LS; - global_settings.lse_color = LCD_DEFAULT_BG; - global_settings.lst_color = LCD_DEFAULT_FG; - - screens[SCREEN_MAIN].set_foreground(global_settings.fg_color); - screens[SCREEN_MAIN].set_background(global_settings.bg_color); - screens[SCREEN_MAIN].set_selector_start(global_settings.lss_color); - screens[SCREEN_MAIN].set_selector_end(global_settings.lse_color); - screens[SCREEN_MAIN].set_selector_text(global_settings.lst_color); - settings_save(); - return 0; -} -MENUITEM_FUNCTION(set_bg_col, 0, ID2P(LANG_BACKGROUND_COLOR), - set_bg_color, NULL, NULL, Icon_NOICON); -MENUITEM_FUNCTION(set_fg_col, 0, ID2P(LANG_FOREGROUND_COLOR), - set_fg_color, NULL, NULL, Icon_NOICON); -MENUITEM_FUNCTION(set_lss_col, 0, ID2P(LANG_SELECTOR_START_COLOR), - set_lss_color, NULL, NULL, Icon_NOICON); -MENUITEM_FUNCTION(set_lse_col, 0, ID2P(LANG_SELECTOR_END_COLOR), - set_lse_color, NULL, NULL, Icon_NOICON); -MENUITEM_FUNCTION(set_lst_col, 0, ID2P(LANG_SELECTOR_TEXT_COLOR), - set_lst_color, NULL, NULL, Icon_NOICON); -MENUITEM_FUNCTION(reset_colors, 0, ID2P(LANG_RESET_COLORS), - reset_color, NULL, NULL, Icon_NOICON); -#endif - /* now the actual menu */ MAKE_MENU(lcd_settings,ID2P(LANG_LCD_MENU), NULL, Icon_Display_menu @@ -258,15 +153,6 @@ # endif ,&cursor_style #endif /* HAVE_LCD_BITMAP */ -#ifdef HAVE_LCD_COLOR - ,&set_lss_col, &set_lse_col, &set_lst_col -#endif -#if LCD_DEPTH > 1 - ,&clear_main_bd, -#endif -#ifdef HAVE_LCD_COLOR - &set_bg_col, &set_fg_col, &reset_colors -#endif ); /* LCD MENU */ /***********************************/ @@ -594,57 +480,16 @@ -struct browse_folder_info { - const char* dir; - int show_options; -}; -#ifdef HAVE_LCD_BITMAP -static struct browse_folder_info fonts = {FONT_DIR, SHOW_FONT}; -#endif -static struct browse_folder_info wps = {WPS_DIR, SHOW_WPS}; -#ifdef HAVE_REMOTE_LCD -static struct browse_folder_info rwps = {WPS_DIR, SHOW_RWPS}; -#endif - -static int browse_folder(void *param) -{ - const struct browse_folder_info *info = - (const struct browse_folder_info*)param; - return rockbox_browse(info->dir, info->show_options); -} - -#ifdef HAVE_LCD_BITMAP -MENUITEM_FUNCTION(browse_fonts, MENU_FUNC_USEPARAM, - ID2P(LANG_CUSTOM_FONT), - browse_folder, (void*)&fonts, NULL, Icon_NOICON); -#endif -MENUITEM_FUNCTION(browse_wps, MENU_FUNC_USEPARAM, - ID2P(LANG_WHILE_PLAYING), - browse_folder, (void*)&wps, NULL, Icon_NOICON); -#ifdef HAVE_REMOTE_LCD -MENUITEM_FUNCTION(browse_rwps, MENU_FUNC_USEPARAM, - ID2P(LANG_REMOTE_WHILE_PLAYING), - browse_folder, (void*)&rwps, NULL, Icon_NOICON); -#endif - -MENUITEM_SETTING(show_icons, &global_settings.show_icons, NULL); MENUITEM_SETTING(codepage_setting, &global_settings.default_codepage, NULL); MAKE_MENU(display_menu, ID2P(LANG_DISPLAY), NULL, Icon_Display_menu, -#ifdef HAVE_LCD_BITMAP - &browse_fonts, -#endif - &browse_wps, -#ifdef HAVE_REMOTE_LCD - &browse_rwps, -#endif &lcd_settings, #ifdef HAVE_REMOTE_LCD &lcd_remote_settings, #endif - &show_icons, &scroll_settings_menu, + &scroll_settings_menu, #ifdef HAVE_LCD_BITMAP &bars_menu, &peak_meter_menu, #endif Index: apps/SOURCES =================================================================== --- apps/SOURCES (revision 14900) +++ apps/SOURCES (working copy) @@ -11,6 +11,7 @@ main.c menu.c menus/display_menu.c +menus/theme_menu.c #if CONFIG_CODEC == SWCODEC menus/eq_menu.c #endif