diff options
author | Lauri Laanmets <lauri.laanmets@eesti.ee> | 2021-09-30 16:29:46 +0300 |
---|---|---|
committer | Lauri Laanmets <lauri.laanmets@eesti.ee> | 2022-02-28 17:11:19 +0200 |
commit | ba0fae5c91dd4c1b5ae2db819df4a69efd853d44 (patch) | |
tree | bcfb86ba9ca452438788db54d86de058c818df43 /src/location/declarativemaps/qdeclarativegeoroutemodel.cpp | |
parent | fe3ee99e66ba4926c9251859646b722be47ae111 (diff) |
Adapt QDeclarativeGeoWaypoint to use bindable coordinate property
QObjectBindableProperty returns only const value and object based properties like QGeoCoordinate cannot be modified, they have to be replaced totally.
This is part of a bigger work to port QtLocation maps to Qt6.
Task-number: QTBUG-96795
Change-Id: I39e9d9a97d65af7daf2dca30a00d563b2bf6aa80
Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Diffstat (limited to 'src/location/declarativemaps/qdeclarativegeoroutemodel.cpp')
-rw-r--r-- | src/location/declarativemaps/qdeclarativegeoroutemodel.cpp | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/src/location/declarativemaps/qdeclarativegeoroutemodel.cpp b/src/location/declarativemaps/qdeclarativegeoroutemodel.cpp index de04bbec..cd6e2247 100644 --- a/src/location/declarativemaps/qdeclarativegeoroutemodel.cpp +++ b/src/location/declarativemaps/qdeclarativegeoroutemodel.cpp @@ -1757,17 +1757,20 @@ bool QDeclarativeGeoWaypoint::operator==(const QDeclarativeGeoWaypoint &other) c */ qreal QDeclarativeGeoWaypoint::latitude() const { - return m_coordinate.latitude(); + return m_coordinate.value().latitude(); } void QDeclarativeGeoWaypoint::setLatitude(qreal latitude) { - if (compareFloats(latitude, m_coordinate.latitude())) + if (compareFloats(latitude, m_coordinate.value().latitude())) return; - m_coordinate.setLatitude(latitude); + auto coord = m_coordinate.value(); + coord.setLatitude(latitude); + m_coordinate.setValueBypassingBindings(coord); // set the value without notifying, yet + if (m_complete) { - emit coordinateChanged(); + m_coordinate.notify(); // it will also emit coordinateChanged() emit waypointDetailsChanged(); } } @@ -1780,17 +1783,20 @@ void QDeclarativeGeoWaypoint::setLatitude(qreal latitude) */ qreal QDeclarativeGeoWaypoint::longitude() const { - return m_coordinate.longitude(); + return m_coordinate.value().longitude(); } void QDeclarativeGeoWaypoint::setLongitude(qreal longitude) { - if (compareFloats(longitude, m_coordinate.longitude())) + if (compareFloats(longitude, m_coordinate.value().longitude())) return; - m_coordinate.setLongitude(longitude); + auto coord = m_coordinate.value(); + coord.setLongitude(longitude); + m_coordinate.setValueBypassingBindings(coord); // set the value without notifying, yet + if (m_complete) { - emit coordinateChanged(); + m_coordinate.notify(); // it will also emit coordinateChanged() emit waypointDetailsChanged(); } } @@ -1803,24 +1809,27 @@ void QDeclarativeGeoWaypoint::setLongitude(qreal longitude) */ qreal QDeclarativeGeoWaypoint::altitude() const { - return m_coordinate.altitude(); + return m_coordinate.value().altitude(); } void QDeclarativeGeoWaypoint::setAltitude(qreal altitude) { - if (compareFloats(altitude, m_coordinate.altitude())) + if (compareFloats(altitude, m_coordinate.value().altitude())) return; - m_coordinate.setAltitude(altitude); + auto coord = m_coordinate.value(); + coord.setAltitude(altitude); + m_coordinate.setValueBypassingBindings(coord); // set the value without notifying, yet + if (m_complete) { - emit coordinateChanged(); + m_coordinate.notify(); // it will also emit coordinateChanged() emit waypointDetailsChanged(); } } bool QDeclarativeGeoWaypoint::isValid() const { - return m_coordinate.isValid(); + return m_coordinate.value().isValid(); } /*! |