20 #include "attributefactory.h"
22 #include "collectionquotaattribute.h"
23 #include "collectionrightsattribute_p.h"
24 #include "entitydisplayattribute.h"
25 #include "entityhiddenattribute.h"
26 #include "indexpolicyattribute.h"
27 #include "persistentsearchattribute.h"
28 #include "entitydeletedattribute.h"
32 #include <QtCore/QHash>
34 using namespace Akonadi;
45 explicit DefaultAttribute(
const QByteArray &type,
const QByteArray &value = QByteArray() ) :
50 QByteArray type()
const {
return mType; }
53 return new DefaultAttribute( mType, mValue );
56 QByteArray serialized()
const {
return mValue; }
57 void deserialize(
const QByteArray &data ) { mValue = data; }
60 QByteArray mType, mValue;
76 AttributeFactory::registerAttribute<CollectionQuotaAttribute>();
77 AttributeFactory::registerAttribute<CollectionRightsAttribute>();
78 AttributeFactory::registerAttribute<EntityDisplayAttribute>();
79 AttributeFactory::registerAttribute<EntityHiddenAttribute>();
80 AttributeFactory::registerAttribute<IndexPolicyAttribute>();
81 AttributeFactory::registerAttribute<PersistentSearchAttribute>();
82 AttributeFactory::registerAttribute<EntityDeletedAttribute>();
87 K_GLOBAL_STATIC( StaticAttributeFactory, s_attributeInstance )
91 using Akonadi::Internal::s_attributeInstance;
96 class AttributeFactory::Private
99 QHash<QByteArray, Attribute*> attributes;
105 s_attributeInstance->init();
106 return s_attributeInstance;
109 AttributeFactory::AttributeFactory()
114 AttributeFactory::~ AttributeFactory()
116 qDeleteAll( d->attributes );
123 Q_ASSERT( !attr->
type().contains(
' ') && !attr->
type().contains(
'\'') && !attr->
type().contains(
'"') );
124 QHash<QByteArray, Attribute*>::Iterator it = d->attributes.find( attr->
type() );
125 if ( it != d->attributes.end() ) {
127 d->attributes.erase( it );
129 d->attributes.insert( attr->
type(), attr );
134 Attribute* attr =
self()->d->attributes.value( type );
136 return attr->
clone();
137 return new Internal::DefaultAttribute( type );