diff options
-rw-r--r-- | src/location/maps/qgeocameratiles.cpp | 2 | ||||
-rw-r--r-- | src/location/maps/qgeomap.cpp | 14 | ||||
-rw-r--r-- | src/location/maps/qgeomap_p.h | 2 | ||||
-rw-r--r-- | src/location/maps/qgeomap_p_p.h | 1 | ||||
-rw-r--r-- | src/location/maps/qgeomapscene.cpp | 14 | ||||
-rw-r--r-- | src/location/maps/qgeomapscene_p.h | 1 | ||||
-rw-r--r-- | src/location/maps/qgeotiledmap.cpp | 58 | ||||
-rw-r--r-- | src/location/maps/qgeotiledmap_p.h | 7 | ||||
-rw-r--r-- | src/location/maps/qgeotiledmap_p_p.h | 6 | ||||
-rw-r--r-- | src/location/maps/qgeotiledmappingmanagerengine.cpp | 21 | ||||
-rw-r--r-- | src/location/maps/qgeotiledmappingmanagerengine_p.h | 4 | ||||
-rw-r--r-- | src/location/maps/qgeotiledmappingmanagerengine_p_p.h | 1 | ||||
-rw-r--r-- | src/plugins/geoservices/nokia/qgeotiledmap_nokia.cpp | 9 | ||||
-rw-r--r-- | src/plugins/geoservices/nokia/qgeotiledmap_nokia.h | 1 | ||||
-rw-r--r-- | src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.cpp | 4 |
15 files changed, 72 insertions, 73 deletions
diff --git a/src/location/maps/qgeocameratiles.cpp b/src/location/maps/qgeocameratiles.cpp index 4a97220d..58aa1f30 100644 --- a/src/location/maps/qgeocameratiles.cpp +++ b/src/location/maps/qgeocameratiles.cpp @@ -216,7 +216,7 @@ void QGeoCameraTiles::setMapType(const QGeoMapType &mapType) d_ptr->m_mapType = mapType; } -void QGeoCameraTiles::setMapVersion(const int mapVersion) +void QGeoCameraTiles::setMapVersion(int mapVersion) { if (d_ptr->m_mapVersion == mapVersion) return; diff --git a/src/location/maps/qgeomap.cpp b/src/location/maps/qgeomap.cpp index f6f8d5e2..edc64839 100644 --- a/src/location/maps/qgeomap.cpp +++ b/src/location/maps/qgeomap.cpp @@ -118,12 +118,6 @@ const QGeoMapType QGeoMap::activeMapType() const return d->m_activeMapType; } -QString QGeoMap::pluginString() -{ - Q_D(const QGeoMap); - return d->m_pluginString; -} - QGeoCameraCapabilities QGeoMap::cameraCapabilities() { Q_D(const QGeoMap); @@ -133,11 +127,6 @@ QGeoCameraCapabilities QGeoMap::cameraCapabilities() return QGeoCameraCapabilities(); } -int QGeoMap::mapVersion() -{ - return -1; -} - void QGeoMap::prefetchData() { @@ -152,9 +141,6 @@ QGeoMapPrivate::QGeoMapPrivate(QGeoMappingManagerEngine *engine) m_controller(0), m_activeMapType(QGeoMapType()) { - if (!m_engine.isNull()) { - m_pluginString = m_engine->managerName() + QLatin1Char('_') + QString::number(m_engine->managerVersion()); - } } QGeoMapPrivate::~QGeoMapPrivate() diff --git a/src/location/maps/qgeomap_p.h b/src/location/maps/qgeomap_p.h index 9e4d5a0d..58a020dc 100644 --- a/src/location/maps/qgeomap_p.h +++ b/src/location/maps/qgeomap_p.h @@ -83,10 +83,8 @@ public: virtual QGeoCoordinate itemPositionToCoordinate(const QDoubleVector2D &pos, bool clipToViewport = true) const = 0; virtual QDoubleVector2D coordinateToItemPosition(const QGeoCoordinate &coordinate, bool clipToViewport = true) const = 0; - virtual int mapVersion(); virtual void prefetchData(); - QString pluginString(); QGeoCameraCapabilities cameraCapabilities(); protected: diff --git a/src/location/maps/qgeomap_p_p.h b/src/location/maps/qgeomap_p_p.h index e7a23060..3b996ecc 100644 --- a/src/location/maps/qgeomap_p_p.h +++ b/src/location/maps/qgeomap_p_p.h @@ -78,7 +78,6 @@ protected: int m_height; double m_aspectRatio; QPointer<QGeoMappingManagerEngine> m_engine; - QString m_pluginString; QGeoMapController *m_controller; QGeoCameraData m_cameraData; QGeoMapType m_activeMapType; diff --git a/src/location/maps/qgeomapscene.cpp b/src/location/maps/qgeomapscene.cpp index a448937b..4e6bb4a6 100644 --- a/src/location/maps/qgeomapscene.cpp +++ b/src/location/maps/qgeomapscene.cpp @@ -156,6 +156,12 @@ void QGeoMapScene::setVisibleTiles(const QSet<QGeoTileSpec> &tiles) d->setVisibleTiles(tiles); } +const QSet<QGeoTileSpec> &QGeoMapScene::visibleTiles() const +{ + Q_D(const QGeoMapScene); + return d->m_visibleTiles; +} + void QGeoMapScene::addTile(const QGeoTileSpec &spec, QSharedPointer<QGeoTileTexture> texture) { Q_D(QGeoMapScene); @@ -325,14 +331,8 @@ void QGeoMapScenePrivate::addTile(const QGeoTileSpec &spec, QSharedPointer<QGeoT m_textures.insert(spec, texture); } -// return true if new tiles introduced in [tiles] void QGeoMapScenePrivate::setVisibleTiles(const QSet<QGeoTileSpec> &tiles) { - Q_Q(QGeoMapScene); - - // detect if new tiles introduced - bool newTilesIntroduced = !m_visibleTiles.contains(tiles); - // work out the tile bounds for the new scene setTileBounds(tiles); @@ -344,8 +344,6 @@ void QGeoMapScenePrivate::setVisibleTiles(const QSet<QGeoTileSpec> &tiles) removeTiles(toRemove); m_visibleTiles = tiles; - if (newTilesIntroduced) - emit q->newTilesVisible(m_visibleTiles); } void QGeoMapScenePrivate::removeTiles(const QSet<QGeoTileSpec> &oldTiles) diff --git a/src/location/maps/qgeomapscene_p.h b/src/location/maps/qgeomapscene_p.h index a4a9e4e4..34d4a11f 100644 --- a/src/location/maps/qgeomapscene_p.h +++ b/src/location/maps/qgeomapscene_p.h @@ -73,6 +73,7 @@ public: void setCameraData(const QGeoCameraData &cameraData); void setVisibleTiles(const QSet<QGeoTileSpec> &tiles); + const QSet<QGeoTileSpec> &visibleTiles() const; void setUseVerticalLock(bool lock); diff --git a/src/location/maps/qgeotiledmap.cpp b/src/location/maps/qgeotiledmap.cpp index 07d117cf..06f5a5e8 100644 --- a/src/location/maps/qgeotiledmap.cpp +++ b/src/location/maps/qgeotiledmap.cpp @@ -56,15 +56,8 @@ QGeoTiledMap::QGeoTiledMap(QGeoTiledMappingManagerEngine *engine, QObject *paren d->m_tileRequests = new QGeoTileRequestManager(this, engine); - QObject::connect(d->m_mapScene, - SIGNAL(newTilesVisible(QSet<QGeoTileSpec>)), - this, - SLOT(evaluateCopyrights(QSet<QGeoTileSpec>))); - QObject::connect(engine, - SIGNAL(mapVersionChanged()), - this, - SLOT(updateMapVersion())); - QMetaObject::invokeMethod(this, "updateMapVersion", Qt::QueuedConnection); + QObject::connect(engine,&QGeoTiledMappingManagerEngine::tileVersionChanged, + this,&QGeoTiledMap::handleTileVersionChanged); } QGeoTiledMap::~QGeoTiledMap() @@ -110,10 +103,14 @@ void QGeoTiledMap::prefetchData() d->prefetchTiles(); } -void QGeoTiledMap::updateMapVersion() +void QGeoTiledMap::handleTileVersionChanged() { Q_D(QGeoTiledMap); - d->changeMapVersion(mapVersion()); + if (!d->m_engine.isNull()) { + QGeoTiledMappingManagerEngine* engine = qobject_cast<QGeoTiledMappingManagerEngine*>(d->m_engine); + Q_ASSERT(engine); + d->changeTileVersion(engine->tileVersion()); + } } void QGeoTiledMap::evaluateCopyrights(const QSet<QGeoTileSpec> &visibleTiles) @@ -160,8 +157,7 @@ QGeoTiledMapPrivate::QGeoTiledMapPrivate(QGeoTiledMappingManagerEngine *engine) { m_cameraTiles->setMaximumZoomLevel(static_cast<int>(std::ceil(engine->cameraCapabilities().maximumZoomLevel()))); m_cameraTiles->setTileSize(engine->tileSize().width()); - m_cameraTiles->setPluginString(m_pluginString); - + m_cameraTiles->setPluginString(engine->managerName() + QLatin1Char('_') + QString::number(engine->managerVersion())); m_mapScene->setTileSize(engine->tileSize().width()); } @@ -209,22 +205,31 @@ void QGeoTiledMapPrivate::changeCameraData(const QGeoCameraData &oldCameraData) } m_cameraTiles->setCameraData(cam); - m_mapScene->setCameraData(cam); - m_mapScene->setVisibleTiles(m_cameraTiles->visibleTiles()); + updateScene(); +} - if (m_tileRequests) { - // don't request tiles that are already built and textured - QList<QSharedPointer<QGeoTileTexture> > cachedTiles = - m_tileRequests->requestTiles(m_cameraTiles->visibleTiles() - m_mapScene->texturedTiles()); +void QGeoTiledMapPrivate::updateScene() +{ + Q_Q(QGeoTiledMap); + // detect if new tiles introduced + const QSet<QGeoTileSpec>& tiles = m_cameraTiles->visibleTiles(); + bool newTilesIntroduced = !m_mapScene->visibleTiles().contains(tiles); + m_mapScene->setVisibleTiles(tiles); - foreach (const QSharedPointer<QGeoTileTexture> &tex, cachedTiles) { - m_mapScene->addTile(tex->spec, tex); - } + if (newTilesIntroduced) + q->evaluateCopyrights(tiles); - if (!cachedTiles.isEmpty()) - q->update(); + // don't request tiles that are already built and textured + QList<QSharedPointer<QGeoTileTexture> > cachedTiles = + m_tileRequests->requestTiles(m_cameraTiles->visibleTiles() - m_mapScene->texturedTiles()); + + foreach (const QSharedPointer<QGeoTileTexture> &tex, cachedTiles) { + m_mapScene->addTile(tex->spec, tex); } + + if (!cachedTiles.isEmpty()) + q->update(); } void QGeoTiledMapPrivate::changeActiveMapType(const QGeoMapType mapType) @@ -232,9 +237,10 @@ void QGeoTiledMapPrivate::changeActiveMapType(const QGeoMapType mapType) m_cameraTiles->setMapType(mapType); } -void QGeoTiledMapPrivate::changeMapVersion(int mapVersion) +void QGeoTiledMapPrivate::changeTileVersion(int version) { - m_cameraTiles->setMapVersion(mapVersion); + m_cameraTiles->setMapVersion(version); + updateScene(); } void QGeoTiledMapPrivate::mapResized(int width, int height) diff --git a/src/location/maps/qgeotiledmap_p.h b/src/location/maps/qgeotiledmap_p.h index 2dbf1754..2afbc5c9 100644 --- a/src/location/maps/qgeotiledmap_p.h +++ b/src/location/maps/qgeotiledmap_p.h @@ -87,13 +87,12 @@ public: QDoubleVector2D coordinateToItemPosition(const QGeoCoordinate &coordinate, bool clipToViewport = true) const Q_DECL_OVERRIDE; void prefetchData() Q_DECL_OVERRIDE; - protected: QSGNode *updateSceneGraph(QSGNode *, QQuickWindow *window) Q_DECL_OVERRIDE; - -protected Q_SLOTS: virtual void evaluateCopyrights(const QSet<QGeoTileSpec> &visibleTiles); - void updateMapVersion(); + +private Q_SLOTS: + void handleTileVersionChanged(); private: Q_DISABLE_COPY(QGeoTiledMap) diff --git a/src/location/maps/qgeotiledmap_p_p.h b/src/location/maps/qgeotiledmap_p_p.h index bd4b4c05..95a61a2b 100644 --- a/src/location/maps/qgeotiledmap_p_p.h +++ b/src/location/maps/qgeotiledmap_p_p.h @@ -74,8 +74,6 @@ public: ~QGeoTiledMapPrivate(); QSGNode *updateSceneGraph(QSGNode *node, QQuickWindow *window); - - void changeMapVersion(int mapVersion); void resized(int width, int height); QGeoCoordinate itemPositionToCoordinate(const QDoubleVector2D &pos) const; @@ -88,6 +86,10 @@ protected: void mapResized(int width, int height) Q_DECL_OVERRIDE; void changeCameraData(const QGeoCameraData &oldCameraData) Q_DECL_OVERRIDE; void changeActiveMapType(const QGeoMapType mapType) Q_DECL_OVERRIDE; + void changeTileVersion(int version); + +private: + void updateScene(); private: QGeoTileCache *m_cache; diff --git a/src/location/maps/qgeotiledmappingmanagerengine.cpp b/src/location/maps/qgeotiledmappingmanagerengine.cpp index 6ce3faca..b9322c13 100644 --- a/src/location/maps/qgeotiledmappingmanagerengine.cpp +++ b/src/location/maps/qgeotiledmappingmanagerengine.cpp @@ -201,7 +201,6 @@ void QGeoTiledMappingManagerEngine::engineTileFinished(const QGeoTileSpec &spec, } d->tileHash_.remove(spec); - tileCache()->insert(spec, bytes, format, d->cacheHint_); map = maps.constBegin(); @@ -243,12 +242,27 @@ void QGeoTiledMappingManagerEngine::setTileSize(const QSize &tileSize) d->tileSize_ = tileSize; } +void QGeoTiledMappingManagerEngine::setTileVersion(int version) +{ + Q_D(QGeoTiledMappingManagerEngine); + if (d->m_tileVersion != version) { + d->m_tileVersion = version; + emit tileVersionChanged(); + } +} + QSize QGeoTiledMappingManagerEngine::tileSize() const { Q_D(const QGeoTiledMappingManagerEngine); return d->tileSize_; } +int QGeoTiledMappingManagerEngine::tileVersion() const +{ + Q_D(const QGeoTiledMappingManagerEngine); + return d->m_tileVersion; +} + QGeoTiledMappingManagerEngine::CacheAreas QGeoTiledMappingManagerEngine::cacheHint() const { Q_D(const QGeoTiledMappingManagerEngine); @@ -292,7 +306,10 @@ QSharedPointer<QGeoTileTexture> QGeoTiledMappingManagerEngine::getTileTexture(co *******************************************************************************/ QGeoTiledMappingManagerEnginePrivate::QGeoTiledMappingManagerEnginePrivate() -: cacheHint_(QGeoTiledMappingManagerEngine::AllCaches), tileCache_(0), fetcher_(0) +: m_tileVersion(-1), + cacheHint_(QGeoTiledMappingManagerEngine::AllCaches), + tileCache_(0), + fetcher_(0) { } diff --git a/src/location/maps/qgeotiledmappingmanagerengine_p.h b/src/location/maps/qgeotiledmappingmanagerengine_p.h index e9cbf725..b0078397 100644 --- a/src/location/maps/qgeotiledmappingmanagerengine_p.h +++ b/src/location/maps/qgeotiledmappingmanagerengine_p.h @@ -76,6 +76,7 @@ public: void releaseMap(QGeoTiledMap *map); QSize tileSize() const; + int tileVersion() const; void updateTileRequests(QGeoTiledMap *map, const QSet<QGeoTileSpec> &tilesAdded, @@ -93,11 +94,12 @@ private Q_SLOTS: Q_SIGNALS: void tileError(const QGeoTileSpec &spec, const QString &errorString); - void mapVersionChanged(); + void tileVersionChanged(); protected: void setTileFetcher(QGeoTileFetcher *fetcher); void setTileSize(const QSize &tileSize); + void setTileVersion(int version); void setCacheHint(QGeoTiledMappingManagerEngine::CacheAreas cacheHint); QGeoTileCache *createTileCacheWithDir(const QString &cacheDirectory); diff --git a/src/location/maps/qgeotiledmappingmanagerengine_p_p.h b/src/location/maps/qgeotiledmappingmanagerengine_p_p.h index e679b627..7fb08e75 100644 --- a/src/location/maps/qgeotiledmappingmanagerengine_p_p.h +++ b/src/location/maps/qgeotiledmappingmanagerengine_p_p.h @@ -68,6 +68,7 @@ public: ~QGeoTiledMappingManagerEnginePrivate(); QSize tileSize_; + int m_tileVersion; QHash<QGeoTiledMap *, QSet<QGeoTileSpec> > mapHash_; QHash<QGeoTileSpec, QSet<QGeoTiledMap *> > tileHash_; QGeoTiledMappingManagerEngine::CacheAreas cacheHint_; diff --git a/src/plugins/geoservices/nokia/qgeotiledmap_nokia.cpp b/src/plugins/geoservices/nokia/qgeotiledmap_nokia.cpp index bf58ad34..98777d09 100644 --- a/src/plugins/geoservices/nokia/qgeotiledmap_nokia.cpp +++ b/src/plugins/geoservices/nokia/qgeotiledmap_nokia.cpp @@ -110,13 +110,4 @@ void QGeoTiledMapNokia::evaluateCopyrights(const QSet<QGeoTileSpec> &visibleTile emit copyrightsChanged(m_copyrightsSlab); } -int QGeoTiledMapNokia::mapVersion() -{ - if (!m_engine.isNull()) - return m_engine->mapVersion(); - else - return QGeoTiledMap::mapVersion(); - -} - QT_END_NAMESPACE diff --git a/src/plugins/geoservices/nokia/qgeotiledmap_nokia.h b/src/plugins/geoservices/nokia/qgeotiledmap_nokia.h index d0253343..9651cc80 100644 --- a/src/plugins/geoservices/nokia/qgeotiledmap_nokia.h +++ b/src/plugins/geoservices/nokia/qgeotiledmap_nokia.h @@ -54,7 +54,6 @@ public: QString getViewCopyright(); void evaluateCopyrights(const QSet<QGeoTileSpec> &visibleTiles); - int mapVersion(); private: QImage m_logo; diff --git a/src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.cpp b/src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.cpp index 02e6f12c..54bf29af 100644 --- a/src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.cpp +++ b/src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.cpp @@ -258,8 +258,7 @@ void QGeoTiledMappingManagerEngineNokia::updateVersion(const QJsonObject &newVer m_mapVersion.setVersion(m_mapVersion.version() + 1); saveMapVersion(); - - emit mapVersionChanged(); + setTileVersion(m_mapVersion.version()); } } @@ -297,6 +296,7 @@ void QGeoTiledMappingManagerEngineNokia::loadMapVersion() m_mapVersion.setVersion(object[QStringLiteral("version")].toInt()); m_mapVersion.setVersionData(object[QStringLiteral("data")].toObject()); + setTileVersion(m_mapVersion.version()); } QString QGeoTiledMappingManagerEngineNokia::evaluateCopyrightsText(const QGeoMapType mapType, |