2 * Copyright 2002-2006 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
9 #include <SupportDefs.h>
10 #include <StorageDefs.h>
12 #include <Messenger.h>
27 class CreateAppMetaMimeThread
;
36 extern const char* B_APP_MIME_TYPE
; // platform dependent
37 extern const char* B_PEF_APP_MIME_TYPE
; // "application/x-be-executable"
38 extern const char* B_PE_APP_MIME_TYPE
; // "application/x-vnd.be-peexecutable"
39 extern const char* B_ELF_APP_MIME_TYPE
; // "application/x-vnd.be-elfexecutable"
40 extern const char* B_RESOURCE_MIME_TYPE
;// "application/x-be-resource"
41 extern const char* B_FILE_MIME_TYPE
; // "application/octet-stream"
43 /* ------------------------------------------------------------- */
45 // MIME Monitor BMessage::what value
47 B_META_MIME_CHANGED
= 'MMCH'
50 // MIME Monitor "be:which" values
52 B_ICON_CHANGED
= 0x00000001,
53 B_PREFERRED_APP_CHANGED
= 0x00000002,
54 B_ATTR_INFO_CHANGED
= 0x00000004,
55 B_FILE_EXTENSIONS_CHANGED
= 0x00000008,
56 B_SHORT_DESCRIPTION_CHANGED
= 0x00000010,
57 B_LONG_DESCRIPTION_CHANGED
= 0x00000020,
58 B_ICON_FOR_TYPE_CHANGED
= 0x00000040,
59 B_APP_HINT_CHANGED
= 0x00000080,
60 B_MIME_TYPE_CREATED
= 0x00000100,
61 B_MIME_TYPE_DELETED
= 0x00000200,
62 B_SNIFFER_RULE_CHANGED
= 0x00000400,
63 B_SUPPORTED_TYPES_CHANGED
= 0x00000800,
65 B_EVERYTHING_CHANGED
= (int)0xFFFFFFFF
68 // MIME Monitor "be:action" values
70 B_META_MIME_MODIFIED
= 'MMMD',
71 B_META_MIME_DELETED
= 'MMDL',
77 BMimeType(const char* mimeType
);
80 status_t
SetTo(const char* mimeType
);
82 status_t
InitCheck() const;
84 /* these functions simply perform string manipulations*/
85 const char* Type() const;
87 bool IsSupertypeOnly() const;
88 status_t
GetSupertype(BMimeType
* supertype
) const;
90 bool operator==(const BMimeType
&type
) const;
91 bool operator==(const char* type
) const;
93 bool Contains(const BMimeType
* type
) const;
95 /* These functions are for managing data in the meta mime file */
98 bool IsInstalled() const;
99 status_t
GetIcon(BBitmap
* icon
, icon_size size
) const;
100 status_t
GetIcon(uint8
** _data
, size_t* _size
) const;
101 status_t
GetPreferredApp(char* signature
, app_verb verb
= B_OPEN
) const;
102 status_t
GetAttrInfo(BMessage
* info
) const;
103 status_t
GetFileExtensions(BMessage
* extensions
) const;
104 status_t
GetShortDescription(char* description
) const;
105 status_t
GetLongDescription(char* description
) const;
106 status_t
GetSupportingApps(BMessage
* signatures
) const;
108 status_t
SetIcon(const BBitmap
* icon
, icon_size size
);
109 status_t
SetIcon(const uint8
* data
, size_t size
);
110 status_t
SetPreferredApp(const char* signature
, app_verb verb
= B_OPEN
);
111 status_t
SetAttrInfo(const BMessage
* info
);
112 status_t
SetFileExtensions(const BMessage
* extensions
);
113 status_t
SetShortDescription(const char* description
);
114 status_t
SetLongDescription(const char* description
);
116 static status_t
GetInstalledSupertypes(BMessage
* supertypes
);
117 static status_t
GetInstalledTypes(BMessage
* types
);
118 static status_t
GetInstalledTypes(const char* supertype
,
120 static status_t
GetWildcardApps(BMessage
* wildcardApps
);
121 static bool IsValid(const char* mimeType
);
123 status_t
GetAppHint(entry_ref
* ref
) const;
124 status_t
SetAppHint(const entry_ref
* ref
);
126 /* for application signatures only. */
127 status_t
GetIconForType(const char* type
, BBitmap
* icon
,
128 icon_size which
) const;
129 status_t
GetIconForType(const char* type
, uint8
** _data
,
130 size_t* _size
) const;
131 status_t
SetIconForType(const char* type
, const BBitmap
* icon
,
133 status_t
SetIconForType(const char* type
, const uint8
* data
,
136 /* sniffer rule manipulation */
137 status_t
GetSnifferRule(BString
* result
) const;
138 status_t
SetSnifferRule(const char*);
139 static status_t
CheckSnifferRule(const char* rule
, BString
* parseError
);
141 /* calls to ask the sniffer to identify the MIME type of a file or data in
143 static status_t
GuessMimeType(const entry_ref
* file
, BMimeType
* type
);
144 static status_t
GuessMimeType(const void* buffer
, int32 length
,
146 static status_t
GuessMimeType(const char* filename
, BMimeType
* type
);
148 static status_t
StartWatching(BMessenger target
);
149 static status_t
StopWatching(BMessenger target
);
151 /* Deprecated. Use SetTo() instead. */
152 status_t
SetType(const char* mimeType
);
155 BMimeType(const char* mimeType
, const char* mimePath
);
156 // if mimePath is NULL, defaults to "/boot/home/config/settings/beos_mime/"
158 friend class MimeTypeTest
;
161 friend class BAppFileInfo
;
163 virtual void _ReservedMimeType1();
164 virtual void _ReservedMimeType2();
165 virtual void _ReservedMimeType3();
167 BMimeType
& operator=(const BMimeType
& source
);
168 BMimeType(const BMimeType
& source
);
170 status_t
GetSupportedTypes(BMessage
* types
);
171 status_t
SetSupportedTypes(const BMessage
* types
, bool fullSync
= true);
173 static status_t
GetAssociatedTypes(const char* extension
, BMessage
* types
);
185 #endif // _MIME_TYPE_H