diff options
Diffstat (limited to 'apps/filetypes.c')
-rw-r--r-- | apps/filetypes.c | 74 |
1 files changed, 65 insertions, 9 deletions
diff --git a/apps/filetypes.c b/apps/filetypes.c index a4eac70374..0daae1b617 100644 --- a/apps/filetypes.c +++ b/apps/filetypes.c | |||
@@ -48,8 +48,66 @@ | |||
48 | #define MAX_FILETYPES 48 | 48 | #define MAX_FILETYPES 48 |
49 | #endif | 49 | #endif |
50 | 50 | ||
51 | /* number of bytes for the binary icon */ | 51 | /* a table for the know file types */ |
52 | #define ICON_LENGTH 6 | 52 | const struct filetype inbuilt_filetypes[] = { |
53 | { "mp3", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
54 | { "mp2", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
55 | { "mpa", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
56 | #if CONFIG_CODEC == SWCODEC | ||
57 | /* Temporary hack to allow playlist creation */ | ||
58 | { "mp1", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
59 | { "ogg", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
60 | { "wma", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
61 | { "wav", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
62 | { "flac",FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
63 | { "ac3", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
64 | { "a52", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
65 | { "mpc", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
66 | { "wv", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
67 | { "m4a", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
68 | { "m4b", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
69 | { "mp4", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
70 | { "shn", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
71 | { "aif", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
72 | { "aiff",FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
73 | { "spx" ,FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
74 | { "sid", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
75 | { "adx", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
76 | { "nsf", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
77 | { "nsfe",FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
78 | { "spc", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA }, | ||
79 | #endif | ||
80 | { "m3u", FILE_ATTR_M3U, Icon_Playlist, LANG_PLAYLIST }, | ||
81 | { "m3u8",FILE_ATTR_M3U, Icon_Playlist, LANG_PLAYLIST }, | ||
82 | { "cfg", FILE_ATTR_CFG, Icon_Config, VOICE_EXT_CFG }, | ||
83 | { "wps", FILE_ATTR_WPS, Icon_Wps, VOICE_EXT_WPS }, | ||
84 | #ifdef HAVE_REMOTE_LCD | ||
85 | { "rwps",FILE_ATTR_RWPS, Icon_Wps, VOICE_EXT_RWPS }, | ||
86 | #endif | ||
87 | #if LCD_DEPTH > 1 | ||
88 | { "bmp", FILE_ATTR_BMP, Icon_Wps, VOICE_EXT_WPS }, | ||
89 | #endif | ||
90 | #if CONFIG_TUNER | ||
91 | { "fmr", FILE_ATTR_FMR, Icon_Preset, LANG_FMR }, | ||
92 | #endif | ||
93 | { "lng", FILE_ATTR_LNG, Icon_Language, LANG_LANGUAGE }, | ||
94 | { "rock",FILE_ATTR_ROCK,Icon_Plugin, VOICE_EXT_ROCK }, | ||
95 | #ifdef HAVE_LCD_BITMAP | ||
96 | { "fnt", FILE_ATTR_FONT,Icon_Font, VOICE_EXT_FONT }, | ||
97 | { "kbd", FILE_ATTR_KBD, Icon_Keyboard, VOICE_EXT_KBD }, | ||
98 | #endif | ||
99 | { "bmark",FILE_ATTR_BMARK, Icon_Bookmark, VOICE_EXT_BMARK }, | ||
100 | { "cue", FILE_ATTR_CUE, Icon_Bookmark, LANG_CUESHEET }, | ||
101 | #ifdef BOOTFILE_EXT | ||
102 | { BOOTFILE_EXT, FILE_ATTR_MOD, Icon_Firmware, VOICE_EXT_AJZ }, | ||
103 | #endif /* #ifndef SIMULATOR */ | ||
104 | }; | ||
105 | |||
106 | void tree_get_filetypes(const struct filetype** types, int* count) | ||
107 | { | ||
108 | *types = inbuilt_filetypes; | ||
109 | *count = sizeof(inbuilt_filetypes) / sizeof(*inbuilt_filetypes); | ||
110 | } | ||
53 | 111 | ||
54 | /* mask for dynamic filetype info in attribute */ | 112 | /* mask for dynamic filetype info in attribute */ |
55 | #define FILETYPES_MASK 0xFF00 | 113 | #define FILETYPES_MASK 0xFF00 |
@@ -155,17 +213,15 @@ static void rm_whitespaces(char* str) | |||
155 | 213 | ||
156 | static void read_builtin_types(void) | 214 | static void read_builtin_types(void) |
157 | { | 215 | { |
158 | const struct filetype *types; | 216 | int count = sizeof(inbuilt_filetypes)/sizeof(*inbuilt_filetypes), i; |
159 | int count, i; | ||
160 | tree_get_filetypes(&types, &count); | ||
161 | for(i=0; i<count && (filetype_count < MAX_FILETYPES); i++) | 217 | for(i=0; i<count && (filetype_count < MAX_FILETYPES); i++) |
162 | { | 218 | { |
163 | filetypes[filetype_count].extension = types[i].extension; | 219 | filetypes[filetype_count].extension = inbuilt_filetypes[i].extension; |
164 | filetypes[filetype_count].plugin = NULL; | 220 | filetypes[filetype_count].plugin = NULL; |
165 | filetypes[filetype_count].attr = types[i].tree_attr>>8; | 221 | filetypes[filetype_count].attr = inbuilt_filetypes[i].tree_attr>>8; |
166 | if (filetypes[filetype_count].attr > heighest_attr) | 222 | if (filetypes[filetype_count].attr > heighest_attr) |
167 | heighest_attr = filetypes[filetype_count].attr; | 223 | heighest_attr = filetypes[filetype_count].attr; |
168 | filetypes[filetype_count].icon = types[i].icon; | 224 | filetypes[filetype_count].icon = inbuilt_filetypes[i].icon; |
169 | filetype_count++; | 225 | filetype_count++; |
170 | } | 226 | } |
171 | } | 227 | } |
@@ -247,7 +303,7 @@ int filetype_get_attr(const char* file) | |||
247 | { | 303 | { |
248 | if (filetypes[i].extension && | 304 | if (filetypes[i].extension && |
249 | !strcasecmp(extension, filetypes[i].extension)) | 305 | !strcasecmp(extension, filetypes[i].extension)) |
250 | return (filetypes[i].attr<<8)&TREE_ATTR_MASK; | 306 | return (filetypes[i].attr<<8)&FILE_ATTR_MASK; |
251 | } | 307 | } |
252 | return 0; | 308 | return 0; |
253 | } | 309 | } |