diff options
author | BogDan Vatra <bogdan.vatra@kdab.com> | 2014-06-24 13:09:59 +0300 |
---|---|---|
committer | BogDan Vatra <bogdan@kde.org> | 2014-06-26 09:32:15 +0200 |
commit | 6302d6eef7247ed65fc1d07ac57bfec9c6b0f27a (patch) | |
tree | b5aecba4f408a1fd334b497c7bf7f8d805295d25 /src | |
parent | d8062f117b19e2bb32739892606bdd5856586b1d (diff) |
Export QStateMachine running property.
It is needed to control a QStateMachine object from QML.
Change-Id: I19271d97718af2d688c477647d6341f70fdef3ea
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/statemachine/qstatemachine.cpp | 37 | ||||
-rw-r--r-- | src/corelib/statemachine/qstatemachine.h | 4 |
2 files changed, 39 insertions, 2 deletions
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp index d2e2368ca9..d46fa357ae 100644 --- a/src/corelib/statemachine/qstatemachine.cpp +++ b/src/corelib/statemachine/qstatemachine.cpp @@ -163,6 +163,13 @@ QT_BEGIN_NAMESPACE QState::DontRestoreProperties. */ +/*! + \property QStateMachine::running + \since 5.4 + + \brief the running state of this state machine +*/ + #ifndef QT_NO_ANIMATION /*! \property QStateMachine::animated @@ -1409,6 +1416,7 @@ void QStateMachinePrivate::_q_start() #endif emit q->started(QStateMachine::QPrivateSignal()); + emit q->runningChanged(true); if (stopProcessingReason == Finished) { // The state machine immediately reached a final state. @@ -1416,6 +1424,7 @@ void QStateMachinePrivate::_q_start() state = NotRunning; unregisterAllTransitions(); emitFinished(); + emit q->runningChanged(false); } else { _q_process(); } @@ -1498,12 +1507,14 @@ void QStateMachinePrivate::_q_process() cancelAllDelayedEvents(); unregisterAllTransitions(); emitFinished(); + emit q->runningChanged(false); break; case Stopped: state = NotRunning; cancelAllDelayedEvents(); unregisterAllTransitions(); emit q->stopped(QStateMachine::QPrivateSignal()); + emit q->runningChanged(false); break; } } @@ -2117,7 +2128,7 @@ bool QStateMachine::isRunning() const the main application event loop started with QCoreApplication::exec() or QApplication::exec(). - \sa started(), finished(), stop(), initialState() + \sa started(), finished(), stop(), initialState(), setRunning() */ void QStateMachine::start() { @@ -2145,7 +2156,7 @@ void QStateMachine::start() Stops this state machine. The state machine will stop processing events and then emit the stopped() signal. - \sa stopped(), start() + \sa stopped(), start(), setRunning() */ void QStateMachine::stop() { @@ -2165,6 +2176,19 @@ void QStateMachine::stop() } /*! + Convenience functions to start/stop this state machine. + + \sa start(), stop(), started(), finished(), stopped() +*/ +void QStateMachine::setRunning(bool running) +{ + if (running) + start(); + else + stop(); +} + +/*! \threadsafe Posts the given \a event of the given \a priority for processing by this @@ -2712,6 +2736,15 @@ QStateMachine::WrappedEvent::~WrappedEvent() Returns a clone of the original event. */ +/*! + \fn QStateMachine::runningChanged(bool running) + \since 5.4 + + This signal is emitted when the running property is changed. + + \sa QStateMachine::running +*/ + QT_END_NAMESPACE #include "qstatemachine.moc" diff --git a/src/corelib/statemachine/qstatemachine.h b/src/corelib/statemachine/qstatemachine.h index 9305676bb5..0092c4d0c5 100644 --- a/src/corelib/statemachine/qstatemachine.h +++ b/src/corelib/statemachine/qstatemachine.h @@ -62,6 +62,7 @@ class Q_CORE_EXPORT QStateMachine : public QState Q_OBJECT Q_PROPERTY(QString errorString READ errorString) Q_PROPERTY(QState::RestorePolicy globalRestorePolicy READ globalRestorePolicy WRITE setGlobalRestorePolicy) + Q_PROPERTY(bool running READ isRunning WRITE setRunning NOTIFY runningChanged) #ifndef QT_NO_ANIMATION Q_PROPERTY(bool animated READ isAnimated WRITE setAnimated) #endif @@ -149,6 +150,7 @@ public: public Q_SLOTS: void start(); void stop(); + void setRunning(bool running); Q_SIGNALS: void started( @@ -161,6 +163,8 @@ Q_SIGNALS: QPrivateSignal #endif ); + void runningChanged(bool running); + protected: void onEntry(QEvent *event); |