\file MimeType.h
BMimeType interface declarations.
*/
#ifndef _MIME_TYPE_H
#define _MIME_TYPE_H
#include <SupportDefs.h>
#include <StorageDefs.h>
#include <Messenger.h>
#include <Mime.h>
#include <File.h>
#include <Entry.h>
class BBitmap;
class BResources;
class BAppFileInfo;
class BMessenger;
namespace BPrivate {
class MimeDatabase;
}
enum app_verb {
B_OPEN
};
extern const char *B_APP_MIME_TYPE;
extern const char *B_PEF_APP_MIME_TYPE;
extern const char *B_PE_APP_MIME_TYPE;
extern const char *B_ELF_APP_MIME_TYPE;
extern const char *B_RESOURCE_MIME_TYPE;
extern const char *B_FILE_MIME_TYPE;
enum {
B_META_MIME_CHANGED = 'MMCH'
};
enum {
B_ICON_CHANGED = 0x00000001,
B_PREFERRED_APP_CHANGED = 0x00000002,
B_ATTR_INFO_CHANGED = 0x00000004,
B_FILE_EXTENSIONS_CHANGED = 0x00000008,
B_SHORT_DESCRIPTION_CHANGED = 0x00000010,
B_LONG_DESCRIPTION_CHANGED = 0x00000020,
B_ICON_FOR_TYPE_CHANGED = 0x00000040,
B_APP_HINT_CHANGED = 0x00000080,
B_MIME_TYPE_CREATED = 0x00000100,
B_MIME_TYPE_DELETED = 0x00000200,
B_SNIFFER_RULE_CHANGED = 0x00000400,
B_SUPPORTED_TYPES_CHANGED = 0x00000800,
B_EVERYTHING_CHANGED = (int)0xFFFFFFFF
};
enum {
B_META_MIME_MODIFIED = 'MMMD',
B_META_MIME_DELETED = 'MMDL',
};
provides the following functionality:
- Basic MIME string manipulation
- Access to file type information in the MIME database
- Ways to receive notifications when parts of the MIME database are updated
- Methods to determine/help determine the types of untyped files
\author <a href='mailto:tylerdauwalder@users.sf.net'>Tyler Dauwalder</a>
\author <a href='bonefish@users.sf.net'>Ingo Weinhold</a>
\version 0.0.0
*/
class BMimeType {
public:
BMimeType();
BMimeType(const char *mimeType);
virtual ~BMimeType();
status_t SetTo(const char *mimeType);
void Unset();
status_t InitCheck() const;
const char *Type() const;
bool IsValid() const;
bool IsSupertypeOnly() const;
status_t GetSupertype(BMimeType *superType) const;
bool operator==(const BMimeType &type) const;
bool operator==(const char *type) const;
bool Contains(const BMimeType *type) const;
static bool IsValid(const char *mimeType);
status_t SetType(const char *mimeType);
static status_t GuessMimeType(const entry_ref *file, BMimeType *type);
static status_t GuessMimeType(const void *buffer, int32 length,
BMimeType *type);
static status_t GuessMimeType(const char *filename, BMimeType *type);
private:
BMimeType(const char *mimeType, const char *mimePath);
friend class MimeTypeTest;
friend class BAppFileInfo;
virtual void _ReservedMimeType1();
virtual void _ReservedMimeType2();
virtual void _ReservedMimeType3();
BMimeType &operator=(const BMimeType &);
BMimeType(const BMimeType &);
status_t GetSupportedTypes(BMessage *types);
status_t SetSupportedTypes(const BMessage *types, bool fullSync = true);
static status_t GetAssociatedTypes(const char *extension, BMessage *types);
char *fType;
BFile *fMeta;
void *_unused;
entry_ref fRef;
int fWhere;
status_t fCStatus;
uint32 _reserved[3];
};
#endif