From 0c412288e68aeccf9d17012b3fee944e99330e25 Mon Sep 17 00:00:00 2001
From: Aaron Kennedy <aaron.kennedy@nokia.com>
Date: Fri, 23 Oct 2009 11:03:48 +1000
Subject: Add NOTIFY signals to EaseFollow

---
 src/declarative/util/qmleasefollow.cpp | 28 +++++++++++++++++++++++++++-
 src/declarative/util/qmleasefollow.h   | 17 ++++++++++++-----
 2 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/src/declarative/util/qmleasefollow.cpp b/src/declarative/util/qmleasefollow.cpp
index f020395..0b00de0 100644
--- a/src/declarative/util/qmleasefollow.cpp
+++ b/src/declarative/util/qmleasefollow.cpp
@@ -287,13 +287,19 @@ QmlEaseFollow::ReversingMode QmlEaseFollow::reversingMode() const
 void QmlEaseFollow::setReversingMode(ReversingMode m)
 {
     Q_D(QmlEaseFollow);
+    if (d->reversingMode == m)
+        return;
+
     d->reversingMode = m;
+    emit reversingModeChanged();
 }
 
 void QmlEaseFollowPrivate::restart()
 {
-    if (!enabled)
+    if (!enabled || velocity == 0) {
+        clockStop();
         return;
+    }
 
     initialValue = target.read().toReal();
 
@@ -337,9 +343,14 @@ void QmlEaseFollow::setSourceValue(qreal s)
 {
     Q_D(QmlEaseFollow);
 
+    if (d->source == s)
+        return;
+
     d->source = s;
     d->initialVelocity = d->trackVelocity;
     d->restart();
+
+    emit sourceChanged();
 }
 
 /*!
@@ -358,11 +369,16 @@ qreal QmlEaseFollow::duration() const
 void QmlEaseFollow::setDuration(qreal v)
 {
     Q_D(QmlEaseFollow);
+    if (d->duration == v)
+        return;
+
     d->duration = v;
     d->trackVelocity = 0;
 
     if (d->clock.state() == QAbstractAnimation::Running) 
         d->restart();
+
+    emit durationChanged();
 }
 
 qreal QmlEaseFollow::velocity() const
@@ -381,11 +397,16 @@ qreal QmlEaseFollow::velocity() const
 void QmlEaseFollow::setVelocity(qreal v)
 {
     Q_D(QmlEaseFollow);
+    if (d->velocity == v)
+        return;
+
     d->velocity = v;
     d->trackVelocity = 0;
 
     if (d->clock.state() == QAbstractAnimation::Running) 
         d->restart();
+
+    emit velocityChanged();
 }
 
 /*!
@@ -401,11 +422,16 @@ bool QmlEaseFollow::enabled() const
 void QmlEaseFollow::setEnabled(bool enabled)
 {
     Q_D(QmlEaseFollow);
+    if (d->enabled == enabled)
+        return;
+
     d->enabled = enabled;
     if (enabled)
         d->restart();
     else
         d->clockStop();
+
+    emit enabledChanged();
 }
 
 void QmlEaseFollow::setTarget(const QmlMetaProperty &t)
diff --git a/src/declarative/util/qmleasefollow.h b/src/declarative/util/qmleasefollow.h
index 8e8c59d..decc045 100644
--- a/src/declarative/util/qmleasefollow.h
+++ b/src/declarative/util/qmleasefollow.h
@@ -62,11 +62,11 @@ class Q_DECLARATIVE_EXPORT QmlEaseFollow : public QObject,
     Q_INTERFACES(QmlPropertyValueSource)
     Q_ENUMS(ReversingMode)
 
-    Q_PROPERTY(qreal source READ sourceValue WRITE setSourceValue)
-    Q_PROPERTY(qreal velocity READ velocity WRITE setVelocity)
-    Q_PROPERTY(qreal duration READ duration WRITE setDuration)
-    Q_PROPERTY(ReversingMode reversingMode READ reversingMode WRITE setReversingMode)
-    Q_PROPERTY(bool enabled READ enabled WRITE setEnabled)
+    Q_PROPERTY(qreal source READ sourceValue WRITE setSourceValue NOTIFY sourceChanged)
+    Q_PROPERTY(qreal velocity READ velocity WRITE setVelocity NOTIFY velocityChanged)
+    Q_PROPERTY(qreal duration READ duration WRITE setDuration NOTIFY durationChanged)
+    Q_PROPERTY(ReversingMode reversingMode READ reversingMode WRITE setReversingMode NOTIFY reversingModeChanged)
+    Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
 
 public:
     enum ReversingMode { Eased, Immediate, Sync };
@@ -90,6 +90,13 @@ public:
     void setEnabled(bool enabled);
 
     virtual void setTarget(const QmlMetaProperty &);
+
+signals:
+    void sourceChanged();
+    void velocityChanged();
+    void durationChanged();
+    void reversingModeChanged();
+    void enabledChanged();
 };
 
 QT_END_NAMESPACE
-- 
cgit v0.12