summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorabcd <amos.choy@nokia.com>2012-06-14 12:17:58 +1000
committerQt by Nokia <qt-info@nokia.com>2012-06-20 07:45:27 +0200
commit7d4a02df48b300fbb0cd19dab9d5a1fc719cf772 (patch)
tree91368dff35694f470439cfac1a7addddf6d46bc3 /src/plugins
parente3c6bc638f400193b2046bcad423e18c6b227af6 (diff)
downloadqtlocation-7d4a02df48b300fbb0cd19dab9d5a1fc719cf772.tar.gz
Refactor Search Results
The different types of search results should be spearated into different classes. Change-Id: I21f43e7979f9f0ae1dfb51e0b619a7c855a469bb Reviewed-by: Aaron McCarthy <aaron.mccarthy@nokia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/geoservices/nokia/placesv2/qplacerecommendationreplyimpl.cpp16
-rw-r--r--src/plugins/geoservices/nokia/placesv2/qplacesearchreplyimpl.cpp13
-rw-r--r--src/plugins/geoservices/nokia_places_jsondb/searchreply.cpp30
-rw-r--r--src/plugins/geoservices/nokia_places_jsondb/searchreply.h7
4 files changed, 43 insertions, 23 deletions
diff --git a/src/plugins/geoservices/nokia/placesv2/qplacerecommendationreplyimpl.cpp b/src/plugins/geoservices/nokia/placesv2/qplacerecommendationreplyimpl.cpp
index 9f32c217..76ddba43 100644
--- a/src/plugins/geoservices/nokia/placesv2/qplacerecommendationreplyimpl.cpp
+++ b/src/plugins/geoservices/nokia/placesv2/qplacerecommendationreplyimpl.cpp
@@ -56,6 +56,7 @@
#include <QtCore/QJsonObject>
#include <QtCore/QJsonArray>
#include <QtLocation/QPlaceIcon>
+#include <QtLocation/QPlaceResult>
QT_BEGIN_NAMESPACE
@@ -111,9 +112,7 @@ void QPlaceRecommendationReplyImpl::replyFinished()
for (int i = 0; i < items.count(); ++i) {
QJsonObject item = items.at(i).toObject();
- QPlaceSearchResult result;
-
- result.setType(QPlaceSearchResult::PlaceResult);
+ QPlaceResult result;
result.setDistance(item.value(QLatin1String("distance")).toDouble());
@@ -135,13 +134,18 @@ void QPlaceRecommendationReplyImpl::replyFinished()
ratings.setMaximum(5.0);
place.setRatings(ratings);
- place.setName(item.value(QLatin1String("title")).toString());
+ const QString title = item.value(QLatin1String("title")).toString();
+ place.setName(title);
+ result.setTitle(title);
+
place.setCategories(parseCategories(item.value(QLatin1String("categories")).toArray(),
m_engine));
- place.setIcon(m_engine->icon(item.value(QLatin1String("icon")).toString(),
- place.categories()));
+ QPlaceIcon icon = m_engine->icon(item.value(QLatin1String("icon")).toString(),
+ place.categories());
+ place.setIcon(icon);
+ result.setIcon(icon);
//QJsonArray having = item.value(QLatin1String("having")).toArray();
diff --git a/src/plugins/geoservices/nokia/placesv2/qplacesearchreplyimpl.cpp b/src/plugins/geoservices/nokia/placesv2/qplacesearchreplyimpl.cpp
index fd98243d..17244d73 100644
--- a/src/plugins/geoservices/nokia/placesv2/qplacesearchreplyimpl.cpp
+++ b/src/plugins/geoservices/nokia/placesv2/qplacesearchreplyimpl.cpp
@@ -56,6 +56,7 @@
#include <QtCore/QJsonObject>
#include <QtCore/QJsonArray>
#include <QtLocation/QPlaceIcon>
+#include <QtLocation/QPlaceResult>
#include <QtCore/QDebug>
@@ -113,9 +114,7 @@ void QPlaceSearchReplyImpl::replyFinished()
for (int i = 0; i < items.count(); ++i) {
QJsonObject item = items.at(i).toObject();
- QPlaceSearchResult result;
-
- result.setType(QPlaceSearchResult::PlaceResult);
+ QPlaceResult result;
if (item.contains(QLatin1String("distance")))
result.setDistance(item.value(QLatin1String("distance")).toDouble());
@@ -145,9 +144,13 @@ void QPlaceSearchReplyImpl::replyFinished()
ratings.setMaximum(5.0);
place.setRatings(ratings);
- place.setName(item.value(QLatin1String("title")).toString());
+ const QString title = item.value(QLatin1String("title")).toString();
+ place.setName(title);
+ result.setTitle(title);
- place.setIcon(m_engine->icon(item.value(QLatin1String("icon")).toString()));
+ QPlaceIcon icon = m_engine->icon(item.value(QLatin1String("icon")).toString());
+ place.setIcon(icon);
+ result.setIcon(icon);
place.setCategory(parseCategory(item.value(QLatin1String("category")).toObject(),
m_engine));
diff --git a/src/plugins/geoservices/nokia_places_jsondb/searchreply.cpp b/src/plugins/geoservices/nokia_places_jsondb/searchreply.cpp
index 664d369a..6c2ae59a 100644
--- a/src/plugins/geoservices/nokia_places_jsondb/searchreply.cpp
+++ b/src/plugins/geoservices/nokia_places_jsondb/searchreply.cpp
@@ -45,6 +45,7 @@
#include <QtCore/QDebug>
#include <QtLocation/QGeoBoundingCircle>
#include <QtJsonDb/QJsonDbReadRequest>
+#include <QtLocation/QPlaceResult>
SearchReply::SearchReply(QPlaceManagerEngineJsonDb *engine)
: QPlaceSearchReply(engine), m_engine(engine)
@@ -55,9 +56,14 @@ SearchReply::~SearchReply()
{
}
-void SearchReply::setResults(const QList<QPlaceSearchResult> &results)
+void SearchReply::setResults(const QList<QPlaceResult> &results)
{
- QPlaceSearchReply::setResults(results);
+ QList<QPlaceSearchResult> searchResults;
+ foreach (const QPlaceResult &placeResult, results) {
+ searchResults << placeResult;
+ }
+
+ QPlaceSearchReply::setResults(searchResults);
}
void SearchReply::setRequest(const QPlaceSearchRequest &request)
@@ -93,12 +99,17 @@ void SearchReply::start()
static bool lessThanDistance(const QPlaceSearchResult &p0, const QPlaceSearchResult &p1)
{
- return p0.distance() < p1.distance();
+ Q_ASSERT(p0.type() == QPlaceSearchResult::PlaceResult);
+ Q_ASSERT(p1.type() == QPlaceSearchResult::PlaceResult);
+ QPlaceResult r0 = p0;
+ QPlaceResult r1 = p1;
+
+ return r0.distance() < r1.distance();
}
static bool lessThanName(const QPlaceSearchResult &p0, const QPlaceSearchResult &p1)
{
- return p0.place().name() < p1.place().name();
+ return p0.title() < p1.title();
}
void SearchReply::searchFinished()
@@ -108,9 +119,8 @@ void SearchReply::searchFinished()
QList<QJsonObject> jsonResults = jsonDbRequest->takeResults();
QList<QPlace> places = JsonDb::convertJsonObjectsToPlaces(jsonResults, m_engine);
- QList<QPlaceSearchResult> results;
- QPlaceSearchResult result;
- result.setType(QPlaceSearchResult::PlaceResult);
+ QList<QPlaceResult> results;
+ QPlaceResult result;
const QGeoBoundingArea &area = request().searchArea();
const QGeoBoundingArea::AreaType &type = area.type();
@@ -149,7 +159,7 @@ void SearchReply::searchFinished()
//See if we have to fetch any category data
QStringList categoryUuids;
- foreach (const QPlaceSearchResult &result, results) {
+ foreach (const QPlaceResult &result, results) {
if (!result.place().categories().isEmpty()) {
foreach (const QPlaceCategory &category, result.place().categories())
categoryUuids.append(category.categoryId());
@@ -186,13 +196,13 @@ void SearchReply::getCategoriesForPlacesFinished()
QPlace place;
for (int i=0; i < resultList.count(); ++i) {
categories.clear();
- place = resultList.at(i).place();
+ place = static_cast<QPlaceResult>(resultList.at(i)).place();
foreach (const QPlaceCategory &cat, place.categories()) {
if (!cat.categoryId().isEmpty() && categoriesCollection.contains(cat.categoryId()))
categories.append(categoriesCollection.value(cat.categoryId()));
}
place.setCategories(categories);
- resultList[i].setPlace(place);
+ static_cast<QPlaceResult>(resultList[i]).setPlace(place);
}
setResults(resultList);
triggerDone();
diff --git a/src/plugins/geoservices/nokia_places_jsondb/searchreply.h b/src/plugins/geoservices/nokia_places_jsondb/searchreply.h
index 34e8e670..eb0d8115 100644
--- a/src/plugins/geoservices/nokia_places_jsondb/searchreply.h
+++ b/src/plugins/geoservices/nokia_places_jsondb/searchreply.h
@@ -44,10 +44,12 @@
#include "macro.h"
#include "qplacemanagerengine_jsondb.h"
-#include <qplacesearchreply.h>
+
#include <QtCore/QObject>
#include <QtJsonDb/QJsonDbRequest>
+#include <QtLocation/QPlaceResult>
+#include <QtLocation/QPlaceSearchReply>
QT_BEGIN_NAMESPACE
@@ -58,7 +60,8 @@ class SearchReply : public QPlaceSearchReply
public:
SearchReply(QPlaceManagerEngineJsonDb *engine);
virtual ~SearchReply();
- void setResults(const QList<QPlaceSearchResult> &results);
+ void setResults(const QList<QPlaceResult> &results);
+ using QPlaceSearchReply::setResults;
void setRequest(const QPlaceSearchRequest &request);
DECLARE_TRIGGER_DONE_FN