summaryrefslogtreecommitdiff
path: root/apps/sleeptimer.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/sleeptimer.c')
-rw-r--r--apps/sleeptimer.c47
1 files changed, 36 insertions, 11 deletions
diff --git a/apps/sleeptimer.c b/apps/sleeptimer.c
index ba554cc91c..b47d93698a 100644
--- a/apps/sleeptimer.c
+++ b/apps/sleeptimer.c
@@ -29,6 +29,7 @@
29#include "power.h" 29#include "power.h"
30#include "powermgmt.h" 30#include "powermgmt.h"
31#include "status.h" 31#include "status.h"
32#include "debug.h"
32 33
33#include "lang.h" 34#include "lang.h"
34 35
@@ -49,6 +50,8 @@ bool sleeptimer_screen(void)
49 char buf[32]; 50 char buf[32];
50 int oldtime, newtime; 51 int oldtime, newtime;
51 int amount = 0; 52 int amount = 0;
53 int org_timer=get_sleep_timer();
54 bool changed=false;
52 55
53#ifdef HAVE_LCD_BITMAP 56#ifdef HAVE_LCD_BITMAP
54 lcd_setfont(FONT_UI); 57 lcd_setfont(FONT_UI);
@@ -56,19 +59,42 @@ bool sleeptimer_screen(void)
56 lcd_setmargins(w, 8); 59 lcd_setmargins(w, 8);
57#endif 60#endif
58 61
62 lcd_clear_display();
63 lcd_puts_scroll(0, 0, str(LANG_SLEEP_TIMER));
64
59 while(!done) 65 while(!done)
60 { 66 {
61 button = button_get_w_tmo(HZ/20); 67 button = button_get_w_tmo(HZ);
62 switch(button) 68 switch(button)
63 { 69 {
64#ifdef HAVE_PLAYER_KEYPAD 70#ifdef HAVE_RECORDER_KEYPAD
65 case BUTTON_STOP: 71 case BUTTON_LEFT:
72 case BUTTON_PLAY:
66#else 73#else
74 case BUTTON_PLAY:
75#endif
76 done = true;
77 if (changed) {
78 lcd_stop_scroll();
79 lcd_puts(0, 0, str(LANG_MENU_SETTING_OK));
80 sleep(HZ/2);
81 }
82 break;
83
84#ifdef HAVE_RECORDER_KEYPAD
67 case BUTTON_OFF: 85 case BUTTON_OFF:
68 case BUTTON_LEFT: 86#else
87 case BUTTON_STOP:
88 case BUTTON_MENU:
69#endif 89#endif
70 done = true; 90 if (changed) {
71 break; 91 lcd_stop_scroll();
92 lcd_puts(0, 0, str(LANG_MENU_SETTING_CANCEL));
93 set_sleep_timer(org_timer);
94 sleep(HZ/2);
95 }
96 done = true;
97 break;
72 98
73#ifdef HAVE_PLAYER_KEYPAD 99#ifdef HAVE_PLAYER_KEYPAD
74 case BUTTON_RIGHT: 100 case BUTTON_RIGHT:
@@ -76,7 +102,6 @@ bool sleeptimer_screen(void)
76 case BUTTON_UP: 102 case BUTTON_UP:
77#endif 103#endif
78 oldtime = (get_sleep_timer()+59) / 60; 104 oldtime = (get_sleep_timer()+59) / 60;
79
80 if(oldtime < THRESHOLD) 105 if(oldtime < THRESHOLD)
81 amount = SMALL_STEP_SIZE; 106 amount = SMALL_STEP_SIZE;
82 else 107 else
@@ -85,7 +110,8 @@ bool sleeptimer_screen(void)
85 newtime = oldtime * 60 + amount; 110 newtime = oldtime * 60 + amount;
86 if(newtime > MAX_TIME) 111 if(newtime > MAX_TIME)
87 newtime = MAX_TIME; 112 newtime = MAX_TIME;
88 113
114 changed=true;
89 set_sleep_timer(newtime); 115 set_sleep_timer(newtime);
90 break; 116 break;
91 117
@@ -95,7 +121,6 @@ bool sleeptimer_screen(void)
95 case BUTTON_DOWN: 121 case BUTTON_DOWN:
96#endif 122#endif
97 oldtime = (get_sleep_timer()+59) / 60; 123 oldtime = (get_sleep_timer()+59) / 60;
98
99 if(oldtime <= THRESHOLD) 124 if(oldtime <= THRESHOLD)
100 amount = SMALL_STEP_SIZE; 125 amount = SMALL_STEP_SIZE;
101 else 126 else
@@ -105,14 +130,13 @@ bool sleeptimer_screen(void)
105 if(newtime < 0) 130 if(newtime < 0)
106 newtime = 0; 131 newtime = 0;
107 132
133 changed=true;
108 set_sleep_timer(newtime); 134 set_sleep_timer(newtime);
109 break; 135 break;
110 } 136 }
111 137
112 seconds = get_sleep_timer(); 138 seconds = get_sleep_timer();
113 139
114 lcd_clear_display();
115 lcd_puts(0, 0, str(LANG_SLEEP_TIMER));
116 if(seconds) 140 if(seconds)
117 { 141 {
118 seconds += 59; /* Round up for a "friendlier" display */ 142 seconds += 59; /* Round up for a "friendlier" display */
@@ -131,5 +155,6 @@ bool sleeptimer_screen(void)
131 155
132 lcd_update(); 156 lcd_update();
133 } 157 }
158 lcd_stop_scroll();
134 return false; 159 return false;
135} 160}