akonadi
Akonadi::Attribute Class Reference
Provides interface for custom attributes for Entity. More...
#include <attribute.h>

Public Types | |
typedef QList< Attribute * > | List |
Public Member Functions | |
virtual Attribute * | clone () const =0 |
virtual void | deserialize (const QByteArray &data)=0 |
virtual QByteArray | serialized () const =0 |
virtual QByteArray | type () const =0 |
virtual | ~Attribute () |
Detailed Description
Provides interface for custom attributes for Entity.This class is an interface for custom attributes, that can be stored in an entity. Attributes should be meta data, e.g. ACLs, quotas etc. that are not part of the entities' data itself.
To provide custom attributes, you have to subclass from this interface and reimplement the pure virtual methods.
class SecrecyAttribute : public Akonadi::Attribute { public: enum Secrecy { Public, Private, Confidential }; SecrecyAttribute( Secrecy secrecy = Public ) : mSecrecy( secrecy ) { } void setSecrecy( Secrecy secrecy ) { mSecrecy = secrecy; } Secrecy secrecy() const { return mSecrecy; } virtual QByteArray type() const { return "secrecy"; } virtual Attribute* clone() const { return new SecrecyAttribute( mSecrecy ); } virtual QByteArray serialized() const { switch ( mSecrecy ) { case Public: return "public"; break; case Private: return "private"; break; case Confidential: return "confidential"; break; } } virtual void deserialize( const QByteArray &data ) { if ( data == "public" ) mSecrecy = Public; else if ( data == "private" ) mSecrecy = Private; else if ( data == "confidential" ) mSecrecy = Confidential; } }
Additionally, you need to register your attribute with Akonadi::AttributeFactory for automatic deserialization during retrieving of collecitons or items:
AttributeFactory::registerAttribute<SecrecyAttribute>();
The custom attributes can be used in the following way:
Akonadi::Item item( "text/directory" ); SecrecyAttribute* attr = item.attribute<SecrecyAttribute>( Item::AddIfMissing ); attr.setSecrecy( SecrecyAttribute::Confidential );
and
Akonadi::Item item = ... if ( item.hasAttribute<SecrecyAttribute>() ) { SecrecyAttribute *attr = item.attribute<SecrecyAttribute>(); SecrecyAttribute::Secrecy secrecy = attr->secrecy(); ... }
Definition at line 131 of file attribute.h.
Member Typedef Documentation
typedef QList<Attribute*> Akonadi::Attribute::List |
Constructor & Destructor Documentation
Attribute::~Attribute | ( | ) | [virtual] |
Member Function Documentation
virtual Attribute* Akonadi::Attribute::clone | ( | ) | const [pure virtual] |
Creates a copy of this attribute.
Implemented in Akonadi::CollectionRightsAttribute, and Akonadi::MessageThreadingAttribute.
virtual void Akonadi::Attribute::deserialize | ( | const QByteArray & | data | ) | [pure virtual] |
Sets the data of this attribute, using the same encoding as returned by toByteArray().
- Parameters:
-
data The encoded attribute data.
Implemented in Akonadi::CollectionRightsAttribute, and Akonadi::MessageThreadingAttribute.
virtual QByteArray Akonadi::Attribute::serialized | ( | ) | const [pure virtual] |
Returns a QByteArray representation of the attribute which will be storaged.
This can be raw binary data, no encoding needs to be applied.
Implemented in Akonadi::CollectionRightsAttribute, and Akonadi::MessageThreadingAttribute.
virtual QByteArray Akonadi::Attribute::type | ( | ) | const [pure virtual] |
Returns the type of the attribute.
Implemented in Akonadi::CollectionRightsAttribute, and Akonadi::MessageThreadingAttribute.
The documentation for this class was generated from the following files: