diff options
Diffstat (limited to 'apps/wps.c')
-rw-r--r-- | apps/wps.c | 87 |
1 files changed, 55 insertions, 32 deletions
diff --git a/apps/wps.c b/apps/wps.c index 270f3ae1de..2bf74ad1f9 100644 --- a/apps/wps.c +++ b/apps/wps.c | |||
@@ -127,9 +127,8 @@ int wps_show(void) | |||
127 | unsigned int lastlength=0, lastsize=0, lastrate=0; | 127 | unsigned int lastlength=0, lastsize=0, lastrate=0; |
128 | int lastartist=0, lastalbum=0, lasttitle=0; | 128 | int lastartist=0, lastalbum=0, lasttitle=0; |
129 | bool lastvbr = false; | 129 | bool lastvbr = false; |
130 | #ifdef HAVE_PLAYER_KEYPAD | 130 | bool keys_locked = false; |
131 | bool dont_quit = true; | 131 | bool dont_go_to_menu = false; |
132 | #endif | ||
133 | 132 | ||
134 | lcd_clear_display(); | 133 | lcd_clear_display(); |
135 | 134 | ||
@@ -195,20 +194,19 @@ int wps_show(void) | |||
195 | for ( i=0;i<5;i++ ) { | 194 | for ( i=0;i<5;i++ ) { |
196 | switch ( button_get(false) ) { | 195 | switch ( button_get(false) ) { |
197 | case BUTTON_ON: | 196 | case BUTTON_ON: |
198 | #ifdef HAVE_PLAYER_KEYPAD | 197 | if(keys_locked) |
199 | /* We don't want to quit just yet. Let's wait until | 198 | break; |
200 | the key is released. */ | 199 | #ifdef HAVE_LCD_CHARCELLS |
201 | break; | 200 | lcd_icon(ICON_RECORD, false); |
202 | #else | ||
203 | return 0; | ||
204 | #endif | 201 | #endif |
202 | return 0; | ||
205 | 203 | ||
206 | #ifdef HAVE_RECORDER_KEYPAD | 204 | #ifdef HAVE_RECORDER_KEYPAD |
207 | case BUTTON_PLAY: | 205 | case BUTTON_PLAY: |
208 | #else | 206 | #else |
209 | case BUTTON_UP: | 207 | case BUTTON_UP: |
210 | #endif | 208 | #endif |
211 | if (global_settings.hold) | 209 | if (keys_locked) |
212 | break; | 210 | break; |
213 | 211 | ||
214 | if ( playing ) | 212 | if ( playing ) |
@@ -227,7 +225,7 @@ int wps_show(void) | |||
227 | 225 | ||
228 | #ifdef HAVE_RECORDER_KEYPAD | 226 | #ifdef HAVE_RECORDER_KEYPAD |
229 | case BUTTON_UP: | 227 | case BUTTON_UP: |
230 | if (global_settings.hold) | 228 | if (keys_locked) |
231 | break; | 229 | break; |
232 | global_settings.volume++; | 230 | global_settings.volume++; |
233 | if(global_settings.volume > mpeg_sound_max(SOUND_VOLUME)) | 231 | if(global_settings.volume > mpeg_sound_max(SOUND_VOLUME)) |
@@ -236,7 +234,7 @@ int wps_show(void) | |||
236 | break; | 234 | break; |
237 | 235 | ||
238 | case BUTTON_DOWN: | 236 | case BUTTON_DOWN: |
239 | if (global_settings.hold) | 237 | if (keys_locked) |
240 | break; | 238 | break; |
241 | global_settings.volume--; | 239 | global_settings.volume--; |
242 | if(global_settings.volume < mpeg_sound_min(SOUND_VOLUME)) | 240 | if(global_settings.volume < mpeg_sound_min(SOUND_VOLUME)) |
@@ -246,60 +244,85 @@ int wps_show(void) | |||
246 | #endif | 244 | #endif |
247 | 245 | ||
248 | case BUTTON_LEFT: | 246 | case BUTTON_LEFT: |
249 | if (global_settings.hold) | 247 | if (keys_locked) |
250 | break; | 248 | break; |
251 | mpeg_prev(); | 249 | mpeg_prev(); |
252 | break; | 250 | break; |
253 | 251 | ||
254 | case BUTTON_RIGHT: | 252 | case BUTTON_RIGHT: |
255 | if (global_settings.hold) | 253 | if (keys_locked) |
256 | break; | 254 | break; |
257 | mpeg_next(); | 255 | mpeg_next(); |
258 | break; | 256 | break; |
259 | 257 | ||
260 | #ifdef HAVE_PLAYER_KEYPAD | 258 | #ifdef HAVE_PLAYER_KEYPAD |
261 | case BUTTON_LEFT | BUTTON_ON: | 259 | case BUTTON_MENU | BUTTON_LEFT: |
262 | dont_quit = true; | 260 | dont_go_to_menu = true; |
263 | global_settings.volume--; | 261 | global_settings.volume--; |
264 | if(global_settings.volume < mpeg_sound_min(SOUND_VOLUME)) | 262 | if(global_settings.volume < mpeg_sound_min(SOUND_VOLUME)) |
265 | global_settings.volume = mpeg_sound_min(SOUND_VOLUME); | 263 | global_settings.volume = mpeg_sound_min(SOUND_VOLUME); |
266 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); | 264 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); |
267 | break; | 265 | break; |
268 | 266 | ||
269 | case BUTTON_RIGHT | BUTTON_ON: | 267 | case BUTTON_MENU | BUTTON_RIGHT: |
270 | dont_quit = true; | 268 | dont_go_to_menu = true; |
271 | global_settings.volume++; | 269 | global_settings.volume++; |
272 | if(global_settings.volume > mpeg_sound_max(SOUND_VOLUME)) | 270 | if(global_settings.volume > mpeg_sound_max(SOUND_VOLUME)) |
273 | global_settings.volume = mpeg_sound_max(SOUND_VOLUME); | 271 | global_settings.volume = mpeg_sound_max(SOUND_VOLUME); |
274 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); | 272 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); |
275 | break; | 273 | break; |
276 | 274 | ||
277 | case BUTTON_ON | BUTTON_REL: | 275 | case BUTTON_MENU: |
278 | /* Quit if ON has been pressed without changing | 276 | lcd_icon(ICON_PARAM, true); |
279 | the volume */ | ||
280 | if(!dont_quit) | ||
281 | return 0; | ||
282 | |||
283 | dont_quit = false; | ||
284 | break; | 277 | break; |
285 | #endif | 278 | #endif |
279 | |||
280 | #ifdef HAVE_RECORDER_KEYPAD | ||
281 | case BUTTON_F1 | BUTTON_DOWN: | ||
282 | #else | ||
283 | case BUTTON_MENU | BUTTON_STOP: | ||
284 | #endif | ||
285 | keys_locked = !keys_locked; | ||
286 | #ifdef HAVE_LCD_CHARCELLS | ||
287 | lcd_icon(ICON_PARAM, false); | ||
288 | if(keys_locked) | ||
289 | lcd_icon(ICON_RECORD, true); | ||
290 | else | ||
291 | lcd_icon(ICON_RECORD, false); | ||
292 | #endif | ||
293 | dont_go_to_menu = true; | ||
294 | break; | ||
286 | 295 | ||
287 | #ifdef HAVE_RECORDER_KEYPAD | 296 | #ifdef HAVE_RECORDER_KEYPAD |
288 | case BUTTON_F1: | 297 | case BUTTON_F1 | BUTTON_REL: |
289 | #else | 298 | #else |
290 | case BUTTON_MENU: | 299 | case BUTTON_MENU | BUTTON_REL: |
300 | #endif | ||
301 | #ifdef HAVE_LCD_CHARCELLS | ||
302 | lcd_icon(ICON_PARAM, false); | ||
291 | #endif | 303 | #endif |
292 | lcd_stop_scroll(); | 304 | if(!keys_locked && !dont_go_to_menu) |
293 | main_menu(); | 305 | { |
294 | draw_screen(id3); | 306 | lcd_stop_scroll(); |
307 | main_menu(); | ||
308 | draw_screen(id3); | ||
309 | /* Prevent any stray BUTTON_REL events from going | ||
310 | back to the main menu until we get a new | ||
311 | BUTTON_MENU event */ | ||
312 | dont_go_to_menu = true; | ||
313 | } | ||
314 | else | ||
315 | { | ||
316 | dont_go_to_menu = false; | ||
317 | } | ||
295 | break; | 318 | break; |
296 | 319 | ||
297 | #ifdef HAVE_RECORDER_KEYPAD | 320 | #ifdef HAVE_RECORDER_KEYPAD |
298 | case BUTTON_OFF: | 321 | case BUTTON_OFF: |
299 | #else | 322 | #else |
300 | case BUTTON_DOWN: | 323 | case BUTTON_DOWN: |
301 | #endif | 324 | #endif |
302 | if (global_settings.hold) | 325 | if (keys_locked) |
303 | break; | 326 | break; |
304 | mpeg_stop(); | 327 | mpeg_stop(); |
305 | status_set_playmode(STATUS_STOP); | 328 | status_set_playmode(STATUS_STOP); |