1/****************************************************************************
2**
3** Copyright (C) 2015 The Qt Company Ltd.
4** Copyright (C) 2015 Canonical Ltd
5** Contact: http://www.qt.io/licensing/
6**
7** This file is part of the QtContacts module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL21$
10** Commercial License Usage
11** Licensees holding valid commercial Qt licenses may use this file in
12** accordance with the commercial license agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and The Qt Company. For licensing terms
15** and conditions see http://www.qt.io/terms-conditions. For further
16** information use the contact form at http://www.qt.io/contact-us.
17**
18** GNU Lesser General Public License Usage
19** Alternatively, this file may be used under the terms of the GNU Lesser
20** General Public License version 2.1 or version 3 as published by the Free
21** Software Foundation and appearing in the file LICENSE.LGPLv21 and
22** LICENSE.LGPLv3 included in the packaging of this file. Please review the
23** following information to ensure the GNU Lesser General Public License
24** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
25** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
26**
27** As a special exception, The Qt Company gives you certain additional
28** rights. These rights are described in The Qt Company LGPL Exception
29** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
30**
31** $QT_END_LICENSE$
32**
33****************************************************************************/
34
35#ifndef QCONTACTCOLLECTION_H
36#define QCONTACTCOLLECTION_H
37
38#include <QtCore/qmap.h>
39#include <QtCore/qshareddata.h>
40#include <QtCore/qvariant.h>
41
42#include <QtContacts/qcontactcollectionid.h>
43#include <QtContacts/qcontactid.h>
44#include <QtContacts/qcontactdetail.h>
45#include <QtContacts/qcontacttype.h>
46
47QT_BEGIN_NAMESPACE_CONTACTS
48
49class QContactManagerEngine;
50
51class QContactCollectionData;
52class Q_CONTACTS_EXPORT QContactCollection
53{
54public:
55 enum MetaDataKey {
56 KeyName = 0,
57 KeyDescription,
58 KeyColor,
59 KeySecondaryColor,
60 KeyImage,
61 KeyExtended
62 };
63
64 QContactCollection();
65 ~QContactCollection();
66
67 QContactCollection(const QContactCollection &other);
68 QContactCollection &operator=(const QContactCollection &other);
69
70 bool operator==(const QContactCollection &other) const;
71 bool operator!=(const QContactCollection &other) const {return !(other == *this);}
72
73 QContactCollectionId id() const;
74 void setId(const QContactCollectionId &id);
75
76 void setMetaData(MetaDataKey key, const QVariant &value);
77 QVariant metaData(MetaDataKey key) const;
78
79 void setMetaData(const QMap<QContactCollection::MetaDataKey, QVariant> &metaData);
80 QMap<QContactCollection::MetaDataKey, QVariant> metaData() const;
81
82 void setExtendedMetaData(const QString &key, const QVariant &value);
83 QVariant extendedMetaData(const QString &key) const;
84
85private:
86 friend Q_CONTACTS_EXPORT uint qHash(const QContactCollection &key);
87 friend class QContactManagerEngine;
88 QSharedDataPointer<QContactCollectionData> d;
89};
90
91Q_CONTACTS_EXPORT uint qHash(const QContactCollection &key);
92
93#ifndef QT_NO_DEBUG_STREAM
94Q_CONTACTS_EXPORT QDebug operator<<(QDebug dbg, const QContactCollection &collection);
95#endif // QT_NO_DEBUG_STREAM
96
97#ifndef QT_NO_DATASTREAM
98Q_CONTACTS_EXPORT QDataStream &operator<<(QDataStream &out, const QContactCollection &collection);
99Q_CONTACTS_EXPORT QDataStream &operator>>(QDataStream &in, QContactCollection &collection);
100#endif // QT_NO_DATASTREAM
101
102QT_END_NAMESPACE_CONTACTS
103
104QT_BEGIN_NAMESPACE
105Q_DECLARE_TYPEINFO(QTCONTACTS_PREPEND_NAMESPACE(QContactCollection), Q_MOVABLE_TYPE);
106QT_END_NAMESPACE
107
108#endif // QCONTACTCOLLECTION_H
109

source code of qtpim/src/contacts/qcontactcollection.h