diff options
author | Aaron McCarthy <aaron.mccarthy@jollamobile.com> | 2014-01-20 10:57:08 +1000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-22 01:47:34 +0100 |
commit | 0b36e73112b099090f5dcbbc21d172dcc7c97f30 (patch) | |
tree | 92779dfa9e00b8933e53dd0aafebf6947fbf5905 /tests/auto/geotestplugin/qplacemanagerengine_test.h | |
parent | bdcc97c444fadc566b4476f5f91b02bd8be21ec3 (diff) | |
download | qtlocation-0b36e73112b099090f5dcbbc21d172dcc7c97f30.tar.gz |
Remove offset attribute from place content requests.
This complements 1d0966c6924876655c52725e779a7aa24866ff60
Not all service providers support arbitrary offsets when requesting
place content. The offset attribute has been removed, instead service
providers can supply a previous and next content request query in the
form of a QPlaceContentRequest.
Change-Id: I6239b42c31bed5dcd6645d86d5a48d7e6a667f46
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
Diffstat (limited to 'tests/auto/geotestplugin/qplacemanagerengine_test.h')
-rw-r--r-- | tests/auto/geotestplugin/qplacemanagerengine_test.h | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/tests/auto/geotestplugin/qplacemanagerengine_test.h b/tests/auto/geotestplugin/qplacemanagerengine_test.h index 816493d0..edcf09b7 100644 --- a/tests/auto/geotestplugin/qplacemanagerengine_test.h +++ b/tests/auto/geotestplugin/qplacemanagerengine_test.h @@ -363,10 +363,10 @@ public: return reply; } - QPlaceContentReply *getPlaceContent(const QString &placeId, const QPlaceContentRequest &query) + QPlaceContentReply *getPlaceContent(const QPlaceContentRequest &query) Q_DECL_OVERRIDE { ContentReply *reply = new ContentReply(this); - if (placeId.isEmpty() || !m_places.contains(placeId)) { + if (query.placeId().isEmpty() || !m_places.contains(query.placeId())) { reply->setError(QPlaceReply::PlaceDoesNotExistError, tr("Place does not exist")); QMetaObject::invokeMethod(reply, "emitError", Qt::QueuedConnection); @@ -375,31 +375,33 @@ public: int totalCount = 0; switch (query.contentType()) { case QPlaceContent::ReviewType: - totalCount = m_placeReviews.value(placeId).count(); + totalCount = m_placeReviews.value(query.placeId()).count(); break; case QPlaceContent::ImageType: - totalCount = m_placeImages.value(placeId).count(); + totalCount = m_placeImages.value(query.placeId()).count(); break; case QPlaceContent::EditorialType: - totalCount = m_placeEditorials.value(placeId).count(); + totalCount = m_placeEditorials.value(query.placeId()).count(); default: //do nothing break; } - int offset = qMax(query.offset(), 0); + QVariantMap context = query.contentContext().toMap(); + + int offset = context.value(QStringLiteral("offset"), 0).toInt(); int max = (query.limit() == -1) ? totalCount : qMin(offset + query.limit(), totalCount); for (int i = offset; i < max; ++i) { switch (query.contentType()) { case QPlaceContent::ReviewType: - collection.insert(i, m_placeReviews.value(placeId).at(i)); + collection.insert(i, m_placeReviews.value(query.placeId()).at(i)); break; case QPlaceContent::ImageType: - collection.insert(i, m_placeImages.value(placeId).at(i)); + collection.insert(i, m_placeImages.value(query.placeId()).at(i)); break; case QPlaceContent::EditorialType: - collection.insert(i, m_placeEditorials.value(placeId).at(i)); + collection.insert(i, m_placeEditorials.value(query.placeId()).at(i)); default: //do nothing break; @@ -408,6 +410,21 @@ public: reply->setContent(collection); reply->setTotalCount(totalCount); + + if (max != totalCount) { + context.clear(); + context.insert(QStringLiteral("offset"), offset + query.limit()); + QPlaceContentRequest request = query; + request.setContentContext(context); + reply->setNextPageRequest(request); + } + if (offset > 0) { + context.clear(); + context.insert(QStringLiteral("offset"), qMin(0, offset - query.limit())); + QPlaceContentRequest request = query; + request.setContentContext(context); + reply->setPreviousPageRequest(request); + } } QMetaObject::invokeMethod(reply, "emitFinished", Qt::QueuedConnection); |