Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
requesthandler.h
Go to the documentation of this file.
1// Copyright (C) 2017 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
4#include <QDebug>
5#include <QGeoCircle>
6#include <QGeoServiceProvider>
7#include <QPlaceDetailsReply>
8#include <QPlaceIdReply>
9#include <QPlaceManager>
10#include <QPlaceSearchReply>
11#include <QPlaceResult>
12#include <QPlaceImage>
13#include <QtCore/QMetaObject>
14
15class RequestHandler : public QObject
16{
17public:
20 //The "provider name" is used to select a particular provider
21 QGeoServiceProvider *provider = new QGeoServiceProvider("provider name");
22 QPlaceManager *manager = provider->placeManager();
24 Q_UNUSED(provider);
26 }
27
29 {
31 //1) Make an appropriate request
33 searchRequest.setSearchTerm("ice cream");
34 searchRequest.setSearchArea(QGeoCircle(QGeoCoordinate(12.34, 56.78)));
35
36 //2) Use the manager to initiate a request and retrieve a reply object
38
39 //3) Connect the reply object to a slot which is invoked upon operation completion
43 }
44
45 void search()
46 {
48
49 //instantiate request and set parameters
51 searchRequest.setSearchTerm("ice cream");
52 searchRequest.setSearchArea(QGeoCircle(QGeoCoordinate(12.34, 56.78)));
53
54 //send off a search request
55 /*QPlaceSearchReply * */ searchReply = manager->search(searchRequest);
56
57 //connect a slot to handle the reply
59
61 }
62
64 {
67 searchRequest.setLimit(15); //specify how many results are to be retrieved.
69 }
70
81
82 void images()
83 {
85
88 request.setContentType(QPlaceContent::ImageType);
89 request.setPlaceId(place.placeId());
90 request.setLimit(5);
91 /*QPlaceContentReply * */ contentReply = manager->getPlaceContent(request);
94 }
95
96
98 {
101 request.setSearchTerm("piz");
102 request.setSearchArea(QGeoCircle(QGeoCoordinate(12.34, 56.78)));
103 /* QPlaceSearchSuggestion * */suggestionReply = manager->searchSuggestions(request);
104 connect(suggestionReply, &QPlaceSearchSuggestion::finished, this, &RequestHandler::handleSuggestionReply);
106 }
107
109 {
112 place.setName( "Fred's Ice Cream Parlor" );
113
116
118 address.setStreet("111 Nother Street");
120
122 location.setAddress(address);
124
125 /* QPlaceIdReply * */savePlaceReply = manager->savePlace(place);
128 }
129
138
146
148 {
150 QPlaceCategory fastFood;
151
153 category.setName("pizza");
154 /*QPlaceIdReply */ saveCategoryReply = manager->saveCategory(category);
156
157 //we could have saved a category as a child by supplying a parent identifier.
158 saveCategoryReply = manager->saveCategory(category, fastFood.categoryId());
160 }
161
170
172 QPlaceCategory diner;
173 QPlaceCategory restaurant;
174
177 searchRequest.setSearchTerm("Fast food"); //search term for what we are interested in
178
179 //set a search center
180 searchRequest.setSearchArea(QGeoCircle(QGeoCoordinate(2.3, 48.87)));
181
182 //set a distance hint as a relevancy hint.
183 //closer places have greater weighting in the ranking of results.
185
186 //use limit to adjust pagination.
187 //this limits the number of place results to 5 per page.
188 searchRequest.setLimit(5);
189
190 //provide some categories to narrow down search
191 QList<QPlaceCategory> categories;
192 categories << diner << restaurant;
193 searchRequest.setCategories(categories);
195 }
196
197 void content() {
201 request.setContentType(QPlaceContent::ImageType);
202 request.setPlaceId(place.placeId());
203 request.setLimit(5);
204
206 //..connect signals..//
207
210 }
211
213 {
215 QPlaceImage image;
216 image.setUrl(QUrl("www.example.com"));
217
219
220 QPlaceImage image2;
221 image2 = content;
222 qDebug() << image2.url(); //image2.url() == "www.example.com"
224 }
225
226 void icon() {
229 QUrl iconSourceUrl = place.icon().url(QSize(32,32));
230
231 //A default icon may also be requested like so
232 iconSourceUrl = place.icon().url();
234 }
235
238 QPlaceIdReply *saveReply;
240 //result retrieved from a different manager)
242 saveReply = manager->savePlace(place);
244 saveReply->abort();//needed to avoid warnings
245 }
246
247 void ratings() {
249 qDebug() << QString("This place rated ") + place.ratings().average()
250 + "out of " + place.ratings().maximum() + "stars";
252 }
253
254 void matchPlaces() {
255 QList<QPlaceSearchResult> results;
258 request.setResults(results);
259 QVariantMap parameters;
260 parameters.insert(QPlaceMatchRequest::AlternativeId, "x_id_here");
261 request.setParameters(parameters);
264 }
265
266public slots:
267 // ![Simple search handler]
268 //4) Have the slot appropriately process the results of the operation
271 for (const QPlaceSearchResult &result : searchReply->results()) {
273 qDebug() << "Title:" << result.title();
274 }
275 }
276
277 //5) Discard the rely object when done.
279 searchReply = nullptr;
280 }
281 // ![Simple search handler]
282
286 for (const QPlaceSearchResult &result : searchReply->results()) {
288 QPlaceResult placeResult = result;
289 qDebug() << "Name: " << placeResult.place().name();
290 qDebug() << "Coordinate " << placeResult.place().location().coordinate().toString();
291 qDebug() << "Street: " << placeResult.place().location().address().street();
292 qDebug() << "Distance: " << placeResult.distance();
293 }
294 }
295 }
296 searchReply->deleteLater(); //discard reply
297 searchReply = nullptr;
298 }
300
306
307 detailsReply->deleteLater(); //discard reply
308 detailsReply = nullptr;
309 }
311
315 const auto content = contentReply->content();
316 for (auto iter = content.cbegin(), end = content.cend(); iter != end; ++iter) {
317 qDebug() << "Index: " << iter.key();
318 QPlaceImage image = iter.value();
319 qDebug() << image.url();
320 qDebug() << image.mimeType();
321 }
322
323 //alternatively if indexes are irrelevant
324 for (const QPlaceImage &image : contentReply->content()) {
325 qDebug() << image.url();
326 qDebug() << image.mimeType();
327 }
328
329 //we can assign content to the place that it belongs to.
330 //the place object serves as a container where we can retrieve
331 //content that has already been fetched
334 }
335
337 contentReply = nullptr;
338 }
340
345 qDebug() << suggestion;
346 }
347
348 suggestionReply->deleteLater(); //discard reply
349 suggestionReply = nullptr;
350 }
351
353
357 qDebug() << savePlaceReply->id();
358
359 savePlaceReply->deleteLater(); //discard reply
360 savePlaceReply = nullptr;
361 }
363
367 qDebug() << "Removal of place identified by"
368 << removePlaceReply->id() << "was successful";
369
370 removePlaceReply->deleteLater(); //discard reply
371 removePlaceReply = nullptr;
372 }
374
378 qDebug() << "Categories initialized";
379 else
380 qDebug() << "Failed to initialize categories";
381
383 initCatReply = nullptr;
384 }
386
387 void categories() {
388 QPlaceCategory pizza;
390 const QList<QPlaceCategory> topLevelCategories = manager->childCategories();
391 for (const QPlaceCategory &category : topLevelCategories)
392 qDebug() << category.name();
394
396 QList<QPlaceCategory> childCategories = manager->childCategories(pizza.categoryId());
398 }
399
403 qDebug() << "Saved category id =" << saveCategoryReply->id();
404 }
405
407 saveCategoryReply = nullptr;
408 }
410
414 qDebug() << "Removal of category identified by"
415 << removeCategoryReply->id() << "was successful";
416
417 removeCategoryReply->deleteLater(); //discard reply
418 removeCategoryReply = nullptr;
419 }
421
430
435 qDebug() << number.label() << ":" << number.value();
436 }
438 }
439
440
447
451 const auto places = matchReply->places();
452 for (const QPlace &place : places) {
453 if (place != QPlace())
454 qDebug() << "Place is a favorite with name" << place.name();
455 else
456 qDebug() << "Place is not a favorite";
457 }
458 }
459
461 matchReply = nullptr;
462 }
464
469 QPlaceResult placeResult = result;
470 qDebug() << placeResult.place().name();
471 qDebug() << placeResult.place().location().coordinate();
472 qDebug() << placeResult.distance();
473 }
475 }
476
489};
490
491class ManagerEngine : public QObject
492{
493};
494
514
524
\inmodule QtPositioning
Definition qgeoaddress.h:18
void setStreet(const QString &street)
Sets the street name to street.
\inmodule QtPositioning
Definition qgeocircle.h:15
\inmodule QtPositioning
\inmodule QtPositioning
void setCoordinate(const QGeoCoordinate &position)
Sets the coordinate of the location.
\inmodule QtLocation
QPlaceManager * placeManager() const
Returns the QPlaceManager made available by the service provider.
iterator insert(const Key &key, const T &value)
Definition qmap.h:688
\inmodule QtCore
Definition qobject.h:103
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
Definition qobject.cpp:2960
void deleteLater()
\threadsafe
Definition qobject.cpp:2435
static const QString OpeningHours
\qmltype ExtendedAttributes \instantiates QQmlPropertyMap \inqmlmodule QtLocation
QString text
\qmlproperty string placeAttribute::text
\inmodule QtLocation
The QPlaceContactDetail class represents a contact detail such as a phone number or website url.
static const QString Phone
\qmlvaluetype contactDetail \inqmlmodule QtLocation
\inmodule QtLocation
int totalCount() const
Returns the total number of content objects for a place.
QPlaceContent::Collection content() const
Returns the collection of content retrieved.
QPlaceContentRequest request() const
Returns the content request that was used to generate this reply.
\inmodule QtLocation
QPlaceContent::Type contentType() const
Returns the type of content to be requested, for example reviews or images.
\inmodule QtLocation
\inmodule QtLocation
QPlace place() const
Returns the place that was fetched.
Q_INVOKABLE QUrl url(const QSize &size=QSize()) const
Returns an icon URL according to the given size.
\inmodule QtLocation
QString id() const
Returns the relevant identifier for the operation.
\inmodule QtLocation
QPlaceMatchReply * matchingPlaces(const QPlaceMatchRequest &request) const
Returns a reply which contains a list of places which correspond/match those specified in the request...
QPlaceIdReply * savePlace(const QPlace &place)
Saves a specified place.
QPlaceSearchSuggestionReply * searchSuggestions(const QPlaceSearchRequest &request) const
Requests a set of search term suggestions according to the parameters specified in request.
QPlaceSearchReply * search(const QPlaceSearchRequest &query) const
Searches for places according to the parameters specified in request.
QPlaceDetailsReply * getPlaceDetails(const QString &placeId) const
Retrieves a details of place corresponding to the given placeId.
QPlaceIdReply * removeCategory(const QString &categoryId)
Removes the category corresponding to categoryId from the manager.
QPlace compatiblePlace(const QPlace &place) const
Returns a pruned or modified version of the original place which is suitable to be saved into this ma...
QPlaceContentReply * getPlaceContent(const QPlaceContentRequest &request) const
Retrieves content for a place according to the parameters specified in request.
QPlaceIdReply * saveCategory(const QPlaceCategory &category, const QString &parentId=QString())
Saves a category that is a child of the category specified by parentId.
QPlaceReply * initializeCategories()
Initializes the categories of the manager.
QList< QPlaceCategory > childCategories(const QString &parentId=QString()) const
Returns a list of categories that are children of the category corresponding to parentId.
QPlaceIdReply * removePlace(const QString &placeId)
Removes the place corresponding to placeId from the manager.
\inmodule QtLocation
QList< QPlace > places() const
Returns a list of matching places;.
\inmodule QtLocation
static const QString AlternativeId
\variable QPlaceMatchRequest::AlternativeId The key to specify that matching is to be accomplished vi...
QML_STRUCTURED_VALUEqreal average
\qmlproperty real ratings::average
qreal maximum
\qmlproperty real ratings::maximum
\inmodule QtLocation
Definition qplacereply.h:15
QPlaceReply::Error error() const
Returns the error code.
void finished()
This signal is emitted when this reply has finished processing.
virtual void abort()
Cancels the operation immediately.
Error
Describes an error which occurred during an operation.
Definition qplacereply.h:18
QString errorString() const
Returns the error string of the reply.
void setError(QPlaceReply::Error error, const QString &errorString)
Sets the error and errorString of the reply.
void setFinished(bool finished)
Sets the status of whether the reply is finished or not.
\inmodule QtLocation
\inmodule QtLocation
QPlaceSearchRequest request() const
Returns the search request that was used to generate this reply.
QList< QPlaceSearchResult > results() const
Returns a list of search results;.
\inmodule QtLocation
void setSearchTerm(const QString &term)
Sets the search term.
void setLimit(int limit)
Set the maximum number of search results to retrieve to limit.
\inmodule QtLocation
QStringList suggestions() const
Returns the search term suggestions.
\inmodule QtLocation
Definition qplace.h:25
QList< QPlaceContactDetail > contactDetails(const QString &contactType) const
Returns a list of contact details of the specified contactType.
Definition qplace.cpp:482
void setTotalContentCount(QPlaceContent::Type type, int total)
Sets the totalCount of content objects of the given type.
Definition qplace.cpp:280
QStringList extendedAttributeTypes() const
Returns the types of extended attributes that this place has.
Definition qplace.cpp:426
void insertContent(QPlaceContent::Type type, const QPlaceContent::Collection &content)
Adds a collection of content of the given type to the place.
Definition qplace.cpp:258
QPlaceIcon icon() const
Returns the icon of the place.
Definition qplace.cpp:339
void setLocation(const QGeoLocation &location)
Sets the location of the place.
Definition qplace.cpp:197
QStringList contactTypes() const
Returns the type of contact details this place has.
Definition qplace.cpp:472
QPlaceAttribute extendedAttribute(const QString &attributeType) const
Returns the exteded attribute corresponding to the specified attributeType.
Definition qplace.cpp:436
void setName(const QString &name)
Sets the name of the place.
Definition qplace.cpp:296
QPlaceRatings ratings() const
Returns an aggregated rating of the place.
Definition qplace.cpp:205
QString placeId() const
Returns the identifier of the place.
Definition qplace.cpp:306
bool detailsFetched() const
Returns true if the details of this place have been fetched, otherwise returns false.
Definition qplace.cpp:410
QString name() const
Returns the name of the place.
Definition qplace.cpp:288
\inmodule QtCore
Definition qsize.h:25
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
Definition qurl.h:94
void convertSearchResult()
[Match places handler]
void handleRemovePlaceReply()
[Save place handler]
void handleSearchReply()
[Search for places handler cpp]
QPlaceSearchSuggestionReply * suggestionReply
QPlaceMatchReply * matchReply
QPlaceIdReply * removePlaceReply
QPlaceContentReply * contentReply
void handleImagesReply()
[Details handler cpp]
QPlaceManager * manager
QPlaceSearchReply * searchReply
void processSearchReply()
void handleSuggestionReply()
[Image handler]
void handleSaveCategoryReply()
[Save category handler]
void handleInitCatReply()
[Remove place handler]
void matchHandler()
[Match places handler]
void phoneNumbers()
[Content handler]
void contentHandler()
[Remove category handler]
void initializeManager()
QPlaceDetailsReply * detailsReply
void saveBetweenManagers()
void handleSavePlaceReply()
[Suggestion handler]
void handleRemoveCategoryReply()
[Save category handler]
void handleDetailsReply()
[Search for places handler cpp]
QPlaceIdReply * saveCategoryReply
QPlaceIdReply * savePlaceReply
void initializeCategories()
QPlaceIdReply * removeCategoryReply
void categories()
[Initialize categories reply]
QPlaceReply * initCatReply
[Implement reply pt1]
ManagerEngine * m_engine
void triggerDone(QPlaceReply::Error error=QPlaceReply::NoError, const QString &errorString=QString())
[Implement reply pt1]
void setRequest(const QPlaceSearchRequest &request)
SearchReply(ManagerEngine *engine)
void setResults(const QList< QPlaceSearchResult > &results)
[Implement reply pt2]
ManagerEngine * m_engine
void triggerDone(QPlaceReply::Error error=QPlaceReply::NoError, const QString &errorString=QString())
[Trigger done]
const QLoggingCategory & category()
[1]
@ QueuedConnection
Definition image.cpp:4
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter * iter
DBusConnection const char DBusError * error
#define qDebug
[1]
Definition qlogging.h:164
#define Q_ARG(Type, data)
Definition qobjectdefs.h:63
GLint location
GLuint GLuint end
GLsizei GLenum * categories
GLuint GLuint64EXT address
GLuint64EXT * result
[6]
#define slots
#define Q_UNUSED(x)
QNetworkRequest request(url)
QJSEngine engine
[0]
static bool invokeMethod(QObject *obj, const char *member, Qt::ConnectionType, QGenericReturnArgument ret, QGenericArgument val0=QGenericArgument(nullptr), QGenericArgument val1=QGenericArgument(), QGenericArgument val2=QGenericArgument(), QGenericArgument val3=QGenericArgument(), QGenericArgument val4=QGenericArgument(), QGenericArgument val5=QGenericArgument(), QGenericArgument val6=QGenericArgument(), QGenericArgument val7=QGenericArgument(), QGenericArgument val8=QGenericArgument(), QGenericArgument val9=QGenericArgument())
\threadsafe This is an overloaded member function, provided for convenience. It differs from the abov...