mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-10 05:32:40 -05:00
Sleep timer options: persistent duration and start on boot.
This makes the sleep timer persistent, so that the duration is remembered across reboots. Additionally, it adds a setting to automatically apply it at boot. Flyspray: FS#10849 Author: Nick Peskett git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30777 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
e44af440c5
commit
e347146b62
8 changed files with 72 additions and 7 deletions
|
|
@ -12861,3 +12861,31 @@
|
||||||
*: "Automatic"
|
*: "Automatic"
|
||||||
</voice>
|
</voice>
|
||||||
</phrase>
|
</phrase>
|
||||||
|
<phrase>
|
||||||
|
id: LANG_SLEEP_TIMER_DURATION
|
||||||
|
desc: default sleep timer duration in minutes
|
||||||
|
user: core
|
||||||
|
<source>
|
||||||
|
*: "Default Sleep Timer Duration"
|
||||||
|
</source>
|
||||||
|
<dest>
|
||||||
|
*: "Default Sleep Timer Duration"
|
||||||
|
</dest>
|
||||||
|
<voice>
|
||||||
|
*: "Default Sleep Timer Duration"
|
||||||
|
</voice>
|
||||||
|
</phrase>
|
||||||
|
<phrase>
|
||||||
|
id: LANG_SLEEP_TIMER_ON_POWER_UP
|
||||||
|
desc: whether sleep timer starts on power up
|
||||||
|
user: core
|
||||||
|
<source>
|
||||||
|
*: "Start Sleep Timer On Boot"
|
||||||
|
</source>
|
||||||
|
<dest>
|
||||||
|
*: "Start Sleep Timer On Boot"
|
||||||
|
</dest>
|
||||||
|
<voice>
|
||||||
|
*: "Start Sleep Timer On Boot"
|
||||||
|
</voice>
|
||||||
|
</phrase>
|
||||||
|
|
|
||||||
|
|
@ -412,12 +412,14 @@ static const char* sleep_timer_formatter(char* buffer, size_t buffer_size,
|
||||||
|
|
||||||
static void sleep_timer_set(int minutes)
|
static void sleep_timer_set(int minutes)
|
||||||
{
|
{
|
||||||
|
if (minutes)
|
||||||
|
global_settings.sleeptimer_duration = minutes;
|
||||||
set_sleep_timer(minutes * 60);
|
set_sleep_timer(minutes * 60);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sleep_timer(void)
|
static int sleep_timer(void)
|
||||||
{
|
{
|
||||||
int minutes = (get_sleep_timer() + 59) / 60; /* round up */
|
int minutes = get_sleep_timer() ? 0 : global_settings.sleeptimer_duration;
|
||||||
return (int)set_int(str(LANG_SLEEP_TIMER), "", UNIT_MIN, &minutes,
|
return (int)set_int(str(LANG_SLEEP_TIMER), "", UNIT_MIN, &minutes,
|
||||||
&sleep_timer_set, 5, 0, 300, sleep_timer_formatter);
|
&sleep_timer_set, 5, 0, 300, sleep_timer_formatter);
|
||||||
}
|
}
|
||||||
|
|
@ -428,10 +430,14 @@ int time_screen(void* ignored);
|
||||||
MENUITEM_FUNCTION(timedate_item, MENU_FUNC_CHECK_RETVAL, ID2P(LANG_TIME_MENU),
|
MENUITEM_FUNCTION(timedate_item, MENU_FUNC_CHECK_RETVAL, ID2P(LANG_TIME_MENU),
|
||||||
time_screen, NULL, NULL, Icon_Menu_setting );
|
time_screen, NULL, NULL, Icon_Menu_setting );
|
||||||
#endif
|
#endif
|
||||||
/* This item is in the time/date screen if there is a RTC */
|
/* Sleep timer items are in the time/date screen if there is a RTC */
|
||||||
MENUITEM_FUNCTION(sleep_timer_call, 0, ID2P(LANG_SLEEP_TIMER), sleep_timer,
|
MENUITEM_FUNCTION(sleep_timer_call, 0, ID2P(LANG_SLEEP_TIMER), sleep_timer,
|
||||||
NULL, NULL, Icon_Menu_setting); /* make it look like a
|
NULL, NULL, Icon_Menu_setting); /* make it look like a
|
||||||
setting to the user */
|
setting to the user */
|
||||||
|
#if CONFIG_RTC == 0
|
||||||
|
MENUITEM_SETTING(sleeptimer_on_startup,
|
||||||
|
&global_settings.sleeptimer_on_startup, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
MENUITEM_FUNCTION(show_credits_item, 0, ID2P(LANG_CREDITS),
|
MENUITEM_FUNCTION(show_credits_item, 0, ID2P(LANG_CREDITS),
|
||||||
(menu_function)show_credits, NULL, NULL, Icon_NOICON);
|
(menu_function)show_credits, NULL, NULL, Icon_NOICON);
|
||||||
|
|
@ -479,7 +485,7 @@ MAKE_MENU(main_menu_, ID2P(LANG_SETTINGS), mainmenu_callback,
|
||||||
#if CONFIG_RTC
|
#if CONFIG_RTC
|
||||||
&timedate_item,
|
&timedate_item,
|
||||||
#else
|
#else
|
||||||
&sleep_timer_call,
|
&sleep_timer_call, &sleeptimer_on_startup,
|
||||||
#endif
|
#endif
|
||||||
&manage_settings,
|
&manage_settings,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -136,6 +136,9 @@ MENUITEM_FUNCTION(alarm_wake_up_screen, 0, ID2P(LANG_ALARM_WAKEUP_SCREEN),
|
||||||
#endif /* CONFIG_TUNER || defined(HAVE_RECORDING) */
|
#endif /* CONFIG_TUNER || defined(HAVE_RECORDING) */
|
||||||
|
|
||||||
#endif /* HAVE_RTC_ALARM */
|
#endif /* HAVE_RTC_ALARM */
|
||||||
|
MENUITEM_SETTING(sleeptimer_on_startup,
|
||||||
|
&global_settings.sleeptimer_on_startup, NULL);
|
||||||
|
|
||||||
static void talk_timedate(void)
|
static void talk_timedate(void)
|
||||||
{
|
{
|
||||||
struct tm *tm = get_time();
|
struct tm *tm = get_time();
|
||||||
|
|
@ -241,7 +244,7 @@ MAKE_MENU(time_menu, ID2P(LANG_TIME_MENU), time_menu_callback, Icon_NOICON,
|
||||||
&alarm_wake_up_screen,
|
&alarm_wake_up_screen,
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
&timeformat);
|
&sleeptimer_on_startup, &timeformat);
|
||||||
|
|
||||||
int time_screen(void* ignored)
|
int time_screen(void* ignored)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -660,6 +660,9 @@ void root_menu(void)
|
||||||
next_screen = GO_TO_ROOT;
|
next_screen = GO_TO_ROOT;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (global_settings.sleeptimer_on_startup)
|
||||||
|
set_sleep_timer(global_settings.sleeptimer_duration * 60);
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
switch (next_screen)
|
switch (next_screen)
|
||||||
|
|
|
||||||
|
|
@ -798,6 +798,9 @@ struct user_settings
|
||||||
int compressor_release_time;
|
int compressor_release_time;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int sleeptimer_duration;
|
||||||
|
bool sleeptimer_on_startup;
|
||||||
|
|
||||||
#ifdef HAVE_MORSE_INPUT
|
#ifdef HAVE_MORSE_INPUT
|
||||||
bool morse_input; /* text input method setting */
|
bool morse_input; /* text input method setting */
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -549,6 +549,13 @@ static void tsc_set_default(void* setting, void* defaultval)
|
||||||
memcpy(setting, defaultval, sizeof(struct touchscreen_parameter));
|
memcpy(setting, defaultval, sizeof(struct touchscreen_parameter));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
static const char* sleeptimer_formatter(char* buffer, size_t buffer_size,
|
||||||
|
int value, const char* unit)
|
||||||
|
{
|
||||||
|
(void) unit;
|
||||||
|
snprintf(buffer, buffer_size, "%d:%02d", value / 60, value % 60);
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
#ifdef HAVE_HOTKEY
|
#ifdef HAVE_HOTKEY
|
||||||
static const char* hotkey_formatter(char* buffer, size_t buffer_size, int value,
|
static const char* hotkey_formatter(char* buffer, size_t buffer_size, int value,
|
||||||
const char* unit)
|
const char* unit)
|
||||||
|
|
@ -1759,6 +1766,11 @@ const struct settings_list settings[] = {
|
||||||
#endif /* CONFIG_CODEC == SWCODEC */
|
#endif /* CONFIG_CODEC == SWCODEC */
|
||||||
TEXT_SETTING(0, playlist_catalog_dir, "playlist catalog directory",
|
TEXT_SETTING(0, playlist_catalog_dir, "playlist catalog directory",
|
||||||
PLAYLIST_CATALOG_DEFAULT_DIR, NULL, NULL),
|
PLAYLIST_CATALOG_DEFAULT_DIR, NULL, NULL),
|
||||||
|
INT_SETTING(0, sleeptimer_duration, LANG_SLEEP_TIMER_DURATION, 30,
|
||||||
|
"sleeptimer duration",
|
||||||
|
UNIT_MIN, 5, 300, 5, sleeptimer_formatter, NULL, NULL),
|
||||||
|
OFFON_SETTING(0, sleeptimer_on_startup, LANG_SLEEP_TIMER_ON_POWER_UP, false,
|
||||||
|
"sleeptimer on startup", NULL),
|
||||||
#ifdef HAVE_TOUCHPAD_SENSITIVITY_SETTING
|
#ifdef HAVE_TOUCHPAD_SENSITIVITY_SETTING
|
||||||
CHOICE_SETTING(0, touchpad_sensitivity, LANG_TOUCHPAD_SENSITIVITY, 0,
|
CHOICE_SETTING(0, touchpad_sensitivity, LANG_TOUCHPAD_SENSITIVITY, 0,
|
||||||
"touchpad sensitivity", "normal,high", touchpad_set_sensitivity, 2,
|
"touchpad sensitivity", "normal,high", touchpad_set_sensitivity, 2,
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,9 @@
|
||||||
|
|
||||||
idle poweroff & off, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 30, 45, 60
|
idle poweroff & off, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 30, 45, 60
|
||||||
& min\\
|
& min\\
|
||||||
|
sleeptimer duration & 5 to 300 (in steps of 5)
|
||||||
|
& min\\
|
||||||
|
sleeptimer on startup & off, on & N/A\\
|
||||||
max files in playlist & 1000 - 32000 & N/A\\
|
max files in playlist & 1000 - 32000 & N/A\\
|
||||||
max files in dir & 50 - 10000 & N/A\\
|
max files in dir & 50 - 10000 & N/A\\
|
||||||
lang & /path/filename.lng & N/A\\
|
lang & /path/filename.lng & N/A\\
|
||||||
|
|
|
||||||
|
|
@ -203,7 +203,9 @@ pages of information.}
|
||||||
\item[Sleep Timer:]
|
\item[Sleep Timer:]
|
||||||
The \setting{Sleep Timer} powers off your \dap{} after playing for a given
|
The \setting{Sleep Timer} powers off your \dap{} after playing for a given
|
||||||
time. It can be set from \setting{Off} to 5 hours in 5 minute steps.
|
time. It can be set from \setting{Off} to 5 hours in 5 minute steps.
|
||||||
The \setting{Sleep Timer} is reset on boot.
|
While the \setting{Sleep Timer} is reset on boot, the value selected is
|
||||||
|
retained and will be used as the default from then on.
|
||||||
|
If the sleep timer is currently active, \setting{Off} will be highlighted,
|
||||||
\opt{alarm}{
|
\opt{alarm}{
|
||||||
\item[Wake-Up Alarm:]
|
\item[Wake-Up Alarm:]
|
||||||
This option will make the \dap{} start up at the specified time.
|
This option will make the \dap{} start up at the specified time.
|
||||||
|
|
@ -212,12 +214,13 @@ pages of information.}
|
||||||
\ActionAlarmSet{} confirms the alarm, and \ActionAlarmCancel{} cancels setting
|
\ActionAlarmSet{} confirms the alarm, and \ActionAlarmCancel{} cancels setting
|
||||||
an alarm. If the \dap{} is turned on again before the alarm occurs, the alarm
|
an alarm. If the \dap{} is turned on again before the alarm occurs, the alarm
|
||||||
will be cancelled.
|
will be cancelled.
|
||||||
|
|
||||||
\opt{recording,radio}{
|
\opt{recording,radio}{
|
||||||
\item[Alarm Wake Up Screen:]
|
\item[Alarm Wake Up Screen:]
|
||||||
This option controls what the \dap{} does when it is woken up by the alarm.
|
This option controls what the \dap{} does when it is woken up by the alarm.
|
||||||
}%\opt{recording,radio}
|
}%\opt{recording,radio}
|
||||||
}%\opt{alarm}
|
}%\opt{alarm}
|
||||||
|
\item[Start Sleep Timer On Boot:]
|
||||||
|
If set, a \setting{Sleep Timer} will be initiated when the device starts.
|
||||||
\item [Time Format:] Choose 12 or 24 hour clock.
|
\item [Time Format:] Choose 12 or 24 hour clock.
|
||||||
\end{description}
|
\end{description}
|
||||||
}%\opt{rtc}
|
}%\opt{rtc}
|
||||||
|
|
@ -241,7 +244,11 @@ pages of information.}
|
||||||
\item[Sleep Timer:]
|
\item[Sleep Timer:]
|
||||||
The \setting{Sleep Timer} powers off your \dap{} after playing for a given
|
The \setting{Sleep Timer} powers off your \dap{} after playing for a given
|
||||||
time. It can be set from \setting{Off} to 5 hours in 5 minute steps.
|
time. It can be set from \setting{Off} to 5 hours in 5 minute steps.
|
||||||
The \setting{Sleep Timer} is reset on boot.
|
While the \setting{Sleep Timer} is reset on boot, the value selected is
|
||||||
|
retained and will be used as the default from then on.
|
||||||
|
If the sleep timer is currently active, \setting{Off} will be highlighted,
|
||||||
|
\item[Start Sleep Timer On Boot:]
|
||||||
|
If set, a \setting{Sleep Timer} will be initiated when the device starts.
|
||||||
}
|
}
|
||||||
|
|
||||||
\item[Running Time:]
|
\item[Running Time:]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue