diff options
-rw-r--r-- | src/location/maps/qgeorouterequest.cpp | 27 | ||||
-rw-r--r-- | src/location/maps/qgeorouterequest.h | 3 | ||||
-rw-r--r-- | src/location/maps/qgeorouterequest_p.h | 1 | ||||
-rw-r--r-- | tests/auto/qgeorouterequest/tst_qgeorouterequest.cpp | 26 | ||||
-rw-r--r-- | tests/auto/qgeorouterequest/tst_qgeorouterequest.h | 2 |
5 files changed, 57 insertions, 2 deletions
diff --git a/src/location/maps/qgeorouterequest.cpp b/src/location/maps/qgeorouterequest.cpp index a1b32d85..977246ee 100644 --- a/src/location/maps/qgeorouterequest.cpp +++ b/src/location/maps/qgeorouterequest.cpp @@ -446,6 +446,27 @@ QGeoRouteRequest::ManeuverDetail QGeoRouteRequest::maneuverDetail() const return d_ptr->maneuverDetail; } +/*! + Sets the extra parameters for the route request. + The format of the extra parameters is plugin specific, and documented per plugin. + + \since 5.11 +*/ +void QGeoRouteRequest::setExtraParameters(const QMap<QString, QVariantMap> &extraParameters) +{ + d_ptr->extraParameters = extraParameters; +} + +/*! + Returns the extra parameters set for this route request. + + \since 5.11 +*/ +QMap<QString, QVariantMap> QGeoRouteRequest::extraParameters() const +{ + return d_ptr->extraParameters; +} + /******************************************************************************* *******************************************************************************/ @@ -466,7 +487,8 @@ QGeoRouteRequestPrivate::QGeoRouteRequestPrivate(const QGeoRouteRequestPrivate & featureWeights(other.featureWeights), routeOptimization(other.routeOptimization), segmentDetail(other.segmentDetail), - maneuverDetail(other.maneuverDetail) {} + maneuverDetail(other.maneuverDetail), + extraParameters(other.extraParameters) {} QGeoRouteRequestPrivate::~QGeoRouteRequestPrivate() {} @@ -479,7 +501,8 @@ bool QGeoRouteRequestPrivate::operator ==(const QGeoRouteRequestPrivate &other) && (featureWeights == other.featureWeights) && (routeOptimization == other.routeOptimization) && (segmentDetail == other.segmentDetail) - && (maneuverDetail == other.maneuverDetail)); + && (maneuverDetail == other.maneuverDetail) + && (extraParameters == other.extraParameters)); } QT_END_NAMESPACE diff --git a/src/location/maps/qgeorouterequest.h b/src/location/maps/qgeorouterequest.h index cf89d13d..256fc67f 100644 --- a/src/location/maps/qgeorouterequest.h +++ b/src/location/maps/qgeorouterequest.h @@ -146,6 +146,9 @@ public: void setManeuverDetail(ManeuverDetail maneuverDetail); ManeuverDetail maneuverDetail() const; + void setExtraParameters(const QMap<QString, QVariantMap> &extraParameters); + QMap<QString, 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 ea0b1428..7ce4b9e5 100644 --- a/src/location/maps/qgeorouterequest_p.h +++ b/src/location/maps/qgeorouterequest_p.h @@ -75,6 +75,7 @@ public: QGeoRouteRequest::RouteOptimizations routeOptimization; QGeoRouteRequest::SegmentDetail segmentDetail; QGeoRouteRequest::ManeuverDetail maneuverDetail; + QMap<QString, QVariantMap> extraParameters; }; QT_END_NAMESPACE diff --git a/tests/auto/qgeorouterequest/tst_qgeorouterequest.cpp b/tests/auto/qgeorouterequest/tst_qgeorouterequest.cpp index 5c43de65..508571c3 100644 --- a/tests/auto/qgeorouterequest/tst_qgeorouterequest.cpp +++ b/tests/auto/qgeorouterequest/tst_qgeorouterequest.cpp @@ -319,5 +319,31 @@ void tst_QGeoRouteRequest::featureWeight() QVERIFY(qgeorouterequest->featureTypes().contains(type)); } +void tst_QGeoRouteRequest::extraParameters_data() +{ + QTest::addColumn<QMap<QString, QVariantMap>>("extraParameters"); + + QMap<QString, QVariantMap> params; + QTest::newRow("Empty") << params; + + params["param1"] = {{"property1", QVariant(42)} , {"property2", QVariant("42")} , {"property3", QVariant("42.0")}}; + + QTest::newRow("One param") << params; + + params["param2"] = {{"property1", QVariant(43)} , {"property2", QVariant("43")} , {"property3", QVariant("43.0")}}; + + QTest::newRow("Two params") << params; +} + +void tst_QGeoRouteRequest::extraParameters() +{ + typedef QMap<QString, QVariantMap> ParameterType; + QFETCH(ParameterType , extraParameters); + QMap<QString, QVariantMap> emptyParams; + qgeorouterequest->setExtraParameters(extraParameters); + QCOMPARE(qgeorouterequest->extraParameters(), extraParameters); + qgeorouterequest->setExtraParameters(emptyParams); + QCOMPARE(qgeorouterequest->extraParameters(), emptyParams); +} QTEST_APPLESS_MAIN(tst_QGeoRouteRequest); diff --git a/tests/auto/qgeorouterequest/tst_qgeorouterequest.h b/tests/auto/qgeorouterequest/tst_qgeorouterequest.h index 736510ff..12506cf6 100644 --- a/tests/auto/qgeorouterequest/tst_qgeorouterequest.h +++ b/tests/auto/qgeorouterequest/tst_qgeorouterequest.h @@ -72,6 +72,8 @@ private Q_SLOTS: void maneuverDetail_data(); void featureWeight(); void featureWeight_data(); + void extraParameters(); + void extraParameters_data(); //End Unit Test for QGeoRouteRequest private: |