diff options
Diffstat (limited to 'apps/tree.c')
-rw-r--r-- | apps/tree.c | 81 |
1 files changed, 13 insertions, 68 deletions
diff --git a/apps/tree.c b/apps/tree.c index 944f76840f..b847a7f112 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -85,60 +85,8 @@ | |||
85 | #include "backdrop.h" | 85 | #include "backdrop.h" |
86 | #endif | 86 | #endif |
87 | 87 | ||
88 | /* a table for the know file types */ | 88 | static const struct filetype *filetypes; |
89 | const struct filetype filetypes[] = { | 89 | static int filetypes_count; |
90 | { "mp3", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
91 | { "mp2", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
92 | { "mpa", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
93 | #if CONFIG_CODEC == SWCODEC | ||
94 | /* Temporary hack to allow playlist creation */ | ||
95 | { "mp1", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
96 | { "ogg", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
97 | { "wma", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
98 | { "wav", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
99 | { "flac",TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
100 | { "ac3", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
101 | { "a52", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
102 | { "mpc", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
103 | { "wv", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
104 | { "m4a", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
105 | { "m4b", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
106 | { "mp4", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
107 | { "shn", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
108 | { "aif", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
109 | { "aiff",TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
110 | { "spx" ,TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
111 | { "sid", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
112 | { "adx", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
113 | { "nsf", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
114 | { "nsfe", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
115 | { "spc", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, | ||
116 | #endif | ||
117 | { "m3u", TREE_ATTR_M3U, Icon_Playlist, LANG_PLAYLIST }, | ||
118 | { "m3u8", TREE_ATTR_M3U, Icon_Playlist, LANG_PLAYLIST }, | ||
119 | { "cfg", TREE_ATTR_CFG, Icon_Config, VOICE_EXT_CFG }, | ||
120 | { "wps", TREE_ATTR_WPS, Icon_Wps, VOICE_EXT_WPS }, | ||
121 | #ifdef HAVE_REMOTE_LCD | ||
122 | { "rwps", TREE_ATTR_RWPS, Icon_Wps, VOICE_EXT_RWPS }, | ||
123 | #endif | ||
124 | #if LCD_DEPTH > 1 | ||
125 | { "bmp", TREE_ATTR_BMP, Icon_Wps, VOICE_EXT_WPS }, | ||
126 | #endif | ||
127 | #if CONFIG_TUNER | ||
128 | { "fmr", TREE_ATTR_FMR, Icon_Preset, LANG_FMR }, | ||
129 | #endif | ||
130 | { "lng", TREE_ATTR_LNG, Icon_Language, LANG_LANGUAGE }, | ||
131 | { "rock",TREE_ATTR_ROCK,Icon_Plugin, VOICE_EXT_ROCK }, | ||
132 | #ifdef HAVE_LCD_BITMAP | ||
133 | { "fnt", TREE_ATTR_FONT,Icon_Font, VOICE_EXT_FONT }, | ||
134 | { "kbd", TREE_ATTR_KBD, Icon_Keyboard, VOICE_EXT_KBD }, | ||
135 | #endif | ||
136 | { "bmark",TREE_ATTR_BMARK, Icon_Bookmark, VOICE_EXT_BMARK }, | ||
137 | { "cue", TREE_ATTR_CUE, Icon_Bookmark, LANG_CUESHEET }, | ||
138 | #ifdef BOOTFILE_EXT | ||
139 | { BOOTFILE_EXT, TREE_ATTR_MOD, Icon_Firmware, VOICE_EXT_AJZ }, | ||
140 | #endif /* #ifndef SIMULATOR */ | ||
141 | }; | ||
142 | 90 | ||
143 | struct gui_synclist tree_lists; | 91 | struct gui_synclist tree_lists; |
144 | 92 | ||
@@ -279,11 +227,7 @@ void browse_root(void) | |||
279 | root_menu(); | 227 | root_menu(); |
280 | } | 228 | } |
281 | 229 | ||
282 | void tree_get_filetypes(const struct filetype** types, int* count) | 230 | |
283 | { | ||
284 | *types = filetypes; | ||
285 | *count = sizeof(filetypes) / sizeof(*filetypes); | ||
286 | } | ||
287 | 231 | ||
288 | struct tree_context* tree_get_context(void) | 232 | struct tree_context* tree_get_context(void) |
289 | { | 233 | { |
@@ -710,9 +654,9 @@ static int dirbrowse() | |||
710 | #ifdef HAVE_TAGCACHE | 654 | #ifdef HAVE_TAGCACHE |
711 | if (id3db) | 655 | if (id3db) |
712 | { | 656 | { |
713 | if (tagtree_get_attr(&tc) == TREE_ATTR_MPA) | 657 | if (tagtree_get_attr(&tc) == FILE_ATTR_AUDIO) |
714 | { | 658 | { |
715 | attr = TREE_ATTR_MPA; | 659 | attr = FILE_ATTR_AUDIO; |
716 | tagtree_get_filename(&tc, buf, sizeof(buf)); | 660 | tagtree_get_filename(&tc, buf, sizeof(buf)); |
717 | } | 661 | } |
718 | else | 662 | else |
@@ -931,7 +875,7 @@ static int dirbrowse() | |||
931 | case 1: /* files as numbers */ | 875 | case 1: /* files as numbers */ |
932 | ft_play_filenumber( | 876 | ft_play_filenumber( |
933 | tc.selected_item-tc.dirsindir+1, | 877 | tc.selected_item-tc.dirsindir+1, |
934 | attr & TREE_ATTR_MASK); | 878 | attr & FILE_ATTR_MASK); |
935 | break; | 879 | break; |
936 | 880 | ||
937 | case 2: /* files spelled */ | 881 | case 2: /* files spelled */ |
@@ -941,7 +885,7 @@ static int dirbrowse() | |||
941 | case 3: /* thumbnail clip */ | 885 | case 3: /* thumbnail clip */ |
942 | /* "schedule" a thumbnail, to have a little | 886 | /* "schedule" a thumbnail, to have a little |
943 | delay */ | 887 | delay */ |
944 | if (attr & TREE_ATTR_THUMBNAIL) | 888 | if (attr & FILE_ATTR_THUMBNAIL) |
945 | thumbnail_time = current_tick + HOVER_DELAY; | 889 | thumbnail_time = current_tick + HOVER_DELAY; |
946 | else | 890 | else |
947 | /* spell the number as fallback */ | 891 | /* spell the number as fallback */ |
@@ -1003,15 +947,15 @@ static bool add_dir(char* dirname, int len, int fd) | |||
1003 | } | 947 | } |
1004 | else { | 948 | else { |
1005 | int x = strlen((char *)entry->d_name); | 949 | int x = strlen((char *)entry->d_name); |
1006 | unsigned int i; | 950 | int i; |
1007 | char *cp = strrchr((char *)entry->d_name,'.'); | 951 | char *cp = strrchr((char *)entry->d_name,'.'); |
1008 | 952 | ||
1009 | if (cp) { | 953 | if (cp) { |
1010 | cp++; | 954 | cp++; |
1011 | 955 | ||
1012 | /* add all supported audio files to playlists */ | 956 | /* add all supported audio files to playlists */ |
1013 | for (i=0; i < sizeof(filetypes)/sizeof(struct filetype); i++) { | 957 | for (i=0; i < filetypes_count; i++) { |
1014 | if (filetypes[i].tree_attr == TREE_ATTR_MPA) { | 958 | if (filetypes[i].tree_attr == FILE_ATTR_AUDIO) { |
1015 | if (!strcasecmp(cp, filetypes[i].extension)) { | 959 | if (!strcasecmp(cp, filetypes[i].extension)) { |
1016 | char buf[8]; | 960 | char buf[8]; |
1017 | int i; | 961 | int i; |
@@ -1147,6 +1091,7 @@ void tree_init(void) | |||
1147 | 1091 | ||
1148 | tc.dircache_size = max_files * sizeof(struct entry); | 1092 | tc.dircache_size = max_files * sizeof(struct entry); |
1149 | tc.dircache = buffer_alloc(tc.dircache_size); | 1093 | tc.dircache = buffer_alloc(tc.dircache_size); |
1094 | tree_get_filetypes(&filetypes, &filetypes_count); | ||
1150 | } | 1095 | } |
1151 | 1096 | ||
1152 | void bookmark_play(char *resume_file, int index, int offset, int seed, | 1097 | void bookmark_play(char *resume_file, int index, int offset, int seed, |
@@ -1230,9 +1175,9 @@ void bookmark_play(char *resume_file, int index, int offset, int seed, | |||
1230 | static int ft_play_filenumber(int pos, int attr) | 1175 | static int ft_play_filenumber(int pos, int attr) |
1231 | { | 1176 | { |
1232 | /* try to find a voice ID for the extension, if known */ | 1177 | /* try to find a voice ID for the extension, if known */ |
1233 | unsigned int j; | 1178 | int j; |
1234 | int ext_id = -1; /* default to none */ | 1179 | int ext_id = -1; /* default to none */ |
1235 | for (j=0; j<sizeof(filetypes)/sizeof(*filetypes); j++) | 1180 | for (j=0; j<filetypes_count; j++) |
1236 | { | 1181 | { |
1237 | if (attr == filetypes[j].tree_attr) | 1182 | if (attr == filetypes[j].tree_attr) |
1238 | { | 1183 | { |