From b319a2d5d595c7343e3ac07d2f0bc153b5976c20 Mon Sep 17 00:00:00 2001 From: Alex Wilson Date: Fri, 23 Dec 2011 14:55:29 +1000 Subject: Adds coordinateChanged signal to QML Coordinates First step towards teaching map items to listen to changes in their source coordinates and lists. Change-Id: Iacf6078b5517a52c82c906d839c332a459453f80 Reviewed-by: Juha Vuolle --- src/imports/location/qdeclarativecoordinate.cpp | 10 ++++++++++ src/imports/location/qdeclarativecoordinate_p.h | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/imports/location/qdeclarativecoordinate.cpp b/src/imports/location/qdeclarativecoordinate.cpp index a10cf7b2..67283ce9 100644 --- a/src/imports/location/qdeclarativecoordinate.cpp +++ b/src/imports/location/qdeclarativecoordinate.cpp @@ -83,6 +83,7 @@ QDeclarativeCoordinate::~QDeclarativeCoordinate() {} */ void QDeclarativeCoordinate::setCoordinate(const QGeoCoordinate &coordinate) { + bool changed = false; QGeoCoordinate previousCoordinate = m_coordinate; m_coordinate = coordinate; @@ -90,15 +91,21 @@ void QDeclarativeCoordinate::setCoordinate(const QGeoCoordinate &coordinate) if (coordinate.altitude() != previousCoordinate.altitude() && !(qIsNaN(coordinate.altitude()) && qIsNaN(previousCoordinate.altitude()))) { emit altitudeChanged(m_coordinate.altitude()); + changed = true; } if (coordinate.latitude() != previousCoordinate.latitude() && !(qIsNaN(coordinate.latitude()) && qIsNaN(previousCoordinate.latitude()))) { emit latitudeChanged(m_coordinate.latitude()); + changed = true; } if (coordinate.longitude() != previousCoordinate.longitude() && !(qIsNaN(coordinate.longitude()) && qIsNaN(previousCoordinate.longitude()))) { emit longitudeChanged(m_coordinate.longitude()); + changed = true; } + + if (changed) + emit coordinateChanged(m_coordinate); } QGeoCoordinate QDeclarativeCoordinate::coordinate() const @@ -120,6 +127,7 @@ void QDeclarativeCoordinate::setAltitude(double altitude) if (m_coordinate.altitude() != altitude) { m_coordinate.setAltitude(altitude); emit altitudeChanged(m_coordinate.altitude()); + emit coordinateChanged(m_coordinate); if (wasValid != m_coordinate.isValid()) emit validityChanged(m_coordinate.isValid()); @@ -146,6 +154,7 @@ void QDeclarativeCoordinate::setLongitude(double longitude) if (m_coordinate.longitude() != longitude) { m_coordinate.setLongitude(longitude); emit longitudeChanged(m_coordinate.longitude()); + emit coordinateChanged(m_coordinate); if (wasValid != m_coordinate.isValid()) emit validityChanged(m_coordinate.isValid()); @@ -172,6 +181,7 @@ void QDeclarativeCoordinate::setLatitude(double latitude) if (m_coordinate.latitude() != latitude) { m_coordinate.setLatitude(latitude); emit latitudeChanged(latitude); + emit coordinateChanged(m_coordinate); if (wasValid != m_coordinate.isValid()) emit validityChanged(m_coordinate.isValid()); diff --git a/src/imports/location/qdeclarativecoordinate_p.h b/src/imports/location/qdeclarativecoordinate_p.h index fbf807f7..7b80f21f 100644 --- a/src/imports/location/qdeclarativecoordinate_p.h +++ b/src/imports/location/qdeclarativecoordinate_p.h @@ -53,7 +53,7 @@ class QDeclarativeCoordinate : public QObject { Q_OBJECT - Q_PROPERTY(QGeoCoordinate coordinate READ coordinate WRITE setCoordinate) + Q_PROPERTY(QGeoCoordinate coordinate READ coordinate WRITE setCoordinate NOTIFY coordinateChanged) Q_PROPERTY(double latitude READ latitude WRITE setLatitude NOTIFY latitudeChanged) Q_PROPERTY(double longitude READ longitude WRITE setLongitude NOTIFY longitudeChanged) Q_PROPERTY(double altitude READ altitude WRITE setAltitude NOTIFY altitudeChanged) @@ -88,6 +88,7 @@ Q_SIGNALS: void longitudeChanged(double longitude); void altitudeChanged(double altitude); void validityChanged(bool valid); + void coordinateChanged(const QGeoCoordinate &coord); private: QGeoCoordinate m_coordinate; -- cgit v1.2.1