aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/util/qdeclarativetimer.cpp
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2012-02-03 12:26:37 +1000
committerQt by Nokia <qt-info@nokia.com>2012-02-07 05:32:47 +0100
commitce3dee765c858a0b573d468ef8fee6b838e576d1 (patch)
treeb7026a061b0b58bac6af30eaab6e610c5ebeb504 /src/quick/util/qdeclarativetimer.cpp
parent0ca9d3f0f720e1933379ef40bc5c29253e21cba0 (diff)
Add and use new animation backend.
The new backend improves performance, and allows us to create multiple running animation jobs from a single Transition. It is based off of the existing Qt animation framework. Change-Id: Id1d0162f6e5c65bf31267f3f9f2042c354375d57 Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
Diffstat (limited to 'src/quick/util/qdeclarativetimer.cpp')
-rw-r--r--src/quick/util/qdeclarativetimer.cpp27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/quick/util/qdeclarativetimer.cpp b/src/quick/util/qdeclarativetimer.cpp
index e4ec54f7eb..f54e9b305a 100644
--- a/src/quick/util/qdeclarativetimer.cpp
+++ b/src/quick/util/qdeclarativetimer.cpp
@@ -42,7 +42,7 @@
#include "qdeclarativetimer_p.h"
#include <QtCore/qcoreapplication.h>
-#include <QtCore/qpauseanimation.h>
+#include "private/qpauseanimationjob_p.h"
#include <qdebug.h>
#include <private/qobject_p.h>
@@ -51,15 +51,19 @@ QT_BEGIN_NAMESPACE
-class QDeclarativeTimerPrivate : public QObjectPrivate
+class QDeclarativeTimerPrivate : public QObjectPrivate, public QAnimation2ChangeListener
{
Q_DECLARE_PUBLIC(QDeclarativeTimer)
public:
QDeclarativeTimerPrivate()
: interval(1000), running(false), repeating(false), triggeredOnStart(false)
, classBegun(false), componentComplete(false), firstTick(true) {}
+
+ virtual void animationFinished(QAbstractAnimationJob *);
+ virtual void animationCurrentLoopChanged(QAbstractAnimationJob *) { Q_Q(QDeclarativeTimer); q->ticked(); }
+
int interval;
- QPauseAnimation pause;
+ QPauseAnimationJob pause;
bool running : 1;
bool repeating : 1;
bool triggeredOnStart : 1;
@@ -111,8 +115,7 @@ QDeclarativeTimer::QDeclarativeTimer(QObject *parent)
: QObject(*(new QDeclarativeTimerPrivate), parent)
{
Q_D(QDeclarativeTimer);
- connect(&d->pause, SIGNAL(currentLoopChanged(int)), this, SLOT(ticked()));
- connect(&d->pause, SIGNAL(finished()), this, SLOT(finished()));
+ d->pause.addAnimationChangeListener(d, QAbstractAnimationJob::Completion | QAbstractAnimationJob::CurrentLoop);
d->pause.setLoopCount(1);
d->pause.setDuration(d->interval);
}
@@ -310,15 +313,15 @@ void QDeclarativeTimer::ticked()
d->firstTick = false;
}
-void QDeclarativeTimer::finished()
+void QDeclarativeTimerPrivate::animationFinished(QAbstractAnimationJob *)
{
- Q_D(QDeclarativeTimer);
- if (d->repeating || !d->running)
+ Q_Q(QDeclarativeTimer);
+ if (repeating || !running)
return;
- d->running = false;
- d->firstTick = false;
- emit triggered();
- emit runningChanged();
+ running = false;
+ firstTick = false;
+ emit q->triggered();
+ emit q->runningChanged();
}
QT_END_NAMESPACE