summaryrefslogtreecommitdiff
path: root/apps/screens.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/screens.c')
-rw-r--r--apps/screens.c271
1 files changed, 129 insertions, 142 deletions
diff --git a/apps/screens.c b/apps/screens.c
index 6987fc92e3..c2320a0217 100644
--- a/apps/screens.c
+++ b/apps/screens.c
@@ -37,6 +37,7 @@
37#include "system.h" 37#include "system.h"
38#include "powermgmt.h" 38#include "powermgmt.h"
39#include "adc.h" 39#include "adc.h"
40#include "action.h"
40 41
41#ifdef HAVE_LCD_BITMAP 42#ifdef HAVE_LCD_BITMAP
42#define BMPHEIGHT_usb_logo 32 43#define BMPHEIGHT_usb_logo 32
@@ -427,85 +428,128 @@ int on_screen(void)
427 return 0; 428 return 0;
428} 429}
429 430
430bool f2_screen(void) 431bool quick_screen(int context, int button)
431{ 432{
432 bool exit = false; 433 bool exit = false;
433 bool used = false; 434 bool used = false;
434 int w, h; 435 int w, h, key;
435 char buf[32]; 436 char buf[32];
436 int oldrepeat = global_settings.repeat_mode; 437 int oldrepeat = global_settings.repeat_mode;
437 438
439 /* just to stop compiler warning */
440 context = context;
438 lcd_setfont(FONT_SYSFIXED); 441 lcd_setfont(FONT_SYSFIXED);
439 lcd_getstringsize("A",&w,&h); 442
443 if(button==BUTTON_F2)
444 lcd_getstringsize("A",&w,&h);
440 445
441 while (!exit) { 446 while (!exit) {
442 char* ptr=NULL; 447 char* ptr=NULL;
443 448
444 lcd_clear_display(); 449 lcd_clear_display();
445 450
446 /* Shuffle mode */ 451 switch(button)
447 lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_SHUFFLE)); 452 {
448 lcd_putsxy(0, LCD_HEIGHT/2 - h, str(LANG_F2_MODE)); 453 case BUTTON_F2:
449 lcd_putsxy(0, LCD_HEIGHT/2, 454 /* Shuffle mode */
450 global_settings.playlist_shuffle ? 455 lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_SHUFFLE));
451 str(LANG_ON) : str(LANG_OFF)); 456 lcd_putsxy(0, LCD_HEIGHT/2 - h, str(LANG_F2_MODE));
452 lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward], 457 lcd_putsxy(0, LCD_HEIGHT/2,
453 LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true); 458 global_settings.playlist_shuffle ?
454 459 str(LANG_ON) : str(LANG_OFF));
455 /* Directory Filter */ 460
456 switch ( global_settings.dirfilter ) { 461 /* Directory Filter */
457 case SHOW_ALL: 462 switch ( global_settings.dirfilter ) {
458 ptr = str(LANG_FILTER_ALL); 463 case SHOW_ALL:
459 break; 464 ptr = str(LANG_FILTER_ALL);
460 465 break;
461 case SHOW_SUPPORTED: 466
462 ptr = str(LANG_FILTER_SUPPORTED); 467 case SHOW_SUPPORTED:
463 break; 468 ptr = str(LANG_FILTER_SUPPORTED);
464 469 break;
465 case SHOW_MUSIC: 470
466 ptr = str(LANG_FILTER_MUSIC); 471 case SHOW_MUSIC:
472 ptr = str(LANG_FILTER_MUSIC);
473 break;
474
475 case SHOW_PLAYLIST:
476 ptr = str(LANG_FILTER_PLAYLIST);
477 break;
478 }
479
480 snprintf(buf, sizeof buf, "%s:", str(LANG_FILTER));
481 lcd_getstringsize(buf,&w,&h);
482 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h*2, buf);
483 lcd_getstringsize(ptr,&w,&h);
484 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, ptr);
485
486 /* Repeat Mode */
487 switch ( global_settings.repeat_mode ) {
488 case REPEAT_OFF:
489 ptr = str(LANG_OFF);
490 break;
491
492 case REPEAT_ALL:
493 ptr = str(LANG_REPEAT_ALL);
494 break;
495
496 case REPEAT_ONE:
497 ptr = str(LANG_REPEAT_ONE);
498 break;
499 }
500
501 lcd_getstringsize(str(LANG_REPEAT),&w,&h);
502 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2, str(LANG_REPEAT));
503 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, str(LANG_F2_MODE));
504 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2, ptr);
467 break; 505 break;
468 506 case BUTTON_F3:
469 case SHOW_PLAYLIST: 507 /* Scrollbar */
470 ptr = str(LANG_FILTER_PLAYLIST); 508 lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_F3_SCROLL));
509 lcd_putsxy(0, LCD_HEIGHT/2 - h, str(LANG_F3_BAR));
510 lcd_putsxy(0, LCD_HEIGHT/2,
511 global_settings.scrollbar ? str(LANG_ON) : str(LANG_OFF));
512
513 /* Status bar */
514 ptr = str(LANG_F3_STATUS);
515 lcd_getstringsize(ptr,&w,&h);
516 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2, ptr);
517 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, str(LANG_F3_BAR));
518 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2,
519 global_settings.statusbar ? str(LANG_ON) : str(LANG_OFF));
520
521 /* Flip */
522 ptr = str(LANG_FLIP_DISPLAY);
523 lcd_getstringsize(ptr,&w,&h);
524 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h*2, str(LANG_FLIP_DISPLAY));
525 ptr = global_settings.flip_display ?
526 str(LANG_SET_BOOL_YES) : str(LANG_SET_BOOL_NO);
527 lcd_getstringsize(ptr,&w,&h);
528 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, ptr);
471 break; 529 break;
472 } 530 }
473 531
474 snprintf(buf, sizeof buf, "%s:", str(LANG_FILTER)); 532 lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward],
475 lcd_getstringsize(buf,&w,&h); 533 LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true);
476 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h*2, buf);
477 lcd_getstringsize(ptr,&w,&h);
478 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, ptr);
479 lcd_bitmap(bitmap_icons_7x8[Icon_DownArrow], 534 lcd_bitmap(bitmap_icons_7x8[Icon_DownArrow],
480 LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8, true); 535 LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8, true);
481
482 /* Repeat Mode */
483 switch ( global_settings.repeat_mode ) {
484 case REPEAT_OFF:
485 ptr = str(LANG_OFF);
486 break;
487
488 case REPEAT_ALL:
489 ptr = str(LANG_REPEAT_ALL);
490 break;
491
492 case REPEAT_ONE:
493 ptr = str(LANG_REPEAT_ONE);
494 break;
495 }
496
497 lcd_getstringsize(str(LANG_REPEAT),&w,&h);
498 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2, str(LANG_REPEAT));
499 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, str(LANG_F2_MODE));
500 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2, ptr);
501 lcd_bitmap(bitmap_icons_7x8[Icon_FastForward], 536 lcd_bitmap(bitmap_icons_7x8[Icon_FastForward],
502 LCD_WIDTH/2 + 8, LCD_HEIGHT/2 - 4, 7, 8, true); 537 LCD_WIDTH/2 + 8, LCD_HEIGHT/2 - 4, 7, 8, true);
503 538
504 lcd_update(); 539 lcd_update();
505 540 key = button_get(true);
506 switch (button_get(true)) { 541
507 case BUTTON_LEFT: 542 /*
543 * This is a temporary kludge so that the F2 & F3 menus operate in exactly
544 * the same manner up until the full F2/F3 configurable menus are complete
545 */
546
547 if( key == BUTTON_LEFT || key == BUTTON_RIGHT || key == BUTTON_DOWN || key == ( BUTTON_LEFT | BUTTON_REPEAT ) || key == ( BUTTON_RIGHT | BUTTON_REPEAT ) || key == ( BUTTON_DOWN | BUTTON_REPEAT ) )
548 key = button | key;
549
550 switch (key) {
508 case BUTTON_F2 | BUTTON_LEFT: 551 case BUTTON_F2 | BUTTON_LEFT:
552 case BUTTON_F2 | BUTTON_LEFT | BUTTON_REPEAT:
509 global_settings.playlist_shuffle = 553 global_settings.playlist_shuffle =
510 !global_settings.playlist_shuffle; 554 !global_settings.playlist_shuffle;
511 555
@@ -519,110 +563,38 @@ bool f2_screen(void)
519 used = true; 563 used = true;
520 break; 564 break;
521 565
522 case BUTTON_DOWN:
523 case BUTTON_F2 | BUTTON_DOWN: 566 case BUTTON_F2 | BUTTON_DOWN:
567 case BUTTON_F2 | BUTTON_DOWN | BUTTON_REPEAT:
524 global_settings.dirfilter++; 568 global_settings.dirfilter++;
525 if ( global_settings.dirfilter >= NUM_FILTER_MODES ) 569 if ( global_settings.dirfilter >= NUM_FILTER_MODES )
526 global_settings.dirfilter = 0; 570 global_settings.dirfilter = 0;
527 used = true; 571 used = true;
528 break; 572 break;
529 573
530 case BUTTON_RIGHT:
531 case BUTTON_F2 | BUTTON_RIGHT: 574 case BUTTON_F2 | BUTTON_RIGHT:
575 case BUTTON_F2 | BUTTON_RIGHT | BUTTON_REPEAT:
532 global_settings.repeat_mode++; 576 global_settings.repeat_mode++;
533 if ( global_settings.repeat_mode >= NUM_REPEAT_MODES ) 577 if ( global_settings.repeat_mode >= NUM_REPEAT_MODES )
534 global_settings.repeat_mode = 0; 578 global_settings.repeat_mode = 0;
535 used = true; 579 used = true;
536 break; 580 break;
537 581
538 case BUTTON_F2 | BUTTON_REL:
539 if ( used )
540 exit = true;
541 used = true;
542 break;
543
544 case BUTTON_F2 | BUTTON_REPEAT:
545 used = true;
546 break;
547
548 case BUTTON_OFF | BUTTON_REPEAT:
549 return false;
550
551 case SYS_USB_CONNECTED:
552 usb_screen();
553 return true;
554 }
555 }
556
557 settings_save();
558 lcd_setfont(FONT_UI);
559 if ( oldrepeat != global_settings.repeat_mode )
560 mpeg_flush_and_reload_tracks();
561
562 return false;
563}
564
565bool f3_screen(void)
566{
567 bool exit = false;
568 bool used = false;
569
570 lcd_setfont(FONT_SYSFIXED);
571
572 while (!exit) {
573 int w,h;
574 char* ptr;
575
576 lcd_clear_display();
577
578 /* Scrollbar */
579 lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_F3_SCROLL));
580 lcd_putsxy(0, LCD_HEIGHT/2 - h, str(LANG_F3_BAR));
581 lcd_putsxy(0, LCD_HEIGHT/2,
582 global_settings.scrollbar ? str(LANG_ON) : str(LANG_OFF));
583 lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward],
584 LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true);
585
586 /* Status bar */
587 ptr = str(LANG_F3_STATUS);
588 lcd_getstringsize(ptr,&w,&h);
589 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2, ptr);
590 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, str(LANG_F3_BAR));
591 lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2,
592 global_settings.statusbar ? str(LANG_ON) : str(LANG_OFF));
593 lcd_bitmap(bitmap_icons_7x8[Icon_FastForward],
594 LCD_WIDTH/2 + 8, LCD_HEIGHT/2 - 4, 7, 8, true);
595
596 /* Flip */
597 ptr = str(LANG_FLIP_DISPLAY);
598 lcd_getstringsize(ptr,&w,&h);
599 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h*2, str(LANG_FLIP_DISPLAY));
600 ptr = global_settings.flip_display ?
601 str(LANG_SET_BOOL_YES) : str(LANG_SET_BOOL_NO);
602 lcd_getstringsize(ptr,&w,&h);
603 lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, ptr);
604 lcd_bitmap(bitmap_icons_7x8[Icon_DownArrow],
605 LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8, true);
606
607 lcd_update();
608
609 switch (button_get(true)) {
610 case BUTTON_LEFT:
611 case BUTTON_F3 | BUTTON_LEFT: 582 case BUTTON_F3 | BUTTON_LEFT:
583 case BUTTON_F3 | BUTTON_LEFT | BUTTON_REPEAT:
612 global_settings.scrollbar = !global_settings.scrollbar; 584 global_settings.scrollbar = !global_settings.scrollbar;
613 used = true; 585 used = true;
614 break; 586 break;
615 587
616 case BUTTON_RIGHT:
617 case BUTTON_F3 | BUTTON_RIGHT: 588 case BUTTON_F3 | BUTTON_RIGHT:
589 case BUTTON_F3 | BUTTON_RIGHT | BUTTON_REPEAT:
618 global_settings.statusbar = !global_settings.statusbar; 590 global_settings.statusbar = !global_settings.statusbar;
619 used = true; 591 used = true;
620 break; 592 break;
621 593
622 case BUTTON_DOWN:
623 case BUTTON_F3 | BUTTON_DOWN: 594 case BUTTON_F3 | BUTTON_DOWN:
624 case BUTTON_UP: /* allow "up" as well, more tolerant if tilted */ 595 case BUTTON_F3 | BUTTON_DOWN | BUTTON_REPEAT:
625 case BUTTON_F3 | BUTTON_UP: 596 case BUTTON_F3 | BUTTON_UP:
597 case BUTTON_F3 | BUTTON_UP | BUTTON_REPEAT:
626 global_settings.flip_display = !global_settings.flip_display; 598 global_settings.flip_display = !global_settings.flip_display;
627 button_set_flip(global_settings.flip_display); 599 button_set_flip(global_settings.flip_display);
628 lcd_set_flip(global_settings.flip_display); 600 lcd_set_flip(global_settings.flip_display);
@@ -630,13 +602,13 @@ bool f3_screen(void)
630 break; 602 break;
631 603
632 case BUTTON_F3 | BUTTON_REL: 604 case BUTTON_F3 | BUTTON_REL:
633 if ( used ) 605 case BUTTON_F2 | BUTTON_REL:
606
607 if( used )
634 exit = true; 608 exit = true;
635 used = true;
636 break;
637 609
638 case BUTTON_F3 | BUTTON_REPEAT:
639 used = true; 610 used = true;
611
640 break; 612 break;
641 613
642 case BUTTON_OFF | BUTTON_REPEAT: 614 case BUTTON_OFF | BUTTON_REPEAT:
@@ -649,10 +621,25 @@ bool f3_screen(void)
649 } 621 }
650 622
651 settings_save(); 623 settings_save();
652 if (global_settings.statusbar) 624
653 lcd_setmargins(0, STATUSBAR_HEIGHT); 625 switch( button )
654 else 626 {
655 lcd_setmargins(0, 0); 627 case BUTTON_F2:
628
629 if ( oldrepeat != global_settings.repeat_mode )
630 mpeg_flush_and_reload_tracks();
631
632 break;
633 case BUTTON_F3:
634
635 if (global_settings.statusbar)
636 lcd_setmargins(0, STATUSBAR_HEIGHT);
637 else
638 lcd_setmargins(0, 0);
639
640 break;
641 }
642
656 lcd_setfont(FONT_UI); 643 lcd_setfont(FONT_UI);
657 644
658 return false; 645 return false;