From 120433c1eac10ba431204a0cfa464bcbfe41a07d Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 25 Nov 2009 14:54:26 +1000 Subject: Add Timer reset() method. --- src/declarative/util/qmltimer.cpp | 14 +++++++++++++ src/declarative/util/qmltimer_p.h | 1 + tests/auto/declarative/qmltimer/tst_qmltimer.cpp | 26 ++++++++++++++++++++++++ 3 files changed, 41 insertions(+) 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(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" -- cgit v0.12