summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp76
-rw-r--r--src/plugins/position/android/src/jnipositioning.cpp8
-rw-r--r--src/plugins/position/position.pro4
-rw-r--r--src/plugins/position/simulator/qlocationconnection_simulator.cpp5
4 files changed, 34 insertions, 59 deletions
diff --git a/src/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp b/src/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp
index 563d8270..6aa97762 100644
--- a/src/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp
+++ b/src/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp
@@ -69,78 +69,52 @@ QT_BEGIN_NAMESPACE
*/
QGeoTiledMapDataNokia::QGeoTiledMapDataNokia(QGeoTiledMappingManagerEngineNokia *engine, QObject *parent /*= 0*/) :
QGeoTiledMapData(engine, parent),
- logo(":/images/logo.png"), // HERE logo image
- copyrightsSlab(1, 1, QImage::Format_ARGB32) {}
+ logo(":/images/logo.png") // HERE logo image
+{}
QGeoTiledMapDataNokia::~QGeoTiledMapDataNokia() {}
void QGeoTiledMapDataNokia::evaluateCopyrights(const QSet<QGeoTileSpec> &visibleTiles)
{
const int copyrightsMargin = 10;
- const int shadowWidth = 3;
+ const int spaceToLogo = 4;
+ const int blurRate = 1;
const int fontSize = 10;
QGeoTiledMappingManagerEngineNokia *engineNokia = static_cast<QGeoTiledMappingManagerEngineNokia *>(engine());
const QString copyrightsString = engineNokia->evaluateCopyrightsText(activeMapType(), mapController()->zoom(), visibleTiles);
- if (width() > 0 && height() > 0 && (lastCopyrightsString.isNull() || copyrightsString != lastCopyrightsString)) {
- copyrightsSlab = copyrightsSlab.copy(0, 0, width(), height());
-
- // Blank image with full alpha
- copyrightsSlab.fill(Qt::transparent);
-
- QPainter painter(&copyrightsSlab);
- painter.drawImage(QPoint(0, copyrightsSlab.height() - logo.height()), logo);
-
- QColor fontColor(Qt::black);
- fontColor.setAlpha(64);
+ if (width() > 0 && height() > 0 && ((copyrightsString.isNull() && copyrightsSlab.isNull()) || copyrightsString != lastCopyrightsString)) {
QFont font("Sans Serif");
font.setPixelSize(fontSize);
font.setStyleHint(QFont::SansSerif);
font.setWeight(QFont::Bold);
+ QRect textBounds = QFontMetrics(font).boundingRect(0, 0, width(), height(), Qt::AlignBottom | Qt::AlignLeft | Qt::TextWordWrap, copyrightsString);
+
+ copyrightsSlab = QImage(logo.width() + textBounds.width() + spaceToLogo + blurRate * 2,
+ qMax(logo.height(), textBounds.height() + blurRate * 2),
+ QImage::Format_ARGB32_Premultiplied);
+ copyrightsSlab.fill(Qt::transparent);
+
+ QPainter painter(&copyrightsSlab);
+ painter.drawImage(QPoint(0, copyrightsSlab.height() - logo.height()), logo);
painter.setFont(font);
- painter.setPen(fontColor);
- QRect textLimitsRect(logo.width(),
- 0,
- copyrightsSlab.width() - (logo.width() + copyrightsMargin * 2),
- copyrightsSlab.height());
-
- // Drawing the copyrights base shadow (watermark)
- QRect textBoundingRect;
- QRect wmRect(textLimitsRect);
- int x, y;
- for (x = 0; x < shadowWidth; x++) {
- wmRect.setLeft(textLimitsRect.left() + x);
- for (y = 0; y < shadowWidth; y++) {
- wmRect.setBottom(textLimitsRect.bottom() - y);
- painter.drawText(wmRect,
- Qt::AlignLeft | Qt::AlignBottom | Qt::TextWordWrap,
- copyrightsString,
- &textBoundingRect);
+ painter.setPen(QColor(0, 0, 0, 64));
+ painter.translate(spaceToLogo + logo.width(), -blurRate);
+ for (int x=-blurRate; x<=blurRate; ++x) {
+ for (int y=-blurRate; y<=blurRate; ++y) {
+ painter.drawText(x, y, textBounds.width(), copyrightsSlab.height(),
+ Qt::AlignBottom | Qt::AlignLeft | Qt::TextWordWrap,
+ copyrightsString);
}
}
-
- // Drawing the copyrights text top face
- font.setWeight(QFont::Bold);
- fontColor = Qt::white;
- painter.setFont(font);
- painter.setPen(fontColor);
- wmRect.setLeft(textLimitsRect.left() + 1);
- wmRect.setBottom(textLimitsRect.bottom() - 1);
- painter.drawText(wmRect,
- Qt::AlignLeft | Qt::AlignBottom | Qt::TextWordWrap,
- copyrightsString,
- &textBoundingRect);
-
+ painter.setPen(Qt::white);
+ painter.drawText(0, 0, textBounds.width(), copyrightsSlab.height(),
+ Qt::AlignBottom | Qt::AlignLeft | Qt::TextWordWrap,
+ copyrightsString);
painter.end();
- int newHeight = qMax(logo.height(), textBoundingRect.height());
-
- copyrightsSlab = copyrightsSlab.copy(0, copyrightsSlab.height() - newHeight,
- logo.width() + textBoundingRect.width() + shadowWidth + copyrightsMargin * 2,
- newHeight);
-
QPoint copyrightsPos(copyrightsMargin, height() - (copyrightsSlab.height() + copyrightsMargin));
lastCopyrightsPos = copyrightsPos;
emit copyrightsChanged(copyrightsSlab, copyrightsPos);
diff --git a/src/plugins/position/android/src/jnipositioning.cpp b/src/plugins/position/android/src/jnipositioning.cpp
index 6b49b9fe..afae1c8e 100644
--- a/src/plugins/position/android/src/jnipositioning.cpp
+++ b/src/plugins/position/android/src/jnipositioning.cpp
@@ -167,7 +167,9 @@ namespace AndroidPositioning {
__android_log_print(ANDROID_LOG_INFO, logTag, "Unknown positioningMethod");
}
}
+
env.jniEnv->ReleaseIntArrayElements(jProviders, providers, 0);
+ env.jniEnv->DeleteLocalRef(jProviders);
return ret;
}
@@ -261,6 +263,7 @@ namespace AndroidPositioning {
info.setAttribute(QGeoPositionInfo::Direction, bearing);
}
+ jniEnv->DeleteLocalRef(thisClass);
return info;
}
@@ -340,7 +343,10 @@ namespace AndroidPositioning {
if (location == 0)
return QGeoPositionInfo();
- return positionInfoFromJavaLocation(env.jniEnv, location);
+ const QGeoPositionInfo info = positionInfoFromJavaLocation(env.jniEnv, location);
+ env.jniEnv->DeleteLocalRef(location);
+
+ return info;
}
inline int positioningMethodToInt(QGeoPositionInfoSource::PositioningMethods m)
diff --git a/src/plugins/position/position.pro b/src/plugins/position/position.pro
index 207b949b..0e2f9a5d 100644
--- a/src/plugins/position/position.pro
+++ b/src/plugins/position/position.pro
@@ -2,10 +2,10 @@ TEMPLATE = subdirs
config_geoclue:SUBDIRS += geoclue
config_gypsy:SUBDIRS += gypsy
-simulator:SUBDIRS += simulator
+qtHaveModule(simulator):SUBDIRS += simulator
blackberry:SUBDIRS += blackberry
ios:SUBDIRS += corelocation
-android:SUBDIRS += android
+android:!android-no-sdk:SUBDIRS += android
SUBDIRS += \
positionpoll
diff --git a/src/plugins/position/simulator/qlocationconnection_simulator.cpp b/src/plugins/position/simulator/qlocationconnection_simulator.cpp
index b78eb1cf..02ccad7a 100644
--- a/src/plugins/position/simulator/qlocationconnection_simulator.cpp
+++ b/src/plugins/position/simulator/qlocationconnection_simulator.cpp
@@ -73,11 +73,6 @@ namespace Simulator
// register for location notifications
mWorker->call("setRequestsLocationInfo");
-
- // wait until initial data is received
- QEventLoop loop;
- connect(this, SIGNAL(initialDataReceived()), &loop, SLOT(quit()));
- loop.exec();
}
LocationConnection::~LocationConnection()