From d7df0fa2952e3a00032ff50b0dc10ad93be57f54 Mon Sep 17 00:00:00 2001 From: Paolo Angelelli <paolo.angelelli@qt.io> Date: Wed, 7 Mar 2018 17:40:23 +0100 Subject: [PATCH] API Fix: change QGeoRouteRequest::extraParameters into QVariantMap Needed as it turns out the QGeoRouteRequest associated with a QGeoRoute has to be exposed also through the declarative API (so QDeclarativeGeoRoute must expose an associated QDeclarativeGeoRouteRequest). QDeclarativeGeoRouteRequest was, until now, intended to be only a one-way API (to feed data into the plugin). Now that it has also to expose data coming from the plugin, including the associated extraParameters that do would come anymore from nested MapParameters but from the QGeoRouteRequest itself. For this reason the type has to be a QML-friently type. Change-Id: I083e0fe97ad1088f6084665037003e24edb54371 Reviewed-by: Lars Knoll <lars.knoll@qt.io> --- .../declarativemaps/qdeclarativegeoroutemodel.cpp | 2 +- src/location/maps/qgeorouterequest.cpp | 4 ++-- src/location/maps/qgeorouterequest.h | 4 ++-- src/location/maps/qgeorouterequest_p.h | 2 +- .../geotestplugin/qgeoroutingmanagerengine_test.h | 2 +- .../auto/qgeorouterequest/tst_qgeorouterequest.cpp | 14 ++++++++------ 6 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/location/declarativemaps/qdeclarativegeoroutemodel.cpp b/src/location/declarativemaps/qdeclarativegeoroutemodel.cpp index 8066d917a..0a95ddf9a 100644 --- a/src/location/declarativemaps/qdeclarativegeoroutemodel.cpp +++ b/src/location/declarativemaps/qdeclarativegeoroutemodel.cpp @@ -1442,7 +1442,7 @@ QGeoRouteRequest QDeclarativeGeoRouteQuery::routeRequest() m_extraParametersChanged = false; // Update extra params into request const QList<QDeclarativeGeoMapParameter *> params = quickChildren<QDeclarativeGeoMapParameter>(); - QMap<QString, QVariantMap> extraParameters; + QVariantMap extraParameters; for (const QDeclarativeGeoMapParameter *p: params) extraParameters[p->type()] = p->toVariantMap(); request_.setExtraParameters(extraParameters); diff --git a/src/location/maps/qgeorouterequest.cpp b/src/location/maps/qgeorouterequest.cpp index ab0a31095..57ef1c03c 100644 --- a/src/location/maps/qgeorouterequest.cpp +++ b/src/location/maps/qgeorouterequest.cpp @@ -473,7 +473,7 @@ QGeoRouteRequest::ManeuverDetail QGeoRouteRequest::maneuverDetail() const \since 5.11 */ -void QGeoRouteRequest::setExtraParameters(const QMap<QString, QVariantMap> &extraParameters) +void QGeoRouteRequest::setExtraParameters(const QVariantMap &extraParameters) { d_ptr->extraParameters = extraParameters; } @@ -483,7 +483,7 @@ void QGeoRouteRequest::setExtraParameters(const QMap<QString, QVariantMap> &extr \since 5.11 */ -QMap<QString, QVariantMap> QGeoRouteRequest::extraParameters() const +QVariantMap QGeoRouteRequest::extraParameters() const { return d_ptr->extraParameters; } diff --git a/src/location/maps/qgeorouterequest.h b/src/location/maps/qgeorouterequest.h index 2c34479ba..5a4bc61e6 100644 --- a/src/location/maps/qgeorouterequest.h +++ b/src/location/maps/qgeorouterequest.h @@ -149,8 +149,8 @@ public: void setManeuverDetail(ManeuverDetail maneuverDetail); ManeuverDetail maneuverDetail() const; - void setExtraParameters(const QMap<QString, QVariantMap> &extraParameters); - QMap<QString, QVariantMap> extraParameters() const; + void setExtraParameters(const QVariantMap &extraParameters); + QVariantMap extraParameters() const; private: QExplicitlySharedDataPointer<QGeoRouteRequestPrivate> d_ptr; diff --git a/src/location/maps/qgeorouterequest_p.h b/src/location/maps/qgeorouterequest_p.h index 7b3a84993..df0cd62c3 100644 --- a/src/location/maps/qgeorouterequest_p.h +++ b/src/location/maps/qgeorouterequest_p.h @@ -77,7 +77,7 @@ public: QGeoRouteRequest::RouteOptimizations routeOptimization; QGeoRouteRequest::SegmentDetail segmentDetail; QGeoRouteRequest::ManeuverDetail maneuverDetail; - QMap<QString, QVariantMap> extraParameters; + QVariantMap extraParameters; }; QT_END_NAMESPACE diff --git a/tests/auto/geotestplugin/qgeoroutingmanagerengine_test.h b/tests/auto/geotestplugin/qgeoroutingmanagerengine_test.h index 0a0ec463c..303015b77 100644 --- a/tests/auto/geotestplugin/qgeoroutingmanagerengine_test.h +++ b/tests/auto/geotestplugin/qgeoroutingmanagerengine_test.h @@ -169,7 +169,7 @@ public: QList<QGeoRoute> routes; int travelTime = 0; if (request.extraParameters().contains("test-traveltime")) - travelTime = request.extraParameters().value("test-traveltime").value("requestedTime").toInt(); + travelTime = request.extraParameters().value("test-traveltime").toMap().value("requestedTime").toInt(); for (int i = 0; i < request.numberAlternativeRoutes(); ++i) { QGeoRoute route; diff --git a/tests/auto/qgeorouterequest/tst_qgeorouterequest.cpp b/tests/auto/qgeorouterequest/tst_qgeorouterequest.cpp index 508571c36..d29e3d497 100644 --- a/tests/auto/qgeorouterequest/tst_qgeorouterequest.cpp +++ b/tests/auto/qgeorouterequest/tst_qgeorouterequest.cpp @@ -321,25 +321,27 @@ void tst_QGeoRouteRequest::featureWeight() void tst_QGeoRouteRequest::extraParameters_data() { - QTest::addColumn<QMap<QString, QVariantMap>>("extraParameters"); + QTest::addColumn<QVariantMap>("extraParameters"); - QMap<QString, QVariantMap> params; + QVariantMap params; QTest::newRow("Empty") << params; - params["param1"] = {{"property1", QVariant(42)} , {"property2", QVariant("42")} , {"property3", QVariant("42.0")}}; + const QVariantMap param1 = {{"property1", QVariant(42)} , {"property2", QVariant("42")} , {"property3", QVariant("42.0")}}; + params["param1"] = param1; QTest::newRow("One param") << params; - params["param2"] = {{"property1", QVariant(43)} , {"property2", QVariant("43")} , {"property3", QVariant("43.0")}}; + const QVariantMap param2 = {{"property1", QVariant(43)} , {"property2", QVariant("43")} , {"property3", QVariant("43.0")}}; + params["param2"] = param2; QTest::newRow("Two params") << params; } void tst_QGeoRouteRequest::extraParameters() { - typedef QMap<QString, QVariantMap> ParameterType; + typedef QVariantMap ParameterType; QFETCH(ParameterType , extraParameters); - QMap<QString, QVariantMap> emptyParams; + QVariantMap emptyParams; qgeorouterequest->setExtraParameters(extraParameters); QCOMPARE(qgeorouterequest->extraParameters(), extraParameters); qgeorouterequest->setExtraParameters(emptyParams); -- GitLab