120 lines
3.3 KiB
C
120 lines
3.3 KiB
C
|
/*
|
||
|
* Copyright 2013, Haiku, Inc. All Rights Reserved.
|
||
|
* Distributed under the terms of the MIT License.
|
||
|
*
|
||
|
* Authors:
|
||
|
* Ingo Weinhold <ingo_weinhold@gmx.de>
|
||
|
*/
|
||
|
#ifndef _MIME_DATABASE_LOCATION_H
|
||
|
#define _MIME_DATABASE_LOCATION_H
|
||
|
|
||
|
|
||
|
#include <Mime.h>
|
||
|
#include <StringList.h>
|
||
|
|
||
|
|
||
|
namespace BPrivate {
|
||
|
namespace Storage {
|
||
|
namespace Mime {
|
||
|
|
||
|
|
||
|
class DatabaseLocation {
|
||
|
public:
|
||
|
DatabaseLocation();
|
||
|
~DatabaseLocation();
|
||
|
|
||
|
bool AddDirectory(const BString& directory);
|
||
|
|
||
|
// paths
|
||
|
|
||
|
const BStringList& Directories() const
|
||
|
{ return fDirectories; }
|
||
|
BString WritableDirectory() const
|
||
|
{ return fDirectories.StringAt(0); }
|
||
|
|
||
|
BString WritablePathForType(const char* type) const
|
||
|
{ return _TypeToFilename(type, 0); }
|
||
|
|
||
|
// opening type nodes
|
||
|
|
||
|
status_t OpenType(const char* type, BNode& _node) const;
|
||
|
status_t OpenOrCreateType(const char* type,
|
||
|
BNode& _node, bool* _didCreate = NULL)
|
||
|
const;
|
||
|
|
||
|
// generic type attributes access
|
||
|
|
||
|
ssize_t ReadAttribute(const char* type,
|
||
|
const char* attribute, void* data,
|
||
|
size_t length, type_code datatype) const;
|
||
|
status_t ReadMessageAttribute(const char* type,
|
||
|
const char* attribute, BMessage& _message)
|
||
|
const;
|
||
|
status_t ReadStringAttribute(const char* type,
|
||
|
const char* attribute, BString& _string)
|
||
|
const;
|
||
|
|
||
|
status_t WriteAttribute(const char* type,
|
||
|
const char* attribute, const void* data,
|
||
|
size_t length, type_code datatype,
|
||
|
bool* _didCreate) const;
|
||
|
status_t WriteMessageAttribute(const char* type,
|
||
|
const char* attribute,
|
||
|
const BMessage& message, bool* _didCreate)
|
||
|
const;
|
||
|
|
||
|
status_t DeleteAttribute(const char* type,
|
||
|
const char* attribute) const;
|
||
|
|
||
|
// type attribute convenience getters
|
||
|
|
||
|
status_t GetAppHint(const char* type, entry_ref& _ref);
|
||
|
status_t GetAttributesInfo(const char* type,
|
||
|
BMessage& _info);
|
||
|
status_t GetShortDescription(const char* type,
|
||
|
char* description);
|
||
|
status_t GetLongDescription(const char* type,
|
||
|
char* description);
|
||
|
status_t GetFileExtensions(const char* type,
|
||
|
BMessage& _extensions);
|
||
|
status_t GetIcon(const char* type, BBitmap& _icon,
|
||
|
icon_size size);
|
||
|
status_t GetIcon(const char* type, uint8*& _data,
|
||
|
size_t& _size);
|
||
|
status_t GetIconForType(const char* type,
|
||
|
const char* fileType, BBitmap& _icon,
|
||
|
icon_size which);
|
||
|
status_t GetIconForType(const char* type,
|
||
|
const char* fileType, uint8*& _data,
|
||
|
size_t& _size);
|
||
|
status_t GetPreferredApp(const char* type,
|
||
|
char* signature, app_verb verb);
|
||
|
status_t GetSnifferRule(const char* type,
|
||
|
BString& _result);
|
||
|
status_t GetSupportedTypes(const char* type,
|
||
|
BMessage& _types);
|
||
|
|
||
|
bool IsInstalled(const char* type);
|
||
|
|
||
|
private:
|
||
|
BString _TypeToFilename(const char* type, int32 index)
|
||
|
const;
|
||
|
status_t _OpenType(const char* type, BNode& _node,
|
||
|
int32& _index) const;
|
||
|
status_t _CreateTypeNode(const char* type, BNode& _node)
|
||
|
const;
|
||
|
status_t _CopyTypeNode(BNode& source, const char* type,
|
||
|
BNode& _target) const;
|
||
|
|
||
|
private:
|
||
|
BStringList fDirectories;
|
||
|
};
|
||
|
|
||
|
|
||
|
} // namespace Mime
|
||
|
} // namespace Storage
|
||
|
} // namespace BPrivate
|
||
|
|
||
|
|
||
|
#endif // _MIME_DATABASE_LOCATION_H
|