diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2020-12-10 18:46:31 +0100 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2021-01-26 21:47:50 +0100 |
commit | 709a0942aa5adeea8057a92a301dee85fc575528 (patch) | |
tree | 8b76cb93284c6f4bb479f001244ec27c37217e81 /src/corelib/kernel/qtimer.cpp | |
parent | 519420641fabeeb7a372ed6157a7bc01f43b1b3b (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.cpp | 39 |
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" |