• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepimlibs API Reference
  • KDE Home
  • Contact Us
 

akonadi

  • Akonadi
  • Attribute
Public Types | Public Member Functions | List of all members
Akonadi::Attribute Class Referenceabstract

#include <attribute.h>

Inheritance diagram for Akonadi::Attribute:
Inheritance graph
[legend]

Public Types

typedef QList< Attribute * > List
 

Public Member Functions

virtual ~Attribute ()
 
virtual Attribute * clone () const =0
 
virtual void deserialize (const QByteArray &data)=0
 
virtual QByteArray serialized () const =0
 
virtual QByteArray type () const =0
 

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.

Note that attributes are per user, i.e. when an attribute is added to an entity, it only applies to the current user.

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>();

Third party attributes need to be registered once by each application that uses them. So the above snippet needs to be in the resource that adds the attribute, and each application that uses the resource. This may be simplified in the future.

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();
...
}
Author
Volker Krause vkrau.nosp@m.se@k.nosp@m.de.or.nosp@m.g

Definition at line 138 of file attribute.h.

Member Typedef Documentation

typedef QList<Attribute*> Akonadi::Attribute::List

Describes a list of attributes.

Definition at line 144 of file attribute.h.

Constructor & Destructor Documentation

Attribute::~Attribute ( )
virtual

Destroys this attribute.

Definition at line 24 of file attribute.cpp.

Member Function Documentation

virtual Attribute* Akonadi::Attribute::clone ( ) const
pure virtual

Creates a copy of this attribute.

Implemented in Akonadi::EntityDisplayAttribute, Akonadi::CollectionQuotaAttribute, Akonadi::EntityDeletedAttribute, Akonadi::MessageThreadingAttribute, Akonadi::EntityHiddenAttribute, Akonadi::BlockAlarmsAttribute, Akonadi::CollectionRightsAttribute, Akonadi::MessageFolderAttribute, Akonadi::SpecialCollectionAttribute, Akonadi::ContactMetaDataAttribute, and Akonadi::AddressAttribute.

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
dataThe encoded attribute data.

Implemented in Akonadi::EntityDisplayAttribute, Akonadi::CollectionQuotaAttribute, Akonadi::EntityDeletedAttribute, Akonadi::EntityHiddenAttribute, Akonadi::BlockAlarmsAttribute, Akonadi::MessageThreadingAttribute, Akonadi::CollectionRightsAttribute, Akonadi::MessageFolderAttribute, Akonadi::SpecialCollectionAttribute, Akonadi::ContactMetaDataAttribute, and Akonadi::AddressAttribute.

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::EntityDisplayAttribute, Akonadi::CollectionQuotaAttribute, Akonadi::EntityDeletedAttribute, Akonadi::EntityHiddenAttribute, Akonadi::MessageThreadingAttribute, Akonadi::BlockAlarmsAttribute, Akonadi::CollectionRightsAttribute, Akonadi::MessageFolderAttribute, Akonadi::SpecialCollectionAttribute, Akonadi::ContactMetaDataAttribute, and Akonadi::AddressAttribute.

virtual QByteArray Akonadi::Attribute::type ( ) const
pure virtual

Returns the type of the attribute.

Implemented in Akonadi::EntityDisplayAttribute, Akonadi::CollectionQuotaAttribute, Akonadi::MessageThreadingAttribute, Akonadi::EntityDeletedAttribute, Akonadi::EntityHiddenAttribute, Akonadi::BlockAlarmsAttribute, Akonadi::CollectionRightsAttribute, Akonadi::MessageFolderAttribute, Akonadi::SpecialCollectionAttribute, Akonadi::ContactMetaDataAttribute, and Akonadi::AddressAttribute.


The documentation for this class was generated from the following files:
  • attribute.h
  • attribute.cpp
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:00:28 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

akonadi

Skip menu "akonadi"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • Modules
  • Related Pages

kdepimlibs API Reference

Skip menu "kdepimlibs API Reference"
  • akonadi
  •   contact
  •   kmime
  •   socialutils
  • kabc
  • kalarmcal
  • kblog
  • kcal
  • kcalcore
  • kcalutils
  • kholidays
  • kimap
  • kldap
  • kmbox
  • kmime
  • kpimidentities
  • kpimtextedit
  • kresources
  • ktnef
  • kxmlrpcclient
  • microblog

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal