1/****************************************************************************
2**
3** Copyright (C) 2015 The Qt Company Ltd.
4** Contact: http://www.qt.io/licensing/
5**
6** This file is part of the QtLocation module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL3$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see http://www.qt.io/terms-conditions. For further
15** information use the contact form at http://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPLv3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or later as published by the Free
28** Software Foundation and appearing in the file LICENSE.GPL included in
29** the packaging of this file. Please review the following information to
30** ensure the GNU General Public License version 2.0 requirements will be
31** met: http://www.gnu.org/licenses/gpl-2.0.html.
32**
33** $QT_END_LICENSE$
34**
35****************************************************************************/
36
37#include "qplacematchrequest.h"
38
39#include <QtCore/QSharedData>
40#include <QtCore/QList>
41#include <QtLocation/QPlaceResult>
42
43QT_BEGIN_NAMESPACE
44
45class QPlaceMatchRequestPrivate : public QSharedData
46{
47public:
48 QPlaceMatchRequestPrivate();
49 QPlaceMatchRequestPrivate(const QPlaceMatchRequestPrivate &other);
50 ~QPlaceMatchRequestPrivate();
51
52 QPlaceMatchRequestPrivate &operator=(const QPlaceMatchRequestPrivate &other);
53 bool operator==(const QPlaceMatchRequestPrivate &other) const;
54
55 void clear();
56
57 QList<QPlace> places;
58 QVariantMap parameters;
59};
60
61QPlaceMatchRequestPrivate::QPlaceMatchRequestPrivate()
62 : QSharedData()
63{
64}
65
66QPlaceMatchRequestPrivate::QPlaceMatchRequestPrivate(const QPlaceMatchRequestPrivate &other)
67 : QSharedData(other),
68 places(other.places),
69 parameters(other.parameters)
70{
71}
72
73QPlaceMatchRequestPrivate::~QPlaceMatchRequestPrivate()
74{
75}
76
77QPlaceMatchRequestPrivate &QPlaceMatchRequestPrivate::operator=(const QPlaceMatchRequestPrivate &other)
78{
79 if (this != &other) {
80 places = other.places;
81 parameters = other.parameters;
82 }
83
84 return *this;
85}
86
87bool QPlaceMatchRequestPrivate::operator==(const QPlaceMatchRequestPrivate &other) const
88{
89 return (places == other.places
90 && parameters == other.parameters);
91}
92
93void QPlaceMatchRequestPrivate::clear()
94{
95 places.clear();
96 parameters.clear();
97}
98
99/*!
100 \class QPlaceMatchRequest
101 \inmodule QtLocation
102 \ingroup QtLocation-places
103 \ingroup QtLocation-places-requests
104 \since 5.6
105
106 \brief The QPlaceMatchRequest class is used to find places from one manager that match those from another. It represents
107 a set of request parameters.
108
109 Places from another manager that may have corresponding/matching places in the current manager are assigned using setPlaces() or setResults().
110 A set of further parameters are specified which determines the criteria for matching.
111
112 The typical key for matching is the QPlaceMatchRequest::AlternativeId, the value is an alternative identifier attribute type of the format
113 x_id_<provider name> for example x_id_here. The provider name is name supplied to the QGeoServiceProvider instance.
114
115 See \l {Matching places between managers} for an example on how to use a match request.
116
117 \sa QPlaceMatchReply, QPlaceManager
118*/
119
120/*!
121 \variable QPlaceMatchRequest::AlternativeId
122 The key to specify that matching is to be accomplished via an alternative place identifier.
123*/
124const QString QPlaceMatchRequest::AlternativeId(QLatin1String("alternativeId"));
125
126/*!
127 Default constructor. Constructs a new request object.
128*/
129QPlaceMatchRequest::QPlaceMatchRequest()
130 : d_ptr(new QPlaceMatchRequestPrivate())
131{
132}
133
134/*!
135 Constructs a copy of \a other.
136*/
137QPlaceMatchRequest::QPlaceMatchRequest(const QPlaceMatchRequest &other)
138 : d_ptr(other.d_ptr)
139{
140}
141
142/*!
143 Destroys the request object.
144*/
145QPlaceMatchRequest::~QPlaceMatchRequest()
146{
147}
148
149/*!
150 Assigns \a other to this search request and returns a reference
151 to this match request.
152*/
153QPlaceMatchRequest &QPlaceMatchRequest::operator= (const QPlaceMatchRequest & other)
154{
155 if (this == &other)
156 return *this;
157 d_ptr = other.d_ptr;
158 return *this;
159}
160
161/*!
162 Returns true if \a other is equal to this match request,
163 otherwise returns false.
164*/
165bool QPlaceMatchRequest::operator== (const QPlaceMatchRequest &other) const
166{
167 Q_D(const QPlaceMatchRequest);
168 return *d == *other.d_func();
169}
170
171/*!
172 Returns true if \a other is not equal to this match request,
173 otherwise returns false.
174*/
175bool QPlaceMatchRequest::operator!= (const QPlaceMatchRequest &other) const
176{
177 Q_D(const QPlaceMatchRequest);
178 return !(*d == *other.d_func());
179}
180
181
182/*!
183 Returns a list of places which are to be matched.
184*/
185QList<QPlace> QPlaceMatchRequest::places() const
186{
187 Q_D(const QPlaceMatchRequest);
188 return d->places;
189}
190
191/*!
192 Sets a list of \a places which are to be matched.
193
194 \sa setResults()
195*/
196void QPlaceMatchRequest::setPlaces(const QList<QPlace> places)
197{
198 Q_D(QPlaceMatchRequest);
199 d->places = places;
200}
201
202/*!
203 Convenience function which uses a set of search \a results to set
204 the places which should be matched.
205
206 \sa setPlaces()
207*/
208void QPlaceMatchRequest::setResults(const QList<QPlaceSearchResult> &results)
209{
210 Q_D(QPlaceMatchRequest);
211 QList<QPlace> places;
212 foreach (const QPlaceSearchResult &result, results) {
213 if (result.type() == QPlaceSearchResult::PlaceResult) {
214 QPlaceResult placeResult = result;
215 places.append(t: placeResult.place());
216 }
217 }
218
219 d->places = places;
220}
221
222/*!
223 Returns the parameters for matching places.
224*/
225QVariantMap QPlaceMatchRequest::parameters() const
226{
227 Q_D(const QPlaceMatchRequest);
228 return d->parameters;
229}
230
231/*!
232 Sets the \a parameters for matching places.
233*/
234void QPlaceMatchRequest::setParameters(const QVariantMap &parameters)
235{
236 Q_D(QPlaceMatchRequest);
237 d->parameters = parameters;
238}
239
240/*!
241 Clears the match request.
242*/
243void QPlaceMatchRequest::clear()
244{
245 Q_D(QPlaceMatchRequest);
246 d->clear();
247}
248
249inline QPlaceMatchRequestPrivate *QPlaceMatchRequest::d_func()
250{
251 return static_cast<QPlaceMatchRequestPrivate *>(d_ptr.data());
252}
253
254inline const QPlaceMatchRequestPrivate *QPlaceMatchRequest::d_func() const
255{
256 return static_cast<const QPlaceMatchRequestPrivate *>(d_ptr.constData());
257}
258
259QT_END_NAMESPACE
260

source code of qtlocation/src/location/places/qplacematchrequest.cpp