summaryrefslogtreecommitdiffstats
path: root/plugins/geoservices
diff options
context:
space:
mode:
authorVladimir Bezkorovainyi <vladimir.bezkorovainyi@nokia.com>2011-07-18 15:46:44 +0200
committerVladimir Bezkorovainyi <vladimir.bezkorovainyi@nokia.com>2011-07-18 15:46:44 +0200
commit89acced935f68268741050902909884d3b3c7567 (patch)
tree4781c003242a481fbf824d42ce4e4860b7036bab /plugins/geoservices
parent58ab2e766476402479afd3e7b696782726146035 (diff)
add possibility to specify logo position from command-line
Diffstat (limited to 'plugins/geoservices')
-rwxr-xr-xplugins/geoservices/nokia/qgeomappingmanagerengine_nokia.cpp34
-rw-r--r--plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.h3
-rw-r--r--plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp47
-rw-r--r--plugins/geoservices/nokia/qgeotiledmapdata_nokia.h8
4 files changed, 78 insertions, 14 deletions
diff --git a/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.cpp b/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.cpp
index 3e8297dff5..ef0f4d55b4 100755
--- a/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.cpp
+++ b/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.cpp
@@ -167,6 +167,26 @@ namespace
{
return first.width() * first.height() < second.width() * second.height();
}
+
+ int GetLogoPosition(QString positionName)
+ {
+ typedef std::map<QString, int> KnownPositionsType;
+ static KnownPositionsType knownPositions;
+ if (knownPositions.empty())
+ {
+ knownPositions.insert(std::make_pair("top.left", TopLeft));
+ knownPositions.insert(std::make_pair("left.top", TopLeft));
+ knownPositions.insert(std::make_pair("top.right", ShiftedRight));
+ knownPositions.insert(std::make_pair("right.top", ShiftedRight));
+ knownPositions.insert(std::make_pair("bottom.left", ShiftedRight | ShiftedDown));
+ knownPositions.insert(std::make_pair("left.bottom", ShiftedRight | ShiftedDown));
+ knownPositions.insert(std::make_pair("bottom.right", ShiftedDown));
+ knownPositions.insert(std::make_pair("right.bottom", ShiftedDown));
+ }
+
+ KnownPositionsType::const_iterator found = knownPositions.find(positionName);
+ return found == knownPositions.end() ? ShiftedDown : found->second;
+ }
}
QGeoMappingManagerEngineNokia::QGeoMappingManagerEngineNokia(const QMap<QString, QVariant> &parameters, QGeoServiceProvider::Error *error, QString *errorString)
@@ -174,7 +194,8 @@ QGeoMappingManagerEngineNokia::QGeoMappingManagerEngineNokia(const QMap<QString,
m_cache(0),
m_host("maptile.maps.svc.ovi.com"),
m_token(QGeoServiceProviderFactoryNokia::defaultToken),
- m_referer(QGeoServiceProviderFactoryNokia::defaultReferer)
+ m_referer(QGeoServiceProviderFactoryNokia::defaultReferer),
+ m_logoPosition(ShiftedDown)
{
Q_UNUSED(error)
Q_UNUSED(errorString)
@@ -216,6 +237,12 @@ QGeoMappingManagerEngineNokia::QGeoMappingManagerEngineNokia(const QMap<QString,
else if (parameters.contains("token")) {
m_token = parameters.value("token").toString();
}
+
+ if (parameters.contains("logo.position"))
+ {
+ m_logoPosition = GetLogoPosition(parameters.value("logo.position").toString());
+ }
+
#ifdef DISK_CACHE_ENABLED
QString cacheDir;
if (parameters.contains("mapping.cache.directory"))
@@ -406,3 +433,8 @@ void QGeoMappingManagerEngineNokia::setupServiceInfo()
setMaximumZoomLevel(maxZoomLevel);
setSupportedMapTypes(types);
}
+
+int QGeoMappingManagerEngineNokia::logoPosition() const
+{
+ return m_logoPosition;
+}
diff --git a/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.h b/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.h
index 5335804ce5..ea09459dd4 100644
--- a/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.h
+++ b/plugins/geoservices/nokia/qgeomappingmanagerengine_nokia.h
@@ -71,6 +71,8 @@ public:
QGeoMapData* createMapData();
QGeoTiledMapReply* getTileImage(const QGeoTiledMapRequest &request);
+ int logoPosition() const;
+
private:
Q_DISABLE_COPY(QGeoMappingManagerEngineNokia)
@@ -90,6 +92,7 @@ private:
QString m_host;
QString m_token;
QString m_referer;
+ int m_logoPosition;
};
#endif
diff --git a/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp b/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp
index 9f1605b957..a666458fe6 100644
--- a/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp
+++ b/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp
@@ -57,13 +57,31 @@
QTM_USE_NAMESPACE
+namespace
+{
+ void AdjustLogo(const QRect &windowRect, QRect &logoRect, int position)
+ {
+ logoRect.moveTo(windowRect.topLeft());
+ if (position & ShiftedRight)
+ {
+ logoRect.moveRight(windowRect.x() + windowRect.width());
+ }
+
+ if (position & ShiftedDown)
+ {
+ logoRect.moveBottom(windowRect.y() + windowRect.height());
+ }
+ }
+}
+
/*!
Constructs a new tiled map data object, which stores the map data required by
\a geoMap and makes use of the functionality provided by \a engine.
*/
QGeoTiledMapDataNokia::QGeoTiledMapDataNokia(QGeoMappingManagerEngineNokia *engine) :
QGeoTiledMapData(engine),
- watermark(":/images/watermark.png")
+ watermark(":/images/watermark.png"),
+ m_logoPosition(engine->logoPosition())
{
m_networkManager = new QNetworkAccessManager(this);
connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), SLOT(copyrightReplyFinished(QNetworkReply*)));
@@ -185,22 +203,18 @@ QString QGeoTiledMapDataNokia::getViewCopyright()
/*!
\reimp
*/
-void QGeoTiledMapDataNokia::paintProviderNotices(QPainter *painter, const QStyleOptionGraphicsItem *option)
+void QGeoTiledMapDataNokia::paintProviderNotices(QPainter *painter, const QStyleOptionGraphicsItem *)
{
- QRect viewport = painter->combinedTransform().inverted().mapRect(painter->viewport());
-
- painter->drawPixmap(
- viewport.bottomLeft()+QPoint(5,-5-watermark.height()),
- watermark
- );
+ const int offset = 5;
+ QRect viewport = painter->combinedTransform().inverted().mapRect(painter->viewport());
QString copyrightText = getViewCopyright();
if (copyrightText != lastCopyrightText || lastViewport != viewport) {
lastCopyrightText = copyrightText;
lastViewport = viewport;
- QRect maxBoundingRect(QPoint(viewport.left()+10+watermark.width(), viewport.top()), QPoint(viewport.right()-5, viewport.bottom()-5));
+ QRect maxBoundingRect(QPoint(viewport.left()+10+watermark.width(), viewport.top()), QPoint(viewport.right()-offset, viewport.bottom()-offset));
QFont font = painter->font();
font.setPixelSize(12);
@@ -237,9 +251,16 @@ void QGeoTiledMapDataNokia::paintProviderNotices(QPainter *painter, const QStyle
);
}
}
+ viewport.adjust(offset, offset, -offset, -offset);
+
+ QRect watermarkViewRect(viewport), copyrightViewRect(viewport);
+ watermarkViewRect.setWidth(watermarkViewRect.width() - lastCopyrightRect.width());
+ copyrightViewRect.adjust(watermark.width(), 0, 0, 0);
+
+ QRect watermarkRect(watermark.rect()), copyrightRect(lastCopyrightRect);
+ AdjustLogo(watermarkViewRect, watermarkRect, m_logoPosition);
+ AdjustLogo(copyrightViewRect, copyrightRect, m_logoPosition);
- painter->drawPixmap(
- lastCopyrightRect,
- lastCopyright
- );
+ painter->drawPixmap(watermarkRect, watermark);
+ painter->drawPixmap(copyrightRect, lastCopyright);
}
diff --git a/plugins/geoservices/nokia/qgeotiledmapdata_nokia.h b/plugins/geoservices/nokia/qgeotiledmapdata_nokia.h
index f35fc63953..cb2ae1bb3f 100644
--- a/plugins/geoservices/nokia/qgeotiledmapdata_nokia.h
+++ b/plugins/geoservices/nokia/qgeotiledmapdata_nokia.h
@@ -65,6 +65,13 @@ struct CopyrightDescriptor
QList<QGeoBoundingBox> boxes;
};
+enum LogoPosition
+{
+ TopLeft = 0,
+ ShiftedRight = 1,
+ ShiftedDown = 2
+};
+
class QGeoTiledMapDataNokia: public QGeoTiledMapData
{
Q_OBJECT
@@ -87,6 +94,7 @@ private:
QNetworkAccessManager *m_networkManager;
QHash<QString, QList<CopyrightDescriptor> > copyrights;
+ int m_logoPosition;
private slots:
void copyrightReplyFinished(QNetworkReply*);