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 QCONTACTCOLLECTIONFILTER_P_H
36#define QCONTACTCOLLECTIONFILTER_P_H
37
38//
39// W A R N I N G
40// -------------
41//
42// This file is not part of the Qt API. It exists purely as an
43// implementation detail. This header file may change from version to
44// version without notice, or even be removed.
45//
46// We mean it.
47//
48
49#include <QtContacts/qcontactcollectionfilter.h>
50#include <QtContacts/private/qcontactfilter_p.h>
51
52#include <algorithm>
53
54QT_BEGIN_NAMESPACE_CONTACTS
55
56class QContactCollectionFilterPrivate : public QContactFilterPrivate
57{
58public:
59 QContactCollectionFilterPrivate()
60 : QContactFilterPrivate()
61 {
62 }
63
64 QContactCollectionFilterPrivate(const QContactCollectionFilterPrivate &other)
65 : QContactFilterPrivate(other), m_ids(other.m_ids)
66 {
67 }
68
69 virtual bool compare(const QContactFilterPrivate *other) const
70 {
71 const QContactCollectionFilterPrivate *od = static_cast<const QContactCollectionFilterPrivate *>(other);
72 if (od)
73 return m_ids == od->m_ids;
74 return false;
75 }
76
77#ifndef QT_NO_DATASTREAM
78 QDataStream &outputToStream(QDataStream &stream, quint8 formatVersion) const
79 {
80 if (formatVersion == 1)
81 stream << m_ids;
82 return stream;
83 }
84
85 QDataStream &inputFromStream(QDataStream &stream, quint8 formatVersion)
86 {
87 if (formatVersion == 1)
88 stream >> m_ids;
89 return stream;
90 }
91#endif // QT_NO_DATASTREAM
92
93#ifndef QT_NO_DEBUG_STREAM
94 QDebug &debugStreamOut(QDebug &dbg) const
95 {
96 dbg.nospace() << "QContactCollectionFilter(collectionIds=";
97 QList<QContactCollectionId> ids(m_ids.toList());
98 std::sort(first: ids.begin(), last: ids.end());
99 dbg.nospace() << ids;
100 dbg.nospace() << ")";
101 return dbg.maybeSpace();
102 }
103#endif // QT_NO_DEBUG_STREAM
104
105 Q_IMPLEMENT_CONTACTFILTER_VIRTUALCTORS(QContactCollectionFilter, QContactFilter::CollectionFilter)
106
107 QSet<QContactCollectionId> m_ids;
108};
109
110QT_END_NAMESPACE_CONTACTS
111
112#endif // QCONTACTCOLLECTIONFILTER_P_H
113

source code of qtpim/src/contacts/filters/qcontactcollectionfilter_p.h