summaryrefslogtreecommitdiffstats
path: root/apps/filetypes.h
blob: 4039daf49726b15e0289e0e880b1b3fc72acafbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/***************************************************************************
 *             __________               __   ___.
 *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
 *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
 *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
 *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
 *                     \/            \/     \/    \/            \/
 * $Id$
 *
 * Copyright (C) 2002 Henrik Backe
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ****************************************************************************/
#ifndef _FILEHANDLE_H_
#define _FILEHANDLE_H_

#include <stdbool.h>
#include "config.h"
#include <tree.h>

/* using attribute bits not used by FAT (FAT uses lower 7) */
#define FILE_ATTR_THUMBNAIL 0x0080 /* corresponding .talk file exists */
/* (this also reflects the sort order if by type) */
#define FILE_ATTR_BMARK 0x0100 /* book mark file */
#define FILE_ATTR_M3U   0x0200 /* playlist */
#define FILE_ATTR_AUDIO 0x0300 /* audio file */
#define FILE_ATTR_CFG   0x0400 /* config file */
#define FILE_ATTR_WPS   0x0500 /* wps config file */
#define FILE_ATTR_FONT  0x0600 /* font file */
#define FILE_ATTR_LNG   0x0700 /* binary lang file */
#define FILE_ATTR_ROCK  0x0800 /* binary rockbox plugin */
#define FILE_ATTR_MOD   0x0900 /* firmware file */
#define FILE_ATTR_RWPS  0x0A00 /* remote-wps config file */
#define FILE_ATTR_BMP   0x0B00 /* backdrop bmp file */
#define FILE_ATTR_KBD   0x0C00 /* keyboard file */
#define FILE_ATTR_FMR   0x0D00 /* preset file */
#define FILE_ATTR_CUE   0x0E00 /* cuesheet file */
#define FILE_ATTR_SBS   0x0F00 /* statusbar file */
#define FILE_ATTR_RSBS  0x1000 /* remote statusbar file */
#define FILE_ATTR_LUA   0x1100 /* Lua rockbox plugin */
#define FILE_ATTR_FMS   0x1200 /* FM screen skin file */
#define FILE_ATTR_RFMS  0x1300 /* FM screen skin file */
#define FILE_ATTR_OPX   0x1400 /* open plugins shortcut */
#define FILE_ATTR_LOG   0x1500 /* log file */
#define FILE_ATTR_MASK  0xFF00 /* which bits tree.c uses for file types */

struct filetype {
    char* extension;
    int tree_attr;
};

long tree_get_filetype_voiceclip(int attr);

/* init the filetypes structs.
   uses audio buffer for storage, so call early in init... */
void filetype_init(void) INIT_ATTR;

void read_viewer_theme_file(void);
#ifdef HAVE_LCD_COLOR
void read_color_theme_file(void);
#endif

/* Return the attribute (FILE_ATTR_*) of the file */
int filetype_get_attr(const char* file);
#ifdef HAVE_LCD_COLOR
int filetype_get_color(const char* name, int attr);
#endif
int filetype_get_icon(int attr);
/* return the plugin filename associated with the file */
char* filetype_get_plugin(int attr, char *buffer, size_t buffer_len);

/* returns true if the attr is supported */
bool  filetype_supported(int attr);

/* List avialable viewers and start selected plugin with current_file as argument */
int filetype_list_viewers(const char* current_file);

/* return the plugin filename the user selected for the file Returns NULL if canceled */
char* filetype_get_viewer(char *buffer, size_t buffer_len, const char* current_file);

/* start a plugin with file as the argument (called from onplay.c) */
int filetype_load_plugin(const char* plugin, const char* file);


#endif