summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/location/declarativemaps/qdeclarativegeomap.cpp9
-rw-r--r--src/location/declarativemaps/qdeclarativegeomapcopyrightsnotice.cpp54
-rw-r--r--src/location/declarativemaps/qdeclarativegeomapcopyrightsnotice_p.h5
-rw-r--r--src/location/maps/qgeomap.cpp5
-rw-r--r--src/location/maps/qgeomap_p.h3
-rw-r--r--src/plugins/geoservices/esri/geotiledmap_esri.cpp7
-rw-r--r--src/plugins/geoservices/mapboxgl/logo.pngbin0 -> 3620 bytes
-rw-r--r--src/plugins/geoservices/mapboxgl/mapboxgl.pro2
-rw-r--r--src/plugins/geoservices/mapboxgl/mapboxgl.qrc5
-rw-r--r--src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.cpp22
-rw-r--r--src/plugins/geoservices/mapboxgl/qgeomapmapboxgl.h1
-rw-r--r--src/plugins/geoservices/nokia/qgeotiledmap_nokia.cpp2
-rw-r--r--src/plugins/geoservices/nokia/resource.qrc2
-rw-r--r--src/plugins/geoservices/osm/qgeotiledmaposm.cpp7
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 &copyrig
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 &copyrightsImage);
void copyrightsChanged(const QString &copyrightsHtml);
+ 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 &copyrightsImage);
void copyrightsChanged(const QString &copyrightsHtml);
+ 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
new file mode 100644
index 00000000..57410f79
--- /dev/null
+++ b/src/plugins/geoservices/mapboxgl/logo.png
Binary files differ
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 &copyrightsHtml)
{
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