56QVariant QDeclarativeSearchModelBase::searchArea()
const
58 QGeoShape s = m_request.searchArea();
59 if (s.type() == QGeoShape::RectangleType)
60 return QVariant::fromValue(QGeoRectangle(s));
61 else if (s.type() == QGeoShape::CircleType)
62 return QVariant::fromValue(QGeoCircle(s));
63 else if (s.type() == QGeoShape::PolygonType)
64 return QVariant::fromValue(QGeoPolygon(s));
66 return QVariant::fromValue(s);
72void QDeclarativeSearchModelBase::setSearchArea(
const QVariant &searchArea)
76 bool routeSearchArea =
false;
77 if (searchArea.userType() == qMetaTypeId<QGeoRectangle>()) {
78 s = searchArea.value<QGeoRectangle>();
79 }
else if (searchArea.userType() == qMetaTypeId<QGeoCircle>()) {
80 s = searchArea.value<QGeoCircle>();
81 }
else if (searchArea.userType() == qMetaTypeId<QGeoShape>()) {
82 s = searchArea.value<QGeoShape>();
83 }
else if (searchArea.typeId() == qMetaTypeId<QGeoRoute>()) {
84 route = searchArea.value<QGeoRoute>();
85 if (route == QGeoRoute())
87 routeSearchArea =
true;
90 QPlaceSearchRequestPrivate *rp = QPlaceSearchRequestPrivate::get(m_request);
93 m_request.setSearchArea(QGeoShape());
95 rp->routeSearchArea = QGeoRoute();
97 if (m_request.searchArea() == s
98 && (route == QGeoRoute() || rp->routeSearchArea == route)) {
103 rp->routeSearchArea = route;
105 m_request.setSearchArea(s);
106 emit searchAreaChanged();
170void QDeclarativeSearchModelBase::update()
179 setStatus(Error, QCoreApplication::translate(CONTEXT_NAME, PLUGIN_PROPERTY_NOT_SET));
183 QGeoServiceProvider *serviceProvider = m_plugin->sharedGeoServiceProvider();
184 if (!serviceProvider) {
186 setStatus(Error, QCoreApplication::translate(CONTEXT_NAME, PLUGIN_PROVIDER_ERROR)
187 .arg(m_plugin->name()));
191 QPlaceManager *placeManager = serviceProvider->placeManager();
194 setStatus(Error, QCoreApplication::translate(CONTEXT_NAME, PLUGIN_ERROR)
195 .arg(m_plugin->name()).arg(serviceProvider->errorString()));
199 m_reply = sendQuery(placeManager, m_request);
202 setStatus(Error, QCoreApplication::translate(CONTEXT_NAME, UNABLE_TO_MAKE_REQUEST));
206 m_reply->setParent(
this);
207 connect(m_reply, &QPlaceReply::finished,
208 this, &QDeclarativeSearchModelBase::queryFinished);
209 connect(m_reply, &QPlaceReply::contentUpdated,
210 this, &QDeclarativeSearchModelBase::onContentUpdated);
301void QDeclarativeSearchModelBase::initializePlugin(QDeclarativeGeoServiceProvider *plugin)
304 if (plugin != m_plugin) {
306 disconnect(m_plugin, &QDeclarativeGeoServiceProvider::nameChanged,
307 this, &QDeclarativeSearchModelBase::pluginNameChanged);
310 connect(plugin, &QDeclarativeGeoServiceProvider::nameChanged,
311 this, &QDeclarativeSearchModelBase::pluginNameChanged);
317 QGeoServiceProvider *serviceProvider = m_plugin->sharedGeoServiceProvider();
318 if (serviceProvider) {
319 QPlaceManager *placeManager = serviceProvider->placeManager();
321 if (placeManager->childCategoryIds().isEmpty()) {
322 QPlaceReply *reply = placeManager->initializeCategories();
323 connect(reply, &QPlaceReply::finished, reply, &QObject::deleteLater);
348void QDeclarativeSearchModelBase::setPreviousPageRequest(
const QPlaceSearchRequest &previous)
350 if (m_previousPageRequest == previous)
353 m_previousPageRequest = previous;
354 emit previousPagesAvailableChanged();
357void QDeclarativeSearchModelBase::setNextPageRequest(
const QPlaceSearchRequest &next)
359 if (m_nextPageRequest == next)
362 m_nextPageRequest = next;
363 emit nextPagesAvailableChanged();