diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2007-02-15 04:41:37 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2007-02-15 04:41:37 +0000 |
commit | e56f8e9f6322a74a013add1709cfea787d97967c (patch) | |
tree | 46389232eac2bdf464b25638261d449d58566113 /apps | |
parent | 5a29fe18d4ca1c96a4d962a6494a7ff4c481b5ad (diff) |
Move the info and manage settings menus to the new system
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12311 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/main_menu.c | 252 | ||||
-rw-r--r-- | apps/menus/main_menu.c | 352 | ||||
-rw-r--r-- | apps/settings_menu.c | 60 |
3 files changed, 341 insertions, 323 deletions
diff --git a/apps/main_menu.c b/apps/main_menu.c index 078e7669f2..de4c9a6263 100644 --- a/apps/main_menu.c +++ b/apps/main_menu.c @@ -56,231 +56,6 @@ #include "recording.h" #endif -static bool show_credits(void) -{ - plugin_load("/.rockbox/rocks/credits.rock",NULL); - return false; -} - -#ifdef SIMULATOR -extern bool simulate_usb(void); -#endif - -#ifdef HAVE_LCD_CHARCELLS -#define SIZE_FMT "%s%s" -#else -#define SIZE_FMT "%s %s" -#endif - -static bool show_info(void) -{ - char s[64], s1[32]; - unsigned long size, free; - long buflen = ((audiobufend - audiobuf) * 2) / 2097; /* avoid overflow */ - int key; - int i; - bool done = false; - bool new_info = true; -#ifdef HAVE_MULTIVOLUME - char s2[32]; - unsigned long size2, free2; -#endif -#ifdef HAVE_LCD_CHARCELLS - int page = 0; -#endif - - const unsigned char *kbyte_units[] = { - ID2P(LANG_KILOBYTE), - ID2P(LANG_MEGABYTE), - ID2P(LANG_GIGABYTE) - }; - - while (!done) - { - int y=0; - - if (new_info) - { - fat_size( IF_MV2(0,) &size, &free ); -#ifdef HAVE_MULTIVOLUME - if (fat_ismounted(1)) - fat_size( 1, &size2, &free2 ); - else - size2 = 0; -#endif - - if (global_settings.talk_menu) - { /* say whatever is reasonable, no real connection to the screen */ - bool enqueue = false; /* enqueue all but the first */ - if (battery_level() >= 0) - { - talk_id(LANG_BATTERY_TIME, enqueue); - enqueue = true; - talk_value(battery_level(), UNIT_PERCENT, true); -#if CONFIG_CHARGING >= CHARGING_MONITOR - if (charge_state == CHARGING) - talk_id(LANG_BATTERY_CHARGE, true); - else if (charge_state == TOPOFF) - talk_id(LANG_BATTERY_TOPOFF_CHARGE, true); - else if (charge_state == TRICKLE) - talk_id(LANG_BATTERY_TRICKLE_CHARGE, true); -#endif - } - - talk_id(LANG_DISK_FREE_INFO, enqueue); -#ifdef HAVE_MULTIVOLUME - talk_id(LANG_DISK_NAME_INTERNAL, true); - output_dyn_value(NULL, 0, free, kbyte_units, true); - if (size2) - { - talk_id(LANG_DISK_NAME_MMC, true); - output_dyn_value(NULL, 0, free2, kbyte_units, true); - } -#else - output_dyn_value(NULL, 0, free, kbyte_units, true); -#endif - -#ifdef CONFIG_RTC - { - struct tm* tm = get_time(); - talk_id(VOICE_CURRENT_TIME, true); - talk_value(tm->tm_hour, UNIT_HOUR, true); - talk_value(tm->tm_min, UNIT_MIN, true); - talk_value(tm->tm_sec, UNIT_SEC, true); - talk_id(LANG_MONTH_JANUARY + tm->tm_mon, true); - talk_number(tm->tm_mday, true); - talk_number(1900 + tm->tm_year, true); - } -#endif - } - new_info = false; - } - - FOR_NB_SCREENS(i) - { - screens[i].clear_display(); -#ifdef HAVE_LCD_BITMAP - screens[i].puts(0, y, str(LANG_ROCKBOX_INFO)); -#endif - } -#ifdef HAVE_LCD_BITMAP - y += 2; -#endif - -#ifdef HAVE_LCD_CHARCELLS - if (page == 0) -#endif - { - int integer = buflen / 1000; - int decimal = buflen % 1000; - -#ifdef HAVE_LCD_CHARCELLS - snprintf(s, sizeof(s), (char *)str(LANG_BUFFER_STAT_PLAYER), - integer, decimal); -#else - snprintf(s, sizeof(s), (char *)str(LANG_BUFFER_STAT_RECORDER), - integer, decimal); -#endif - FOR_NB_SCREENS(i) - screens[i].puts_scroll(0, y, (unsigned char *)s); - y++; -#if CONFIG_CHARGING == CHARGING_CONTROL - if (charge_state == CHARGING) - snprintf(s, sizeof(s), (char *)str(LANG_BATTERY_CHARGE)); - else if (charge_state == TOPOFF) - snprintf(s, sizeof(s), (char *)str(LANG_BATTERY_TOPOFF_CHARGE)); - else if (charge_state == TRICKLE) - snprintf(s, sizeof(s), (char *)str(LANG_BATTERY_TRICKLE_CHARGE)); - else -#endif - if (battery_level() >= 0) - snprintf(s, sizeof(s), (char *)str(LANG_BATTERY_TIME), battery_level(), - battery_time() / 60, battery_time() % 60); - else - strncpy(s, "(n/a)", sizeof(s)); - FOR_NB_SCREENS(i) - screens[i].puts_scroll(0, y, (unsigned char *)s); - y++; - } - -#ifdef HAVE_LCD_CHARCELLS - if (page == 1) -#endif - { -#ifdef HAVE_MULTIVOLUME - output_dyn_value(s1, sizeof s1, free, kbyte_units, true); - output_dyn_value(s2, sizeof s2, size, kbyte_units, true); - snprintf(s, sizeof s, "%s %s/%s", str(LANG_DISK_NAME_INTERNAL), - s1, s2); - FOR_NB_SCREENS(i) - screens[i].puts_scroll(0, y, (unsigned char *)s); - y++; - - if (size2) { - output_dyn_value(s1, sizeof s1, free2, kbyte_units, true); - output_dyn_value(s2, sizeof s2, size2, kbyte_units, true); - snprintf(s, sizeof s, "%s %s/%s", str(LANG_DISK_NAME_MMC), - s1, s2); - FOR_NB_SCREENS(i) - screens[i].puts_scroll(0, y, (unsigned char *)s); - y++; - } -#else - output_dyn_value(s1, sizeof s1, size, kbyte_units, true); - snprintf(s, sizeof s, SIZE_FMT, str(LANG_DISK_SIZE_INFO), s1); - FOR_NB_SCREENS(i) - screens[i].puts_scroll(0, y, (unsigned char *)s); - y++; - output_dyn_value(s1, sizeof s1, free, kbyte_units, true); - snprintf(s, sizeof s, SIZE_FMT, str(LANG_DISK_FREE_INFO), s1); - FOR_NB_SCREENS(i) - screens[i].puts_scroll(0, y, (unsigned char *)s); - y++; -#endif - } - -#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR) - FOR_NB_SCREENS(i) - screens[i].update(); -#endif - - /* Wait for a key to be pushed */ - key = get_action(CONTEXT_MAINMENU,HZ*5); - switch(key) { - - case ACTION_STD_CANCEL: - done = true; - break; - -#ifdef HAVE_LCD_CHARCELLS - case ACTION_STD_NEXT: - case ACTION_STD_PREV: - page = (page == 0) ? 1 : 0; - break; -#endif - -#ifndef SIMULATOR - case ACTION_STD_OK: - gui_syncsplash(0, true, str(LANG_DIRCACHE_BUILDING)); - fat_recalc_free(IF_MV(0)); -#ifdef HAVE_MULTIVOLUME - if (fat_ismounted(1)) - fat_recalc_free(1); -#endif - new_info = true; - break; -#endif - - default: - if (default_event_handler(key) == SYS_USB_CONNECTED) - return true; - break; - } - } - action_signalscreenchange(); - return false; -} - #ifdef HAVE_RECORDING static bool rec_menu_recording_screen(void) @@ -330,33 +105,6 @@ bool rec_menu(void) } #endif -bool info_menu(void) -{ - int m; - bool result; - - /* info menu */ - static const struct menu_item items[] = { - { ID2P(LANG_INFO_MENU), show_info }, - { ID2P(LANG_VERSION), show_credits }, - { ID2P(LANG_RUNNING_TIME), view_runtime }, - { ID2P(LANG_DEBUG), debug_menu }, -#ifdef SIMULATOR - { ID2P(LANG_USB), simulate_usb }, -#ifdef ROCKBOX_HAS_LOGF - {"logf", logfdisplay }, - {"logfdump", logfdump }, -#endif -#endif - }; - - m=menu_init( items, sizeof(items) / sizeof(*items), NULL, - NULL, NULL, NULL); - result = menu_run(m); - menu_exit(m); - - return result; -} #if 0 #ifdef HAVE_LCD_CHARCELLS diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c index 886711853b..7dba697184 100644 --- a/apps/menus/main_menu.c +++ b/apps/menus/main_menu.c @@ -22,6 +22,7 @@ #include <stddef.h> #include <limits.h> #include "config.h" +#include "string.h" #include "lang.h" #include "action.h" #include "settings.h" @@ -37,13 +38,17 @@ #include "recording.h" #endif #include "bookmark.h" +#include "yesno.h" +#include "keyboard.h" +#include "screens.h" +#include "plugin.h" +#include "talk.h" +#include "buffer.h" /* lazy coders can use this function if the needed callback is just to say if the item is shown or not */ int dynamicitem_callback(int action,const struct menu_item_ex *this_item); -/***********************************/ -/* MAIN MENU */ struct browse_folder_info { const char* dir; @@ -51,12 +56,324 @@ struct browse_folder_info { }; static struct browse_folder_info theme = {THEME_DIR, SHOW_CFG}; static struct browse_folder_info rocks = {PLUGIN_DIR, SHOW_PLUGINS}; +static struct browse_folder_info config = {ROCKBOX_DIR, SHOW_CFG}; 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); } + +/***********************************/ +/* MANAGE SETTINGS MENU */ + +static int reset_settings(void) +{ + unsigned char *lines[]={str(LANG_RESET_ASK_RECORDER)}; + unsigned char *yes_lines[]={ + str(LANG_RESET_DONE_SETTING), + str(LANG_RESET_DONE_CLEAR) + }; + unsigned char *no_lines[]={yes_lines[0], str(LANG_RESET_DONE_CANCEL)}; + struct text_message message={(char **)lines, 1}; + struct text_message yes_message={(char **)yes_lines, 2}; + struct text_message no_message={(char **)no_lines, 2}; + + switch(gui_syncyesno_run(&message, &yes_message, &no_message)) + { + case YESNO_YES: + settings_reset(); + settings_apply(); + break; + case YESNO_NO: + break; + case YESNO_USB: + return 1; + } + return 0; +} +static int write_settings_file(void* param) +{ + return settings_save_config((int)param); +} + +MENUITEM_FUNCTION_WPARAM(browse_configs, ID2P(LANG_CUSTOM_CFG), + browse_folder, (void*)&config, NULL, NOICON); +MENUITEM_FUNCTION_WPARAM(save_settings_item, ID2P(LANG_SAVE_SETTINGS), + write_settings_file, (void*)SETTINGS_SAVE_ALL, NULL, NOICON); +MENUITEM_FUNCTION_WPARAM(save_theme_item, ID2P(LANG_SAVE_THEME), + write_settings_file, (void*)SETTINGS_SAVE_THEME, NULL, NOICON); +MENUITEM_FUNCTION(reset_settings_item,ID2P(LANG_RESET),reset_settings, NULL, NOICON); + +MAKE_MENU(manage_settings, ID2P(LANG_MANAGE_MENU), NULL, bitmap_icons_6x8[Icon_Config], + &browse_configs, &reset_settings_item, + &save_settings_item, &save_theme_item); +/* MANAGE SETTINGS MENU */ +/**********************************/ + +/***********************************/ +/* INFO MENU */ + +static bool show_credits(void) +{ + plugin_load(PLUGIN_DIR "/credits.rock",NULL); + return false; +} + +#ifdef SIMULATOR +extern bool simulate_usb(void); +#endif + +#ifdef HAVE_LCD_CHARCELLS +#define SIZE_FMT "%s%s" +#else +#define SIZE_FMT "%s %s" +#endif + +static bool show_info(void) +{ + char s[64], s1[32]; + unsigned long size, free; + long buflen = ((audiobufend - audiobuf) * 2) / 2097; /* avoid overflow */ + int key; + int i; + bool done = false; + bool new_info = true; +#ifdef HAVE_MULTIVOLUME + char s2[32]; + unsigned long size2, free2; +#endif +#ifdef HAVE_LCD_CHARCELLS + int page = 0; +#endif + + const unsigned char *kbyte_units[] = { + ID2P(LANG_KILOBYTE), + ID2P(LANG_MEGABYTE), + ID2P(LANG_GIGABYTE) + }; + + while (!done) + { + int y=0; + + if (new_info) + { + fat_size( IF_MV2(0,) &size, &free ); +#ifdef HAVE_MULTIVOLUME + if (fat_ismounted(1)) + fat_size( 1, &size2, &free2 ); + else + size2 = 0; +#endif + + if (global_settings.talk_menu) + { /* say whatever is reasonable, no real connection to the screen */ + bool enqueue = false; /* enqueue all but the first */ + if (battery_level() >= 0) + { + talk_id(LANG_BATTERY_TIME, enqueue); + enqueue = true; + talk_value(battery_level(), UNIT_PERCENT, true); +#if CONFIG_CHARGING >= CHARGING_MONITOR + if (charge_state == CHARGING) + talk_id(LANG_BATTERY_CHARGE, true); + else if (charge_state == TOPOFF) + talk_id(LANG_BATTERY_TOPOFF_CHARGE, true); + else if (charge_state == TRICKLE) + talk_id(LANG_BATTERY_TRICKLE_CHARGE, true); +#endif + } + + talk_id(LANG_DISK_FREE_INFO, enqueue); +#ifdef HAVE_MULTIVOLUME + talk_id(LANG_DISK_NAME_INTERNAL, true); + output_dyn_value(NULL, 0, free, kbyte_units, true); + if (size2) + { + talk_id(LANG_DISK_NAME_MMC, true); + output_dyn_value(NULL, 0, free2, kbyte_units, true); + } +#else + output_dyn_value(NULL, 0, free, kbyte_units, true); +#endif + +#ifdef CONFIG_RTC + { + struct tm* tm = get_time(); + talk_id(VOICE_CURRENT_TIME, true); + talk_value(tm->tm_hour, UNIT_HOUR, true); + talk_value(tm->tm_min, UNIT_MIN, true); + talk_value(tm->tm_sec, UNIT_SEC, true); + talk_id(LANG_MONTH_JANUARY + tm->tm_mon, true); + talk_number(tm->tm_mday, true); + talk_number(1900 + tm->tm_year, true); + } +#endif + } + new_info = false; + } + + FOR_NB_SCREENS(i) + { + screens[i].clear_display(); +#ifdef HAVE_LCD_BITMAP + screens[i].puts(0, y, str(LANG_ROCKBOX_INFO)); +#endif + } +#ifdef HAVE_LCD_BITMAP + y += 2; +#endif + +#ifdef HAVE_LCD_CHARCELLS + if (page == 0) +#endif + { + int integer = buflen / 1000; + int decimal = buflen % 1000; + +#ifdef HAVE_LCD_CHARCELLS + snprintf(s, sizeof(s), (char *)str(LANG_BUFFER_STAT_PLAYER), + integer, decimal); +#else + snprintf(s, sizeof(s), (char *)str(LANG_BUFFER_STAT_RECORDER), + integer, decimal); +#endif + FOR_NB_SCREENS(i) + screens[i].puts_scroll(0, y, (unsigned char *)s); + y++; +#if CONFIG_CHARGING == CHARGING_CONTROL + if (charge_state == CHARGING) + snprintf(s, sizeof(s), (char *)str(LANG_BATTERY_CHARGE)); + else if (charge_state == TOPOFF) + snprintf(s, sizeof(s), (char *)str(LANG_BATTERY_TOPOFF_CHARGE)); + else if (charge_state == TRICKLE) + snprintf(s, sizeof(s), (char *)str(LANG_BATTERY_TRICKLE_CHARGE)); + else +#endif + if (battery_level() >= 0) + snprintf(s, sizeof(s), (char *)str(LANG_BATTERY_TIME), battery_level(), + battery_time() / 60, battery_time() % 60); + else + strncpy(s, "(n/a)", sizeof(s)); + FOR_NB_SCREENS(i) + screens[i].puts_scroll(0, y, (unsigned char *)s); + y++; + } + +#ifdef HAVE_LCD_CHARCELLS + if (page == 1) +#endif + { +#ifdef HAVE_MULTIVOLUME + output_dyn_value(s1, sizeof s1, free, kbyte_units, true); + output_dyn_value(s2, sizeof s2, size, kbyte_units, true); + snprintf(s, sizeof s, "%s %s/%s", str(LANG_DISK_NAME_INTERNAL), + s1, s2); + FOR_NB_SCREENS(i) + screens[i].puts_scroll(0, y, (unsigned char *)s); + y++; + + if (size2) { + output_dyn_value(s1, sizeof s1, free2, kbyte_units, true); + output_dyn_value(s2, sizeof s2, size2, kbyte_units, true); + snprintf(s, sizeof s, "%s %s/%s", str(LANG_DISK_NAME_MMC), + s1, s2); + FOR_NB_SCREENS(i) + screens[i].puts_scroll(0, y, (unsigned char *)s); + y++; + } +#else + output_dyn_value(s1, sizeof s1, size, kbyte_units, true); + snprintf(s, sizeof s, SIZE_FMT, str(LANG_DISK_SIZE_INFO), s1); + FOR_NB_SCREENS(i) + screens[i].puts_scroll(0, y, (unsigned char *)s); + y++; + output_dyn_value(s1, sizeof s1, free, kbyte_units, true); + snprintf(s, sizeof s, SIZE_FMT, str(LANG_DISK_FREE_INFO), s1); + FOR_NB_SCREENS(i) + screens[i].puts_scroll(0, y, (unsigned char *)s); + y++; +#endif + } + +#if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR) + FOR_NB_SCREENS(i) + screens[i].update(); +#endif + + /* Wait for a key to be pushed */ + key = get_action(CONTEXT_MAINMENU,HZ*5); + switch(key) { + + case ACTION_STD_CANCEL: + done = true; + break; + +#ifdef HAVE_LCD_CHARCELLS + case ACTION_STD_NEXT: + case ACTION_STD_PREV: + page = (page == 0) ? 1 : 0; + break; +#endif + +#ifndef SIMULATOR + case ACTION_STD_OK: + gui_syncsplash(0, true, str(LANG_DIRCACHE_BUILDING)); + fat_recalc_free(IF_MV(0)); +#ifdef HAVE_MULTIVOLUME + if (fat_ismounted(1)) + fat_recalc_free(1); +#endif + new_info = true; + break; +#endif + + default: + if (default_event_handler(key) == SYS_USB_CONNECTED) + return true; + break; + } + } + action_signalscreenchange(); + return false; +} +MENUITEM_FUNCTION(show_info_item, ID2P(LANG_INFO_MENU), + (menu_function)show_info, NULL, NOICON); +MENUITEM_FUNCTION(show_credits_item, ID2P(LANG_VERSION), + (menu_function)show_credits, NULL, NOICON); +MENUITEM_FUNCTION(show_runtime_item, ID2P(LANG_RUNNING_TIME), + (menu_function)view_runtime, NULL, NOICON); + +#ifndef SIMULATOR +MENUITEM_FUNCTION(debug_menu_item, ID2P(LANG_DEBUG), + (menu_function)debug_menu, NULL, NOICON); +#else +MENUITEM_FUNCTION(simulate_usb_item, ID2P(LANG_USB), + (menu_function)simulate_usb, NULL, NOICON); +#ifdef ROCKBOX_HAS_LOGF +MENUITEM_FUNCTION(logfdisplay_item, "logf",logfdisplay, NULL, NOICON); +MENUITEM_FUNCTION(logfdump_item, "logfdump",logfdump, NULL, NOICON); +#endif +#endif + +MAKE_MENU(info_menu, ID2P(LANG_INFO), 0, bitmap_icons_6x8[Icon_Questionmark], + &show_info_item, &show_credits_item, &show_runtime_item, +#ifndef SIMULATOR + &debug_menu_item +#else + &simulate_usb_item +#ifdef ROCKBOX_HAS_LOGF + ,&logfdisplay_item, &logfdump_item +#endif +#endif + ); +/* INFO MENU */ +/***********************************/ + +/***********************************/ +/* MAIN MENU */ + MENUITEM_FUNCTION_WPARAM(browse_themes, ID2P(LANG_CUSTOM_THEME), browse_folder, (void*)&theme, NULL, bitmap_icons_6x8[Icon_Folder]); MENUITEM_FUNCTION_WPARAM(browse_plugins, ID2P(LANG_PLUGINS), @@ -68,12 +385,6 @@ MENUITEM_FUNCTION(load_radio_screen, ID2P(LANG_FM_RADIO), bitmap_icons_6x8[Icon_Radio_screen]); #endif -#include "settings_menu.h" -MENUITEM_FUNCTION(manage_settings_menu_item, ID2P(LANG_MANAGE_MENU), - (menu_function)manage_settings_menu, NULL, bitmap_icons_6x8[Icon_Config]); -bool info_menu(void); /* from apps/main_menu.c TEMP*/ -MENUITEM_FUNCTION(info_menu_item, ID2P(LANG_INFO), - (menu_function)info_menu, NULL, bitmap_icons_6x8[Icon_Questionmark]); MENUITEM_FUNCTION(mrb_bookmarks, ID2P(LANG_BOOKMARK_MENU_RECENT_BOOKMARKS), (menu_function)bookmark_mrb_load, NULL, bitmap_icons_6x8[Icon_Bookmark]); @@ -86,18 +397,37 @@ static int do_shutdown(void) MENUITEM_FUNCTION(do_shutdown_item, ID2P(LANG_SHUTDOWN), do_shutdown, NULL, NOICON); #endif +#ifdef HAVE_LCD_CHARCELLS +int mainmenu_callback(int action,const struct menu_item_ex *this_item) +{ + (void)this_item; + switch (action) + { + case ACTION_ENTER_MENUITEM: + status_set_param(true); + break; + case ACTION_EXIT_MENUITEM: + status_set_param(false); + break; + } + return action; +} +#else +#define mainmenu_callback NULL +#endif /* NOTE: This title will be translatable once we decide what to call this menu when the root menu comes in... hopefully in the next few days */ -MAKE_MENU(main_menu_, "Rockbox Main Menu", NULL, bitmap_icons_6x8[Icon_Submenu_Entered], +MAKE_MENU(main_menu_, "Rockbox Main Menu", mainmenu_callback, + bitmap_icons_6x8[Icon_Submenu_Entered], &mrb_bookmarks, &sound_settings, - &settings_menu_item, &manage_settings_menu_item, &browse_themes, + &settings_menu_item, &manage_settings, &browse_themes, #ifdef CONFIG_TUNER &load_radio_screen, #endif #ifdef HAVE_RECORDING &recording_settings_menu, #endif - &playlist_menu_item, &browse_plugins, &info_menu_item + &playlist_menu_item, &browse_plugins, &info_menu #ifdef HAVE_LCD_CHARCELLS ,&do_shutdown_item #endif diff --git a/apps/settings_menu.c b/apps/settings_menu.c index 67a5abaa67..49788e6eed 100644 --- a/apps/settings_menu.c +++ b/apps/settings_menu.c @@ -827,11 +827,6 @@ static bool custom_remote_wps_browse(void) } #endif -static bool custom_cfg_browse(void) -{ - return rockbox_browse(ROCKBOX_DIR, SHOW_CFG); -} - #ifdef HAVE_LCD_BITMAP static bool font_browse(void) { @@ -878,33 +873,6 @@ static bool codepage_setting(void) INT, names, 13, set_codepage ); } -static bool reset_settings(void) -{ - unsigned char *lines[]={str(LANG_RESET_ASK_RECORDER)}; - unsigned char *yes_lines[]={ - str(LANG_RESET_DONE_SETTING), - str(LANG_RESET_DONE_CLEAR) - }; - unsigned char *no_lines[]={yes_lines[0], str(LANG_RESET_DONE_CANCEL)}; - struct text_message message={(char **)lines, 1}; - struct text_message yes_message={(char **)yes_lines, 2}; - struct text_message no_message={(char **)no_lines, 2}; - - switch(gui_syncyesno_run(&message, &yes_message, &no_message)) - { - case YESNO_YES: - settings_reset(); - settings_apply(); - settings_save(); - break; - case YESNO_NO: - break; - case YESNO_USB: - return true; - } - return false; -} - #ifdef HAVE_REMOTE_LCD static bool remote_scroll_sets(void) @@ -1105,31 +1073,3 @@ bool display_settings_menu(void) menu_exit(m); return result; } -static bool manage_settings_write_config(void) -{ - return settings_save_config(SETTINGS_SAVE_ALL); -} -static bool manage_settings_write_theme(void) -{ - return settings_save_config(SETTINGS_SAVE_THEME); -} - -bool manage_settings_menu(void) -{ - int m; - bool result; - - static const struct menu_item items[] = { - { ID2P(LANG_CUSTOM_CFG), custom_cfg_browse }, - { ID2P(LANG_RESET), reset_settings }, - { ID2P(LANG_SAVE_SETTINGS), manage_settings_write_config}, - { ID2P(LANG_SAVE_THEME), manage_settings_write_theme}, - }; - - m=menu_init( items, sizeof(items) / sizeof(*items), NULL, - NULL, NULL, NULL); - result = menu_run(m); - menu_exit(m); - return result; -} - |