Add QNumberStyleAnimation for fading out scroll bars on Mac
authorJ-P Nurmi <jpnurmi@digia.com>
Tue, 23 Oct 2012 12:39:26 +0000 (14:39 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Tue, 30 Oct 2012 16:51:21 +0000 (17:51 +0100)
Change-Id: I6a85ed069a418d62078af6490a3d3186d5599a95
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
src/widgets/styles/qstyleanimation.cpp
src/widgets/styles/qstyleanimation_p.h

index d81532f..0138996 100644 (file)
@@ -163,4 +163,49 @@ bool QProgressStyleAnimation::isUpdateNeeded() const
     return false;
 }
 
+QNumberStyleAnimation::QNumberStyleAnimation(QObject *target) :
+    QStyleAnimation(target), _start(0.0), _end(1.0), _prev(0.0)
+{
+    setDuration(250);
+}
+
+qreal QNumberStyleAnimation::startValue() const
+{
+    return _start;
+}
+
+void QNumberStyleAnimation::setStartValue(qreal value)
+{
+    _start = value;
+}
+
+qreal QNumberStyleAnimation::endValue() const
+{
+    return _end;
+}
+
+void QNumberStyleAnimation::setEndValue(qreal value)
+{
+    _end = value;
+}
+
+qreal QNumberStyleAnimation::currentValue() const
+{
+    qreal step = qreal(currentTime() - delay()) / (duration() - delay());
+    return _start + qMax(qreal(0), step) * (_end - _start);
+}
+
+bool QNumberStyleAnimation::isUpdateNeeded() const
+{
+    if (QStyleAnimation::isUpdateNeeded()) {
+        qreal current = currentValue();
+        if (!qFuzzyCompare(_prev, current))
+        {
+            _prev = current;
+            return true;
+        }
+    }
+    return false;
+}
+
 QT_END_NAMESPACE
index 3188eeb..d986953 100644 (file)
@@ -110,6 +110,30 @@ private:
     mutable int _step;
 };
 
+class QNumberStyleAnimation : public QStyleAnimation
+{
+    Q_OBJECT
+
+public:
+    QNumberStyleAnimation(QObject *target);
+
+    qreal startValue() const;
+    void setStartValue(qreal value);
+
+    qreal endValue() const;
+    void setEndValue(qreal value);
+
+    qreal currentValue() const;
+
+protected:
+    bool isUpdateNeeded() const;
+
+private:
+    qreal _start;
+    qreal _end;
+    mutable qreal _prev;
+};
+
 QT_END_NAMESPACE
 
 #endif // QSTYLEANIMATION_P_H