summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlex Wilson <alex.wilson@nokia.com>2011-12-23 14:55:29 +1000
committerQt by Nokia <qt-info@nokia.com>2011-12-23 05:59:33 +0100
commitb319a2d5d595c7343e3ac07d2f0bc153b5976c20 (patch)
tree717a86d41fbc3627999739baaa8c631475c3239d /src
parentf99bde006f657e8790249b20c88be8181125bb95 (diff)
downloadqtlocation-b319a2d5d595c7343e3ac07d2f0bc153b5976c20.tar.gz
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 <juha.vuolle@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/imports/location/qdeclarativecoordinate.cpp10
-rw-r--r--src/imports/location/qdeclarativecoordinate_p.h3
2 files changed, 12 insertions, 1 deletions
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;