diff options
author | Michal Klocek <michal.klocek@theqtcompany.com> | 2016-03-01 16:24:40 +0100 |
---|---|---|
committer | Michal Klocek <michal.klocek@theqtcompany.com> | 2016-03-17 06:56:11 +0000 |
commit | de165175549642c7fefa901d41ee96ef0702879c (patch) | |
tree | c89145289e0a7147870bef06bfb8755440837d10 /src/location/maps/qgeomap.cpp | |
parent | 3d8da84e368f87386f14287b10fb6d08e3ce2b48 (diff) | |
download | qtlocation-de165175549642c7fefa901d41ee96ef0702879c.tar.gz |
Remove QGeoMapController from QGeoMap
Refactor code to use QGeoCameraData directly. All functionality related
to zoom, center boundary checks are now handled in QDeclaratvieGeoMap class.
This makes handling of center and zoomLevel properties much simpler and
less error prone, since camera data can not be modified along the
call stack. As result we avoid forwarding change signals back and forth:
* qgeodeclarativegeomap::setCenter -> qgeomapcontroller::setCenter
* qgeomapcontroller::setCenter -> qgeomap::setCameraData
* qgeomap::setCameraData -> qgeomacontroller::cameraDataChanged
* qgeomapcontroller::cameraDataChanged -> emit qdecalartivegeomap::centerChanged
Call always setCenter and setZoomLevel on qdeclarativegeomap
instance instead.
Introduce initialize() method to handle cases where map plugin is loaded
and scenegraph geometery is not yet set. This is required to correctly
handle new boundary checks to limit grey areas.
Change-Id: I6066cefd4a648dc76333dc241d1f261451a32e9c
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'src/location/maps/qgeomap.cpp')
-rw-r--r-- | src/location/maps/qgeomap.cpp | 42 |
1 files changed, 1 insertions, 41 deletions
diff --git a/src/location/maps/qgeomap.cpp b/src/location/maps/qgeomap.cpp index 4cc2bbfe..7817553c 100644 --- a/src/location/maps/qgeomap.cpp +++ b/src/location/maps/qgeomap.cpp @@ -37,8 +37,8 @@ #include "qgeomap_p.h" #include "qgeomap_p_p.h" #include "qgeocameracapabilities_p.h" -#include "qgeomapcontroller_p.h" #include "qgeomappingmanagerengine_p.h" +#include <QDebug> QT_BEGIN_NAMESPACE @@ -51,14 +51,6 @@ QGeoMap::~QGeoMap() { } -QGeoMapController *QGeoMap::mapController() -{ - Q_D(QGeoMap); - if (!d->m_controller) - d->m_controller = new QGeoMapController(this); - return d->m_controller; -} - void QGeoMap::resize(int width, int height) { Q_D(QGeoMap); @@ -119,11 +111,6 @@ const QGeoMapType QGeoMap::activeMapType() const return d->m_activeMapType; } -double QGeoMap::minimumZoom() const -{ - Q_D(const QGeoMap); - return d->m_minimumZoom; -} QGeoCameraCapabilities QGeoMap::cameraCapabilities() const { @@ -149,9 +136,7 @@ QGeoMapPrivate::QGeoMapPrivate(QGeoMappingManagerEngine *engine) m_width(0), m_height(0), m_aspectRatio(0.0), - m_minimumZoom(0.0), m_engine(engine), - m_controller(0), m_activeMapType(QGeoMapType()) { } @@ -169,31 +154,6 @@ void QGeoMapPrivate::setCameraData(const QGeoCameraData &cameraData) QGeoCameraData oldCameraData = m_cameraData; m_cameraData = cameraData; - if (!m_engine.isNull()) { - QGeoCameraCapabilities capabilities = m_engine->cameraCapabilities(); - if (m_cameraData.zoomLevel() < capabilities.minimumZoomLevel()) - m_cameraData.setZoomLevel(capabilities.minimumZoomLevel()); - - if (m_cameraData.zoomLevel() > capabilities.maximumZoomLevel()) - m_cameraData.setZoomLevel(capabilities.maximumZoomLevel()); - - if (!capabilities.supportsBearing()) - m_cameraData.setBearing(0.0); - - if (capabilities.supportsTilting()) { - if (m_cameraData.tilt() < capabilities.minimumTilt()) - m_cameraData.setTilt(capabilities.minimumTilt()); - - if (m_cameraData.tilt() > capabilities.maximumTilt()) - m_cameraData.setTilt(capabilities.maximumTilt()); - } else { - m_cameraData.setTilt(0.0); - } - - if (!capabilities.supportsRolling()) - m_cameraData.setRoll(0.0); - } - // Do not call this expensive function if the width is 0, since it will get called // anyway when it is resized to a width > 0. // this is mainly an optimization to the initialization of the geomap, which would otherwise |