summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVladimir Bezkorovainyi <vladimir.bezkorovainyi@nokia.com>2012-05-24 19:02:47 +0200
committerQt by Nokia <qt-info@nokia.com>2012-06-04 13:52:43 +0200
commit8b5dee29df22155b3dedf32861053db299112094 (patch)
tree5680a21d52e5d29664439caef8c1807493c481d6 /src
parent81ee36a1a88c0430ce54318b8ef82987158038f7 (diff)
downloadqtlocation-8b5dee29df22155b3dedf32861053db299112094.tar.gz
Populate error information if required parameters (app_id and token) are absent.
Change-Id: Ia110416b1cd64425abcb3ebcf79209b635050b0b Reviewed-by: Jean Gressmann <jean.gressmann@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/imports/location/qdeclarativegeocodemodel.cpp2
-rw-r--r--src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.cpp116
-rw-r--r--src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.h8
3 files changed, 50 insertions, 76 deletions
diff --git a/src/imports/location/qdeclarativegeocodemodel.cpp b/src/imports/location/qdeclarativegeocodemodel.cpp
index 1b783bae..4e8ece13 100644
--- a/src/imports/location/qdeclarativegeocodemodel.cpp
+++ b/src/imports/location/qdeclarativegeocodemodel.cpp
@@ -41,8 +41,8 @@
#include "qdeclarativegeocodemodel_p.h"
#include "error_messages.h"
-
#include "qdeclarativegeolocation_p.h"
+
#include <QtQml/qqmlinfo.h>
#include <qgeoserviceprovider.h>
diff --git a/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.cpp b/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.cpp
index 1b8920b4..1f68b69e 100644
--- a/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.cpp
+++ b/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.cpp
@@ -54,53 +54,72 @@
#include "qplacemanagerengine_nokiav1.h"
#include "qplacemanagerengine_nokiav2.h"
#include "qgeointrinsicnetworkaccessmanager.h"
+#include "qgeoerror_messages.h"
#include <QtPlugin>
#include <QNetworkProxy>
+#include <QCoreApplication>
QT_BEGIN_NAMESPACE
-static bool isValidParameter(const QString &param)
+namespace
{
- if (param.isEmpty())
- return false;
-
- if (param.length() > 512)
- return false;
+ bool isValidParameter(const QString &param)
+ {
+ if (param.isEmpty())
+ return false;
- foreach (QChar c, param) {
- if (!c.isLetterOrNumber() && c.toLatin1() != '%' && c.toLatin1() != '-' &&
- c.toLatin1() != '+' && c.toLatin1() != '_') {
+ if (param.length() > 512)
return false;
+
+ foreach (QChar c, param) {
+ if (!c.isLetterOrNumber() && c.toLatin1() != '%' && c.toLatin1() != '-' &&
+ c.toLatin1() != '+' && c.toLatin1() != '_') {
+ return false;
+ }
}
+ return true;
}
- return true;
-}
+ QGeoNetworkAccessManager *tryGetNetworkAccessManager(const QVariantMap &parameters)
+ {
+ return static_cast<QGeoNetworkAccessManager *>(qvariant_cast<void *>(parameters.value(QStringLiteral("nam"))));
+ }
-static QGeoNetworkAccessManager *tryGetNetworkAccessManager(const QVariantMap &parameters)
-{
- return static_cast<QGeoNetworkAccessManager *>(qvariant_cast<void *>(parameters.value(QStringLiteral("nam"))));
-}
+ void checkUsageTerms(const QVariantMap &parameters, QGeoServiceProvider::Error *error, QString *errorString)
+ {
+ const QString appId = parameters.value(QLatin1String("app_id")).toString();
+ const QString token = parameters.value(QLatin1String("token")).toString();
-QGeoServiceProviderFactoryNokia::QGeoServiceProviderFactoryNokia()
- : m_informedAboutUsageTerms(false)
-{}
+ if (!isValidParameter(appId) || !isValidParameter(token)) {
-QGeoServiceProviderFactoryNokia::~QGeoServiceProviderFactoryNokia() {}
+ *error = QGeoServiceProvider::MissingRequiredParameterError;
+ *errorString = QCoreApplication::translate(NOKIA_PLUGIN_CONTEXT_NAME, MISSED_CREDENTIALS);
+ }
+ }
+
+ template<class TInstance>
+ TInstance * CreateInstanceOf(const QVariantMap &parameters, QGeoServiceProvider::Error *error, QString *errorString)
+ {
+ checkUsageTerms(parameters, error, errorString);
+
+ if (*error != QGeoServiceProvider::NoError)
+ return 0;
+
+ QGeoNetworkAccessManager *networkManager = tryGetNetworkAccessManager(parameters);
+ if (!networkManager)
+ networkManager = new QGeoIntrinsicNetworkAccessManager(parameters);
+
+ return new TInstance(networkManager, parameters, error, errorString);
+ }
+}
QGeocodingManagerEngine *QGeoServiceProviderFactoryNokia::createGeocodingManagerEngine(
const QVariantMap &parameters,
QGeoServiceProvider::Error *error,
QString *errorString) const
{
- informOnceAboutUsageTermsIfNecessary(parameters);
-
- QGeoNetworkAccessManager *networkManager = tryGetNetworkAccessManager(parameters);
- if (!networkManager)
- networkManager = new QGeoIntrinsicNetworkAccessManager(parameters);
-
- return new QGeocodingManagerEngineNokia(networkManager, parameters, error, errorString);
+ return CreateInstanceOf<QGeocodingManagerEngineNokia>(parameters, error, errorString);
}
QGeoMappingManagerEngine *QGeoServiceProviderFactoryNokia::createMappingManagerEngine(
@@ -108,13 +127,7 @@ QGeoMappingManagerEngine *QGeoServiceProviderFactoryNokia::createMappingManagerE
QGeoServiceProvider::Error *error,
QString *errorString) const
{
- informOnceAboutUsageTermsIfNecessary(parameters);
-
- QGeoNetworkAccessManager *networkManager = tryGetNetworkAccessManager(parameters);
- if (!networkManager)
- networkManager = new QGeoIntrinsicNetworkAccessManager(parameters, QStringLiteral("mapping.proxy"));
-
- return new QGeoTiledMappingManagerEngineNokia(networkManager, parameters, error, errorString);
+ return CreateInstanceOf<QGeoTiledMappingManagerEngineNokia>(parameters, error, errorString);
}
QGeoRoutingManagerEngine *QGeoServiceProviderFactoryNokia::createRoutingManagerEngine(
@@ -122,13 +135,7 @@ QGeoRoutingManagerEngine *QGeoServiceProviderFactoryNokia::createRoutingManagerE
QGeoServiceProvider::Error *error,
QString *errorString) const
{
- informOnceAboutUsageTermsIfNecessary(parameters);
-
- QGeoNetworkAccessManager *networkManager = tryGetNetworkAccessManager(parameters);
- if (!networkManager)
- networkManager = new QGeoIntrinsicNetworkAccessManager(parameters, QStringLiteral("routing.proxy"));
-
- return new QGeoRoutingManagerEngineNokia(networkManager, parameters, error, errorString);
+ return CreateInstanceOf<QGeoRoutingManagerEngineNokia>(parameters, error, errorString);
}
QPlaceManagerEngine *QGeoServiceProviderFactoryNokia::createPlaceManagerEngine(
@@ -136,38 +143,13 @@ QPlaceManagerEngine *QGeoServiceProviderFactoryNokia::createPlaceManagerEngine(
QGeoServiceProvider::Error *error,
QString *errorString) const
{
- informOnceAboutUsageTermsIfNecessary(parameters);
-
- QGeoNetworkAccessManager *networkManager = tryGetNetworkAccessManager(parameters);
- if (!networkManager)
- networkManager = new QGeoIntrinsicNetworkAccessManager(parameters, QStringLiteral("places.proxy"));
-
switch (parameters.value(QLatin1String("places.api_version"), 2).toUInt()) {
case 1:
- return new QPlaceManagerEngineNokiaV1(networkManager, parameters, error, errorString);
+ return CreateInstanceOf<QPlaceManagerEngineNokiaV1>(parameters, error, errorString);
case 2:
- return new QPlaceManagerEngineNokiaV2(networkManager, parameters, error, errorString);
+ return CreateInstanceOf<QPlaceManagerEngineNokiaV2>(parameters, error, errorString);
}
-
return 0;
}
-void QGeoServiceProviderFactoryNokia::informOnceAboutUsageTermsIfNecessary(
- const QVariantMap &parameters) const
-{
- if (m_informedAboutUsageTerms)
- return;
-
- const QString appId = parameters.value(QLatin1String("app_id")).toString();
- const QString token = parameters.value(QLatin1String("token")).toString();
-
- if (!isValidParameter(appId) || !isValidParameter(token)) {
- m_informedAboutUsageTerms = true;
- qWarning() << "****************************************************************************";
- qWarning() << "* Qt Location requires usage of app_id and token parameters obtained from: *";
- qWarning() << "* https://api.developer.nokia.com/ *";
- qWarning() << "****************************************************************************";
- }
-}
-
QT_END_NAMESPACE
diff --git a/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.h b/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.h
index 4af3bcb4..38d43b02 100644
--- a/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.h
+++ b/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.h
@@ -64,9 +64,6 @@ class QGeoServiceProviderFactoryNokia : public QObject, public QGeoServiceProvid
FILE "nokia_plugin.json")
public:
- QGeoServiceProviderFactoryNokia();
- ~QGeoServiceProviderFactoryNokia();
-
QGeocodingManagerEngine *createGeocodingManagerEngine(const QVariantMap &parameters,
QGeoServiceProvider::Error *error,
QString *errorString) const;
@@ -79,11 +76,6 @@ public:
QPlaceManagerEngine *createPlaceManagerEngine(const QVariantMap &parameters,
QGeoServiceProvider::Error *error,
QString *errorString) const;
-private:
- void informOnceAboutUsageTermsIfNecessary(const QVariantMap &parameters) const;
-
-private:
- mutable bool m_informedAboutUsageTerms;
};
QT_END_NAMESPACE