diff options
Diffstat (limited to 'src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp')
-rw-r--r-- | src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp b/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp index 11ebcdd6..6f89b6ab 100644 --- a/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp +++ b/src/imports/location/declarativeplaces/qdeclarativesearchmodelbase.cpp @@ -48,10 +48,10 @@ #include <QtLocation/QPlaceManager> #include <QtLocation/QPlaceSearchRequest> #include <QtLocation/QPlaceSearchReply> +#include <QtLocation/QGeoCircle> QDeclarativeSearchModelBase::QDeclarativeSearchModelBase(QObject *parent) -: QAbstractListModel(parent), m_plugin(0), m_reply(0), m_searchArea(0), m_complete(false), - m_status(Null) +: QAbstractListModel(parent), m_plugin(0), m_reply(0), m_complete(false), m_status(Null) { } @@ -84,20 +84,35 @@ void QDeclarativeSearchModelBase::setPlugin(QDeclarativeGeoServiceProvider *plug /*! \internal */ -QDeclarativeGeoShape *QDeclarativeSearchModelBase::searchArea() const +QVariant QDeclarativeSearchModelBase::searchArea() const { - return m_searchArea; + QGeoShape s = m_request.searchArea(); + if (s.type() == QGeoShape::RectangleType) + return QVariant::fromValue(QGeoRectangle(s)); + else if (s.type() == QGeoShape::CircleType) + return QVariant::fromValue(QGeoCircle(s)); + else + return QVariant::fromValue(s); } /*! \internal */ -void QDeclarativeSearchModelBase::setSearchArea(QDeclarativeGeoShape *searchArea) +void QDeclarativeSearchModelBase::setSearchArea(const QVariant &searchArea) { - if (m_searchArea == searchArea) + QGeoShape s; + + if (searchArea.userType() == qMetaTypeId<QGeoRectangle>()) + s = searchArea.value<QGeoRectangle>(); + else if (searchArea.userType() == qMetaTypeId<QGeoCircle>()) + s = searchArea.value<QGeoCircle>(); + else if (searchArea.userType() == qMetaTypeId<QGeoShape>()) + s = searchArea.value<QGeoShape>(); + + if (m_request.searchArea() == s) return; - m_searchArea = searchArea; + m_request.setSearchArea(s); emit searchAreaChanged(); } @@ -195,7 +210,6 @@ void QDeclarativeSearchModelBase::update() return; } - updateSearchRequest(); m_reply = sendQuery(placeManager, m_request); if (!m_reply) { clearData(); @@ -256,17 +270,6 @@ void QDeclarativeSearchModelBase::clearData(bool suppressSignal) /*! \internal */ -void QDeclarativeSearchModelBase::updateSearchRequest() -{ - if (m_searchArea) - m_request.setSearchArea(m_searchArea->shape()); - else - m_request.setSearchArea(QGeoShape()); -} - -/*! - \internal -*/ void QDeclarativeSearchModelBase::classBegin() { } |