summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/animation/appchooser/main.cpp2
-rw-r--r--src/corelib/statemachine/qstate.cpp25
-rw-r--r--src/corelib/statemachine/qstate.h7
-rw-r--r--src/corelib/statemachine/qstatemachine.cpp40
-rw-r--r--src/corelib/statemachine/qstatemachine.h12
-rw-r--r--src/corelib/statemachine/qstatemachine_p.h2
-rw-r--r--tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp42
7 files changed, 64 insertions, 66 deletions
diff --git a/examples/animation/appchooser/main.cpp b/examples/animation/appchooser/main.cpp
index 23a0bd6aee..c8e60c0641 100644
--- a/examples/animation/appchooser/main.cpp
+++ b/examples/animation/appchooser/main.cpp
@@ -146,7 +146,7 @@ int main(int argc, char **argv)
window.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
QState *group = new QState(&machine);
group->setObjectName("group");
diff --git a/src/corelib/statemachine/qstate.cpp b/src/corelib/statemachine/qstate.cpp
index 481f0e92a2..afe0225727 100644
--- a/src/corelib/statemachine/qstate.cpp
+++ b/src/corelib/statemachine/qstate.cpp
@@ -124,6 +124,31 @@ QT_BEGIN_NAMESPACE
is entered, all its child states are entered in parallel.
*/
+/*!
+ \enum QState::RestorePolicy
+
+ This enum specifies the restore policy type. The restore policy
+ takes effect when the machine enters a state which sets one or more
+ properties. If the restore policy is set to RestoreProperties,
+ the state machine will save the original value of the property before the
+ new value is set.
+
+ Later, when the machine either enters a state which does not set
+ a value for the given property, the property will automatically be restored
+ to its initial value.
+
+ Only one initial value will be saved for any given property. If a value for a property has
+ already been saved by the state machine, it will not be overwritten until the property has been
+ successfully restored.
+
+ \value DontRestoreProperties The state machine should not save the initial values of properties
+ and restore them later.
+ \value RestoreProperties The state machine should save the initial values of properties
+ and restore them later.
+
+ \sa QStateMachine::globalRestorePolicy, QState::assignProperty()
+*/
+
QStatePrivate::QStatePrivate()
: QAbstractStatePrivate(StandardState),
errorState(0), initialState(0), childMode(QState::ExclusiveStates),
diff --git a/src/corelib/statemachine/qstate.h b/src/corelib/statemachine/qstate.h
index 63a11b4e4f..2989bd4d7e 100644
--- a/src/corelib/statemachine/qstate.h
+++ b/src/corelib/statemachine/qstate.h
@@ -63,13 +63,18 @@ class Q_CORE_EXPORT QState : public QAbstractState
Q_PROPERTY(QAbstractState* initialState READ initialState WRITE setInitialState)
Q_PROPERTY(QAbstractState* errorState READ errorState WRITE setErrorState)
Q_PROPERTY(ChildMode childMode READ childMode WRITE setChildMode)
- Q_ENUMS(ChildMode)
+ Q_ENUMS(ChildMode RestorePolicy)
public:
enum ChildMode {
ExclusiveStates,
ParallelStates
};
+ enum RestorePolicy {
+ DontRestoreProperties,
+ RestoreProperties
+ };
+
QState(QState *parent = 0);
QState(ChildMode childMode, QState *parent = 0);
~QState();
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp
index 2d6ced3051..b6973881d5 100644
--- a/src/corelib/statemachine/qstatemachine.cpp
+++ b/src/corelib/statemachine/qstatemachine.cpp
@@ -159,7 +159,7 @@ QT_BEGIN_NAMESPACE
\brief the restore policy for states of this state machine.
The default value of this property is
- QStateMachine::DontRestoreProperties.
+ QState::DontRestoreProperties.
*/
#ifndef QT_NO_ANIMATION
@@ -191,7 +191,7 @@ QStateMachinePrivate::QStateMachinePrivate()
stop = false;
stopProcessingReason = EventQueueEmpty;
error = QStateMachine::NoError;
- globalRestorePolicy = QStateMachine::DontRestoreProperties;
+ globalRestorePolicy = QState::DontRestoreProperties;
signalEventGenerator = 0;
#ifndef QT_NO_ANIMATION
animated = true;
@@ -575,7 +575,7 @@ void QStateMachinePrivate::enterStates(QEvent *event, const QList<QAbstractState
QList<QPropertyAssignment> assignments = propertyAssignmentsForState.value(s);
for (int i = 0; i < assignments.size(); ++i) {
const QPropertyAssignment &assn = assignments.at(i);
- if (globalRestorePolicy == QStateMachine::RestoreProperties) {
+ if (globalRestorePolicy == QState::RestoreProperties) {
if (assn.explicitlySet) {
if (!hasRestorable(s, assn.object, assn.propertyName)) {
QVariant value = savedValueForRestorable(exitedStates_sorted, assn.object, assn.propertyName);
@@ -1250,7 +1250,7 @@ void QStateMachinePrivate::initializeAnimations(QAbstractState *state, const QLi
// ### connect to just the top-level animation?
QObject::connect(a, SIGNAL(finished()), q, SLOT(_q_animationFinished()), Qt::UniqueConnection);
}
- if ((globalRestorePolicy == QStateMachine::RestoreProperties)
+ if ((globalRestorePolicy == QState::RestoreProperties)
&& !hasRestorable(state, assn.object, assn.propertyName)) {
QVariant value = savedValueForRestorable(exitedStates_sorted, assn.object, assn.propertyName);
unregisterRestorables(exitedStates_sorted, assn.object, assn.propertyName);
@@ -1983,32 +1983,6 @@ QStateMachine::~QStateMachine()
*/
/*!
- \enum QStateMachine::RestorePolicy
-
- This enum specifies the restore policy type. The restore policy
- takes effect when the machine enters a state which sets one or more
- properties. If the restore policy is set to RestoreProperties,
- the state machine will save the original value of the property before the
- new value is set.
-
- Later, when the machine either enters a state which does not set
- a value for the given property, the property will automatically be restored
- to its initial value.
-
- Only one initial value will be saved for any given property. If a value for a property has
- already been saved by the state machine, it will not be overwritten until the property has been
- successfully restored.
-
- \value DontRestoreProperties The state machine should not save the initial values of properties
- and restore them later.
- \value RestoreProperties The state machine should save the initial values of properties
- and restore them later.
-
- \sa QStateMachine::globalRestorePolicy, QState::assignProperty()
-*/
-
-
-/*!
Returns the error code of the last error that occurred in the state machine.
*/
QStateMachine::Error QStateMachine::error() const
@@ -2041,7 +2015,7 @@ void QStateMachine::clearError()
\sa setGlobalRestorePolicy()
*/
-QStateMachine::RestorePolicy QStateMachine::globalRestorePolicy() const
+QState::RestorePolicy QStateMachine::globalRestorePolicy() const
{
Q_D(const QStateMachine);
return d->globalRestorePolicy;
@@ -2049,11 +2023,11 @@ QStateMachine::RestorePolicy QStateMachine::globalRestorePolicy() const
/*!
Sets the restore policy of the state machine to \a restorePolicy. The default
- restore policy is QAbstractState::DontRestoreProperties.
+ restore policy is QState::DontRestoreProperties.
\sa globalRestorePolicy()
*/
-void QStateMachine::setGlobalRestorePolicy(QStateMachine::RestorePolicy restorePolicy)
+void QStateMachine::setGlobalRestorePolicy(QState::RestorePolicy restorePolicy)
{
Q_D(QStateMachine);
d->globalRestorePolicy = restorePolicy;
diff --git a/src/corelib/statemachine/qstatemachine.h b/src/corelib/statemachine/qstatemachine.h
index 964b89a66e..cc9c8aa652 100644
--- a/src/corelib/statemachine/qstatemachine.h
+++ b/src/corelib/statemachine/qstatemachine.h
@@ -63,8 +63,7 @@ class Q_CORE_EXPORT QStateMachine : public QState
{
Q_OBJECT
Q_PROPERTY(QString errorString READ errorString)
- Q_PROPERTY(RestorePolicy globalRestorePolicy READ globalRestorePolicy WRITE setGlobalRestorePolicy)
- Q_ENUMS(RestorePolicy)
+ Q_PROPERTY(QState::RestorePolicy globalRestorePolicy READ globalRestorePolicy WRITE setGlobalRestorePolicy)
#ifndef QT_NO_ANIMATION
Q_PROPERTY(bool animated READ isAnimated WRITE setAnimated)
#endif
@@ -107,11 +106,6 @@ public:
HighPriority
};
- enum RestorePolicy {
- DontRestoreProperties,
- RestoreProperties
- };
-
enum Error {
NoError,
NoInitialStateError,
@@ -141,8 +135,8 @@ public:
void removeDefaultAnimation(QAbstractAnimation *animation);
#endif // QT_NO_ANIMATION
- QStateMachine::RestorePolicy globalRestorePolicy() const;
- void setGlobalRestorePolicy(QStateMachine::RestorePolicy restorePolicy);
+ QState::RestorePolicy globalRestorePolicy() const;
+ void setGlobalRestorePolicy(QState::RestorePolicy restorePolicy);
void postEvent(QEvent *event, EventPriority priority = NormalPriority);
int postDelayedEvent(QEvent *event, int delay);
diff --git a/src/corelib/statemachine/qstatemachine_p.h b/src/corelib/statemachine/qstatemachine_p.h
index 9e1f425779..cf20ee31ca 100644
--- a/src/corelib/statemachine/qstatemachine_p.h
+++ b/src/corelib/statemachine/qstatemachine_p.h
@@ -224,7 +224,7 @@ public:
QMutex externalEventMutex;
QStateMachine::Error error;
- QStateMachine::RestorePolicy globalRestorePolicy;
+ QState::RestorePolicy globalRestorePolicy;
QString errorString;
QSet<QAbstractState *> pendingErrorStates;
diff --git a/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp b/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
index af10f06718..e4a26d61b3 100644
--- a/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
+++ b/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
@@ -1034,8 +1034,8 @@ void tst_QStateMachine::customErrorStateNotInGraph()
void tst_QStateMachine::restoreProperties()
{
QStateMachine machine;
- QCOMPARE(machine.globalRestorePolicy(), QStateMachine::DontRestoreProperties);
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ QCOMPARE(machine.globalRestorePolicy(), QState::DontRestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
QObject *object = new QObject(&machine);
object->setProperty("a", 1);
@@ -2906,7 +2906,7 @@ void tst_QStateMachine::noInitialStateForInitialState()
void tst_QStateMachine::globalRestorePolicySetToDontRestore()
{
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::DontRestoreProperties);
+ machine.setGlobalRestorePolicy(QState::DontRestoreProperties);
QObject *propertyHolder = new QObject(&machine);
propertyHolder->setProperty("a", 1);
@@ -2946,7 +2946,7 @@ void tst_QStateMachine::globalRestorePolicySetToDontRestore()
void tst_QStateMachine::globalRestorePolicySetToRestore()
{
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
QObject *propertyHolder = new QObject(&machine);
propertyHolder->setProperty("a", 1);
@@ -3272,7 +3272,7 @@ void tst_QStateMachine::propertiesAssignedSignalTransitionsReuseAnimationGroup()
void tst_QStateMachine::animatedGlobalRestoreProperty()
{
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
QObject *object = new QObject(&machine);
object->setProperty("foo", 1.0);
@@ -3621,7 +3621,7 @@ void tst_QStateMachine::parallelStateTransition()
void tst_QStateMachine::nestedRestoreProperties()
{
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
QObject *propertyHolder = new QObject(&machine);
propertyHolder->setProperty("foo", 1);
@@ -3673,7 +3673,7 @@ void tst_QStateMachine::nestedRestoreProperties()
void tst_QStateMachine::nestedRestoreProperties2()
{
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
QObject *propertyHolder = new QObject(&machine);
propertyHolder->setProperty("foo", 1);
@@ -4107,7 +4107,7 @@ void tst_QStateMachine::deletePropertyAssignmentObjectBeforeEntry()
void tst_QStateMachine::deletePropertyAssignmentObjectBeforeRestore()
{
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
QState *s1 = new QState(&machine);
machine.setInitialState(s1);
QState *s2 = new QState(&machine);
@@ -4149,7 +4149,7 @@ void tst_QStateMachine::deleteInitialState()
void tst_QStateMachine::setPropertyAfterRestore()
{
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
QObject *object = new QObject(&machine);
object->setProperty("a", 1);
@@ -4194,8 +4194,8 @@ void tst_QStateMachine::setPropertyAfterRestore()
void tst_QStateMachine::transitionWithNoTarget_data()
{
QTest::addColumn<int>("restorePolicy");
- QTest::newRow("DontRestoreProperties") << int(QStateMachine::DontRestoreProperties);
- QTest::newRow("RestoreProperties") << int(QStateMachine::RestoreProperties);
+ QTest::newRow("DontRestoreProperties") << int(QState::DontRestoreProperties);
+ QTest::newRow("RestoreProperties") << int(QState::RestoreProperties);
}
void tst_QStateMachine::transitionWithNoTarget()
@@ -4203,7 +4203,7 @@ void tst_QStateMachine::transitionWithNoTarget()
QFETCH(int, restorePolicy);
QStateMachine machine;
- machine.setGlobalRestorePolicy(static_cast<QStateMachine::RestorePolicy>(restorePolicy));
+ machine.setGlobalRestorePolicy(static_cast<QState::RestorePolicy>(restorePolicy));
QObject *object = new QObject;
object->setProperty("a", 1);
@@ -4274,7 +4274,7 @@ private:
void tst_QStateMachine::restorePropertiesSimple()
{
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
PropertyObject *po = new PropertyObject;
po->setProp(2);
@@ -4337,7 +4337,7 @@ void tst_QStateMachine::restorePropertiesSimple()
void tst_QStateMachine::restoreProperties2()
{
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
PropertyObject *po = new PropertyObject;
po->setProp(2);
@@ -4419,7 +4419,7 @@ void tst_QStateMachine::restoreProperties2()
void tst_QStateMachine::restoreProperties3()
{
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
PropertyObject *po = new PropertyObject;
po->setProp(2);
@@ -4471,7 +4471,7 @@ void tst_QStateMachine::restoreProperties3()
void tst_QStateMachine::restoreProperties4()
{
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
PropertyObject *po1 = new PropertyObject;
po1->setProp(2);
@@ -4543,7 +4543,7 @@ void tst_QStateMachine::restoreProperties4()
void tst_QStateMachine::restorePropertiesSelfTransition()
{
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
PropertyObject *po = new PropertyObject;
po->setProp(2);
@@ -4581,7 +4581,7 @@ void tst_QStateMachine::restorePropertiesSelfTransition()
void tst_QStateMachine::changeStateWhileAnimatingProperty()
{
QStateMachine machine;
- machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ machine.setGlobalRestorePolicy(QState::RestoreProperties);
QObject *o1 = new QObject;
o1->setProperty("x", 10.);
@@ -4655,8 +4655,8 @@ private Q_SLOTS:
void tst_QStateMachine::propertiesAreAssignedBeforeEntryCallbacks_data()
{
QTest::addColumn<int>("restorePolicy");
- QTest::newRow("DontRestoreProperties") << int(QStateMachine::DontRestoreProperties);
- QTest::newRow("RestoreProperties") << int(QStateMachine::RestoreProperties);
+ QTest::newRow("DontRestoreProperties") << int(QState::DontRestoreProperties);
+ QTest::newRow("RestoreProperties") << int(QState::RestoreProperties);
}
void tst_QStateMachine::propertiesAreAssignedBeforeEntryCallbacks()
@@ -4664,7 +4664,7 @@ void tst_QStateMachine::propertiesAreAssignedBeforeEntryCallbacks()
QFETCH(int, restorePolicy);
QStateMachine machine;
- machine.setGlobalRestorePolicy(static_cast<QStateMachine::RestorePolicy>(restorePolicy));
+ machine.setGlobalRestorePolicy(static_cast<QState::RestorePolicy>(restorePolicy));
AssignPropertyTestState *s1 = new AssignPropertyTestState(&machine);
s1->assignProperty(s1, "wasAssigned", true);