From e347146b6268ece5b90bb6cf6fcb5c4e8f9b6a1e Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Mon, 17 Oct 2011 18:57:38 +0000 Subject: 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 --- apps/lang/english.lang | 28 ++++++++++++++++++++++++++++ apps/menus/main_menu.c | 12 +++++++++--- apps/menus/time_menu.c | 5 ++++- apps/root_menu.c | 3 +++ apps/settings.h | 3 +++ apps/settings_list.c | 12 ++++++++++++ manual/appendix/config_file_options.tex | 3 +++ manual/main_menu/main.tex | 13 ++++++++++--- 8 files changed, 72 insertions(+), 7 deletions(-) diff --git a/apps/lang/english.lang b/apps/lang/english.lang index eb3c963512..3fc2c72ec4 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -12861,3 +12861,31 @@ *: "Automatic" + + id: LANG_SLEEP_TIMER_DURATION + desc: default sleep timer duration in minutes + user: core + + *: "Default Sleep Timer Duration" + + + *: "Default Sleep Timer Duration" + + + *: "Default Sleep Timer Duration" + + + + id: LANG_SLEEP_TIMER_ON_POWER_UP + desc: whether sleep timer starts on power up + user: core + + *: "Start Sleep Timer On Boot" + + + *: "Start Sleep Timer On Boot" + + + *: "Start Sleep Timer On Boot" + + diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c index 394ee7c343..66d49a920e 100644 --- a/apps/menus/main_menu.c +++ b/apps/menus/main_menu.c @@ -412,12 +412,14 @@ static const char* sleep_timer_formatter(char* buffer, size_t buffer_size, static void sleep_timer_set(int minutes) { + if (minutes) + global_settings.sleeptimer_duration = minutes; set_sleep_timer(minutes * 60); } 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, &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), time_screen, NULL, NULL, Icon_Menu_setting ); #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, NULL, NULL, Icon_Menu_setting); /* make it look like a 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), (menu_function)show_credits, NULL, NULL, Icon_NOICON); @@ -479,7 +485,7 @@ MAKE_MENU(main_menu_, ID2P(LANG_SETTINGS), mainmenu_callback, #if CONFIG_RTC &timedate_item, #else - &sleep_timer_call, + &sleep_timer_call, &sleeptimer_on_startup, #endif &manage_settings, ); diff --git a/apps/menus/time_menu.c b/apps/menus/time_menu.c index 6631b46195..7059c5d92c 100644 --- a/apps/menus/time_menu.c +++ b/apps/menus/time_menu.c @@ -136,6 +136,9 @@ MENUITEM_FUNCTION(alarm_wake_up_screen, 0, ID2P(LANG_ALARM_WAKEUP_SCREEN), #endif /* CONFIG_TUNER || defined(HAVE_RECORDING) */ #endif /* HAVE_RTC_ALARM */ +MENUITEM_SETTING(sleeptimer_on_startup, + &global_settings.sleeptimer_on_startup, NULL); + static void talk_timedate(void) { 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, #endif #endif - &timeformat); + &sleeptimer_on_startup, &timeformat); int time_screen(void* ignored) { diff --git a/apps/root_menu.c b/apps/root_menu.c index 3b94d88751..1e9924fb44 100644 --- a/apps/root_menu.c +++ b/apps/root_menu.c @@ -660,6 +660,9 @@ void root_menu(void) next_screen = GO_TO_ROOT; #endif + if (global_settings.sleeptimer_on_startup) + set_sleep_timer(global_settings.sleeptimer_duration * 60); + while (true) { switch (next_screen) diff --git a/apps/settings.h b/apps/settings.h index 927b17bf08..92ffaf9019 100644 --- a/apps/settings.h +++ b/apps/settings.h @@ -798,6 +798,9 @@ struct user_settings int compressor_release_time; #endif + int sleeptimer_duration; + bool sleeptimer_on_startup; + #ifdef HAVE_MORSE_INPUT bool morse_input; /* text input method setting */ #endif diff --git a/apps/settings_list.c b/apps/settings_list.c index 7c5552a031..521d565f3b 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -549,6 +549,13 @@ static void tsc_set_default(void* setting, void* defaultval) memcpy(setting, defaultval, sizeof(struct touchscreen_parameter)); } #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 static const char* hotkey_formatter(char* buffer, size_t buffer_size, int value, const char* unit) @@ -1759,6 +1766,11 @@ const struct settings_list settings[] = { #endif /* CONFIG_CODEC == SWCODEC */ TEXT_SETTING(0, playlist_catalog_dir, "playlist catalog directory", 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 CHOICE_SETTING(0, touchpad_sensitivity, LANG_TOUCHPAD_SENSITIVITY, 0, "touchpad sensitivity", "normal,high", touchpad_set_sensitivity, 2, diff --git a/manual/appendix/config_file_options.tex b/manual/appendix/config_file_options.tex index a746198981..bfe314bb6f 100644 --- a/manual/appendix/config_file_options.tex +++ b/manual/appendix/config_file_options.tex @@ -104,6 +104,9 @@ idle poweroff & off, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 30, 45, 60 & 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 dir & 50 - 10000 & N/A\\ lang & /path/filename.lng & N/A\\ diff --git a/manual/main_menu/main.tex b/manual/main_menu/main.tex index 76063e8fd6..b43cfb1a8f 100644 --- a/manual/main_menu/main.tex +++ b/manual/main_menu/main.tex @@ -203,7 +203,9 @@ pages of information.} \item[Sleep Timer:] 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. - 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}{ \item[Wake-Up Alarm:] 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 an alarm. If the \dap{} is turned on again before the alarm occurs, the alarm will be cancelled. - \opt{recording,radio}{ \item[Alarm Wake Up Screen:] This option controls what the \dap{} does when it is woken up by the alarm. }%\opt{recording,radio} }%\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. \end{description} }%\opt{rtc} @@ -241,7 +244,11 @@ pages of information.} \item[Sleep Timer:] 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. - 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:] -- cgit v1.2.3