summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2009-11-25 04:54:26 (GMT)
committerMartin Jones <martin.jones@nokia.com>2009-11-25 04:54:26 (GMT)
commit120433c1eac10ba431204a0cfa464bcbfe41a07d (patch)
tree3be9fc3ee0f3cb75e199d5564be84449cd2838d7
parent2106a8453b80e2cdfed77ad3e2881696437d6774 (diff)
downloadQt-120433c1eac10ba431204a0cfa464bcbfe41a07d.zip
Qt-120433c1eac10ba431204a0cfa464bcbfe41a07d.tar.gz
Qt-120433c1eac10ba431204a0cfa464bcbfe41a07d.tar.bz2
Add Timer reset() method.
-rw-r--r--src/declarative/util/qmltimer.cpp14
-rw-r--r--src/declarative/util/qmltimer_p.h1
-rw-r--r--tests/auto/declarative/qmltimer/tst_qmltimer.cpp26
3 files changed, 41 insertions, 0 deletions
diff --git a/src/declarative/util/qmltimer.cpp b/src/declarative/util/qmltimer.cpp
index 0a2448a..da60193 100644
--- a/src/declarative/util/qmltimer.cpp
+++ b/src/declarative/util/qmltimer.cpp
@@ -239,6 +239,20 @@ void QmlTimer::stop()
setRunning(false);
}
+/*!
+ \qmlmethod Timer::restart()
+ \brief Restarts the timer.
+
+ If the Timer is not running it will be started, otherwise it will be
+ stopped, reset to initial state and started. The \c running property
+ will be true following a call to \c restart().
+*/
+void QmlTimer::restart()
+{
+ setRunning(false);
+ setRunning(true);
+}
+
void QmlTimer::update()
{
Q_D(QmlTimer);
diff --git a/src/declarative/util/qmltimer_p.h b/src/declarative/util/qmltimer_p.h
index 56ef7a6..50cae2b 100644
--- a/src/declarative/util/qmltimer_p.h
+++ b/src/declarative/util/qmltimer_p.h
@@ -85,6 +85,7 @@ protected:
public Q_SLOTS:
void start();
void stop();
+ void restart();
Q_SIGNALS:
void triggered();
diff --git a/tests/auto/declarative/qmltimer/tst_qmltimer.cpp b/tests/auto/declarative/qmltimer/tst_qmltimer.cpp
index 620d53e..63a9a09 100644
--- a/tests/auto/declarative/qmltimer/tst_qmltimer.cpp
+++ b/tests/auto/declarative/qmltimer/tst_qmltimer.cpp
@@ -58,6 +58,7 @@ private slots:
void triggeredOnStart();
void triggeredOnStartRepeat();
void changeDuration();
+ void restart();
};
class TimerHelper : public QObject
@@ -237,6 +238,31 @@ void tst_qmltimer::changeDuration()
delete timer;
}
+void tst_qmltimer::restart()
+{
+ QmlEngine engine;
+ QmlComponent component(&engine, QByteArray("import Qt 4.6\nTimer { interval: 500; repeat: true; running: true }"), QUrl("file://"));
+ QmlTimer *timer = qobject_cast<QmlTimer*>(component.create());
+ QVERIFY(timer != 0);
+
+ TimerHelper helper;
+ connect(timer, SIGNAL(triggered()), &helper, SLOT(timeout()));
+ QCOMPARE(helper.count, 0);
+
+ QTest::qWait(600);
+ QCOMPARE(helper.count, 1);
+
+ QTest::qWait(300);
+
+ timer->restart();
+
+ QTest::qWait(700);
+
+ QCOMPARE(helper.count, 2);
+
+ delete timer;
+}
+
QTEST_MAIN(tst_qmltimer)
#include "tst_qmltimer.moc"