summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/wps.c87
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);