summaryrefslogtreecommitdiffstats
path: root/src/location/declarativemaps/qdeclarativegeoroutemodel.cpp
diff options
context:
space:
mode:
authorLauri Laanmets <lauri.laanmets@eesti.ee>2021-09-30 16:29:46 +0300
committerLauri Laanmets <lauri.laanmets@eesti.ee>2022-02-28 17:11:19 +0200
commitba0fae5c91dd4c1b5ae2db819df4a69efd853d44 (patch)
treebcfb86ba9ca452438788db54d86de058c818df43 /src/location/declarativemaps/qdeclarativegeoroutemodel.cpp
parentfe3ee99e66ba4926c9251859646b722be47ae111 (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.cpp35
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();
}
/*!