1/*
2 * Copyright (C) 2008 Omat Holding B.V. <info@omat.nl>
3 * Copyright (C) 2014 Christian Mollekopf <mollekopf@kolabsys.com>
4 *
5 * This library is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU Library General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13 * License for more details.
14 *
15 * You should have received a copy of the GNU Library General Public License
16 * along with this library; see the file COPYING.LIB. If not, write to the
17 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18 * 02110-1301, USA.
19 */
20
21#ifndef AKONADI_ENTITYANNOTATIONSATTRIBUTE_H
22#define AKONADI_ENTITYANNOTATIONSATTRIBUTE_H
23
24#include "akonadi_export.h"
25
26#include <akonadi/attribute.h>
27#include <QMap>
28
29namespace Akonadi {
30
31/**
32 * An attribute for annotations.
33 *
34 * The attribute is inspired by RFC5257(IMAP ANNOTATION) and RFC5464(IMAP METADATA), but serves
35 * the purpose of RFC5257.
36 *
37 * For a private note annotation the entry name is:
38 * /private/comment
39 * for a shared note:
40 * /shared/comment
41 *
42 * @since 4.13
43 */
44class AKONADI_EXPORT EntityAnnotationsAttribute : public Akonadi::Attribute
45{
46public:
47 EntityAnnotationsAttribute();
48 EntityAnnotationsAttribute(const QMap<QByteArray, QByteArray> &annotations);
49
50 void setAnnotations(const QMap<QByteArray, QByteArray> &annotations);
51 QMap<QByteArray, QByteArray> annotations() const;
52
53 void insert(const QByteArray &key, const QString &value);
54 QString value(const QByteArray &key);
55 bool contains(const QByteArray &key) const;
56
57 QByteArray type() const;
58 Attribute *clone() const;
59 QByteArray serialized() const;
60 void deserialize(const QByteArray &data);
61
62private:
63 QMap<QByteArray, QByteArray> mAnnotations;
64};
65
66}
67
68#endif
69