diff options
Diffstat (limited to 'apps/wps.c')
-rw-r--r-- | apps/wps.c | 288 |
1 files changed, 8 insertions, 280 deletions
diff --git a/apps/wps.c b/apps/wps.c index be3f21193b..2729b288f3 100644 --- a/apps/wps.c +++ b/apps/wps.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include "status.h" | 37 | #include "status.h" |
38 | #include "main_menu.h" | 38 | #include "main_menu.h" |
39 | #include "ata.h" | 39 | #include "ata.h" |
40 | #include "screens.h" | ||
40 | #ifdef HAVE_LCD_BITMAP | 41 | #ifdef HAVE_LCD_BITMAP |
41 | #include "icons.h" | 42 | #include "icons.h" |
42 | #endif | 43 | #endif |
@@ -151,22 +152,6 @@ void display_mute_text(bool muted) | |||
151 | sleep(HZ); | 152 | sleep(HZ); |
152 | } | 153 | } |
153 | 154 | ||
154 | static void handle_usb(void) | ||
155 | { | ||
156 | #ifndef SIMULATOR | ||
157 | backlight_time(4); | ||
158 | |||
159 | /* Tell the USB thread that we are safe */ | ||
160 | DEBUGF("wps got SYS_USB_CONNECTED\n"); | ||
161 | usb_acknowledge(SYS_USB_CONNECTED_ACK); | ||
162 | |||
163 | /* Wait until the USB cable is extracted again */ | ||
164 | usb_wait_for_disconnect(&button_queue); | ||
165 | |||
166 | backlight_time(global_settings.backlight); | ||
167 | #endif | ||
168 | } | ||
169 | |||
170 | static int browse_id3(void) | 155 | static int browse_id3(void) |
171 | { | 156 | { |
172 | int button; | 157 | int button; |
@@ -298,12 +283,10 @@ static int browse_id3(void) | |||
298 | exit = true; | 283 | exit = true; |
299 | break; | 284 | break; |
300 | 285 | ||
301 | #ifndef SIMULATOR | ||
302 | case SYS_USB_CONNECTED: | 286 | case SYS_USB_CONNECTED: |
303 | handle_usb(); | 287 | usb_screen(); |
304 | return SYS_USB_CONNECTED; | 288 | return SYS_USB_CONNECTED; |
305 | break; | 289 | break; |
306 | #endif | ||
307 | } | 290 | } |
308 | } | 291 | } |
309 | return 0; | 292 | return 0; |
@@ -413,7 +396,7 @@ static bool ffwd_rew(int button) | |||
413 | break; | 396 | break; |
414 | 397 | ||
415 | case SYS_USB_CONNECTED: | 398 | case SYS_USB_CONNECTED: |
416 | handle_usb(); | 399 | usb_screen(); |
417 | usb = true; | 400 | usb = true; |
418 | exit = true; | 401 | exit = true; |
419 | break; | 402 | break; |
@@ -488,7 +471,7 @@ static bool keylock(void) | |||
488 | break; | 471 | break; |
489 | 472 | ||
490 | case SYS_USB_CONNECTED: | 473 | case SYS_USB_CONNECTED: |
491 | handle_usb(); | 474 | usb_screen(); |
492 | return true; | 475 | return true; |
493 | 476 | ||
494 | case BUTTON_NONE: | 477 | case BUTTON_NONE: |
@@ -541,7 +524,8 @@ static bool menu(void) | |||
541 | if ( !last_button ) { | 524 | if ( !last_button ) { |
542 | lcd_stop_scroll(); | 525 | lcd_stop_scroll(); |
543 | button_set_release(old_release_mask); | 526 | button_set_release(old_release_mask); |
544 | main_menu(); | 527 | if (main_menu()) |
528 | return true; | ||
545 | #ifdef HAVE_LCD_BITMAP | 529 | #ifdef HAVE_LCD_BITMAP |
546 | if(global_settings.statusbar) | 530 | if(global_settings.statusbar) |
547 | lcd_setmargins(0, STATUSBAR_HEIGHT); | 531 | lcd_setmargins(0, STATUSBAR_HEIGHT); |
@@ -608,7 +592,7 @@ static bool menu(void) | |||
608 | break; | 592 | break; |
609 | 593 | ||
610 | case SYS_USB_CONNECTED: | 594 | case SYS_USB_CONNECTED: |
611 | handle_usb(); | 595 | usb_screen(); |
612 | return true; | 596 | return true; |
613 | } | 597 | } |
614 | last_button = button; | 598 | last_button = button; |
@@ -623,260 +607,6 @@ static bool menu(void) | |||
623 | return false; | 607 | return false; |
624 | } | 608 | } |
625 | 609 | ||
626 | #ifdef HAVE_LCD_BITMAP | ||
627 | /* returns: | ||
628 | 0 if no key was pressed | ||
629 | 1 if a key was pressed (or if ON was held down long enough to repeat) | ||
630 | 2 if USB was connected */ | ||
631 | int on_screen(void) | ||
632 | { | ||
633 | static int pitch = 100; | ||
634 | bool exit = false; | ||
635 | bool used = false; | ||
636 | |||
637 | while (!exit) { | ||
638 | |||
639 | if ( used ) { | ||
640 | char* ptr; | ||
641 | char buf[32]; | ||
642 | int w, h; | ||
643 | |||
644 | lcd_scroll_pause(); | ||
645 | lcd_clear_display(); | ||
646 | |||
647 | ptr = str(LANG_PITCH_UP); | ||
648 | lcd_getstringsize(ptr,FONT_UI,&w,&h); | ||
649 | lcd_putsxy((LCD_WIDTH-w)/2, 0, ptr, FONT_UI); | ||
650 | lcd_bitmap(bitmap_icons_7x8[Icon_UpArrow], | ||
651 | LCD_WIDTH/2 - 3, h*2, 7, 8, true); | ||
652 | |||
653 | snprintf(buf, sizeof buf, "%d%%", pitch); | ||
654 | lcd_getstringsize(buf,FONT_UI,&w,&h); | ||
655 | lcd_putsxy((LCD_WIDTH-w)/2, h, buf, FONT_UI); | ||
656 | |||
657 | ptr = str(LANG_PITCH_DOWN); | ||
658 | lcd_getstringsize(ptr,FONT_UI,&w,&h); | ||
659 | lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, ptr, FONT_UI); | ||
660 | lcd_bitmap(bitmap_icons_7x8[Icon_DownArrow], | ||
661 | LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8, true); | ||
662 | |||
663 | ptr = str(LANG_PAUSE); | ||
664 | lcd_getstringsize(ptr,FONT_UI,&w,&h); | ||
665 | lcd_putsxy((LCD_WIDTH-(w/2))/2, LCD_HEIGHT/2 - h/2, ptr, FONT_UI); | ||
666 | lcd_bitmap(bitmap_icons_7x8[Icon_Pause], | ||
667 | (LCD_WIDTH-(w/2))/2-10, LCD_HEIGHT/2 - h/2, 7, 8, true); | ||
668 | |||
669 | lcd_update(); | ||
670 | } | ||
671 | |||
672 | /* use lastbutton, so the main loop can decide whether to | ||
673 | exit to browser or not */ | ||
674 | switch (button_get(true)) { | ||
675 | case BUTTON_UP: | ||
676 | case BUTTON_ON | BUTTON_UP: | ||
677 | case BUTTON_ON | BUTTON_UP | BUTTON_REPEAT: | ||
678 | used = true; | ||
679 | pitch++; | ||
680 | if ( pitch > 200 ) | ||
681 | pitch = 200; | ||
682 | #ifdef HAVE_MAS3587F | ||
683 | mpeg_set_pitch(pitch); | ||
684 | #endif | ||
685 | break; | ||
686 | |||
687 | case BUTTON_DOWN: | ||
688 | case BUTTON_ON | BUTTON_DOWN: | ||
689 | case BUTTON_ON | BUTTON_DOWN | BUTTON_REPEAT: | ||
690 | used = true; | ||
691 | pitch--; | ||
692 | if ( pitch < 50 ) | ||
693 | pitch = 50; | ||
694 | #ifdef HAVE_MAS3587F | ||
695 | mpeg_set_pitch(pitch); | ||
696 | #endif | ||
697 | break; | ||
698 | |||
699 | case BUTTON_ON | BUTTON_PLAY: | ||
700 | mpeg_pause(); | ||
701 | used = true; | ||
702 | break; | ||
703 | |||
704 | case BUTTON_PLAY | BUTTON_REL: | ||
705 | mpeg_resume(); | ||
706 | used = true; | ||
707 | break; | ||
708 | |||
709 | case BUTTON_ON | BUTTON_PLAY | BUTTON_REL: | ||
710 | mpeg_resume(); | ||
711 | exit = true; | ||
712 | break; | ||
713 | |||
714 | #ifdef SIMULATOR | ||
715 | case BUTTON_ON: | ||
716 | #else | ||
717 | case BUTTON_ON | BUTTON_REL: | ||
718 | case BUTTON_ON | BUTTON_UP | BUTTON_REL: | ||
719 | case BUTTON_ON | BUTTON_DOWN | BUTTON_REL: | ||
720 | #endif | ||
721 | exit = true; | ||
722 | break; | ||
723 | |||
724 | case BUTTON_ON | BUTTON_REPEAT: | ||
725 | used = true; | ||
726 | break; | ||
727 | |||
728 | #ifndef SIMULATOR | ||
729 | case SYS_USB_CONNECTED: | ||
730 | handle_usb(); | ||
731 | return 2; | ||
732 | #endif | ||
733 | } | ||
734 | } | ||
735 | |||
736 | if ( used ) | ||
737 | return 1; | ||
738 | else | ||
739 | return 0; | ||
740 | } | ||
741 | |||
742 | bool f2_screen(void) | ||
743 | { | ||
744 | bool exit = false; | ||
745 | bool used = false; | ||
746 | int w, h; | ||
747 | char buf[32]; | ||
748 | |||
749 | /* Get the font height */ | ||
750 | lcd_getstringsize("A",FONT_UI,&w,&h); | ||
751 | |||
752 | lcd_stop_scroll(); | ||
753 | |||
754 | while (!exit) { | ||
755 | lcd_clear_display(); | ||
756 | |||
757 | lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_SHUFFLE), FONT_UI); | ||
758 | lcd_putsxy(0, LCD_HEIGHT/2 - h, str(LANG_F2_MODE), FONT_UI); | ||
759 | lcd_putsxy(0, LCD_HEIGHT/2, | ||
760 | global_settings.playlist_shuffle ? str(LANG_ON) : str(LANG_OFF), FONT_UI); | ||
761 | lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward], | ||
762 | LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true); | ||
763 | |||
764 | snprintf(buf, sizeof buf, str(LANG_DIR_FILTER), | ||
765 | global_settings.mp3filter ? str(LANG_ON) : str(LANG_OFF)); | ||
766 | |||
767 | /* Get the string width and height */ | ||
768 | lcd_getstringsize(buf,FONT_UI,&w,&h); | ||
769 | lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, buf, FONT_UI); | ||
770 | lcd_bitmap(bitmap_icons_7x8[Icon_DownArrow], | ||
771 | LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8, true); | ||
772 | |||
773 | lcd_update(); | ||
774 | |||
775 | switch (button_get(true)) { | ||
776 | case BUTTON_LEFT: | ||
777 | case BUTTON_F2 | BUTTON_LEFT: | ||
778 | global_settings.playlist_shuffle = | ||
779 | !global_settings.playlist_shuffle; | ||
780 | |||
781 | if (global_settings.playlist_shuffle) | ||
782 | randomise_playlist(current_tick); | ||
783 | else | ||
784 | sort_playlist(true); | ||
785 | used = true; | ||
786 | break; | ||
787 | |||
788 | case BUTTON_DOWN: | ||
789 | case BUTTON_F2 | BUTTON_DOWN: | ||
790 | global_settings.mp3filter = !global_settings.mp3filter; | ||
791 | used = true; | ||
792 | break; | ||
793 | |||
794 | case BUTTON_F2 | BUTTON_REL: | ||
795 | if ( used ) | ||
796 | exit = true; | ||
797 | used = true; | ||
798 | break; | ||
799 | |||
800 | #ifndef SIMULATOR | ||
801 | case SYS_USB_CONNECTED: | ||
802 | handle_usb(); | ||
803 | return true; | ||
804 | #endif | ||
805 | } | ||
806 | } | ||
807 | |||
808 | settings_save(); | ||
809 | |||
810 | return false; | ||
811 | } | ||
812 | |||
813 | bool f3_screen(void) | ||
814 | { | ||
815 | bool exit = false; | ||
816 | bool used = false; | ||
817 | |||
818 | lcd_stop_scroll(); | ||
819 | |||
820 | while (!exit) { | ||
821 | int w,h; | ||
822 | char* ptr; | ||
823 | |||
824 | ptr = str(LANG_F3_STATUS); | ||
825 | lcd_getstringsize(ptr,FONT_UI,&w,&h); | ||
826 | lcd_clear_display(); | ||
827 | |||
828 | lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_F3_SCROLL), FONT_UI); | ||
829 | lcd_putsxy(0, LCD_HEIGHT/2 - h, str(LANG_F3_BAR), FONT_UI); | ||
830 | lcd_putsxy(0, LCD_HEIGHT/2, | ||
831 | global_settings.scrollbar ? str(LANG_ON) : str(LANG_OFF), FONT_UI); | ||
832 | lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward], | ||
833 | LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true); | ||
834 | |||
835 | lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2, ptr, FONT_UI); | ||
836 | lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, str(LANG_F3_BAR), FONT_UI); | ||
837 | lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2, | ||
838 | global_settings.statusbar ? str(LANG_ON) : str(LANG_OFF), FONT_UI); | ||
839 | lcd_bitmap(bitmap_icons_7x8[Icon_FastForward], | ||
840 | LCD_WIDTH/2 + 8, LCD_HEIGHT/2 - 4, 7, 8, true); | ||
841 | lcd_update(); | ||
842 | |||
843 | switch (button_get(true)) { | ||
844 | case BUTTON_LEFT: | ||
845 | case BUTTON_F3 | BUTTON_LEFT: | ||
846 | global_settings.scrollbar = !global_settings.scrollbar; | ||
847 | used = true; | ||
848 | break; | ||
849 | |||
850 | case BUTTON_RIGHT: | ||
851 | case BUTTON_F3 | BUTTON_RIGHT: | ||
852 | global_settings.statusbar = !global_settings.statusbar; | ||
853 | used = true; | ||
854 | break; | ||
855 | |||
856 | case BUTTON_F3 | BUTTON_REL: | ||
857 | if ( used ) | ||
858 | exit = true; | ||
859 | used = true; | ||
860 | break; | ||
861 | |||
862 | #ifndef SIMULATOR | ||
863 | case SYS_USB_CONNECTED: | ||
864 | handle_usb(); | ||
865 | return true; | ||
866 | #endif | ||
867 | } | ||
868 | } | ||
869 | |||
870 | settings_save(); | ||
871 | if (global_settings.statusbar) | ||
872 | lcd_setmargins(0, STATUSBAR_HEIGHT); | ||
873 | else | ||
874 | lcd_setmargins(0, 0); | ||
875 | |||
876 | return false; | ||
877 | } | ||
878 | #endif | ||
879 | |||
880 | /* demonstrates showing different formats from playtune */ | 610 | /* demonstrates showing different formats from playtune */ |
881 | int wps_show(void) | 611 | int wps_show(void) |
882 | { | 612 | { |
@@ -1088,11 +818,9 @@ int wps_show(void) | |||
1088 | button_set_release(old_release_mask); | 818 | button_set_release(old_release_mask); |
1089 | return 0; | 819 | return 0; |
1090 | 820 | ||
1091 | #ifndef SIMULATOR | ||
1092 | case SYS_USB_CONNECTED: | 821 | case SYS_USB_CONNECTED: |
1093 | handle_usb(); | 822 | usb_screen(); |
1094 | return SYS_USB_CONNECTED; | 823 | return SYS_USB_CONNECTED; |
1095 | #endif | ||
1096 | 824 | ||
1097 | case BUTTON_NONE: /* Timeout */ | 825 | case BUTTON_NONE: /* Timeout */ |
1098 | update(); | 826 | update(); |