Accept FS#7864 - minor menu cleanup to move theme settings into a new themes menu. patch to update the manual would be welcome :p

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15003 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jonathan Gordon 2007-10-06 11:47:41 +00:00
parent a819c7492c
commit 4443fcb558
6 changed files with 293 additions and 183 deletions

View file

@ -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

View file

@ -11248,15 +11248,15 @@
user:
<source>
*: none
lcd_color: "Line Selector Primary Colour"
lcd_color: "Primary Colour"
</source>
<dest>
*: none
lcd_color: "Line Selector Primary Colour"
lcd_color: "Primary Colour"
</dest>
<voice>
*: none
lcd_color: "Line Selector Primary Colour"
lcd_color: "Primary Colour"
</voice>
</phrase>
<phrase>
@ -11265,15 +11265,15 @@
user:
<source>
*: none
lcd_color: "Line Selector Secondary Colour"
lcd_color: "Secondary Colour"
</source>
<dest>
*: none
lcd_color: "Line Selector Secondary Colour"
lcd_color: "Secondary Colour"
</dest>
<voice>
*: none
lcd_color: "Line Selector Secondary Colour"
lcd_color: "Secondary Colour"
</voice>
</phrase>
<phrase>
@ -11282,15 +11282,15 @@
user:
<source>
*: none
lcd_color: "Line Selector Text Colour"
lcd_color: "Text Colour"
</source>
<dest>
*: none
lcd_color: "Line Selector Text Colour"
lcd_color: "Text Colour"
</dest>
<voice>
*: none
lcd_color: "Line Selector Text Colour"
lcd_color: "Text Colour"
</voice>
</phrase>
<phrase>
@ -11341,3 +11341,52 @@
*: "Central Eurpean"
</voice>
</phrase>
<phrase>
id: LANG_THEME_MENU
desc: in the settings menu
user:
<source>
*: "Theme Settings"
</source>
<dest>
*: "Theme Settings"
</dest>
<voice>
*: "Theme Settings"
</voice>
</phrase>
<phrase>
id: LANG_COLORS_MENU
desc: colours menu under theme settings
user:
<source>
*: none
lcd_color: "Colours"
</source>
<dest>
*: none
lcd_color: "Colours"
</dest>
<voice>
*: none
lcd_color: "Colours"
</voice>
</phrase>
<phrase>
id: LANG_SELECTOR_COLOR_MENU
desc: line selector color menu title
user:
<source>
*: none
lcd_color: "Line Selector Colours"
</source>
<dest>
*: none
lcd_color: "Line Selector Colours"
</dest>
<voice>
*: none
lcd_color: "Line Selector Colours"
</voice>
</phrase>

View file

@ -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

View file

@ -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 */

View file

@ -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 */
/***********************************/

223
apps/menus/theme_menu.c Normal file
View file

@ -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 <stdbool.h>
#include <stddef.h>
#include <limits.h>
#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
);