20 #include "collectionrightsattribute_p.h"
22 using namespace Akonadi;
24 static const char* s_accessRightsIdentifier =
"AccessRights";
26 static Collection::Rights dataToRights(
const QByteArray &data )
28 Collection::Rights rights = Collection::ReadOnly;
31 return Collection::ReadOnly;
33 if ( data.at( 0 ) ==
'a' )
34 return Collection::AllRights;
36 for (
int i = 0; i < data.count(); ++i ) {
37 switch ( data.at( i ) ) {
38 case 'w': rights |= Collection::CanChangeItem;
break;
39 case 'c': rights |= Collection::CanCreateItem;
break;
40 case 'd': rights |= Collection::CanDeleteItem;
break;
41 case 'l': rights |= Collection::CanLinkItem;
break;
42 case 'u': rights |= Collection::CanUnlinkItem;
break;
43 case 'W': rights |= Collection::CanChangeCollection;
break;
44 case 'C': rights |= Collection::CanCreateCollection;
break;
45 case 'D': rights |= Collection::CanDeleteCollection;
break;
52 static QByteArray rightsToData( Collection::Rights &rights )
54 if ( rights == Collection::AllRights )
55 return QByteArray(
"a" );
58 if ( rights & Collection::CanChangeItem )
60 if ( rights & Collection::CanCreateItem )
62 if ( rights & Collection::CanDeleteItem )
64 if ( rights & Collection::CanChangeCollection )
66 if ( rights & Collection::CanCreateCollection )
68 if ( rights & Collection::CanDeleteCollection )
70 if ( rights & Collection::CanLinkItem )
72 if ( rights & Collection::CanUnlinkItem )
81 class CollectionRightsAttribute::Private
87 CollectionRightsAttribute::CollectionRightsAttribute()
92 CollectionRightsAttribute::~CollectionRightsAttribute()
97 void CollectionRightsAttribute::setRights( Collection::Rights rights )
99 d->mData = rightsToData( rights );
102 Collection::Rights CollectionRightsAttribute::rights()
const
104 return dataToRights( d->mData );
107 CollectionRightsAttribute* CollectionRightsAttribute::clone()
const
109 CollectionRightsAttribute *attr =
new CollectionRightsAttribute();
110 attr->d->mData = d->mData;
115 QByteArray CollectionRightsAttribute::type()
const
117 return s_accessRightsIdentifier;
120 QByteArray CollectionRightsAttribute::serialized()
const
125 void CollectionRightsAttribute::deserialize(
const QByteArray &data )