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

akonadi

  • akonadi
collectionrightsattribute.cpp
1/*
2 Copyright (c) 2007 Tobias Koenig <tokoe@kde.org>
3
4 This library is free software; you can redistribute it and/or modify it
5 under the terms of the GNU Library General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or (at your
7 option) any later version.
8
9 This library is distributed in the hope that it will be useful, but WITHOUT
10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
12 License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to the
16 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17 02110-1301, USA.
18*/
19
20#include "collectionrightsattribute_p.h"
21
22using namespace Akonadi;
23
24static Collection::Rights dataToRights(const QByteArray &data)
25{
26 Collection::Rights rights = Collection::ReadOnly;
27
28 if (data.isEmpty()) {
29 return Collection::ReadOnly;
30 }
31
32 if (data.at(0) == 'a') {
33 return Collection::AllRights;
34 }
35
36 for (int i = 0; i < data.count(); ++i) {
37 switch (data.at(i)) {
38 case 'w':
39 rights |= Collection::CanChangeItem;
40 break;
41 case 'c':
42 rights |= Collection::CanCreateItem;
43 break;
44 case 'd':
45 rights |= Collection::CanDeleteItem;
46 break;
47 case 'l':
48 rights |= Collection::CanLinkItem;
49 break;
50 case 'u':
51 rights |= Collection::CanUnlinkItem;
52 break;
53 case 'W':
54 rights |= Collection::CanChangeCollection;
55 break;
56 case 'C':
57 rights |= Collection::CanCreateCollection;
58 break;
59 case 'D':
60 rights |= Collection::CanDeleteCollection;
61 break;
62 }
63 }
64
65 return rights;
66}
67
68static QByteArray rightsToData(Collection::Rights &rights)
69{
70 if (rights == Collection::AllRights) {
71 return QByteArray("a");
72 }
73
74 QByteArray data;
75 if (rights & Collection::CanChangeItem) {
76 data.append('w');
77 }
78 if (rights & Collection::CanCreateItem) {
79 data.append('c');
80 }
81 if (rights & Collection::CanDeleteItem) {
82 data.append('d');
83 }
84 if (rights & Collection::CanChangeCollection) {
85 data.append('W');
86 }
87 if (rights & Collection::CanCreateCollection) {
88 data.append('C');
89 }
90 if (rights & Collection::CanDeleteCollection) {
91 data.append('D');
92 }
93 if (rights & Collection::CanLinkItem) {
94 data.append('l');
95 }
96 if (rights & Collection::CanUnlinkItem) {
97 data.append('u');
98 }
99
100 return data;
101}
102
106class CollectionRightsAttribute::Private
107{
108public:
109 QByteArray mData;
110};
111
112CollectionRightsAttribute::CollectionRightsAttribute()
113 : Attribute()
114 , d(new Private)
115{
116}
117
118CollectionRightsAttribute::~CollectionRightsAttribute()
119{
120 delete d;
121}
122
123void CollectionRightsAttribute::setRights(Collection::Rights rights)
124{
125 d->mData = rightsToData(rights);
126}
127
128Collection::Rights CollectionRightsAttribute::rights() const
129{
130 return dataToRights(d->mData);
131}
132
133CollectionRightsAttribute *CollectionRightsAttribute::clone() const
134{
135 CollectionRightsAttribute *attr = new CollectionRightsAttribute();
136 attr->d->mData = d->mData;
137
138 return attr;
139}
140
141QByteArray CollectionRightsAttribute::type() const
142{
143 static const QByteArray s_accessRightsIdentifier("AccessRights");
144 return s_accessRightsIdentifier;
145}
146
147QByteArray CollectionRightsAttribute::serialized() const
148{
149 return d->mData;
150}
151
152void CollectionRightsAttribute::deserialize(const QByteArray &data)
153{
154 d->mData = data;
155}
Akonadi::Attribute
Provides interface for custom attributes for Entity.
Definition: attribute.h:139
Akonadi::CollectionRightsAttribute
Attribute that stores the rights of a collection.
Definition: collectionrightsattribute_p.h:45
Akonadi::CollectionRightsAttribute::deserialize
virtual void deserialize(const QByteArray &)
Sets the data of this attribute, using the same encoding as returned by toByteArray().
Definition: collectionrightsattribute.cpp:152
Akonadi::CollectionRightsAttribute::serialized
virtual QByteArray serialized() const
Returns a QByteArray representation of the attribute which will be storaged.
Definition: collectionrightsattribute.cpp:147
Akonadi::CollectionRightsAttribute::setRights
void setRights(Collection::Rights rights)
Sets the rights of the collection.
Definition: collectionrightsattribute.cpp:123
Akonadi::CollectionRightsAttribute::rights
Collection::Rights rights() const
Returns the rights of the collection.
Definition: collectionrightsattribute.cpp:128
Akonadi::CollectionRightsAttribute::type
virtual QByteArray type() const
Returns the type of the attribute.
Definition: collectionrightsattribute.cpp:141
Akonadi::CollectionRightsAttribute::~CollectionRightsAttribute
~CollectionRightsAttribute()
Destroys the collection rights attribute.
Definition: collectionrightsattribute.cpp:118
Akonadi::CollectionRightsAttribute::clone
virtual CollectionRightsAttribute * clone() const
Creates a copy of this attribute.
Definition: collectionrightsattribute.cpp:133
Akonadi::CollectionRightsAttribute::CollectionRightsAttribute
CollectionRightsAttribute()
Creates a new collection rights attribute.
Definition: collectionrightsattribute.cpp:112
Akonadi::Collection::CanDeleteItem
@ CanDeleteItem
Can delete items in this collection.
Definition: collection.h:90
Akonadi::Collection::ReadOnly
@ ReadOnly
Can only read items or subcollection of this collection.
Definition: collection.h:87
Akonadi::Collection::CanDeleteCollection
@ CanDeleteCollection
Can delete this collection.
Definition: collection.h:93
Akonadi::Collection::CanChangeCollection
@ CanChangeCollection
Can change this collection.
Definition: collection.h:91
Akonadi::Collection::CanCreateItem
@ CanCreateItem
Can create new items in this collection.
Definition: collection.h:89
Akonadi::Collection::CanLinkItem
@ CanLinkItem
Can create links to existing items in this virtual collection.
Definition: collection.h:94
Akonadi::Collection::CanCreateCollection
@ CanCreateCollection
Can create new subcollections in this collection.
Definition: collection.h:92
Akonadi::Collection::CanUnlinkItem
@ CanUnlinkItem
Can remove links to items in this virtual collection.
Definition: collection.h:95
Akonadi::Collection::AllRights
@ AllRights
Has all rights on this storage collection.
Definition: collection.h:96
Akonadi::Collection::CanChangeItem
@ CanChangeItem
Can change items in this collection.
Definition: collection.h:88
Akonadi
FreeBusyManager::Singleton.
Definition: actionstatemanager_p.h:28
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Thu Jul 21 2022 00:00:00 by doxygen 1.9.5 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-4.14.10 API Reference

Skip menu "kdepimlibs-4.14.10 API Reference"
  • akonadi
  •   contact
  •   kmime
  •   socialutils
  • kabc
  • kalarmcal
  • kblog
  • kcal
  • kcalcore
  • kcalutils
  • kholidays
  • kimap
  • kioslave
  •   imap4
  •   mbox
  •   nntp
  • kldap
  • kmbox
  • kmime
  • kontactinterface
  • kpimidentities
  • kpimtextedit
  • kpimutils
  • kresources
  • ktnef
  • kxmlrpcclient
  • mailtransport
  • microblog
  • qgpgme
  • syndication
  •   atom
  •   rdf
  •   rss2
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