summaryrefslogtreecommitdiff
path: root/apps/wps.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/wps.c')
-rw-r--r--apps/wps.c288
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
154static 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
170static int browse_id3(void) 155static 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 */
631int 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
742bool 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
813bool 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 */
881int wps_show(void) 611int 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();