7fb6186f3c
* additional versions of SetIcon[ForType] and GetIcon[ForType] in BMimeType and BAppFileInfo, which handle flat vector icon data * changes in Tracker to support scalable icons (currently broken for non-vector icons and needs cleanup) and drawing icons correctly with alpha channel (large parts of this work done by Michael Lotz) If someone feels like looking over the changes, that would be much appreciated! :-) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18699 a95241bf-73f2-0310-859d-f6bbb57e9c96
135 lines
4.3 KiB
C++
135 lines
4.3 KiB
C++
/*
|
|
* Copyright 2002-2006, Haiku.
|
|
* Distributed under the terms of the MIT License.
|
|
*
|
|
* Authors:
|
|
* Tyler Dauwalder
|
|
*/
|
|
#ifndef _MIME_DATABASE_H
|
|
#define _MIME_DATABASE_H
|
|
|
|
|
|
#include <Mime.h>
|
|
#include <mime/AssociatedTypes.h>
|
|
#include <mime/InstalledTypes.h>
|
|
#include <mime/SnifferRules.h>
|
|
#include <mime/SupportingApps.h>
|
|
#include <mime/database_access.h>
|
|
#include <Messenger.h>
|
|
#include <StorageDefs.h>
|
|
|
|
#include <string>
|
|
#include <map>
|
|
#include <set>
|
|
|
|
class BNode;
|
|
class BBitmap;
|
|
class BMessage;
|
|
class BString;
|
|
|
|
struct entry_ref;
|
|
|
|
namespace BPrivate {
|
|
namespace Storage {
|
|
namespace Mime {
|
|
|
|
// types of mime update functions that may be run asynchronously
|
|
typedef enum {
|
|
B_REG_UPDATE_MIME_INFO,
|
|
B_REG_CREATE_APP_META_MIME,
|
|
} mime_update_function;
|
|
|
|
class Database {
|
|
public:
|
|
Database();
|
|
~Database();
|
|
|
|
status_t InitCheck() const;
|
|
|
|
// Type management
|
|
status_t Install(const char *type);
|
|
status_t Delete(const char *type);
|
|
|
|
// Set()
|
|
status_t SetAppHint(const char *type, const entry_ref *ref);
|
|
status_t SetAttrInfo(const char *type, const BMessage *info);
|
|
status_t SetShortDescription(const char *type, const char *description);
|
|
status_t SetLongDescription(const char *type, const char *description);
|
|
status_t SetFileExtensions(const char *type, const BMessage *extensions);
|
|
status_t SetIcon(const char *type, const void *data, size_t dataSize,
|
|
icon_size which);
|
|
status_t SetIcon(const char *type, const void *data, size_t dataSize);
|
|
status_t SetIconForType(const char *type, const char *fileType,
|
|
const void *data, size_t dataSize, icon_size which);
|
|
status_t SetIconForType(const char *type, const char *fileType,
|
|
const void *data, size_t dataSize);
|
|
status_t SetPreferredApp(const char *type, const char *signature,
|
|
app_verb verb = B_OPEN);
|
|
status_t SetSnifferRule(const char *type, const char *rule);
|
|
status_t SetSupportedTypes(const char *type, const BMessage *types, bool fullSync);
|
|
|
|
// Non-atomic Get()
|
|
status_t GetInstalledSupertypes(BMessage *super_types);
|
|
status_t GetInstalledTypes(BMessage *types);
|
|
status_t GetInstalledTypes(const char *super_type,
|
|
BMessage *subtypes);
|
|
status_t GetSupportingApps(const char *type, BMessage *signatures);
|
|
status_t GetAssociatedTypes(const char *extension, BMessage *types);
|
|
|
|
// Sniffer
|
|
status_t GuessMimeType(const entry_ref *file, BString *result);
|
|
status_t GuessMimeType(const void *buffer, int32 length, BString *result);
|
|
status_t GuessMimeType(const char *filename, BString *result);
|
|
|
|
// Monitor
|
|
status_t StartWatching(BMessenger target);
|
|
status_t StopWatching(BMessenger target);
|
|
|
|
// Delete()
|
|
status_t DeleteAppHint(const char *type);
|
|
status_t DeleteAttrInfo(const char *type);
|
|
status_t DeleteShortDescription(const char *type);
|
|
status_t DeleteLongDescription(const char *type);
|
|
status_t DeleteFileExtensions(const char *type);
|
|
status_t DeleteIcon(const char *type, icon_size size);
|
|
status_t DeleteIcon(const char *type);
|
|
status_t DeleteIconForType(const char *type, const char *fileType,
|
|
icon_size which);
|
|
status_t DeleteIconForType(const char *type, const char *fileType);
|
|
status_t DeletePreferredApp(const char *type, app_verb verb = B_OPEN);
|
|
status_t DeleteSnifferRule(const char *type);
|
|
status_t DeleteSupportedTypes(const char *type, bool fullSync);
|
|
|
|
private:
|
|
status_t _SetStringValue(const char *type, int32 what,
|
|
const char* attribute, type_code attributeType,
|
|
size_t maxLength, const char *value);
|
|
|
|
// Functions to send monitor notifications
|
|
status_t _SendInstallNotification(const char *type);
|
|
status_t _SendDeleteNotification(const char *type);
|
|
status_t _SendMonitorUpdate(int32 which, const char *type,
|
|
const char *extraType, bool largeIcon, int32 action);
|
|
status_t _SendMonitorUpdate(int32 which, const char *type,
|
|
const char *extraType, int32 action);
|
|
status_t _SendMonitorUpdate(int32 which, const char *type,
|
|
bool largeIcon, int32 action);
|
|
status_t _SendMonitorUpdate(int32 which, const char *type,
|
|
int32 action);
|
|
status_t _SendMonitorUpdate(BMessage &msg);
|
|
|
|
private:
|
|
status_t fStatus;
|
|
std::set<BMessenger> fMonitorMessengers;
|
|
AssociatedTypes fAssociatedTypes;
|
|
InstalledTypes fInstalledTypes;
|
|
SnifferRules fSnifferRules;
|
|
SupportingApps fSupportingApps;
|
|
};
|
|
|
|
} // namespace Mime
|
|
} // namespace Storage
|
|
} // namespace BPrivate
|
|
|
|
#endif // _MIME_DATABASE_H
|