summaryrefslogtreecommitdiff
path: root/src/plugins/geoservices/nokia
diff options
context:
space:
mode:
authorAlex Wilson <alex.wilson@nokia.com>2012-02-28 13:05:02 +1000
committerQt by Nokia <qt-info@nokia.com>2012-03-05 04:22:24 +0100
commit0287bfee05840511c12100f06f9142e3e2b8f7d5 (patch)
treef5386e27a4b012877d37ab0b99dfc1d5a08705c5 /src/plugins/geoservices/nokia
parentc1d56bdae90f79d466769aa7a357d78a4f2ca6c7 (diff)
downloadqtlocation-0287bfee05840511c12100f06f9142e3e2b8f7d5.tar.gz
New plugin API changes, centralized geoservice feature detection
This change adapts geoservice plugins to use the new Qt5 plugin API, performing boolean feature detection all through the JSON blobs rather than methods on factories or managers. As a result of this centralisation, it was also necessary to rework the QML API for the Plugin element a little. Some additional changes were made to the declarative places plugin to prevent it crashing due to plugins becoming available later than they did previously. Task-number: QTBUG-24331 Change-Id: I26149987344b67091480449103ab1712c869b2a5 Reviewed-by: Aaron McCarthy <aaron.mccarthy@nokia.com>
Diffstat (limited to 'src/plugins/geoservices/nokia')
-rw-r--r--src/plugins/geoservices/nokia/nokia.pro3
-rw-r--r--src/plugins/geoservices/nokia/nokia_plugin.json20
-rw-r--r--src/plugins/geoservices/nokia/qgeocodingmanagerengine_nokia.cpp16
-rw-r--r--src/plugins/geoservices/nokia/qgeoroutingmanagerengine_nokia.cpp9
-rw-r--r--src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.cpp17
-rw-r--r--src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.h9
-rw-r--r--src/plugins/geoservices/nokia/qplacemanagerengine_nokiav1.cpp9
-rw-r--r--src/plugins/geoservices/nokia/qplacemanagerengine_nokiav1.h2
-rw-r--r--src/plugins/geoservices/nokia/qplacemanagerengine_nokiav2.cpp7
-rw-r--r--src/plugins/geoservices/nokia/qplacemanagerengine_nokiav2.h2
10 files changed, 28 insertions, 66 deletions
diff --git a/src/plugins/geoservices/nokia/nokia.pro b/src/plugins/geoservices/nokia/nokia.pro
index 902c0cca..06b051fa 100644
--- a/src/plugins/geoservices/nokia/nokia.pro
+++ b/src/plugins/geoservices/nokia/nokia.pro
@@ -48,3 +48,6 @@ INCLUDEPATH += ../../../location/maps
target.path += $$[QT_INSTALL_PLUGINS]/geoservices
INSTALLS += target
+OTHER_FILES += \
+ nokia_plugin.json
+
diff --git a/src/plugins/geoservices/nokia/nokia_plugin.json b/src/plugins/geoservices/nokia/nokia_plugin.json
new file mode 100644
index 00000000..d8abb0f2
--- /dev/null
+++ b/src/plugins/geoservices/nokia/nokia_plugin.json
@@ -0,0 +1,20 @@
+{
+ "Keys": ["nokia"],
+ "Provider": "nokia",
+ "Version": 100,
+ "Experimental": false,
+ "Features": [
+ "OnlineRoutingFeature",
+ "RouteUpdatesFeature",
+ "AlternativeRoutesFeature",
+ "ExcludeAreasRoutingFeature",
+ "OnlineGeocodingFeature",
+ "OnlineMappingFeature",
+ "OnlinePlacesFeature",
+ "ReverseGeocodingFeature",
+ "PlaceRecommendationsFeature",
+ "SearchSuggestionsFeature",
+ "CorrectionsFeature",
+ "LocalizedPlacesFeature"
+ ]
+}
diff --git a/src/plugins/geoservices/nokia/qgeocodingmanagerengine_nokia.cpp b/src/plugins/geoservices/nokia/qgeocodingmanagerengine_nokia.cpp
index dad8d507..3201f73e 100644
--- a/src/plugins/geoservices/nokia/qgeocodingmanagerengine_nokia.cpp
+++ b/src/plugins/geoservices/nokia/qgeocodingmanagerengine_nokia.cpp
@@ -98,10 +98,6 @@ QGeocodingManagerEngineNokia::QGeocodingManagerEngineNokia(const QMap<QString, Q
m_token = parameters.value("token").toString();
}
-
- setSupportsGeocoding(true);
- setSupportsReverseGeocoding(true);
-
if (error)
*error = QGeoServiceProvider::NoError;
@@ -114,12 +110,6 @@ QGeocodingManagerEngineNokia::~QGeocodingManagerEngineNokia() {}
QGeocodeReply* QGeocodingManagerEngineNokia::geocode(const QGeoAddress &address,
const QGeoBoundingArea &bounds)
{
- if (!supportsGeocoding()) {
- QGeocodeReply *reply = new QGeocodeReply(QGeocodeReply::UnsupportedOptionError, "Geocoding is not supported by this service provider.", this);
- emit error(reply, reply->error(), reply->errorString());
- return reply;
- }
-
QString requestString = "http://";
requestString += m_host;
requestString += "/geocoder/gc/2.0?referer=" + m_referer;
@@ -170,12 +160,6 @@ QGeocodeReply* QGeocodingManagerEngineNokia::geocode(const QGeoAddress &address,
QGeocodeReply* QGeocodingManagerEngineNokia::reverseGeocode(const QGeoCoordinate &coordinate,
const QGeoBoundingArea &bounds)
{
- if (!supportsReverseGeocoding()) {
- QGeocodeReply *reply = new QGeocodeReply(QGeocodeReply::UnsupportedOptionError, "Reverse geocoding is not supported by this service provider.", this);
- emit error(reply, reply->error(), reply->errorString());
- return reply;
- }
-
QString requestString = "http://";
requestString += m_host;
requestString += "/geocoder/rgc/2.0?referer=" + m_referer;
diff --git a/src/plugins/geoservices/nokia/qgeoroutingmanagerengine_nokia.cpp b/src/plugins/geoservices/nokia/qgeoroutingmanagerengine_nokia.cpp
index 6a3955dc..ab9e156e 100644
--- a/src/plugins/geoservices/nokia/qgeoroutingmanagerengine_nokia.cpp
+++ b/src/plugins/geoservices/nokia/qgeoroutingmanagerengine_nokia.cpp
@@ -69,7 +69,7 @@ QGeoRoutingManagerEngineNokia::QGeoRoutingManagerEngineNokia(const QMap<QString,
if (!proxy.isEmpty()) {
QUrl proxyUrl(proxy);
if (proxyUrl.isValid()) {
- m_networkManager->setProxy(QNetworkProxy(QNetworkProxy::HttpProxy,
+ m_networkManager->setProxy(QNetworkProxy(QNetworkProxy::HttpProxy,
proxyUrl.host(),
proxyUrl.port(8080),
proxyUrl.userName(),
@@ -95,10 +95,6 @@ QGeoRoutingManagerEngineNokia::QGeoRoutingManagerEngineNokia(const QMap<QString,
m_token = parameters.value("token").toString();
}
- setSupportsRouteUpdates(true);
- setSupportsAlternativeRoutes(true);
- setSupportsExcludeAreas(true);
-
QGeoRouteRequest::FeatureTypes featureTypes;
featureTypes |= QGeoRouteRequest::TollFeature;
featureTypes |= QGeoRouteRequest::HighwayFeature;
@@ -232,9 +228,6 @@ QString QGeoRoutingManagerEngineNokia::calculateRouteRequestString(const QGeoRou
{
bool supported = checkEngineSupport(request, request.travelModes());
- if ((request.numberAlternativeRoutes() != 0) && !supportsAlternativeRoutes())
- supported = false;
-
if (!supported)
return "";
diff --git a/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.cpp b/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.cpp
index da0f45a8..7fd08bae 100644
--- a/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.cpp
+++ b/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.cpp
@@ -63,21 +63,6 @@ QGeoServiceProviderFactoryNokia::QGeoServiceProviderFactoryNokia() {}
QGeoServiceProviderFactoryNokia::~QGeoServiceProviderFactoryNokia() {}
-QString QGeoServiceProviderFactoryNokia::providerName() const
-{
- return "nokia";
-}
-
-QStringList QGeoServiceProviderFactoryNokia::keys() const
-{
- return QStringList() << QLatin1String("nokia");
-}
-
-int QGeoServiceProviderFactoryNokia::providerVersion() const
-{
- return 1;
-}
-
QGeocodingManagerEngine* QGeoServiceProviderFactoryNokia::createGeocodingManagerEngine(const QMap<QString, QVariant> &parameters,
QGeoServiceProvider::Error *error,
QString *errorString) const
@@ -116,6 +101,4 @@ QPlaceManagerEngine *QGeoServiceProviderFactoryNokia::createPlaceManagerEngine(c
const QString QGeoServiceProviderFactoryNokia::defaultToken("152022572f0e44e07489c35cd46fa246");
const QString QGeoServiceProviderFactoryNokia::defaultReferer("qtlocationapi");
-Q_EXPORT_PLUGIN2(qtgeoservices_nokia, QGeoServiceProviderFactoryNokia)
-
QT_END_NAMESPACE
diff --git a/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.h b/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.h
index 158fc15f..52acea36 100644
--- a/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.h
+++ b/src/plugins/geoservices/nokia/qgeoserviceproviderplugin_nokia.h
@@ -57,15 +57,14 @@ QT_BEGIN_NAMESPACE
class QGeoServiceProviderFactoryNokia : public QObject, public QGeoServiceProviderFactory
{
Q_OBJECT
- Q_INTERFACES(QGeoServiceProviderFactory:QFactoryInterface)
+ Q_INTERFACES(QGeoServiceProviderFactory)
+ Q_PLUGIN_METADATA(IID "org.qt-project.qt.geoservice.serviceproviderfactory/5.0"
+ FILE "nokia_plugin.json")
+
public:
QGeoServiceProviderFactoryNokia();
~QGeoServiceProviderFactoryNokia();
- QString providerName() const;
- int providerVersion() const;
- QStringList keys() const;
-
QGeocodingManagerEngine* createGeocodingManagerEngine(const QMap<QString, QVariant> &parameters,
QGeoServiceProvider::Error *error,
QString *errorString) const;
diff --git a/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav1.cpp b/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav1.cpp
index 8d622d72..cc3db994 100644
--- a/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav1.cpp
+++ b/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav1.cpp
@@ -309,15 +309,6 @@ void QPlaceManagerEngineNokiaV1::setLocales(const QList<QLocale> &locales)
QPlaceRestManager::instance()->setLocales(locales);
}
-
-QPlaceManager::ManagerFeatures QPlaceManagerEngineNokiaV1::supportedFeatures() const
-{
- return QPlaceManager::RecommendationsFeature
- | QPlaceManager::SearchSuggestionsFeature
- | QPlaceManager::CorrectionsFeature
- | QPlaceManager::LocaleFeature;
-}
-
void QPlaceManagerEngineNokiaV1::processingError(QPlaceReply *reply,
const QPlaceReply::Error &errorId,
const QString &errorMessage)
diff --git a/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav1.h b/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav1.h
index 08bc30cb..436c3e6c 100644
--- a/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav1.h
+++ b/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav1.h
@@ -91,8 +91,6 @@ public:
QList<QLocale> locales() const;
void setLocales(const QList<QLocale> &locales);
- QPlaceManager::ManagerFeatures supportedFeatures() const;
-
private slots:
void processingError(QPlaceReply *reply, const QPlaceReply::Error &error, const QString &errorMessage);
void processingFinished(QPlaceReply *reply);
diff --git a/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav2.cpp b/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav2.cpp
index 7026717d..1a7fcc8d 100644
--- a/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav2.cpp
+++ b/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav2.cpp
@@ -499,13 +499,6 @@ void QPlaceManagerEngineNokiaV2::setLocales(const QList<QLocale> &locales)
m_locales = locales;
}
-QPlaceManager::ManagerFeatures QPlaceManagerEngineNokiaV2::supportedFeatures() const
-{
- return QPlaceManager::RecommendationsFeature |
- QPlaceManager::SearchSuggestionsFeature |
- QPlaceManager::LocaleFeature;
-}
-
void QPlaceManagerEngineNokiaV2::replyFinished()
{
QPlaceReply *reply = qobject_cast<QPlaceReply *>(sender());
diff --git a/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav2.h b/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav2.h
index a9afbb9a..526f5bbe 100644
--- a/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav2.h
+++ b/src/plugins/geoservices/nokia/qplacemanagerengine_nokiav2.h
@@ -105,8 +105,6 @@ public:
QList<QLocale> locales() const;
void setLocales(const QList<QLocale> &locales);
- QPlaceManager::ManagerFeatures supportedFeatures() const;
-
private:
QNetworkReply *sendRequest(const QUrl &url);
QByteArray createLanguageString() const;