summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qtimer.cpp
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2020-12-10 18:46:31 +0100
committerFabian Kosmale <fabian.kosmale@qt.io>2021-01-26 21:47:50 +0100
commit709a0942aa5adeea8057a92a301dee85fc575528 (patch)
tree8b76cb93284c6f4bb479f001244ec27c37217e81 /src/corelib/kernel/qtimer.cpp
parent519420641fabeeb7a372ed6157a7bc01f43b1b3b (diff)
QTimer: port to new property system
Task-number: QTBUG-85520 Change-Id: I1f92b86619f2ca186c505251b21463f396af0ac6 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
Diffstat (limited to 'src/corelib/kernel/qtimer.cpp')
-rw-r--r--src/corelib/kernel/qtimer.cpp39
1 files changed, 35 insertions, 4 deletions
diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp
index 6e3d34214f..b553bbd5d3 100644
--- a/src/corelib/kernel/qtimer.cpp
+++ b/src/corelib/kernel/qtimer.cpp
@@ -44,6 +44,7 @@
#include "qobject_p.h"
#include "qthread.h"
#include "qcoreapplication_p.h"
+#include "qproperty_p.h"
QT_BEGIN_NAMESPACE
@@ -51,12 +52,18 @@ static constexpr int INV_TIMER = -1; // invalid timer id
class QTimerPrivate : public QObjectPrivate
{
+ Q_DECLARE_PUBLIC(QTimer)
public:
+ void setInterval(int msec) { q_func()->setInterval(msec); }
+ bool isActiveActualCalculation() const { return id >= 0; }
+
int id = INV_TIMER;
- int inter = 0;
- bool single = false;
+ Q_OBJECT_COMPAT_PROPERTY_WITH_ARGS(QTimerPrivate, int, inter, &QTimerPrivate::setInterval, 0)
+ Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(QTimerPrivate, bool, single, false)
bool nulltimer = false;
- Qt::TimerType type = Qt::CoarseTimer;
+ Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(QTimerPrivate, Qt::TimerType, type, Qt::CoarseTimer)
+ Q_OBJECT_COMPUTED_PROPERTY(QTimerPrivate, bool, isActiveData,
+ &QTimerPrivate::isActiveActualCalculation)
};
/*!
@@ -198,7 +205,12 @@ QTimer::~QTimer()
*/
bool QTimer::isActive() const
{
- return d_func()->id >= 0;
+ return d_func()->isActiveData.value();
+}
+
+QBindable<bool> QTimer::bindableActive()
+{
+ return QBindable<bool>(&d_func()->isActiveData);
}
/*!
@@ -229,6 +241,7 @@ void QTimer::start()
stop();
d->nulltimer = (!d->inter && d->single);
d->id = QObject::startTimer(d->inter, d->type);
+ d->isActiveData.markDirty();
}
/*!
@@ -262,6 +275,7 @@ void QTimer::stop()
if (d->id != INV_TIMER) {
QObject::killTimer(d->id);
d->id = INV_TIMER;
+ d->isActiveData.markDirty();
}
}
@@ -718,6 +732,11 @@ bool QTimer::isSingleShot() const
return d_func()->single;
}
+QBindable<bool> QTimer::bindableSingleShot()
+{
+ return QBindable<bool>(&d_func()->single);
+}
+
/*!
\property QTimer::interval
\brief the timeout interval in milliseconds
@@ -737,6 +756,8 @@ void QTimer::setInterval(int msec)
if (d->id != INV_TIMER) { // create new timer
QObject::killTimer(d->id); // restart timer
d->id = QObject::startTimer(msec, d->type);
+ // No need to call markDirty() for d->isActiveData here,
+ // as timer state actually does not change
}
}
@@ -745,6 +766,11 @@ int QTimer::interval() const
return d_func()->inter;
}
+QBindable<int> QTimer::bindableInterval()
+{
+ return QBindable<int>(&d_func()->inter);
+}
+
/*!
\property QTimer::remainingTime
\since 5.0
@@ -784,6 +810,11 @@ Qt::TimerType QTimer::timerType() const
return d_func()->type;
}
+QBindable<Qt::TimerType> QTimer::bindableTimerType()
+{
+ return QBindable<Qt::TimerType>(&d_func()->type);
+}
+
QT_END_NAMESPACE
#include "qtimer.moc"