diff options
Diffstat (limited to 'apps/plugins/clock/clock_menu.c')
| -rw-r--r-- | apps/plugins/clock/clock_menu.c | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/apps/plugins/clock/clock_menu.c b/apps/plugins/clock/clock_menu.c new file mode 100644 index 0000000..3310dbf --- /dev/null +++ b/apps/plugins/clock/clock_menu.c @@ -0,0 +1,246 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id: jackpot.c 14034 2007-07-28 05:42:55Z kevin $ + * + * Copyright (C) 2003 Zakk Roberts + * + * 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 "clock.h" +#include "clock_bitmaps.h" +#include "clock_settings.h" + +/* Option structs (possible selections per each option) */ +static const struct opt_items noyes_text[] = { + { "No", -1 }, + { "Yes", -1 } +}; + +static const struct opt_items backlight_settings_text[] = { + { "Always Off", -1 }, + { "Rockbox setting", -1 }, + { "Always On", -1 } +}; + +static const struct opt_items idle_poweroff_text[] = { + { "Disabled", -1 }, + { "Enabled", -1 } +}; + +static const struct opt_items date_format_text[] = { + { "No date", -1 }, + { "English format", -1 }, + { "European format", -1 }, + { "Japanese format", -1 }, +}; + +static const struct opt_items hour_format_text[] = { + { "24-hour Format", -1 }, + { "12-hour Format", -1 } +}; + +/*************** + * Select a mode, returs true when the mode has been selected + * (we go back to clock display then) + **************/ +bool menu_mode_selector(void){ + MENUITEM_STRINGLIST(menu,"Mode Selector",NULL, "Analog", + "Digital", "Binary"); + if(rb->do_menu(&menu, &clock_settings.mode) >=0) + return(true); + return(false); +} + +/********************** + * Analog settings menu + *********************/ +void menu_analog_settings(void) +{ + int selection=0, result=0; + + MENUITEM_STRINGLIST(menu,"Analog Mode Settings",NULL,"Show Date", + "Show Second Hand","Show Border"); + + while(result>=0){ + result=rb->do_menu(&menu, &selection); + switch(result){ + case 0: + rb->set_option("Show Date", &clock_settings.analog.show_date, + BOOL, noyes_text, 2, NULL); + break; + case 1: + rb->set_option("Show Second Hand", + &clock_settings.analog.show_seconds, + BOOL, noyes_text, 2, NULL); + break; + case 2: + rb->set_option("Show Border", + &clock_settings.analog.show_border, + BOOL, noyes_text, 2, NULL); + break; + } + } +} + +/*********************** + * Digital settings menu + **********************/ +void menu_digital_settings(void){ + int selection=0, result=0; + + MENUITEM_STRINGLIST(menu,"Digital Mode Settings",NULL,"Show Seconds", + "Blinking Colon"); + + while(result>=0){ + result=rb->do_menu(&menu, &selection); + switch(result){ + case 0: + rb->set_option("Show Seconds", + &clock_settings.digital.show_seconds, + BOOL, noyes_text, 2, NULL); + break; + case 1: + rb->set_option("Blinking Colon", + &clock_settings.digital.blinkcolon, + BOOL, noyes_text, 2, NULL); + break; + } + } +} + +/*********************************************************** + * Confirm resetting of settings, used in general_settings() + **********************************************************/ +void confirm_reset(void){ + int result=0; + + rb->set_option("Reset all settings?", &result, INT, noyes_text, 2, NULL); + + if(result == 1){ /* reset! */ + clock_settings_reset(&clock_settings); + rb->splash(HZ, "Settings reset!"); + } + else + rb->splash(HZ, "Settings NOT reset."); +} + +/************************************ + * General settings. Reset, save, etc + ***********************************/ +void menu_general_settings(void){ + int selection=0, result=0; + + MENUITEM_STRINGLIST(menu,"General Settings",NULL, + "Hour format","Date format","Show Counter", + "Reset Settings","Save Settings Now", + "Save On Exit","Backlight Settings", + "Idle Poweroff (temporary)"); + + while(result>=0){ + result=rb->do_menu(&menu, &selection); + switch(result){ + case 0: + rb->set_option("Hour format", + &clock_settings.general.hour_format, + INT, hour_format_text, 2, NULL); + break; + case 1: + rb->set_option("Date format", + &clock_settings.general.date_format, + INT, date_format_text, 4, NULL); + break; + case 2: + rb->set_option("Show Counter", &clock_settings.general.show_counter, + BOOL, noyes_text, 2, NULL); + break; + case 3: + confirm_reset(); + break; + + case 4: + save_settings_wo_gui(); + rb->splash(HZ, "Settings saved"); + break; + + case 5: + rb->set_option("Save On Exit", + &clock_settings.general.save_settings, + BOOL, noyes_text, 2, NULL); + + /* if we no longer save on exit, + we better save now to remember that */ + if(!clock_settings.general.save_settings) + save_settings_wo_gui(); + break; + case 6: + rb->set_option("Backlight Settings", + &clock_settings.general.backlight, + INT, backlight_settings_text, 3, NULL); + apply_backlight_setting(clock_settings.general.backlight); + break; + + case 7: + rb->set_option("Idle Poweroff (temporary)", + &clock_settings.general.idle_poweroff, + BOOL, idle_poweroff_text, 2, NULL); + break; + } + } +} + +/*********** + * Main menu + **********/ +bool main_menu(void){ + int selection=0; + bool done = false; + bool exit_clock=false; + + MENUITEM_STRINGLIST(menu,"Clock Menu",NULL,"View Clock","Mode Selector", + "Mode Settings","General Settings","Quit"); + + while(!done){ + switch(rb->do_menu(&menu, &selection)){ + case 0: + done = true; + break; + + case 1: + done=menu_mode_selector(); + break; + + case 2: + switch(clock_settings.mode){ + case ANALOG: menu_analog_settings();break; + case DIGITAL: menu_digital_settings();break; + case BINARY: /* no settings */;break; + } + break; + + case 3: + menu_general_settings(); + break; + + case 4: + exit_clock = true; + done = true; + break; + + default: + done=true; + break; + } + } + return(exit_clock); +} |