summaryrefslogtreecommitdiff
path: root/src/location/maps/qgeocameracapabilities.cpp
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2017-02-10 19:05:56 +0100
committerPaolo Angelelli <paolo.angelelli@qt.io>2017-02-28 11:09:56 +0000
commitba2a82b7db86d96fc1f110b4bbc88408f47a5774 (patch)
tree66bb4e03d6cff164cac4161b4363e3444a78ad23 /src/location/maps/qgeocameracapabilities.cpp
parent11e6a62957433843816b41ad11fada7ca8eab85c (diff)
downloadqtlocation-ba2a82b7db86d96fc1f110b4bbc88408f47a5774.tar.gz
Make QGeoCameraCapabilities independent of the engine
This patch makes it possible to change QGeoCameraCapabilites at runtime, when the map type changes, to accommodate for those plugins that offer different maps having different capabilities. This is then used to properly push the min/max zoom levels for each map type in our OSM plugin. Autotests are included. Change-Id: I48532da77ffb3eaf2e752561395945c3a2c21985 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/location/maps/qgeocameracapabilities.cpp')
-rw-r--r--src/location/maps/qgeocameracapabilities.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/location/maps/qgeocameracapabilities.cpp b/src/location/maps/qgeocameracapabilities.cpp
index 568476fd..6426b058 100644
--- a/src/location/maps/qgeocameracapabilities.cpp
+++ b/src/location/maps/qgeocameracapabilities.cpp
@@ -57,6 +57,8 @@ public:
QGeoCameraCapabilitiesPrivate &operator = (const QGeoCameraCapabilitiesPrivate &other);
+ bool operator == (const QGeoCameraCapabilitiesPrivate &rhs) const;
+
bool supportsBearing_;
bool supportsRolling_;
bool supportsTilting_;
@@ -125,6 +127,21 @@ QGeoCameraCapabilitiesPrivate &QGeoCameraCapabilitiesPrivate::operator = (const
return *this;
}
+bool QGeoCameraCapabilitiesPrivate::operator == (const QGeoCameraCapabilitiesPrivate &rhs) const
+{
+ return ((supportsBearing_ == rhs.supportsBearing_)
+ && (supportsRolling_ == rhs.supportsRolling_)
+ && (supportsTilting_ == rhs.supportsTilting_)
+ && (valid_ == rhs.valid_)
+ && (minZoom_ == rhs.minZoom_)
+ && (maxZoom_ == rhs.maxZoom_)
+ && (minTilt_ == rhs.minTilt_)
+ && (maxTilt_ == rhs.maxTilt_)
+ && (tileSize_ == rhs.tileSize_)
+ && (minimumFieldOfView_ == rhs.minimumFieldOfView_)
+ && (maximumFieldOfView_ == rhs.maximumFieldOfView_));
+}
+
/*!
\class QGeoCameraCapabilities
\inmodule QtLocation
@@ -171,6 +188,16 @@ QGeoCameraCapabilities &QGeoCameraCapabilities::operator = (const QGeoCameraCapa
return *this;
}
+bool QGeoCameraCapabilities::operator == (const QGeoCameraCapabilities &rhs) const
+{
+ return (*(d.constData()) == *(rhs.d.constData()));
+}
+
+bool QGeoCameraCapabilities::operator != (const QGeoCameraCapabilities &other) const
+{
+ return !(operator==(other));
+}
+
void QGeoCameraCapabilities::setTileSize(int tileSize)
{
if (tileSize < 1)
@@ -388,7 +415,7 @@ double QGeoCameraCapabilities::minimumFieldOfView() const
*/
void QGeoCameraCapabilities::setMaximumFieldOfView(double maximumFieldOfView)
{
- d->maximumFieldOfView_ = maximumFieldOfView;
+ d->maximumFieldOfView_ = qBound(1.0, maximumFieldOfView, 179.0);
d->valid_ = true;
}