diff options
author | Paolo Angelelli <paolo.angelelli@qt.io> | 2019-03-01 12:05:56 +0100 |
---|---|---|
committer | Paolo Angelelli <paolo.angelelli@qt.io> | 2019-03-20 10:47:39 +0000 |
commit | 6cfd503ef805651bfe9a112bfdb937f0092577ce (patch) | |
tree | 2860e125a6caa8a23d530571a277cf45fc4afffa /src/location/declarativemaps/qdeclarativegeoserviceprovider.cpp | |
parent | d26ef296c7f829b9edd505527b8986c5dba314fa (diff) | |
download | qtlocation-6cfd503ef805651bfe9a112bfdb937f0092577ce.tar.gz |
Add QDeclarativeGeoServiceProviderRequirements navigation property
This was previously missing, making it impossible to require specific
navigation features.
[ChangeLog] Added QDeclarativeGeoServiceProviderRequirements
navigation property.
Change-Id: I75f8f3208aa387aea9d1652bb674fdb747877747
Fixes: QTBUG-72505
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/location/declarativemaps/qdeclarativegeoserviceprovider.cpp')
-rw-r--r-- | src/location/declarativemaps/qdeclarativegeoserviceprovider.cpp | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/src/location/declarativemaps/qdeclarativegeoserviceprovider.cpp b/src/location/declarativemaps/qdeclarativegeoserviceprovider.cpp index b594d2dc..aa1db493 100644 --- a/src/location/declarativemaps/qdeclarativegeoserviceprovider.cpp +++ b/src/location/declarativemaps/qdeclarativegeoserviceprovider.cpp @@ -192,7 +192,8 @@ void QDeclarativeGeoServiceProvider::componentComplete() || required_->mappingRequirements() != NoMappingFeatures || required_->routingRequirements() != NoRoutingFeatures || required_->geocodingRequirements() != NoGeocodingFeatures - || required_->placesRequirements() != NoPlacesFeatures) { + || required_->placesRequirements() != NoPlacesFeatures + || required_->navigationRequirements() != NoNavigationFeatures) { QStringList providers = QGeoServiceProvider::availableServiceProviders(); @@ -673,7 +674,8 @@ QDeclarativeGeoServiceProviderRequirements::QDeclarativeGeoServiceProviderRequir mapping_(QDeclarativeGeoServiceProvider::NoMappingFeatures), routing_(QDeclarativeGeoServiceProvider::NoRoutingFeatures), geocoding_(QDeclarativeGeoServiceProvider::NoGeocodingFeatures), - places_(QDeclarativeGeoServiceProvider::NoPlacesFeatures) + places_(QDeclarativeGeoServiceProvider::NoPlacesFeatures), + navigation_(QDeclarativeGeoServiceProvider::NoNavigationFeatures) { } @@ -769,6 +771,27 @@ void QDeclarativeGeoServiceProviderRequirements::setPlacesRequirements(const QDe /*! \internal */ +QDeclarativeGeoServiceProvider::NavigationFeatures QDeclarativeGeoServiceProviderRequirements::navigationRequirements() const +{ + return navigation_; +} + +/*! + \internal +*/ +void QDeclarativeGeoServiceProviderRequirements::setNavigationRequirements(const QDeclarativeGeoServiceProvider::NavigationFeatures &features) +{ + if (navigation_ == features) + return; + + navigation_ = features; + emit navigationRequirementsChanged(navigation_); + emit requirementsChanged(); +} + +/*! + \internal +*/ bool QDeclarativeGeoServiceProviderRequirements::matches(const QGeoServiceProvider *provider) const { QGeoServiceProvider::MappingFeatures mapping = @@ -817,13 +840,25 @@ bool QDeclarativeGeoServiceProviderRequirements::matches(const QGeoServiceProvid return false; } + QGeoServiceProvider::NavigationFeatures navigation = + static_cast<QGeoServiceProvider::NavigationFeatures>(int(navigation_)); + + if (navigation == QGeoServiceProvider::AnyNavigationFeatures) { + if (provider->navigationFeatures() == QGeoServiceProvider::NoNavigationFeatures) + return false; + } else { + if ((provider->navigationFeatures() & navigation) != navigation) + return false; + } + return true; } bool QDeclarativeGeoServiceProviderRequirements::operator == (const QDeclarativeGeoServiceProviderRequirements &rhs) const { return (mapping_ == rhs.mapping_ && routing_ == rhs.routing_ - && geocoding_ == rhs.geocoding_ && places_ == rhs.places_); + && geocoding_ == rhs.geocoding_ && places_ == rhs.places_ + && navigation_ == rhs.navigation_); } /******************************************************************************* |