summaryrefslogtreecommitdiff
path: root/apps/menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/menu.c')
-rw-r--r--apps/menu.c77
1 files changed, 36 insertions, 41 deletions
diff --git a/apps/menu.c b/apps/menu.c
index fccc88479b..e999c5f774 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -288,11 +288,17 @@ int menu_show(int m)
288 } 288 }
289 289
290 menu_lines = height / fh; 290 menu_lines = height / fh;
291#else
292 int menu_lines = MENU_LINES;
291#endif 293#endif
292 294
293 /* Put the cursor on the first line and draw the menu */ 295 /* Put the cursor on the first line and draw the menu */
294 put_cursor(m, menus[m].cursor); 296 put_cursor(m, menus[m].cursor);
295 297
298 /* wait until all keys are released */
299 while (button_get(false) != BUTTON_NONE)
300 yield();
301
296 while (!exit) { 302 while (!exit) {
297 key = button_get_w_tmo(HZ/2); 303 key = button_get_w_tmo(HZ/2);
298 304
@@ -308,25 +314,15 @@ int menu_show(int m)
308 key = menus[m].callback(key, m); 314 key = menus[m].callback(key, m);
309 315
310 switch( key ) { 316 switch( key ) {
311 317 case MENU_PREV:
312#ifdef HAVE_RECORDER_KEYPAD 318 case MENU_PREV | BUTTON_REPEAT:
313 case BUTTON_UP:
314 case BUTTON_UP | BUTTON_REPEAT:
315#else
316 case BUTTON_LEFT:
317 case BUTTON_LEFT | BUTTON_REPEAT:
318#endif
319 if (menus[m].cursor) { 319 if (menus[m].cursor) {
320 /* move up */ 320 /* move up */
321 put_cursor(m, menus[m].cursor-1); 321 put_cursor(m, menus[m].cursor-1);
322 } 322 }
323 else { 323 else {
324 /* move to bottom */ 324 /* move to bottom */
325#ifdef HAVE_RECORDER_KEYPAD
326 menus[m].top = menus[m].itemcount-(menu_lines+1); 325 menus[m].top = menus[m].itemcount-(menu_lines+1);
327#else
328 menus[m].top = menus[m].itemcount-3;
329#endif
330 if (menus[m].top < 0) 326 if (menus[m].top < 0)
331 menus[m].top = 0; 327 menus[m].top = 0;
332 menus[m].cursor = menus[m].itemcount-1; 328 menus[m].cursor = menus[m].itemcount-1;
@@ -334,13 +330,8 @@ int menu_show(int m)
334 } 330 }
335 break; 331 break;
336 332
337#ifdef HAVE_RECORDER_KEYPAD 333 case MENU_NEXT:
338 case BUTTON_DOWN: 334 case MENU_NEXT | BUTTON_REPEAT:
339 case BUTTON_DOWN | BUTTON_REPEAT:
340#else
341 case BUTTON_RIGHT:
342 case BUTTON_RIGHT | BUTTON_REPEAT:
343#endif
344 if (menus[m].cursor < menus[m].itemcount-1) { 335 if (menus[m].cursor < menus[m].itemcount-1) {
345 /* move down */ 336 /* move down */
346 put_cursor(m, menus[m].cursor+1); 337 put_cursor(m, menus[m].cursor+1);
@@ -353,22 +344,23 @@ int menu_show(int m)
353 } 344 }
354 break; 345 break;
355 346
356#ifdef HAVE_RECORDER_KEYPAD 347 case MENU_ENTER:
357 case BUTTON_RIGHT: 348#ifdef MENU_ENTER2
349 case MENU_ENTER2:
358#endif 350#endif
359 case BUTTON_PLAY:
360 /* Erase current display state */ 351 /* Erase current display state */
361 lcd_clear_display(); 352 lcd_clear_display();
362 return menus[m].cursor; 353 return menus[m].cursor;
363 354
364#ifdef HAVE_RECORDER_KEYPAD 355 case MENU_EXIT:
365 case BUTTON_LEFT: 356 case MENU_EXIT | BUTTON_REPEAT:
366 case BUTTON_F1: 357#ifdef MENU_EXIT2
367 case BUTTON_OFF | BUTTON_REPEAT: 358 case MENU_EXIT2:
368#else 359 case MENU_EXIT2 | BUTTON_REPEAT:
369 case BUTTON_STOP: 360#endif
370 case BUTTON_MENU: 361#ifdef MENU_EXIT3
371 case BUTTON_STOP | BUTTON_REPEAT: 362 case MENU_EXIT3:
363 case MENU_EXIT3 | BUTTON_REPEAT:
372#endif 364#endif
373 lcd_stop_scroll(); 365 lcd_stop_scroll();
374 exit = true; 366 exit = true;
@@ -388,18 +380,21 @@ int menu_show(int m)
388 380
389bool menu_run(int m) 381bool menu_run(int m)
390{ 382{
391 bool stop=false; 383 while (1) {
392 while (!stop) { 384 switch (menu_show(m))
393 int result=menu_show(m); 385 {
394 if (result == MENU_SELECTED_EXIT) 386 case MENU_SELECTED_EXIT:
395 return false; 387 return false;
396 else if (result == MENU_ATTACHED_USB) 388
397 return true; 389 case MENU_ATTACHED_USB:
398 if (menus[m].items[menus[m].cursor].function()) { 390 return true;
399 return true; 391
392 default:
393 if (menus[m].items[menus[m].cursor].function())
394 return true;
395 }
400 } 396 }
401 } 397 return false;
402 return false;
403} 398}
404 399
405/* 400/*