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 "qplacecontentrequest_p.h"
38#include "qplacecontentrequest.h"
39#include "qgeocoordinate.h"
40
41QT_BEGIN_NAMESPACE
42
43QPlaceContentRequestPrivate::QPlaceContentRequestPrivate()
44: QSharedData(), contentType(QPlaceContent::NoType), limit(-1)
45{
46}
47
48QPlaceContentRequestPrivate::QPlaceContentRequestPrivate(const QPlaceContentRequestPrivate &other)
49: QSharedData(other), contentType(other.contentType), placeId(other.placeId),
50 contentContext(other.contentContext), limit(other.limit)
51{
52}
53
54QPlaceContentRequestPrivate::~QPlaceContentRequestPrivate()
55{
56}
57
58bool QPlaceContentRequestPrivate::operator==(const QPlaceContentRequestPrivate &other) const
59{
60 return contentType == other.contentType
61 && limit == other.limit;
62}
63
64void QPlaceContentRequestPrivate::clear()
65{
66 contentType = QPlaceContent::NoType;
67 limit = -1;
68}
69
70/*!
71 \class QPlaceContentRequest
72 \inmodule QtLocation
73 \ingroup QtLocation-places
74 \ingroup QtLocation-places-requests
75 \since 5.6
76
77 \brief The QPlaceContentRequest class represents the parameters of a content request.
78
79 The QPlaceContentRequest class is used in conjunction with a QPlaceManager to
80 retrieve rich content like images and reviews in a paginated fashion.
81 The following code would request a set of 5 images from the 10th index:
82
83 \snippet places/requesthandler.h Content request
84 \dots
85 \dots
86 \snippet places/requesthandler.h Content handler
87
88 \sa QPlaceContentReply
89*/
90
91/*!
92 Constructs a new request object.
93*/
94QPlaceContentRequest::QPlaceContentRequest()
95 : d_ptr(new QPlaceContentRequestPrivate())
96{
97}
98
99/*!
100 Constructs a copy of \a other.
101*/
102QPlaceContentRequest::QPlaceContentRequest(const QPlaceContentRequest &other)
103 : d_ptr(other.d_ptr)
104{
105}
106
107/*!
108 Destroys the request object
109*/
110QPlaceContentRequest::~QPlaceContentRequest()
111{
112}
113
114/*!
115 Assigns \a other to this content request and returns a reference
116 to this content request.
117*/
118QPlaceContentRequest &QPlaceContentRequest::operator= (const QPlaceContentRequest & other)
119{
120 if (this == &other)
121 return *this;
122
123 d_ptr = other.d_ptr;
124 return *this;
125}
126
127/*!
128 Returns true if \a other is equal to this content request,
129 otherwise returns false.
130*/
131bool QPlaceContentRequest::operator== (const QPlaceContentRequest &other) const
132{
133 Q_D(const QPlaceContentRequest);
134 return *d == *other.d_func();
135}
136
137/*!
138 Returns true if \a other is not equal to this content request,
139 otherwise returns false.
140*/
141bool QPlaceContentRequest::operator!= (const QPlaceContentRequest &other) const
142{
143 Q_D(const QPlaceContentRequest);
144 return !(*d == *other.d_func());
145}
146
147/*!
148 Returns the type of content to be requested, for example reviews or images
149*/
150QPlaceContent::Type QPlaceContentRequest::contentType() const
151{
152 Q_D(const QPlaceContentRequest);
153 return d->contentType;
154}
155
156/*!
157 Sets the \a type of content to be requested.
158*/
159void QPlaceContentRequest::setContentType(QPlaceContent::Type type)
160{
161 Q_D(QPlaceContentRequest);
162 d->contentType = type;
163}
164
165/*!
166 Returns the identifier of the place content is to be fetched for.
167*/
168QString QPlaceContentRequest::placeId() const
169{
170 Q_D(const QPlaceContentRequest);
171 return d->placeId;
172}
173
174/*!
175 Sets the identifier of the place to fetch content for to \a identifier.
176*/
177void QPlaceContentRequest::setPlaceId(const QString &identifier)
178{
179 Q_D(QPlaceContentRequest);
180 d->placeId = identifier;
181}
182
183/*!
184 Returns backend specific additional content context associated with this place content request.
185*/
186QVariant QPlaceContentRequest::contentContext() const
187{
188 Q_D(const QPlaceContentRequest);
189 return d->contentContext;
190}
191
192/*!
193 Sets the content context to \a context.
194
195 \note This method is intended to be used by geo service plugins when returning place content
196 results.
197
198 The content context is used by backends to store additional content context related to the
199 content request. Other relevant fields should also be filled in. For example, if the content
200 request is for image content the content type should also be set with \l setContentType(). The
201 content context allows additional context to be kept which is not directly accessible via the
202 Qt Location API.
203
204 The content context can be of any type storable in a QVariant. The value of the content context
205 is not intended to be used directly by applications.
206*/
207void QPlaceContentRequest::setContentContext(const QVariant &context)
208{
209 Q_D(QPlaceContentRequest);
210 d->contentContext = context;
211}
212
213/*!
214 Returns the maximum number of content items to retrieve.
215
216 A negative value for limit means that it is undefined. It is left up to the backend
217 provider to choose an appropriate number of items to return.
218
219 The default limit is -1.
220*/
221int QPlaceContentRequest::limit() const
222{
223 Q_D(const QPlaceContentRequest);
224 return d->limit;
225}
226
227/*!
228 Set the maximum number of content items to retrieve to
229 \a limit.
230*/
231void QPlaceContentRequest::setLimit(int limit)
232{
233 Q_D(QPlaceContentRequest);
234 d->limit = limit;
235}
236
237/*!
238 Clears the content request.
239*/
240void QPlaceContentRequest::clear()
241{
242 Q_D(QPlaceContentRequest);
243 d->clear();
244}
245
246inline QPlaceContentRequestPrivate *QPlaceContentRequest::d_func()
247{
248 return static_cast<QPlaceContentRequestPrivate *>(d_ptr.data());
249}
250
251inline const QPlaceContentRequestPrivate *QPlaceContentRequest::d_func() const
252{
253 return static_cast<const QPlaceContentRequestPrivate *>(d_ptr.constData());
254}
255
256QT_END_NAMESPACE
257

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