summaryrefslogtreecommitdiff
path: root/apps/tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/tree.c')
-rw-r--r--apps/tree.c81
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 */ 88static const struct filetype *filetypes;
89const struct filetype filetypes[] = { 89static 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
143struct gui_synclist tree_lists; 91struct gui_synclist tree_lists;
144 92
@@ -279,11 +227,7 @@ void browse_root(void)
279 root_menu(); 227 root_menu();
280} 228}
281 229
282void tree_get_filetypes(const struct filetype** types, int* count) 230
283{
284 *types = filetypes;
285 *count = sizeof(filetypes) / sizeof(*filetypes);
286}
287 231
288struct tree_context* tree_get_context(void) 232struct 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
1152void bookmark_play(char *resume_file, int index, int offset, int seed, 1097void 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,
1230static int ft_play_filenumber(int pos, int attr) 1175static 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 {