7#include <QtCore/qcoreapplication.h>
8#include "private/qpauseanimationjob_p.h"
11#include <private/qobject_p.h>
22 Q_DECLARE_PUBLIC(QQmlTimer)
35 QCoreApplication::postEvent(q,
new QEvent(QEvent_MaybeTick));
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
89QQmlTimer::QQmlTimer(QObject *parent)
90 : QObject(*(
new QQmlTimerPrivate), parent)
93 d->pause.addAnimationChangeListener(d, QAbstractAnimationJob::Completion | QAbstractAnimationJob::CurrentLoop);
94 d->pause.setLoopCount(1);
95 d->pause.setDuration(d->interval);
99
100
101
102
103
104
105void QQmlTimer::setInterval(
int interval)
108 if (interval != d->interval) {
109 d->interval = interval;
111 emit intervalChanged();
115int QQmlTimer::interval()
const
117 Q_D(
const QQmlTimer);
122
123
124
125
126
127
128
129
130
131
132bool QQmlTimer::isRunning()
const
134 Q_D(
const QQmlTimer);
138void QQmlTimer::setRunning(
bool running)
141 if (d->running != running) {
142 d->running = running;
144 emit runningChanged();
150
151
152
153
154
155
156
157
158
159
160bool QQmlTimer::isRepeating()
const
162 Q_D(
const QQmlTimer);
166void QQmlTimer::setRepeating(
bool repeating)
169 if (repeating != d->repeating) {
170 d->repeating = repeating;
172 emit repeatChanged();
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193bool QQmlTimer::triggeredOnStart()
const
195 Q_D(
const QQmlTimer);
196 return d->triggeredOnStart;
199void QQmlTimer::setTriggeredOnStart(
bool triggeredOnStart)
202 if (d->triggeredOnStart != triggeredOnStart) {
203 d->triggeredOnStart = triggeredOnStart;
205 emit triggeredOnStartChanged();
210
211
212
213
214
215
216void QQmlTimer::start()
222
223
224
225
226
227
228void QQmlTimer::stop()
234
235
236
237
238
239
240
241void QQmlTimer::restart()
247void QQmlTimer::update()
250 if (d->classBegun && !d->componentComplete)
254 d->pause.setCurrentTime(0);
255 d->pause.setLoopCount(d->repeating ? -1 : 1);
256 d->pause.setDuration(d->interval);
258 if (d->triggeredOnStart && d->firstTick)
263void QQmlTimer::classBegin()
266 d->classBegun =
true;
269void QQmlTimer::componentComplete()
272 d->componentComplete =
true;
277
278
279
280
281void QQmlTimer::ticked()
284 if (d->running && (d->pause.currentTime() > 0 || (d->triggeredOnStart && d->firstTick)))
286 d->firstTick =
false;
290
291
292bool QQmlTimer::event(QEvent *e)
295 if (e->type() == QEvent_MaybeTick) {
296 d->awaitingTick =
false;
299 }
else if (e->type() == QEvent_Triggered) {
300 if (d->running && d->pause.isStopped()) {
303 emit runningChanged();
307 return QObject::event(e);
316 QCoreApplication::postEvent(q,
new QEvent(QEvent_Triggered));
321#include "moc_qqmltimer_p.cpp"
void animationCurrentLoopChanged(QAbstractAnimationJob *) override
const QEvent::Type QEvent_Triggered
const QEvent::Type QEvent_MaybeTick