//---------------------------------------------------------------------- // This software is part of the Haiku distribution and is covered // by the MIT License. //--------------------------------------------------------------------- /*! \file MimeType.h BMimeType interface declarations. */ #ifndef _MIME_TYPE_H #define _MIME_TYPE_H #include #include #include #include #include #include class BBitmap; class BResources; class BAppFileInfo; class BMessenger; namespace BPrivate { class MimeDatabase; } enum app_verb { B_OPEN }; extern const char *B_APP_MIME_TYPE; // platform dependent extern const char *B_PEF_APP_MIME_TYPE; // "application/x-be-executable" extern const char *B_PE_APP_MIME_TYPE; // "application/x-vnd.be-peexecutable" extern const char *B_ELF_APP_MIME_TYPE; // "application/x-vnd.be-elfexecutable" extern const char *B_RESOURCE_MIME_TYPE;// "application/x-be-resource" extern const char *B_FILE_MIME_TYPE; // "application/octet-stream" /* ------------------------------------------------------------- */ // MIME Monitor BMessage::what value enum { B_META_MIME_CHANGED = 'MMCH' }; // MIME Monitor "be:which" values 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 }; // MIME Monitor "be:action" values enum { B_META_MIME_MODIFIED = 'MMMD', B_META_MIME_DELETED = 'MMDL', }; /* ------------------------------------------------------------- */ //! File typing functionality. /*! The BMimeType class provides access to the file typing system, which 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 Tyler Dauwalder \author Ingo Weinhold \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; /* these functions simply perform string manipulations*/ 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; /* These functions are for managing data in the meta mime file*/ static bool IsValid(const char *mimeType); /* Deprecated Use SetTo instead. */ 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); // if mimePath is NULL, defaults to "/boot/home/config/settings/beos_mime/" friend class MimeTypeTest; // Uncomment, when needed... friend class BAppFileInfo; // friend class BRoster; // friend class TRosterApp; // friend class TMimeWorker; // friend status_t _update_mime_info_(const char *, int32); // friend status_t _real_update_app_(BAppFileInfo *, const char *, bool); // static void _set_local_dispatch_target_(BMessenger *, void (*)(BMessage *)); // void _touch_(); virtual void _ReservedMimeType1(); virtual void _ReservedMimeType2(); virtual void _ReservedMimeType3(); BMimeType &operator=(const BMimeType &); BMimeType(const BMimeType &); // void InitData(const char *type); // void InitData(const char *type); // status_t OpenFile(bool create_file = false, dev_t dev = -1) const; // status_t CloseFile() const; status_t GetSupportedTypes(BMessage *types); status_t SetSupportedTypes(const BMessage *types, bool fullSync = true); static status_t GetAssociatedTypes(const char *extension, BMessage *types); // void MimeChanged(int32 w, const char *type = NULL, // bool large = true) const; char *fType; BFile *fMeta; void *_unused; entry_ref fRef; int fWhere; status_t fCStatus; uint32 _reserved[3]; }; #endif // _MIME_TYPE_H