diff options
author | Martin Jones <martin.jones@nokia.com> | 2009-11-25 04:54:26 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2009-11-25 04:54:26 (GMT) |
commit | 120433c1eac10ba431204a0cfa464bcbfe41a07d (patch) | |
tree | 3be9fc3ee0f3cb75e199d5564be84449cd2838d7 | |
parent | 2106a8453b80e2cdfed77ad3e2881696437d6774 (diff) | |
download | Qt-120433c1eac10ba431204a0cfa464bcbfe41a07d.zip Qt-120433c1eac10ba431204a0cfa464bcbfe41a07d.tar.gz Qt-120433c1eac10ba431204a0cfa464bcbfe41a07d.tar.bz2 |
Add Timer reset() method.
-rw-r--r-- | src/declarative/util/qmltimer.cpp | 14 | ||||
-rw-r--r-- | src/declarative/util/qmltimer_p.h | 1 | ||||
-rw-r--r-- | tests/auto/declarative/qmltimer/tst_qmltimer.cpp | 26 |
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" |