mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 18:17:39 -04:00
- Use system time format and remove separate setting - Hide timer until started & eliminate setting for it - Simplify menu, reorder settings, keep theme enabled - Make dialog for resetting settings more consistent with other reset dialogs Change-Id: I0fd38612b0592cd5a650c8985f377acc70a48eb7
220 lines
6.9 KiB
C
220 lines
6.9 KiB
C
/***************************************************************************
|
|
* __________ __ ___.
|
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
|
* \/ \/ \/ \/ \/
|
|
* $Id$
|
|
*
|
|
* Copyright (C) 2003 Zakk Roberts
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* 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"
|
|
#include "clock_menu.h"
|
|
#include "lib/playback_control.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 },
|
|
{ "Use System 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 },
|
|
{ "US (M-D-Y)", -1 },
|
|
{ "European (D-M-Y)", -1 },
|
|
{ "Japanese (Y-M-D)", -1 },
|
|
};
|
|
|
|
/***************
|
|
* Select a mode, returs true when the mode has been selected
|
|
* (we go back to clock display then)
|
|
**************/
|
|
static bool menu_mode_selector(void){
|
|
MENUITEM_STRINGLIST(menu,"Mode",NULL, "Analog",
|
|
"Digital", "Binary");
|
|
if(rb->do_menu(&menu, &clock_settings.mode, NULL, false) >=0)
|
|
return(true);
|
|
return(false);
|
|
}
|
|
|
|
/**********************
|
|
* Analog settings menu
|
|
*********************/
|
|
static void menu_analog_settings(void)
|
|
{
|
|
int selection=0, result=0;
|
|
|
|
MENUITEM_STRINGLIST(menu,"Analog",NULL,"Show Date",
|
|
"Show Second Hand","Show Border");
|
|
|
|
while(result>=0){
|
|
result=rb->do_menu(&menu, &selection, NULL, false);
|
|
switch(result){
|
|
case 0:
|
|
rb->set_option("Show Date", &clock_settings.analog.show_date,
|
|
RB_BOOL, noyes_text, 2, NULL);
|
|
break;
|
|
case 1:
|
|
rb->set_option("Show Second Hand",
|
|
&clock_settings.analog.show_seconds,
|
|
RB_BOOL, noyes_text, 2, NULL);
|
|
break;
|
|
case 2:
|
|
rb->set_option("Show Border",
|
|
&clock_settings.analog.show_border,
|
|
RB_BOOL, noyes_text, 2, NULL);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/***********************
|
|
* Digital settings menu
|
|
**********************/
|
|
static void menu_digital_settings(void){
|
|
int selection=0, result=0;
|
|
|
|
MENUITEM_STRINGLIST(menu,"Digital",NULL,"Show Seconds",
|
|
"Blinking Colon");
|
|
|
|
while(result>=0){
|
|
result=rb->do_menu(&menu, &selection, NULL, false);
|
|
switch(result){
|
|
case 0:
|
|
rb->set_option("Show Seconds",
|
|
&clock_settings.digital.show_seconds,
|
|
RB_BOOL, noyes_text, 2, NULL);
|
|
break;
|
|
case 1:
|
|
rb->set_option("Blinking Colon",
|
|
&clock_settings.digital.blinkcolon,
|
|
RB_BOOL, noyes_text, 2, NULL);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/************************************
|
|
* General settings. Reset, save, etc
|
|
***********************************/
|
|
static int menu_general_settings(void){
|
|
int selection=0, result=0;
|
|
|
|
MENUITEM_STRINGLIST(menu, "Clock Settings", NULL,
|
|
"Analog", "Digital",
|
|
"Date Format", "Backlight", "Idle Poweroff",
|
|
"Save on Exit", "Save", "Reset");
|
|
|
|
while(result>=0){
|
|
result=rb->do_menu(&menu, &selection, NULL, false);
|
|
switch(result){
|
|
case 0:
|
|
menu_analog_settings();
|
|
break;
|
|
case 1:
|
|
menu_digital_settings();
|
|
break;
|
|
case 2:
|
|
rb->set_option("Date Format",
|
|
&clock_settings.general.date_format,
|
|
RB_INT, date_format_text, 4, NULL);
|
|
break;
|
|
case 3:
|
|
rb->set_option("Backlight",
|
|
&clock_settings.general.backlight,
|
|
RB_INT, backlight_settings_text, 3, NULL);
|
|
apply_backlight_setting(clock_settings.general.backlight);
|
|
break;
|
|
|
|
case 4:
|
|
rb->set_option("Idle Poweroff",
|
|
&clock_settings.general.idle_poweroff,
|
|
RB_BOOL, idle_poweroff_text, 2, NULL);
|
|
break;
|
|
case 5:
|
|
rb->set_option("Save on Exit",
|
|
&clock_settings.general.save_settings,
|
|
RB_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:
|
|
save_settings_wo_gui();
|
|
rb->splash(HZ, ID2P(LANG_SETTINGS_SAVED));
|
|
break;
|
|
case 7:
|
|
if (rb->yesno_pop_confirm(ID2P(LANG_RESET)))
|
|
{
|
|
clock_settings_reset(&clock_settings);
|
|
return 1;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/***********
|
|
* Main menu
|
|
**********/
|
|
bool main_menu(void)
|
|
{
|
|
int selection = 0;
|
|
bool done = false;
|
|
bool exit_clock=false;
|
|
|
|
MENUITEM_STRINGLIST(menu, "Clock", NULL, "Mode",
|
|
"Settings","Playback Control",
|
|
"Quit");
|
|
while (!done)
|
|
{
|
|
switch(rb->do_menu(&menu, &selection, NULL, false))
|
|
{
|
|
case 0:
|
|
done=menu_mode_selector();
|
|
break;
|
|
case 1:
|
|
if (menu_general_settings())
|
|
done = true;
|
|
break;
|
|
case 2:
|
|
playback_control(NULL);
|
|
break;
|
|
case 3:
|
|
exit_clock = true;
|
|
done = true;
|
|
break;
|
|
default:
|
|
done=true;
|
|
break;
|
|
}
|
|
}
|
|
return(exit_clock);
|
|
}
|