summaryrefslogtreecommitdiff
path: root/apps/tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/tree.c')
-rw-r--r--apps/tree.c202
1 files changed, 89 insertions, 113 deletions
diff --git a/apps/tree.c b/apps/tree.c
index 43bd5e6f5c..4923b970b8 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -658,7 +658,7 @@ static int onplay_screen(char* dir, char* file)
658 snprintf(buf, sizeof buf, "%s/%s", dir, file); 658 snprintf(buf, sizeof buf, "%s/%s", dir, file);
659 659
660 lcd_clear_display(); 660 lcd_clear_display();
661#ifdef HAVE_LCD_BITMAP 661
662 { 662 {
663 int w,h; 663 int w,h;
664 char* ptr; 664 char* ptr;
@@ -686,11 +686,6 @@ static int onplay_screen(char* dir, char* file)
686 lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward], 686 lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward],
687 LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true); 687 LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true);
688 } 688 }
689#else
690 if (playing)
691 lcd_puts(0,0,str(LANG_PLAYER_ONPLAY_1));
692 lcd_puts(0,1,str(LANG_PLAYER_ONPLAY_2));
693#endif
694 lcd_update(); 689 lcd_update();
695 690
696 691
@@ -723,15 +718,10 @@ static int onplay_screen(char* dir, char* file)
723 if (isdir) 718 if (isdir)
724 break; 719 break;
725 lcd_clear_display(); 720 lcd_clear_display();
726#ifdef HAVE_LCD_CHARCELLS
727 lcd_puts(0,0,file);
728 lcd_puts(0,1,str(LANG_REALLY_DELETE));
729#else
730 lcd_puts(0,0,str(LANG_REALLY_DELETE)); 721 lcd_puts(0,0,str(LANG_REALLY_DELETE));
731 lcd_puts(0,1,file); 722 lcd_puts(0,1,file);
732 lcd_puts(0,3,str(LANG_RESUME_CONFIRM_RECORDER)); 723 lcd_puts(0,3,str(LANG_RESUME_CONFIRM_RECORDER));
733 lcd_puts(0,4,str(LANG_RESUME_CANCEL_RECORDER)); 724 lcd_puts(0,4,str(LANG_RESUME_CANCEL_RECORDER));
734#endif
735 lcd_update(); 725 lcd_update();
736 while (!exit) { 726 while (!exit) {
737 int btn = button_get(true); 727 int btn = button_get(true);
@@ -746,8 +736,8 @@ static int onplay_screen(char* dir, char* file)
746 lcd_update(); 736 lcd_update();
747 sleep(HZ); 737 sleep(HZ);
748 exit = true; 738 exit = true;
749 break;
750 } 739 }
740 break;
751 741
752 default: 742 default:
753 /* ignore button releases */ 743 /* ignore button releases */
@@ -775,17 +765,13 @@ static int onplay_screen(char* dir, char* file)
775 exit = true; 765 exit = true;
776 break; 766 break;
777 767
778#ifdef HAVE_RECORDER_KEYPAD
779 case BUTTON_OFF: 768 case BUTTON_OFF:
780 exit = true; 769 exit = true;
781 break; 770 break;
782#endif
783 } 771 }
784 } 772 }
785 773
786#ifdef HAVE_LCD_BITMAP
787 lcd_setfont(FONT_UI); 774 lcd_setfont(FONT_UI);
788#endif
789 775
790 return false; 776 return false;
791} 777}
@@ -794,113 +780,103 @@ static int onplay_screen(char* dir, char* file)
794 780
795static int onplay_screen(char* dir, char* file) 781static int onplay_screen(char* dir, char* file)
796{ 782{
797 bool exit = false; 783 bool exit = false;
798 bool playing = mpeg_status() & MPEG_STATUS_PLAY; 784 bool playing = mpeg_status() & MPEG_STATUS_PLAY;
799 char buf[MAX_PATH]; 785 char buf[MAX_PATH];
800 struct entry* f = &dircache[dirstart + dircursor]; 786 struct entry* f = &dircache[dirstart + dircursor];
801 bool isdir = f->attr & ATTR_DIRECTORY; 787 bool isdir = f->attr & ATTR_DIRECTORY;
802 struct menu_items items[3]; 788 struct menu_items items[3];
803 int ids[3]; 789 int ids[3];
804 int lastitem=0; 790 int lastitem=0;
805 int m_handle; 791 int m_handle;
806 int selected; 792 int selected;
807 793
808 if ((dir[0]=='/') && (dir[1]==0)) 794 if ((dir[0]=='/') && (dir[1]==0))
809 snprintf(buf, sizeof buf, "%s%s", dir, file); 795 snprintf(buf, sizeof buf, "%s%s", dir, file);
810 else 796 else
811 snprintf(buf, sizeof buf, "%s/%s", dir, file); 797 snprintf(buf, sizeof buf, "%s/%s", dir, file);
812 798
813 if (playing) { 799 if (playing) {
814 items[lastitem].desc=str(LANG_QUEUE); 800 items[lastitem].desc=str(LANG_QUEUE);
815 ids[lastitem]=1; 801 ids[lastitem]=1;
816 lastitem++; 802 lastitem++;
817 } 803 }
818 804
819 items[lastitem].desc=str(LANG_RENAME); 805 items[lastitem].desc=str(LANG_RENAME);
820 ids[lastitem]=2; 806 ids[lastitem]=2;
821 lastitem++; 807 lastitem++;
822 808
823 /* don't delete directories */ 809 /* don't delete directories */
824 if (!isdir) { 810 if (!isdir) {
825 items[lastitem].desc=str(LANG_DELETE); 811 items[lastitem].desc=str(LANG_DELETE);
826 ids[lastitem]=3; 812 ids[lastitem]=3;
827 lastitem++; 813 lastitem++;
828 } 814 }
829 m_handle=menu_init(items, lastitem); 815 m_handle=menu_init(items, lastitem);
830 816
831 selected=menu_show(m_handle); 817 selected=menu_show(m_handle);
832 if (selected>=0) { 818 if (selected>=0) {
833 switch(ids[selected]) { 819 switch(ids[selected]) {
834 case 1: 820 case 1:
835 if (playing) 821 if (playing)
836 queue_add(buf); 822 queue_add(buf);
837 break; 823 break;
838 case 2: 824
839 { 825 case 2: {
840 char newname[MAX_PATH]; 826 char newname[MAX_PATH];
841 char* ptr = strrchr(buf, '/') + 1; 827 char* ptr = strrchr(buf, '/') + 1;
842 int pathlen = (ptr - buf); 828 int pathlen = (ptr - buf);
843 strncpy(newname, buf, sizeof newname); 829 strncpy(newname, buf, sizeof newname);
844 if (!kbd_input(newname + pathlen, (sizeof newname)-pathlen)) { 830 if (!kbd_input(newname + pathlen, (sizeof newname)-pathlen)) {
845 if (rename(buf, newname) < 0) { 831 if (rename(buf, newname) < 0) {
846 lcd_clear_display(); 832 lcd_clear_display();
847 lcd_puts(0,0,str(LANG_RENAME)); 833 lcd_puts(0,0,str(LANG_RENAME));
848 lcd_puts(0,1,str(LANG_FAILED)); 834 lcd_puts(0,1,str(LANG_FAILED));
849 lcd_update(); 835 lcd_update();
850 sleep(HZ*2); 836 sleep(HZ*2);
851 } 837 }
852 else 838 else
853 reload_dir = true; 839 reload_dir = true;
854 } 840 }
855 }
856 break;
857 case 3:
858 lcd_clear_display();
859#ifdef HAVE_LCD_CHARCELLS
860 lcd_puts(0,0,file);
861 lcd_puts(0,1,str(LANG_REALLY_DELETE));
862#else
863 lcd_puts(0,0,str(LANG_REALLY_DELETE));
864 lcd_puts(0,1,file);
865 lcd_puts(0,3,str(LANG_RESUME_CONFIRM_RECORDER));
866 lcd_puts(0,4,str(LANG_RESUME_CANCEL_RECORDER));
867#endif
868 lcd_update();
869 {
870 while (!exit) {
871 int btn = button_get(true);
872 switch (btn) {
873 case BUTTON_PLAY:
874 case BUTTON_PLAY | BUTTON_REL:
875 if (!remove(buf)) {
876 reload_dir = true;
877 lcd_clear_display();
878 lcd_puts(0,0,file);
879 lcd_puts(0,1,str(LANG_DELETED));
880 lcd_update();
881 sleep(HZ);
882 exit = true;
883 break;
884 } 841 }
885
886 default:
887 /* ignore button releases */
888 if (!(btn & BUTTON_REL))
889 exit = true;
890 break; 842 break;
891 } 843
844 case 3:
845 lcd_clear_display();
846 lcd_puts(0,0,file);
847 lcd_puts(0,1,str(LANG_REALLY_DELETE));
848 lcd_update();
849 while (!exit) {
850 int btn = button_get(true);
851 switch (btn) {
852 case BUTTON_PLAY:
853 case BUTTON_PLAY | BUTTON_REL:
854 if (!remove(buf)) {
855 reload_dir = true;
856 lcd_clear_display();
857 lcd_puts(0,0,file);
858 lcd_puts(0,1,str(LANG_DELETED));
859 lcd_update();
860 sleep(HZ);
861 exit = true;
862 }
863 break;
864
865 default:
866 /* ignore button releases */
867 if (!(btn & BUTTON_REL))
868 exit = true;
869 break;
870 }
871 }
872 break;
892 } 873 }
893 }
894 break;
895 } 874 }
896 } 875 menu_exit(m_handle);
897 menu_exit(m_handle); 876 return false;
898 return false;
899} 877}
900#endif 878#endif
901 879
902
903
904static bool handle_on(int* ds, int* dc, int numentries, int tree_max_on_screen) 880static bool handle_on(int* ds, int* dc, int numentries, int tree_max_on_screen)
905{ 881{
906 bool exit = false; 882 bool exit = false;