diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-09-04 11:58:35 +0200 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-09-15 14:40:23 +0200 |
commit | a6c48812eff4e1aa9b05ea4b811de357242c5588 (patch) | |
tree | a0524fa87eb6c77b3b0f0d9cb47b88e0655a8e97 /src/location/declarativemaps/qdeclarativegeoroute.cpp | |
parent | 366a6379fb80e8c223ae57b2fd791ffdfeacdbf3 (diff) | |
download | qtlocation-a6c48812eff4e1aa9b05ea4b811de357242c5588.tar.gz |
Change QJSValue properties to QList<QGeoCoordinate/Rectangle>
The QML engine is able to operate on lists of gadgets, there is no need
for using private APIs to operate on QJSValue.
For the time being, this breaks a QML construct like
path[0].longitude = 0
This no longer changes the value of path[0].latitude in place. Instead,
use
var path0 = path[0]
path0.longitude = ...
path[0] = path0
This is consistent with other properties that have type list<gadget>, as
QML operates on copies of values, not on references. Adapt the test case
accordingly.
Since support for value-initializing properties of type list<gadget>
requires plumbing in the QML engine, and registration of conversion
routines from QVariantMap to QGeoCoordinate, augment the test.
Remove the now unnecessary toList/fromList conversion functions, and
the dependency to private QtQml libraries.
Fixes: QTBUG-105241
Change-Id: I8f248c457a6de27a3b2680bdc948c5683ebc7fa0
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Diffstat (limited to 'src/location/declarativemaps/qdeclarativegeoroute.cpp')
-rw-r--r-- | src/location/declarativemaps/qdeclarativegeoroute.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/location/declarativemaps/qdeclarativegeoroute.cpp b/src/location/declarativemaps/qdeclarativegeoroute.cpp index d8db5793..47944702 100644 --- a/src/location/declarativemaps/qdeclarativegeoroute.cpp +++ b/src/location/declarativemaps/qdeclarativegeoroute.cpp @@ -148,21 +148,17 @@ qreal QDeclarativeGeoRoute::distance() const \sa QtPositioning::coordinate */ -QJSValue QDeclarativeGeoRoute::path() const +QList<QGeoCoordinate> QDeclarativeGeoRoute::path() const { - return fromList(parent(), route_.path()); + return route_.path(); } -void QDeclarativeGeoRoute::setPath(const QJSValue &value) +void QDeclarativeGeoRoute::setPath(const QList<QGeoCoordinate> &value) { - if (!value.isArray()) - return; - - const QList<QGeoCoordinate> pathList = toList(this, value); - if (route_.path() == pathList) + if (route_.path() == value) return; - route_.setPath(pathList); + route_.setPath(value); emit pathChanged(); } |