diff options
Diffstat (limited to 'src/location/maps')
-rw-r--r-- | src/location/maps/maps.pri | 5 | ||||
-rw-r--r-- | src/location/maps/qgeomap.cpp | 36 | ||||
-rw-r--r-- | src/location/maps/qgeomap_p.h | 5 | ||||
-rw-r--r-- | src/location/maps/qgeomap_p_p.h | 6 | ||||
-rw-r--r-- | src/location/maps/qgeomapparameter.cpp | 74 | ||||
-rw-r--r-- | src/location/maps/qgeomapparameter_p.h | 84 | ||||
-rw-r--r-- | src/location/maps/qgeotiledmap.cpp | 11 | ||||
-rw-r--r-- | src/location/maps/qgeotiledmap_p.h | 12 | ||||
-rw-r--r-- | src/location/maps/qgeotiledmap_p_p.h | 12 |
9 files changed, 230 insertions, 15 deletions
diff --git a/src/location/maps/maps.pri b/src/location/maps/maps.pri index 97b28b69..3f76f737 100644 --- a/src/location/maps/maps.pri +++ b/src/location/maps/maps.pri @@ -18,6 +18,7 @@ PUBLIC_HEADERS += \ maps/qgeoserviceprovider.h PRIVATE_HEADERS += \ + maps/qgeomapparameter_p.h \ maps/qgeocameracapabilities_p.h \ maps/qgeocameradata_p.h \ maps/qgeocameratiles_p.h \ @@ -91,5 +92,5 @@ SOURCES += \ maps/qgeotiledmapscene.cpp \ maps/qgeorouteparser.cpp \ maps/qgeorouteparserosrmv5.cpp \ - maps/qgeorouteparserosrmv4.cpp - + maps/qgeorouteparserosrmv4.cpp \ + maps/qgeomapparameter.cpp diff --git a/src/location/maps/qgeomap.cpp b/src/location/maps/qgeomap.cpp index c3b01a3e..f8361ee3 100644 --- a/src/location/maps/qgeomap.cpp +++ b/src/location/maps/qgeomap.cpp @@ -130,6 +130,32 @@ void QGeoMap::clearData() } +void QGeoMap::addParameter(QGeoMapParameter *param) +{ + Q_D(QGeoMap); + if (param && !d->m_mapParameters.contains(param)) { + d->m_mapParameters.insert(param); + d->addParameter(param); + } +} + +void QGeoMap::removeParameter(QGeoMapParameter *param) +{ + Q_D(QGeoMap); + if (param && d->m_mapParameters.contains(param)) { + d->removeParameter(param); + d->m_mapParameters.remove(param); + } +} + +void QGeoMap::clearParameters() +{ + Q_D(QGeoMap); + for (QGeoMapParameter *p : d->m_mapParameters) + d->removeParameter(p); + d->m_mapParameters.clear(); +} + QGeoMapPrivate::QGeoMapPrivate(QGeoMappingManagerEngine *engine) : QObjectPrivate(), m_engine(engine), @@ -141,4 +167,14 @@ QGeoMapPrivate::~QGeoMapPrivate() { } +void QGeoMapPrivate::addParameter(QGeoMapParameter *param) +{ + Q_UNUSED(param) +} + +void QGeoMapPrivate::removeParameter(QGeoMapParameter *param) +{ + Q_UNUSED(param) +} + QT_END_NAMESPACE diff --git a/src/location/maps/qgeomap_p.h b/src/location/maps/qgeomap_p.h index c16d35af..6a482e4f 100644 --- a/src/location/maps/qgeomap_p.h +++ b/src/location/maps/qgeomap_p.h @@ -61,6 +61,7 @@ class QGeoCameraCapabilities; class QGeoCoordinate; class QSGNode; class QQuickWindow; +class QGeoMapParameter; class Q_LOCATION_EXPORT QGeoMap : public QObject { @@ -93,6 +94,10 @@ public: virtual void prefetchData(); virtual void clearData(); + void addParameter(QGeoMapParameter *param); + void removeParameter(QGeoMapParameter *param); + void clearParameters(); + protected: QGeoMap(QGeoMapPrivate &dd, QObject *parent = 0); void setCameraData(const QGeoCameraData &cameraData); diff --git a/src/location/maps/qgeomap_p_p.h b/src/location/maps/qgeomap_p_p.h index 311a3eb1..6347d0f7 100644 --- a/src/location/maps/qgeomap_p_p.h +++ b/src/location/maps/qgeomap_p_p.h @@ -52,6 +52,7 @@ #include <QtLocation/private/qgeomaptype_p.h> #include <QtCore/private/qobject_p.h> #include <QtCore/QSize> +#include <QtCore/QSet> QT_BEGIN_NAMESPACE @@ -59,6 +60,7 @@ QT_BEGIN_NAMESPACE class QGeoMappingManagerEngine; class QGeoMap; class QGeoMapController; +class QGeoMapParameter; class Q_LOCATION_PRIVATE_EXPORT QGeoMapPrivate : public QObjectPrivate { @@ -72,12 +74,14 @@ protected: virtual void changeMapSize(const QSize &size) = 0; // called by QGeoMap::setSize() virtual void changeCameraData(const QGeoCameraData &oldCameraData) = 0; // called by QGeoMap::setCameraData() virtual void changeActiveMapType(const QGeoMapType mapType) = 0; // called by QGeoMap::setActiveMapType() + virtual void addParameter(QGeoMapParameter *param); + virtual void removeParameter(QGeoMapParameter *param); -protected: QSize m_size; QPointer<QGeoMappingManagerEngine> m_engine; QGeoCameraData m_cameraData; QGeoMapType m_activeMapType; + QSet<QGeoMapParameter *> m_mapParameters; }; QT_END_NAMESPACE diff --git a/src/location/maps/qgeomapparameter.cpp b/src/location/maps/qgeomapparameter.cpp new file mode 100644 index 00000000..b8f9561f --- /dev/null +++ b/src/location/maps/qgeomapparameter.cpp @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include "qgeomapparameter_p.h" +#include <QtCore/QVariant> + +QT_BEGIN_NAMESPACE + +QGeoMapParameter::QGeoMapParameter(QObject *parent) : QObject(parent) +{ + +} + +QGeoMapParameter::~QGeoMapParameter() +{ +} + +QString QGeoMapParameter::type() const +{ + return m_type; +} + +void QGeoMapParameter::setType(const QString &type) +{ + if (m_type.isEmpty()) + m_type = type; +} + +// DO NOT USE to set "type" +void QGeoMapParameter::updateProperty(const char *propertyName, QVariant value) +{ + setProperty(propertyName, value); + // This should technically be emitted only for dynamically added properties. + // Since this object has only type defined as Q_PROPERTY() which is a set-once + // no check is really needed here. + emit propertyUpdated(this, propertyName); +} + +QT_END_NAMESPACE + diff --git a/src/location/maps/qgeomapparameter_p.h b/src/location/maps/qgeomapparameter_p.h new file mode 100644 index 00000000..c3bef4d8 --- /dev/null +++ b/src/location/maps/qgeomapparameter_p.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtLocation module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QGEOMAPPARAMETER_P_H +#define QGEOMAPPARAMETER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QObject> +#include <QString> +#include <QtLocation/qlocationglobal.h> + +QT_BEGIN_NAMESPACE + +class Q_LOCATION_EXPORT QGeoMapParameter : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QString type READ type WRITE setType) +public: + explicit QGeoMapParameter(QObject *parent = 0); + virtual ~QGeoMapParameter(); + + QString type() const; + void setType(const QString &type); + + void updateProperty(const char *propertyName, QVariant value); + +Q_SIGNALS: + void propertyUpdated(QGeoMapParameter *param, const char *propertyName); + +protected: + QString m_type; + + Q_DISABLE_COPY(QGeoMapParameter) + friend class QGeoMap; +}; + +QT_END_NAMESPACE + +#endif // QGEOMAPPARAMETER_P_H diff --git a/src/location/maps/qgeotiledmap.cpp b/src/location/maps/qgeotiledmap.cpp index fedaecbc..2cf815af 100644 --- a/src/location/maps/qgeotiledmap.cpp +++ b/src/location/maps/qgeotiledmap.cpp @@ -60,6 +60,17 @@ QGeoTiledMap::QGeoTiledMap(QGeoTiledMappingManagerEngine *engine, QObject *paren this,&QGeoTiledMap::handleTileVersionChanged); } +QGeoTiledMap::QGeoTiledMap(QGeoTiledMapPrivate &dd, QGeoTiledMappingManagerEngine *engine, QObject *parent) + : QGeoMap(dd, parent) +{ + Q_D(QGeoTiledMap); + + d->m_tileRequests = new QGeoTileRequestManager(this, engine); + + QObject::connect(engine,&QGeoTiledMappingManagerEngine::tileVersionChanged, + this,&QGeoTiledMap::handleTileVersionChanged); +} + QGeoTiledMap::~QGeoTiledMap() { Q_D(QGeoTiledMap); diff --git a/src/location/maps/qgeotiledmap_p.h b/src/location/maps/qgeotiledmap_p.h index 791384c7..ff5f88a6 100644 --- a/src/location/maps/qgeotiledmap_p.h +++ b/src/location/maps/qgeotiledmap_p.h @@ -49,10 +49,10 @@ #include <QObject> #include <QString> - -#include "qgeomap_p.h" -#include "qgeocameradata_p.h" -#include "qgeomaptype_p.h" +#include <QtLocation/private/qlocationglobal_p.h> +#include <QtLocation/private/qgeomap_p.h> +#include <QtLocation/private/qgeocameradata_p.h> +#include <QtLocation/private/qgeomaptype_p.h> #include <QtPositioning/private/qdoublevector2d_p.h> @@ -70,7 +70,7 @@ class QSGNode; class QPointF; -class Q_LOCATION_EXPORT QGeoTiledMap : public QGeoMap +class Q_LOCATION_PRIVATE_EXPORT QGeoTiledMap : public QGeoMap { Q_OBJECT Q_DECLARE_PRIVATE(QGeoTiledMap) @@ -103,6 +103,8 @@ protected: QSGNode *updateSceneGraph(QSGNode *, QQuickWindow *window) Q_DECL_OVERRIDE; virtual void evaluateCopyrights(const QSet<QGeoTileSpec> &visibleTiles); + QGeoTiledMap(QGeoTiledMapPrivate &dd, QGeoTiledMappingManagerEngine *engine, QObject *parent); + private Q_SLOTS: void handleTileVersionChanged(); diff --git a/src/location/maps/qgeotiledmap_p_p.h b/src/location/maps/qgeotiledmap_p_p.h index f7f9c4d9..f0744df6 100644 --- a/src/location/maps/qgeotiledmap_p_p.h +++ b/src/location/maps/qgeotiledmap_p_p.h @@ -47,10 +47,10 @@ // We mean it. // -#include "qlocationglobal_p.h" -#include "qgeomap_p_p.h" -#include "qgeocameradata_p.h" -#include "qgeomaptype_p.h" +#include <QtLocation/private/qlocationglobal_p.h> +#include <QtLocation/private/qgeomap_p_p.h> +#include <QtLocation/private/qgeocameradata_p.h> +#include <QtLocation/private/qgeomaptype_p.h> #include <QtPositioning/private/qdoublevector3d_p.h> #include <QtPositioning/private/qdoublevector2d_p.h> #include <QtCore/QPointer> @@ -90,10 +90,9 @@ protected: void changeTileVersion(int version); void clearScene(); -private: void updateScene(); -private: +protected: QAbstractGeoTileCache *m_cache; QGeoCameraTiles *m_visibleTiles; QGeoCameraTiles *m_prefetchTiles; @@ -102,7 +101,6 @@ private: int m_maxZoomLevel; int m_minZoomLevel; QGeoTiledMap::PrefetchStyle m_prefetchStyle; - bool m_geomoteryUpdated; Q_DISABLE_COPY(QGeoTiledMapPrivate) }; |