diff options
-rw-r--r-- | src/location/declarativemaps/qdeclarativegeomap.cpp | 9 | ||||
-rw-r--r-- | src/location/declarativemaps/qdeclarativegeomapcopyrightsnotice.cpp | 54 | ||||
-rw-r--r-- | src/location/declarativemaps/qdeclarativegeomapcopyrightsnotice_p.h | 5 | ||||
-rw-r--r-- | src/location/maps/qgeomap.cpp | 5 | ||||
-rw-r--r-- | src/location/maps/qgeomap_p.h | 3 | ||||
-rw-r--r-- | src/plugins/geoservices/esri/geotiledmap_esri.cpp | 7 | ||||
-rw-r--r-- | src/plugins/geoservices/mapboxgl/logo.png | bin | 0 -> 3620 bytes | |||
-rw-r--r-- | src/plugins/geoservices/mapboxgl/mapboxgl.pro | 2 | ||||
-rw-r--r-- | src/plugins/geoservices/mapboxgl/mapboxgl.qrc | 5 | ||||
-rw-r--r-- | src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.cpp | 22 | ||||
-rw-r--r-- | src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.h | 1 | ||||
-rw-r--r-- | src/plugins/geoservices/nokia/qgeotiledmap_nokia.cpp | 2 | ||||
-rw-r--r-- | src/plugins/geoservices/nokia/resource.qrc | 2 | ||||
-rw-r--r-- | src/plugins/geoservices/osm/qgeotiledmaposm.cpp | 7 |
14 files changed, 79 insertions, 45 deletions
diff --git a/src/location/declarativemaps/qdeclarativegeomap.cpp b/src/location/declarativemaps/qdeclarativegeomap.cpp index 20e61ed3..95df9235 100644 --- a/src/location/declarativemaps/qdeclarativegeomap.cpp +++ b/src/location/declarativemaps/qdeclarativegeomap.cpp @@ -255,6 +255,8 @@ void QDeclarativeGeoMap::onMapChildrenChanged() if (!copyrights) { // create a new one and set its parent, re-assign it to the weak pointer, then connect the copyrights-change signal m_copyrights = new QDeclarativeGeoMapCopyrightNotice(this); + m_copyrights->onCopyrightsStyleSheetChanged(m_map->copyrightsStyleSheet()); + copyrights = m_copyrights.data(); connect(m_map, SIGNAL(copyrightsChanged(QImage)), @@ -267,6 +269,9 @@ void QDeclarativeGeoMap::onMapChildrenChanged() connect(m_map, SIGNAL(copyrightsChanged(QString)), this, SIGNAL(copyrightsChanged(QString))); + connect(m_map, SIGNAL(copyrightsStyleSheetChanged(QString)), + copyrights, SLOT(onCopyrightsStyleSheetChanged(QString))); + connect(copyrights, SIGNAL(linkActivated(QString)), this, SIGNAL(copyrightLinkActivated(QString))); @@ -671,6 +676,7 @@ void QDeclarativeGeoMap::mappingManagerInitialized() } m_copyrights = new QDeclarativeGeoMapCopyrightNotice(this); + m_copyrights->onCopyrightsStyleSheetChanged(m_map->copyrightsStyleSheet()); connect(m_map, SIGNAL(copyrightsChanged(QImage)), m_copyrights.data(), SLOT(copyrightsChanged(QImage))); @@ -682,6 +688,9 @@ void QDeclarativeGeoMap::mappingManagerInitialized() connect(m_map, SIGNAL(copyrightsChanged(QString)), this, SIGNAL(copyrightsChanged(QString))); + connect(m_map, SIGNAL(copyrightsStyleSheetChanged(QString)), + m_copyrights.data(), SLOT(onCopyrightsStyleSheetChanged(QString))); + connect(m_copyrights.data(), SIGNAL(linkActivated(QString)), this, SIGNAL(copyrightLinkActivated(QString))); connect(m_map, &QGeoMap::sgNodeChanged, this, &QQuickItem::update); diff --git a/src/location/declarativemaps/qdeclarativegeomapcopyrightsnotice.cpp b/src/location/declarativemaps/qdeclarativegeomapcopyrightsnotice.cpp index d7fa9f3d..fdfb645a 100644 --- a/src/location/declarativemaps/qdeclarativegeomapcopyrightsnotice.cpp +++ b/src/location/declarativemaps/qdeclarativegeomapcopyrightsnotice.cpp @@ -75,12 +75,6 @@ QT_BEGIN_NAMESPACE */ /*! - \qmlproperty color QtLocation::MapCopyrightNotice::backgroundColor - - This property holds the current background color of the copyright notice. -*/ - -/*! \qmlproperty string QtLocation::MapCopyrightNotice::styleSheet This property holds the current css2.1 style sheet used to style the copyright notice, if in HTML form. @@ -96,7 +90,7 @@ QT_BEGIN_NAMESPACE QDeclarativeGeoMapCopyrightNotice::QDeclarativeGeoMapCopyrightNotice(QQuickItem *parent) : QQuickPaintedItem(parent), m_copyrightsHtml(0), m_copyrightsVisible(true), m_mapSource(0), - m_backgroundColor(255, 255, 255, 128) + m_userDefinedStyleSheet(false) { // If this item is constructed inside the map, automatically anchor it where it always used to be. if (qobject_cast<QDeclarativeGeoMap *>(parent)) @@ -126,6 +120,7 @@ void QDeclarativeGeoMapCopyrightNotice::setMapSource(QDeclarativeGeoMap *mapSour if (m_mapSource) { // disconnect this object from current map source m_mapSource->disconnect(this); + m_mapSource->m_map->disconnect(this); m_copyrightsHtml->clear(); m_copyrightsImage = QImage(); m_mapSource = Q_NULLPTR; @@ -141,8 +136,12 @@ void QDeclarativeGeoMapCopyrightNotice::setMapSource(QDeclarativeGeoMap *mapSour this, SLOT(copyrightsChanged(QImage))); connect(m_mapSource, SIGNAL(copyrightsChanged(QString)), this, SLOT(copyrightsChanged(QString))); + connect(m_mapSource->m_map, SIGNAL(copyrightsStyleSheetChanged(QString)), + this, SLOT(onCopyrightsStyleSheetChanged(QString))); connect(this, SIGNAL(linkActivated(QString)), m_mapSource, SIGNAL(copyrightLinkActivated(QString))); + + onCopyrightsStyleSheetChanged(m_mapSource->m_map->copyrightsStyleSheet()); } update(); @@ -154,25 +153,15 @@ QDeclarativeGeoMap *QDeclarativeGeoMapCopyrightNotice::mapSource() return m_mapSource; } -QColor QDeclarativeGeoMapCopyrightNotice::backgroundColor() const -{ - return m_backgroundColor; -} - QString QDeclarativeGeoMapCopyrightNotice::styleSheet() const { return m_styleSheet; } -void QDeclarativeGeoMapCopyrightNotice::setBackgroundColor(const QColor &color) -{ - m_backgroundColor = color; - rasterizeHtmlAndUpdate(); - emit backgroundColorChanged(m_backgroundColor); -} - void QDeclarativeGeoMapCopyrightNotice::setStyleSheet(const QString &styleSheet) { + m_userDefinedStyleSheet = true; + if (styleSheet == m_styleSheet) return; @@ -224,7 +213,7 @@ void QDeclarativeGeoMapCopyrightNotice::rasterizeHtmlAndUpdate() m_copyrightsImage = QImage(m_copyrightsHtml->size().toSize(), QImage::Format_ARGB32_Premultiplied); - m_copyrightsImage.fill(qPremultiply(m_backgroundColor.rgba())); + m_copyrightsImage.fill(qPremultiply(QColor(Qt::transparent).rgba())); QPainter painter(&m_copyrightsImage); QAbstractTextDocumentLayout::PaintContext ctx; ctx.palette.setColor(QPalette::Text, QStringLiteral("black")); @@ -244,6 +233,9 @@ void QDeclarativeGeoMapCopyrightNotice::createCopyright() m_copyrightsHtml = new QTextDocument(this); if (!m_styleSheet.isEmpty()) m_copyrightsHtml->setDefaultStyleSheet(m_styleSheet); + + // The default 4 makes the copyright too wide and tall. + m_copyrightsHtml->setDocumentMargin(0); } /*! @@ -295,12 +287,30 @@ void QDeclarativeGeoMapCopyrightNotice::copyrightsChanged(const QString ©rig setVisible(true); } - m_html = copyrightsHtml; + // Divfy, so we can style the background. The extra <span> is a + // workaround to QTBUG-58838 and should be removed when it gets fixed. + m_html = QStringLiteral("<div id='copyright-root'><span>") + copyrightsHtml + QStringLiteral("</span></div>"); + if (!m_copyrightsHtml) createCopyright(); - m_copyrightsHtml->setHtml(copyrightsHtml); + m_copyrightsHtml->setHtml(m_html); + rasterizeHtmlAndUpdate(); +} + +void QDeclarativeGeoMapCopyrightNotice::onCopyrightsStyleSheetChanged(const QString &styleSheet) +{ + if (m_userDefinedStyleSheet || styleSheet == m_styleSheet) + return; + + m_styleSheet = styleSheet; + if (!m_html.isEmpty() && m_copyrightsHtml) { + delete m_copyrightsHtml; + createCopyright(); + m_copyrightsHtml->setHtml(m_html); + } rasterizeHtmlAndUpdate(); + emit styleSheetChanged(m_styleSheet); } QT_END_NAMESPACE diff --git a/src/location/declarativemaps/qdeclarativegeomapcopyrightsnotice_p.h b/src/location/declarativemaps/qdeclarativegeomapcopyrightsnotice_p.h index 4501fdf7..b09d7c1d 100644 --- a/src/location/declarativemaps/qdeclarativegeomapcopyrightsnotice_p.h +++ b/src/location/declarativemaps/qdeclarativegeomapcopyrightsnotice_p.h @@ -63,7 +63,6 @@ class Q_LOCATION_PRIVATE_EXPORT QDeclarativeGeoMapCopyrightNotice : public QQuic { Q_OBJECT Q_PROPERTY(QDeclarativeGeoMap *mapSource READ mapSource WRITE setMapSource NOTIFY mapSourceChanged) - Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor NOTIFY backgroundColorChanged) Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet NOTIFY styleSheetChanged) public: @@ -78,14 +77,13 @@ public: void setMapSource(QDeclarativeGeoMap *mapSource); QDeclarativeGeoMap *mapSource(); - QColor backgroundColor() const; QString styleSheet() const; - void setBackgroundColor(const QColor &color); void setStyleSheet(const QString &styleSheet); public Q_SLOTS: void copyrightsChanged(const QImage ©rightsImage); void copyrightsChanged(const QString ©rightsHtml); + void onCopyrightsStyleSheetChanged(const QString &styleSheet); signals: void linkActivated(const QString &link); @@ -110,6 +108,7 @@ private: QDeclarativeGeoMap *m_mapSource; QColor m_backgroundColor; QString m_styleSheet; + bool m_userDefinedStyleSheet; }; QT_END_NAMESPACE diff --git a/src/location/maps/qgeomap.cpp b/src/location/maps/qgeomap.cpp index 4529cc0a..978957e7 100644 --- a/src/location/maps/qgeomap.cpp +++ b/src/location/maps/qgeomap.cpp @@ -221,6 +221,11 @@ void QGeoMap::clearMapItems() d->m_mapItems.clear(); } +QString QGeoMap::copyrightsStyleSheet() const +{ + return QStringLiteral("#copyright-root { background: rgba(255, 255, 255, 128) }"); +} + QGeoMapPrivate::QGeoMapPrivate(QGeoMappingManagerEngine *engine, QGeoProjection *geoProjection) : QObjectPrivate(), m_geoProjection(geoProjection), diff --git a/src/location/maps/qgeomap_p.h b/src/location/maps/qgeomap_p.h index 4838cb4e..bb8ca9b4 100644 --- a/src/location/maps/qgeomap_p.h +++ b/src/location/maps/qgeomap_p.h @@ -121,6 +121,8 @@ public: void removeMapItem(QDeclarativeGeoMapItemBase *item); void clearMapItems(); + virtual QString copyrightsStyleSheet() const; + protected: QGeoMap(QGeoMapPrivate &dd, QObject *parent = 0); void setCameraData(const QGeoCameraData &cameraData); @@ -132,6 +134,7 @@ Q_SIGNALS: void activeMapTypeChanged(); void copyrightsChanged(const QImage ©rightsImage); void copyrightsChanged(const QString ©rightsHtml); + void copyrightsStyleSheetChanged(const QString &styleSheet); private: Q_DISABLE_COPY(QGeoMap) diff --git a/src/plugins/geoservices/esri/geotiledmap_esri.cpp b/src/plugins/geoservices/esri/geotiledmap_esri.cpp index 8caf055d..9171fc2b 100644 --- a/src/plugins/geoservices/esri/geotiledmap_esri.cpp +++ b/src/plugins/geoservices/esri/geotiledmap_esri.cpp @@ -44,11 +44,6 @@ QT_BEGIN_NAMESPACE -static QString bodify(const QString &html) -{ - return QStringLiteral("<body>") + html + QStringLiteral("</body>"); -} - GeoTiledMapEsri::GeoTiledMapEsri(GeoTiledMappingManagerEngineEsri *engine, QObject *parent) : QGeoTiledMap(engine, parent), m_engine(engine), m_mapId(-1) { @@ -72,7 +67,7 @@ void GeoTiledMapEsri::evaluateCopyrights(const QSet<QGeoTileSpec> &visibleTiles) GeoMapSource *mapSource = engine()->mapSource(m_mapId); if (mapSource) - emit copyrightsChanged(bodify(mapSource->copyright())); + emit copyrightsChanged(mapSource->copyright()); } QT_END_NAMESPACE diff --git a/src/plugins/geoservices/mapboxgl/logo.png b/src/plugins/geoservices/mapboxgl/logo.png Binary files differnew file mode 100644 index 00000000..57410f79 --- /dev/null +++ b/src/plugins/geoservices/mapboxgl/logo.png diff --git a/src/plugins/geoservices/mapboxgl/mapboxgl.pro b/src/plugins/geoservices/mapboxgl/mapboxgl.pro index 6714ee55..81dd37e2 100644 --- a/src/plugins/geoservices/mapboxgl/mapboxgl.pro +++ b/src/plugins/geoservices/mapboxgl/mapboxgl.pro @@ -20,6 +20,8 @@ SOURCES += \ qgeomapmapboxgl.cpp \ qsgmapboxglnode.cpp +RESOURCES += mapboxgl.qrc + OTHER_FILES += \ mapboxgl_plugin.json diff --git a/src/plugins/geoservices/mapboxgl/mapboxgl.qrc b/src/plugins/geoservices/mapboxgl/mapboxgl.qrc new file mode 100644 index 00000000..55ff337b --- /dev/null +++ b/src/plugins/geoservices/mapboxgl/mapboxgl.qrc @@ -0,0 +1,5 @@ +<RCC> + <qresource prefix="/mapboxgl"> + <file>logo.png</file> + </qresource> +</RCC> diff --git a/src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.cpp b/src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.cpp index 053a926e..0bcd27de 100644 --- a/src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.cpp +++ b/src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.cpp @@ -336,6 +336,11 @@ QGeoMapMapboxGL::~QGeoMapMapboxGL() { } +QString QGeoMapMapboxGL::copyrightsStyleSheet() const +{ + return QStringLiteral("* { vertical-align: middle; font-weight: normal }"); +} + void QGeoMapMapboxGL::setMapboxGLSettings(const QMapboxGLSettings& settings) { Q_D(QGeoMapMapboxGL); @@ -395,12 +400,17 @@ void QGeoMapMapboxGL::copyrightsChanged(const QString ©rightsHtml) { Q_D(QGeoMapMapboxGL); + QString copyrightsHtmlFinal = copyrightsHtml; + if (d->m_developmentMode) { - QString copyrightsHtmlDev = "<a href=\"https://www.mapbox.com/pricing/\">" - + tr("Development access token, do not use in production!") + "</a> - " - + copyrightsHtml; - QGeoMap::copyrightsChanged(copyrightsHtmlDev); - } else { - QGeoMap::copyrightsChanged(copyrightsHtml); + copyrightsHtmlFinal.prepend("<a href='https://www.mapbox.com/pricing'>" + + QObject::tr("Development access token, do not use in production!") + "</a> - "); } + + if (d->m_activeMapType.name().startsWith("mapbox://")) { + copyrightsHtmlFinal = "<table><tr><th><img src='qrc:/mapboxgl/logo.png'/></th><th>" + + copyrightsHtmlFinal + "</th></tr></table>"; + } + + QGeoMap::copyrightsChanged(copyrightsHtmlFinal); } diff --git a/src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.h b/src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.h index 4e6bf575..d16d0a6a 100644 --- a/src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.h +++ b/src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.h @@ -51,6 +51,7 @@ public: QGeoMapMapboxGL(QGeoMappingManagerEngineMapboxGL *engine, QObject *parent); virtual ~QGeoMapMapboxGL(); + QString copyrightsStyleSheet() const Q_DECL_OVERRIDE; void setMapboxGLSettings(const QMapboxGLSettings &); private Q_SLOTS: diff --git a/src/plugins/geoservices/nokia/qgeotiledmap_nokia.cpp b/src/plugins/geoservices/nokia/qgeotiledmap_nokia.cpp index 5179fff4..90be0ae9 100644 --- a/src/plugins/geoservices/nokia/qgeotiledmap_nokia.cpp +++ b/src/plugins/geoservices/nokia/qgeotiledmap_nokia.cpp @@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE */ QGeoTiledMapNokia::QGeoTiledMapNokia(QGeoTiledMappingManagerEngineNokia *engine, QObject *parent /*= 0*/) : QGeoTiledMap(engine, parent), - m_logo(":/images/logo.png"), // HERE logo image + m_logo(":/nokia/logo.png"), // HERE logo image m_engine(engine) {} diff --git a/src/plugins/geoservices/nokia/resource.qrc b/src/plugins/geoservices/nokia/resource.qrc index d48a6ca2..41d973c5 100644 --- a/src/plugins/geoservices/nokia/resource.qrc +++ b/src/plugins/geoservices/nokia/resource.qrc @@ -1,5 +1,5 @@ <RCC> - <qresource prefix="/images"> + <qresource prefix="/nokia"> <file>logo.png</file> </qresource> </RCC> diff --git a/src/plugins/geoservices/osm/qgeotiledmaposm.cpp b/src/plugins/geoservices/osm/qgeotiledmaposm.cpp index e1383afb..e31cbdd5 100644 --- a/src/plugins/geoservices/osm/qgeotiledmaposm.cpp +++ b/src/plugins/geoservices/osm/qgeotiledmaposm.cpp @@ -45,11 +45,6 @@ QT_BEGIN_NAMESPACE -static QString bodify(const QString &html) -{ - return QStringLiteral("<body>") + html + QStringLiteral("</body>"); -} - QGeoTiledMapOsm::QGeoTiledMapOsm(QGeoTiledMappingManagerEngineOsm *engine, QObject *parent) : QGeoTiledMap(engine, parent), m_mapId(-1), m_engine(engine) { @@ -114,7 +109,7 @@ void QGeoTiledMapOsm::onProviderDataUpdated(const QGeoTileProviderOsm *provider) if (copyRights.isEmpty() && provider->mapType().style() == QGeoMapType::CustomMap) copyRights = m_engine->customCopyright(); - emit copyrightsChanged(bodify(copyRights)); + emit copyrightsChanged(copyRights); } QT_END_NAMESPACE |