Option to restart running sleep timer on keypress.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31437 a1c6a512-1295-4272-9138-f99709370657
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index c2db1e6..627fda8 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -12979,3 +12979,17 @@
*: "Startup/Shutdown"
</voice>
</phrase>
+<phrase>
+ id: LANG_KEYPRESS_RESTARTS_SLEEP_TIMER
+ desc: whether to restart running sleep timer on keypress
+ user: core
+ <source>
+ *: "Restart Sleep Timer On Keypress"
+ </source>
+ <dest>
+ *: "Restart Sleep Timer On Keypress"
+ </dest>
+ <voice>
+ *: "Restart Sleep Timer On Keypress"
+ </voice>
+</phrase>
diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c
index cce5dd7..659a7f2 100644
--- a/apps/menus/settings_menu.c
+++ b/apps/menus/settings_menu.c
@@ -439,13 +439,16 @@
/* make it look like a setting to the user */
MENUITEM_SETTING(sleeptimer_on_startup,
&global_settings.sleeptimer_on_startup, NULL);
+MENUITEM_SETTING(keypress_restarts_sleeptimer,
+ &global_settings.keypress_restarts_sleeptimer, NULL);
MAKE_MENU(startup_shutdown_menu, ID2P(LANG_STARTUP_SHUTDOWN),
0, Icon_System_menu,
&start_screen,
&poweroff,
&sleep_timer_call,
- &sleeptimer_on_startup
+ &sleeptimer_on_startup,
+ &keypress_restarts_sleeptimer
);
/* STARTUP/SHUTDOWN MENU */
diff --git a/apps/settings.c b/apps/settings.c
index 408e377..39390f4 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -844,6 +844,8 @@
dac_line_in(global_settings.line_in);
#endif
set_poweroff_timeout(global_settings.poweroff);
+ set_keypress_restarts_sleep_timer(
+ global_settings.keypress_restarts_sleeptimer);
#if defined(BATTERY_CAPACITY_INC) && BATTERY_CAPACITY_INC > 0
/* only call if it's really exchangable */
diff --git a/apps/settings.h b/apps/settings.h
index 7047b93..65abcc5 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -800,6 +800,7 @@
int sleeptimer_duration;
bool sleeptimer_on_startup;
+ bool keypress_restarts_sleeptimer;
#ifdef HAVE_MORSE_INPUT
bool morse_input; /* text input method setting */
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 54c0917..614ac50 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1808,6 +1808,8 @@
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),
+ OFFON_SETTING(0, keypress_restarts_sleeptimer, LANG_KEYPRESS_RESTARTS_SLEEP_TIMER, false,
+ "keypress restarts sleeptimer", set_keypress_restarts_sleep_timer),
#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/firmware/export/powermgmt.h b/firmware/export/powermgmt.h
index 808c858..d54f1d5 100644
--- a/firmware/export/powermgmt.h
+++ b/firmware/export/powermgmt.h
@@ -164,6 +164,7 @@
void set_sleep_timer(int seconds);
int get_sleep_timer(void);
+void set_keypress_restarts_sleep_timer(bool enable);
void handle_auto_poweroff(void);
void set_car_adapter_mode(bool setting);
void reset_poweroff_timer(void);
diff --git a/firmware/powermgmt.c b/firmware/powermgmt.c
index 76322d6..4d554d6 100644
--- a/firmware/powermgmt.c
+++ b/firmware/powermgmt.c
@@ -64,6 +64,10 @@
static bool sleeptimer_active = false;
static long sleeptimer_endtick;
+/* Whether an active sleep timer should be restarted when a key is pressed */
+static bool sleeptimer_key_restarts = false;
+/* The number of seconds the sleep timer was last set to */
+static unsigned int sleeptimer_duration = 0;
#if CONFIG_CHARGING
/* State of the charger input as seen by the power thread */
@@ -707,6 +711,8 @@
void reset_poweroff_timer(void)
{
last_event_tick = current_tick;
+ if (sleeptimer_active && sleeptimer_key_restarts)
+ set_sleep_timer(sleeptimer_duration);
}
void sys_poweroff(void)
@@ -777,6 +783,7 @@
sleeptimer_active = false;
sleeptimer_endtick = 0;
}
+ sleeptimer_duration = seconds;
}
int get_sleep_timer(void)
@@ -787,6 +794,11 @@
return 0;
}
+void set_keypress_restarts_sleep_timer(bool enable)
+{
+ sleeptimer_key_restarts = enable;
+}
+
static void handle_sleep_timer(void)
{
#ifndef BOOTLOADER
diff --git a/manual/appendix/config_file_options.tex b/manual/appendix/config_file_options.tex
index d237182..3db416e 100644
--- a/manual/appendix/config_file_options.tex
+++ b/manual/appendix/config_file_options.tex
@@ -107,6 +107,7 @@
sleeptimer duration & 5 to 300 (in steps of 5)
& min\\
sleeptimer on startup & off, on & N/A\\
+ keypress restarts sleeptimer & 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/configure_rockbox/startup_shutdown_options.tex b/manual/configure_rockbox/startup_shutdown_options.tex
index 2fb4c48..ef84358 100644
--- a/manual/configure_rockbox/startup_shutdown_options.tex
+++ b/manual/configure_rockbox/startup_shutdown_options.tex
@@ -54,4 +54,7 @@
\item[Start Sleep Timer On Boot:]
If set, a \setting{Sleep Timer} will be initiated when the device
starts.
+ \item[Restart Sleep Timer On Keypress:]
+ If set, when a \setting{Sleep Timer} is active and a key is pressed, the
+ \setting{Sleep Timer} will be restarted with the initial duration.
\end{description}