55QVariant QDeclarativeSearchModelBase::searchArea()
const
57 QGeoShape s = m_request.searchArea();
58 if (s.type() == QGeoShape::RectangleType)
59 return QVariant::fromValue(QGeoRectangle(s));
60 else if (s.type() == QGeoShape::CircleType)
61 return QVariant::fromValue(QGeoCircle(s));
62 else if (s.type() == QGeoShape::PolygonType)
63 return QVariant::fromValue(QGeoPolygon(s));
65 return QVariant::fromValue(s);
71void QDeclarativeSearchModelBase::setSearchArea(
const QVariant &searchArea)
75 bool routeSearchArea =
false;
76 if (searchArea.userType() == qMetaTypeId<QGeoRectangle>()) {
77 s = searchArea.value<QGeoRectangle>();
78 }
else if (searchArea.userType() == qMetaTypeId<QGeoCircle>()) {
79 s = searchArea.value<QGeoCircle>();
80 }
else if (searchArea.userType() == qMetaTypeId<QGeoShape>()) {
81 s = searchArea.value<QGeoShape>();
82 }
else if (searchArea.typeId() == qMetaTypeId<QGeoRoute>()) {
83 route = searchArea.value<QGeoRoute>();
84 if (route == QGeoRoute())
86 routeSearchArea =
true;
89 QPlaceSearchRequestPrivate *rp = QPlaceSearchRequestPrivate::get(m_request);
92 m_request.setSearchArea(QGeoShape());
94 rp->routeSearchArea = QGeoRoute();
96 if (m_request.searchArea() == s
97 && (route == QGeoRoute() || rp->routeSearchArea == route)) {
102 rp->routeSearchArea = route;
104 m_request.setSearchArea(s);
105 emit searchAreaChanged();
169void QDeclarativeSearchModelBase::update()
178 setStatus(Error, QCoreApplication::translate(CONTEXT_NAME, PLUGIN_PROPERTY_NOT_SET));
182 QGeoServiceProvider *serviceProvider = m_plugin->sharedGeoServiceProvider();
183 if (!serviceProvider) {
185 setStatus(Error, QCoreApplication::translate(CONTEXT_NAME, PLUGIN_PROVIDER_ERROR)
186 .arg(m_plugin->name()));
190 QPlaceManager *placeManager = serviceProvider->placeManager();
193 setStatus(Error, QCoreApplication::translate(CONTEXT_NAME, PLUGIN_ERROR)
194 .arg(m_plugin->name()).arg(serviceProvider->errorString()));
198 m_reply = sendQuery(placeManager, m_request);
201 setStatus(Error, QCoreApplication::translate(CONTEXT_NAME, UNABLE_TO_MAKE_REQUEST));
205 m_reply->setParent(
this);
206 connect(m_reply, &QPlaceReply::finished,
207 this, &QDeclarativeSearchModelBase::queryFinished);
208 connect(m_reply, &QPlaceReply::contentUpdated,
209 this, &QDeclarativeSearchModelBase::onContentUpdated);
300void QDeclarativeSearchModelBase::initializePlugin(QDeclarativeGeoServiceProvider *plugin)
303 if (plugin != m_plugin) {
305 disconnect(m_plugin, &QDeclarativeGeoServiceProvider::nameChanged,
306 this, &QDeclarativeSearchModelBase::pluginNameChanged);
309 connect(plugin, &QDeclarativeGeoServiceProvider::nameChanged,
310 this, &QDeclarativeSearchModelBase::pluginNameChanged);
316 QGeoServiceProvider *serviceProvider = m_plugin->sharedGeoServiceProvider();
317 if (serviceProvider) {
318 QPlaceManager *placeManager = serviceProvider->placeManager();
320 if (placeManager->childCategoryIds().isEmpty()) {
321 QPlaceReply *reply = placeManager->initializeCategories();
322 connect(reply, &QPlaceReply::finished, reply, &QObject::deleteLater);
347void QDeclarativeSearchModelBase::setPreviousPageRequest(
const QPlaceSearchRequest &previous)
349 if (m_previousPageRequest == previous)
352 m_previousPageRequest = previous;
353 emit previousPagesAvailableChanged();
356void QDeclarativeSearchModelBase::setNextPageRequest(
const QPlaceSearchRequest &next)
358 if (m_nextPageRequest == next)
361 m_nextPageRequest = next;
362 emit nextPagesAvailableChanged();