diff --git a/apps/SOURCES b/apps/SOURCES index 4cc7fee5e8..3686fc29f7 100644 --- a/apps/SOURCES +++ b/apps/SOURCES @@ -11,6 +11,7 @@ language.c main.c menu.c menus/display_menu.c +menus/theme_menu.c #if CONFIG_CODEC == SWCODEC menus/eq_menu.c #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 @@ user: *: none - lcd_color: "Line Selector Primary Colour" + lcd_color: "Primary Colour" *: none - lcd_color: "Line Selector Primary Colour" + lcd_color: "Primary Colour" *: none - lcd_color: "Line Selector Primary Colour" + lcd_color: "Primary Colour" @@ -11265,15 +11265,15 @@ user: *: none - lcd_color: "Line Selector Secondary Colour" + lcd_color: "Secondary Colour" *: none - lcd_color: "Line Selector Secondary Colour" + lcd_color: "Secondary Colour" *: none - lcd_color: "Line Selector Secondary Colour" + lcd_color: "Secondary Colour" @@ -11282,15 +11282,15 @@ user: *: none - lcd_color: "Line Selector Text Colour" + lcd_color: "Text Colour" *: none - lcd_color: "Line Selector Text Colour" + lcd_color: "Text Colour" *: none - lcd_color: "Line Selector Text Colour" + lcd_color: "Text Colour" @@ -11341,3 +11341,52 @@ *: "Central Eurpean" + + id: LANG_THEME_MENU + desc: in the settings menu + user: + + *: "Theme Settings" + + + *: "Theme Settings" + + + *: "Theme Settings" + + + + id: LANG_COLORS_MENU + desc: colours menu under theme settings + user: + + *: none + lcd_color: "Colours" + + + *: none + lcd_color: "Colours" + + + *: none + lcd_color: "Colours" + + + + + id: LANG_SELECTOR_COLOR_MENU + desc: line selector color menu title + user: + + *: none + lcd_color: "Line Selector Colours" + + + *: none + lcd_color: "Line Selector Colours" + + + *: none + lcd_color: "Line Selector Colours" + + 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); #ifdef HAVE_LCD_FLIP MENUITEM_SETTING(flip_display, &global_settings.flip_display, flipdisplay_callback); #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), @@ -256,17 +150,7 @@ MAKE_MENU(lcd_settings,ID2P(LANG_LCD_MENU), # ifdef HAVE_LCD_FLIP ,&flip_display # 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 +478,16 @@ MAKE_MENU(peak_meter_menu, ID2P(LANG_PM_MENU), NULL, Icon_NOICON, -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 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 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 */ #endif +struct browse_folder_info { + const char* dir; + int show_options; +}; +int browse_folder(void *param); /* in theme_menu.c as it is mostly used there */ #endif /* ! PLUGIN */ #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 @@ -struct browse_folder_info { - 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) -{ - const struct browse_folder_info *info = - (const struct browse_folder_info*)param; - return rockbox_browse(info->dir, info->show_options); -} /***********************************/ /* MANAGE SETTINGS MENU */ @@ -454,8 +443,6 @@ MAKE_MENU(info_menu, ID2P(LANG_SYSTEM), 0, Icon_Questionmark, /***********************************/ /* 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,10 +465,11 @@ int mainmenu_callback(int action,const struct menu_item_ex *this_item) MAKE_MENU(main_menu_, ID2P(LANG_SETTINGS), mainmenu_callback, Icon_Submenu_Entered, &sound_settings, - &settings_menu_item, &manage_settings, &browse_themes, + &settings_menu_item, &theme_menu, #ifdef HAVE_RECORDING &recording_settings, #endif + &manage_settings, ); /* MAIN MENU */ /***********************************/ 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 @@ +/*************************************************************************** + * __________ __ ___. + * 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 +#include "exported_menus.h" + + +#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 +#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); + +MAKE_MENU(lss_settings, ID2P(LANG_SELECTOR_COLOR_MENU), + NULL, Icon_NOICON, + &set_lss_col, &set_lse_col, &set_lst_col + ); + +/* now the actual menu */ +MAKE_MENU(colors_settings, ID2P(LANG_COLORS_MENU), + NULL, Icon_Display_menu, + &lss_settings, + &set_bg_col, &set_fg_col, &reset_colors + ); + +#endif /* HAVE_LCD_COLOR */ +/* LCD MENU */ +/***********************************/ + +#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 struct browse_folder_info themes = {THEME_DIR, SHOW_CFG}; + +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_Font); +#endif +MENUITEM_FUNCTION(browse_wps, MENU_FUNC_USEPARAM, + ID2P(LANG_WHILE_PLAYING), + browse_folder, (void*)&wps, NULL, Icon_Wps); +#ifdef HAVE_REMOTE_LCD +MENUITEM_FUNCTION(browse_rwps, MENU_FUNC_USEPARAM, + ID2P(LANG_REMOTE_WHILE_PLAYING), + browse_folder, (void*)&rwps, NULL, Icon_Wps); +#endif + +MENUITEM_SETTING(show_icons, &global_settings.show_icons, NULL); +MENUITEM_FUNCTION(browse_themes, MENU_FUNC_USEPARAM, + ID2P(LANG_CUSTOM_THEME), + browse_folder, (void*)&themes, NULL, Icon_Config); +#ifdef HAVE_LCD_BITMAP +MENUITEM_SETTING(cursor_style, &global_settings.cursor_style, NULL); +#endif + +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 + &show_icons, +#if LCD_DEPTH > 1 + &clear_main_bd, +#endif +#ifdef HAVE_LCD_BITMAP + &cursor_style, +#endif +#ifdef HAVE_LCD_COLOR + &colors_settings, +#endif + );