summaryrefslogtreecommitdiff
path: root/src/location/maps/qgeotilefetcher.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix deprecation warningsFriedemann Kleint2019-05-271-1/+4
| | | | | | | | | | | | | | | | | | | Fix warnings: maps/qgeotilefetcher.cpp:78:36: warning: 'QList<T> QSet<T>::toList() const [with T = QGeoTileSpec]' is deprecated: Use values() instead. [-Wdeprecated-declarations] declarativeplaces/qdeclarativeplace.cpp:1088:101: warning: 'QVariant qVariantFromValue(const T&) [with T = QDeclarativePlaceAttribute*]' is deprecated: Use QVariant::fromValue() instead. [-Wdeprecated-declarations] maps/qgeotiledmapscene.cpp:498:62: warning: 'static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = QGeoTileSpec]' is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] maps/qgeotiledmapscene.cpp:498:89: warning: 'static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = QGeoTileSpec]' is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] maps/qgeotiledmapscene.cpp:643:61: warning: 'static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = QGeoTileSpec]' is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] maps/qgeotiledmapscene.cpp:643:94: warning: 'static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = QGeoTileSpec]' is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] /data1/frkleint/qt-dev/qtbase/include/QtCore/../../src/corelib/tools/qset.h:400:23: warning: 'QSet<T> QList<T>::toSet() const [with T = QGeoTileSpec]' is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] declarativemaps/qdeclarativegeomap.cpp:453:45: warning: 'QSet<T> QList<T>::toSet() const [with T = QObject*]' is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] qplacemanagerengine_test.h:477:72: warning: 'QSet<T> QList<T>::toSet() const [with T = QPlaceCategory]' is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] ../utils/qlocationtestutils.cpp:50:31: warning: 'QString& QString::sprintf(const char*, ...)' is deprecated: Use asprintf(), arg() or QTextStream instead [-Wdeprecated-declarations] Change-Id: Ice04fd0f158ee95a42f53b33dcb7b9204a33c90e Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Allow threaded tile provisioningPaolo Angelelli2018-04-061-6/+3
| | | | | | | | | | | | This change virtualizes four key methods of QGeoTiledMappingManagerEngine, that need to be reimplemented in order to be able to run tile provisioning in a separate thread. QGeoTileRequestManager is also now privately exported, as it has to be used in those methods. Finally the patch includes some minor cleanup in QGeoTileFetcher. Change-Id: I3063263120f935f0cde54abf00bd1caa476ab215 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Add virtual fetchingEnabled in QGeoTileFetcherPaolo Angelelli2017-07-171-1/+6
| | | | | | | | | | | With this, a plugin can programmatically prevent the fetcher from acessing the network. E.g., by using a QNetworkConfigurationManager. The change introduced in this patch does however not allow the user to dynamically enable/disable the fetcher's network access. For that, additional support, together with public API, is necessary. Change-Id: I8250cd3dc8d4b2c36ccf243b5ddeab2878b549b4 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Bound check QGeoTileSpec against min/max ZL before requesting itPaolo Angelelli2017-04-121-3/+12
| | | | | | | | | | | | | | | | | | Until now we have not honored the min/max zoom levels specified in QGeoCameraCapabilities when requesting tiles. As a result we have often fired requests for non-existing tile layers. This change complements the added support for individual camera caps for each map type, and makes the tile fetcher honor the bounds defined in the camera capabilities. This also allows to set larger zoom levels in the renderer, overzooming existing tiles, without the fetcher firing requests for invalid resources Change-Id: Ic8a523a114147109f7ef8af3510a3ab78d06d714 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Fix cache mixing with high-dpi and low-dpi osm providersPaolo Angelelli2016-10-051-6/+14
| | | | | | | | | | | | | | | | | This cache fixes the cache mixing problem that has been introduced with the osm high dpi tiles support. high dpi providers fall back to low dpi ones and ultimately to hardcoded providers (also low dpi), and can also be enabled/disabled via plugin parameter, thus leaving the cache for a given map id dirty for the next run. With this patch high dpi tiles are named differently from low dpi ones. If high-dpi providers are selected, but become not available, the cache can also change the tileset to load at runtime Change-Id: I229692da07c1fc61c58fb0b6fae6ec5af16e43a7 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* OSM: Honor min/max zoom level limits coming from the provider recordsPaolo Angelelli2016-08-301-3/+4
| | | | | | | | | | This patch prevents the tile fetcher from requesting tiles with a z values that is outside the range defined in the provider record. If the provider record does not specify these values, the default values are used (0 and 20) Change-Id: I5c3f7be8bbd2b2ce6c8c8d6d8d81431237e60f5b Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Add indirection for osm providersPaolo Angelelli2016-07-271-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To prevent furter breakage of qtlocation osm provider in existing qt versions, this patch introduces one level of indirection in resolving OSM providers, fetching the tile server address from files hosted at http://maps-redirect.qt.io/osm/5.6/ The content of the files requested for the server address resolution must be in JSON format, containing (currently) the following fields: { "Enabled" : bool, (optional) "UrlTemplate" : "<url template>", (mandatory) "ImageFormat" : "<image format>", (mandatory) "MapCopyRight" : "<copyright>", (mandatory) "DataCopyRight" : "<copyright>", (mandatory) "MinimumZoomLevel" : <minimumZoomLevel>, (optional) "MaximumZoomLevel" : <maximumZoomLevel>, (optional) } Enabled is optional, and allows us to temporarily disable tile providers if they go offline without firing requests to them. Default is true. MinimumZoomLevel and MaximumZoomLevel are also optional, and allow us to prevent tile requests to the providers, if they do not support the specific ZL. Default is 0 and 19, respectively. <server address template> is required, and is the tile url template, with %x, %y and %z as placeholders for the actual parameters. Example: http://localhost:8080/maps/%z/%x/%y.png <image format> is required, and is the format of the tile. Example: "png" or "jpg" <MapCopyRight> is required and is the string that will be displayed in the "Map (c)" part of the on-screen copyright notice. example: "<a href='http://www.mapquest.com/'>MapQuest</a>" <DataCopyRight> is required and is the string that will be displayed in the "Data (c)" part of the on-screen copyright notice. example: "a href= 'http://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors" The patch also adds four additional OSM plugin parameters, modifies an existing ones, and removes another existing one. Removed: - osm.mapping.copyright, now removed and replaced by two other parameters (see below). New: - osm.mapping.providersrepository.address, allowing to change the hardcoded http://maps-redirect.qt.io/osm/5.6/ The implication of this parameter is that it becomes possible to use file:// urls or even qrc:, allowing to ship custom providers with the applicarions - osm.mapping.providersrepository.disabled, allowing to disable the indirection and go with hardcoded URLs by default. - osm.mapping.custom.mapcopyright replaces the old osm.mapping.copyright, and contains the copyright notice to be displayed next to the "Map (c)" part of the copyright, to be consistent with the way the copyright notice coming from the provider data is handled - osm.mapping.custom.datacopyright replaces the old osm.mapping.copyright, and contains the copyright notice to be displayed next to the "Data (c)" part of the copyright, to be consistent with the way the copyright notice coming from the provider data is handled Modified: - osm.mapping.host now became osm.mapping.custom.host, improving the naming consistency. Task-number: QTBUG-54599 Change-Id: Iee88883572a198c00bcf54cf2bc33fbcc0498a68 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Set shorter name for class names with 'MapData'Michal Klocek2015-05-041-1/+1
| | | | | | | | Rename all references and files with 'MapData' to use shorter name 'Map'. Change-Id: I8ab790146ee28e540e6866ba0218eea61bae6e64 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
* Remove LGPLv2.1 and add GPLv2+ from/to QtLocationAlex Blasche2015-02-191-14/+17
| | | | | | Change-Id: I3007aa04d3dbc0e00cb0a43987d64d01ddf91edd Reviewed-by: Lorn Potter <lorn.potter@gmail.com> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
* Update contact URL in all license headers to qt.ioAlex Blasche2015-02-181-1/+1
| | | | | Change-Id: Ia1e333be7fec8898de609d9b9303b1ad7687632e Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
* Update license headers and add new license filesAntti Kokko2014-08-241-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Change-Id: Iedee2507ab1bd46788409a98505d7be510253110 Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
* Test that the mapping manager engine pointer is still valid.Aaron McCarthy2014-02-101-27/+6
| | | | | | | | | | | | | | | | | | | QPointer holds a guarded pointer to a QObject. It must always be tested prior to use. Changed the parameter type to remove the need for the static_cast when setting the QPointer member. The root cause was that the tile fetcher object was not being destroyed when the mapping manager engine was. Which was because the two objects were in different threads. Some of the service specific tile fetchers were directly calling into the engine objects across thread. Gah. Since Qt 5 QNAM uses an application global thread for processing requests, there is no need to use threads in the tile fetcher. Change-Id: Id9df35ddfa78df2cbf334006fe5fc9726a75f92d Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Fix killing timer in different thread.Aaron McCarthy2014-01-171-49/+32
| | | | | | | | It was possible for another thread to attempt to stop the timer used by the tile fetcher. Change-Id: Ic44cf416bc7e6c987c4b5c9914a1c7d911dbbea5 Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
* Update copyright year to 2013Sergio Ahumada2013-06-131-1/+1
| | | | | Change-Id: I5b0cb7d56997ad7b91c073b3e02b31d0368fdcfa Reviewed-by: Alex <alexander.blasche@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-241-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: Ic1390da64a219642fa1e1482a7677a4c2db15cbc Reviewed-by: Janne Anttila <janne.anttila@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Remove Maps from public C++ API.Aaron McCarthy2012-06-071-4/+4
| | | | | | | | | | | | The preliminary C++ Maps API was exposed to provide an interface between the QML plugin and the geo services plugins. Mark it as private API for now as it is likely to change when the full C++ API is developed. Mapping functionality is currently only available through QML. Change-Id: Id16e0f1a2165c70192047dffa40e69ab1f29ba69 Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
* QtLocation: Fix dependencies, remove network.Friedemann Kleint2012-05-291-3/+0
| | | | | | | | - The library does not seem to depend on network. - Remove unneeded dependencies on QtWidgets. Change-Id: Icdbe8a00c746a1ec0d7512f74e0f2566148fdb6e Reviewed-by: Jean Gressmann <jean.gressmann@nokia.com>
* Correct destruction of mappingManagerEngineThomas Lowe2012-05-291-3/+10
| | | | | | | | | | | Use of weakPointer to prevent accessing deleted memory. Plus thread exiting to cause the fetcher and thread to destroy themselves. Additional use of weak pointers to deal with the complexity of the mapping manager destructing before the declarative objects. Task-number: QTBUG-25797 Change-Id: I6a27568580c1a00f7588565ff7e35d63eb5dd785 Reviewed-by: Aaron McCarthy <aaron.mccarthy@nokia.com>
* Coding style fixes: whitespace around pointers/referencesAlex Wilson2012-05-151-1/+1
| | | | | | Change-Id: Ie527591e2d9a1578137136fb6664e86c43eed1bf Reviewed-by: Thomas Lowe <thomas.lowe@nokia.com> Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
* Coding style fixes: whitespace crusadesAlex Wilson2012-05-151-1/+1
| | | | | | | | | | * Single spaces after keywords and before a bracket/brace * Binary operator spacing * Curlies at open of class/function body * Spacing around some type specifiers/declarations Change-Id: Ie516283e7a39c7ce83071ea8125774c76db611f5 Reviewed-by: Aaron McCarthy <aaron.mccarthy@nokia.com>
* Retry failed tile loads 5 times (with exp backoff) before giving upAlex Wilson2012-04-241-0/+2
| | | | | | | | | | | This allows us to fetch tiles over unreliable network links a bit better -- burst errors of only a few seconds will no longer drop tiles. Change-Id: I00c33424b58e032b1fb74c89052ea7f5cbd97d30 Reviewed-by: Thomas Lowe <thomas.lowe@nokia.com> Reviewed-by: Ian Chen <ian.1.chen@nokia.com> Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
* Coverity and compiler warning fixesAlex Wilson2012-04-191-3/+3
| | | | | Change-Id: Iae536630edbfbda2c0e8c67c48477d5867d25f07 Reviewed-by: Aaron McCarthy <aaron.mccarthy@nokia.com>
* Fix for pipelined tile requests receiving incorrect dataAlex Wilson2012-03-201-6/+2
| | | | | | | | | | | | | | | | Calling abort() and then deleteLater() without waiting for finished() and friends to come back turns out to be a Bad Idea. QNAM won't be able to correctly handle the abortion if the request is occupying a slot in a pipeline queue, and that queue will be off-by-one for the remainder of its operation. Fix is to change the finished() connection to be Queued, and simply call abort rather than deleteLater() as well. Then in the queued finished() handler, deleteLater() will be called and all will be well (hopefully). Change-Id: Ia572757af8394297fa707f0d8d1accded2eec12d Reviewed-by: David Laing <david.laing@nokia.com>
* Fixes various Coverity warnings.David Laing2012-03-161-0/+1
| | | | | Change-Id: I58a7191dae9cd441025cad658d82422561f216f6 Reviewed-by: Aaron McCarthy <aaron.mccarthy@nokia.com>
* Makes the tiled mapping engine pay attention to file formats again.David Laing2012-03-151-2/+1
| | | | | | | | | This was fixed previously but partly removed by the non-tiled maps API refactoring. Change-Id: I038adf2d8b561c5d71700a3cd839de6956246239 Reviewed-by: Alex Wilson <alex.wilson@nokia.com> Reviewed-by: Cristian Adam <cristian.adam@nokia.com>
* New 3Q cache for map tiles, cleanup texture/tile resource managementAlex Wilson2012-03-141-0/+10
| | | | | | | | | | | | Replaces the old use of QCache in QGeoTileCache with a new QCache3Q, which is more optimal for many tile workloads. Resource management for textures and tile data is now enforced and managed correctly across threads. Textures are passed around as QSharedPointers to guarantee that cache eviction policy will not interfere with the correctness of rendering. Change-Id: I93eb49ea3ad009d85f394f92c59a4b22962b88a7 Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
* Refactoring of QtLocation APIBasel Hashisho2012-03-091-0/+230
Refactoring QGeoMap, QGeoMappingManager, QGeoMappingManagerEngine Introducing QGeoMapData, QGeoTiledMap, QGeoTiledMappingManagerEngine, QGeoTileFetcher QGeoMap: Container for QGeoMapData QGeoMapData: No tiles data/functionality QGeoTiledMapData: Implements tiles data/functionality. QGeoMappingManager: Looses tiles-related data/functionality. QGeoMappingManagerEngine => QGeoMappingManagerEngine (no tiles data/functionality) QGeoTiledMappingManagerEngine (implements tiles-related data/functionality). QGeoTileFetcher: Implements tile fetching functionality from tiles provider. This commit compiles and runs through mapviewer example. Tests also were adjusted to fit refactored architecture. Change-Id: Id2b62d62d5cd4aaca8295c67e44c009cde636462 Reviewed-by: Alex <alex.blasche@nokia.com>