summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/location/maps/qgeorouterequest.cpp27
-rw-r--r--src/location/maps/qgeorouterequest.h3
-rw-r--r--src/location/maps/qgeorouterequest_p.h1
-rw-r--r--tests/auto/qgeorouterequest/tst_qgeorouterequest.cpp26
-rw-r--r--tests/auto/qgeorouterequest/tst_qgeorouterequest.h2
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: