diff options
Diffstat (limited to 'src/plugins')
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(©rightsSlab); - 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(©rightsSlab); + 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() |