summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Everton <dan@iocaine.org>2006-03-24 20:41:56 +0000
committerDan Everton <dan@iocaine.org>2006-03-24 20:41:56 +0000
commitd946771ebd324561eca59116c723dff18491906c (patch)
tree222bbd46b03b7cf39b83f22f0750f5ef54323600
parentbddf3793ad52e211e9616bf46ee1c434ed9ff0db (diff)
downloadrockbox-d946771ebd324561eca59116c723dff18491906c.zip
rockbox-d946771ebd324561eca59116c723dff18491906c.tar.gz
rockbox-d946771ebd324561eca59116c723dff18491906c.tar.bz2
rockbox-d946771ebd324561eca59116c723dff18491906c.tar.xz
Port sleep timer setting screen to new setting screens. Make sleep timer usable from the remote.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9240 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/SOURCES1
-rw-r--r--apps/settings_menu.c32
-rw-r--r--apps/sleeptimer.c164
-rw-r--r--apps/sleeptimer.h24
4 files changed, 30 insertions, 191 deletions
diff --git a/apps/SOURCES b/apps/SOURCES
index dee4e6e..e872531 100644
--- a/apps/SOURCES
+++ b/apps/SOURCES
@@ -19,7 +19,6 @@ plugin.c
screens.c
settings.c
settings_menu.c
-sleeptimer.c
sound_menu.c
status.c
#if !defined(SIMULATOR) || CONFIG_CODEC == SWCODEC
diff --git a/apps/settings_menu.c b/apps/settings_menu.c
index 70703a2..5141416 100644
--- a/apps/settings_menu.c
+++ b/apps/settings_menu.c
@@ -36,7 +36,6 @@
#include "backlight.h"
#include "playlist.h" /* for playlist_shuffle */
#include "fat.h" /* For dotfile settings */
-#include "sleeptimer.h"
#include "powermgmt.h"
#include "rtc.h"
#include "ata.h"
@@ -799,6 +798,35 @@ static bool poweroff_idle_timer(void)
INT, names, 15, set_poweroff_timeout);
}
+static void sleep_timer_formatter(char* buffer, int buffer_size, int value,
+ const char* unit)
+{
+ int minutes, hours;
+
+ (void) unit;
+
+ if (value) {
+ hours = value / 60;
+ minutes = value - (hours * 60);
+ snprintf(buffer, buffer_size, "%d:%02d", hours, minutes);
+ } else {
+ snprintf(buffer, buffer_size, "%s", str(LANG_OFF));
+ }
+}
+
+static void sleep_timer_set(int minutes)
+{
+ set_sleep_timer(minutes * 60);
+}
+
+static bool sleep_timer(void)
+{
+ int minutes = get_sleep_timer() / 60;
+
+ return set_int(str(LANG_SLEEP_TIMER), "", UNIT_MIN, &minutes,
+ &sleep_timer_set, 15, 0, 300, sleep_timer_formatter);
+}
+
static bool scroll_speed(void)
{
return set_int(str(LANG_SCROLL), "", UNIT_INT,
@@ -1864,7 +1892,7 @@ static bool system_settings_menu(void)
{ ID2P(LANG_TIME_MENU), time_settings_menu },
#endif
{ ID2P(LANG_POWEROFF_IDLE), poweroff_idle_timer },
- { ID2P(LANG_SLEEP_TIMER), sleeptimer_screen },
+ { ID2P(LANG_SLEEP_TIMER), sleep_timer },
#ifdef HAVE_ALARM_MOD
{ ID2P(LANG_ALARM_MOD_ALARM_MENU), alarm_screen },
#endif
diff --git a/apps/sleeptimer.c b/apps/sleeptimer.c
deleted file mode 100644
index e9b0924..0000000
--- a/apps/sleeptimer.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2002 Linus Nielsen Feltzing
- *
- * 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 "config.h"
-#include "options.h"
-
-#include "lcd.h"
-#include "font.h"
-#include "button.h"
-#include "kernel.h"
-#include "sprintf.h"
-#include <string.h>
-#include "settings.h"
-#include "power.h"
-#include "powermgmt.h"
-#include "statusbar.h"
-#include "debug.h"
-#include "talk.h"
-#include "icons.h"
-
-#include "lang.h"
-
-#define SMALL_STEP_SIZE 15*60 /* Seconds */
-#define LARGE_STEP_SIZE 30*60 /* Seconds */
-#define THRESHOLD 60 /* Minutes */
-#define MAX_TIME 5*60*60 /* Hours */
-
-bool sleeptimer_screen(void)
-{
- unsigned long seconds;
- int hours, minutes;
- int button;
- bool done = false;
- char buf[32];
- int oldtime, newtime;
- int amount = 0;
- int org_timer=get_sleep_timer();
- bool changed=false;
- bool sayit = true;
-
-#ifdef HAVE_LCD_BITMAP
- if (global_settings.statusbar)
- lcd_setmargins(0, STATUSBAR_HEIGHT);
- else
- lcd_setmargins(0, 0);
-#endif
-
- lcd_clear_display();
- lcd_puts_scroll(0, 0, str(LANG_SLEEP_TIMER));
-
- while(!done)
- {
- button = button_get_w_tmo(HZ);
- switch(button)
- {
-#ifdef SETTINGS_OK2
- case SETTINGS_OK2:
-#endif
- case SETTINGS_OK:
- done = true;
- break;
-
- case SETTINGS_CANCEL:
- if (changed) {
- lcd_stop_scroll();
- lcd_puts(0, 0, str(LANG_MENU_SETTING_CANCEL));
- lcd_update();
- set_sleep_timer(org_timer);
- sleep(HZ/2);
- }
- done = true;
- break;
-
- case SETTINGS_INC:
- oldtime = (get_sleep_timer()+59) / 60;
- if(oldtime < THRESHOLD)
- amount = SMALL_STEP_SIZE;
- else
- amount = LARGE_STEP_SIZE;
-
- newtime = oldtime * 60 + amount;
- if(newtime > MAX_TIME)
- newtime = MAX_TIME;
-
- changed = sayit = true;
- set_sleep_timer(newtime);
- break;
-
- case SETTINGS_DEC:
- oldtime = (get_sleep_timer()+59) / 60;
- if(oldtime <= THRESHOLD)
- amount = SMALL_STEP_SIZE;
- else
- amount = LARGE_STEP_SIZE;
-
- newtime = oldtime*60 - amount;
- if(newtime < 0)
- newtime = 0;
-
- changed = sayit = true;
- set_sleep_timer(newtime);
- break;
- }
-
- seconds = get_sleep_timer();
-
- if(seconds)
- {
- seconds += 59; /* Round up for a "friendlier" display */
- hours = seconds / 3600;
- minutes = (seconds - (hours * 3600)) / 60;
- snprintf(buf, 32, "%d:%02d",
- hours, minutes);
- lcd_puts(0, 1, (unsigned char *)buf);
-
- if (sayit && global_settings.talk_menu)
- {
- bool enqueue = false; /* first one should not ne queued */
-
- if (hours)
- {
- talk_value(hours, UNIT_HOUR, enqueue);
- enqueue = true; /* queue any following */
- }
- if (minutes)
- {
- talk_value(minutes, UNIT_MIN, enqueue);
- }
-
- sayit = false;
- }
- }
- else
- {
- lcd_puts(0, 1, str(LANG_OFF));
- if (sayit && global_settings.talk_menu)
- {
- talk_id(LANG_OFF, false);
- sayit = false;
- }
- }
-
- gui_syncstatusbar_draw(&statusbars, true);
-
- lcd_update();
- }
- lcd_stop_scroll();
- return false;
-}
diff --git a/apps/sleeptimer.h b/apps/sleeptimer.h
deleted file mode 100644
index b57580d..0000000
--- a/apps/sleeptimer.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2002 Linus Nielsen Feltzing
- *
- * 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.
- *
- ****************************************************************************/
-#ifndef _SLEEPTIMER_H_
-#define _SLEEPTIMER_H_
-
-bool sleeptimer_screen(void);
-
-#endif