diff options
author | Kent Hansen <kent.hansen@nokia.com> | 2012-07-04 21:05:51 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-10 06:20:39 +0200 |
commit | aa7180ca9228c0b2da5fd5fa49835f62a7e39134 (patch) | |
tree | 894733c4af48297223827d91ae82d8335f118f72 /src/corelib/statemachine | |
parent | 2f18e7276298451a48593e7e5bb71a9e9deaffcf (diff) |
statemachine: Small refactoring of animation selection code
QStateMachinePrivate::applyProperties() is an epically long function.
Move the code for selecting animations to a separate function, in
preparation of a larger refactoring.
Change-Id: Ic5846db97dd0cb0d6ad01740f413b233d2a66975
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Diffstat (limited to 'src/corelib/statemachine')
-rw-r--r-- | src/corelib/statemachine/qstatemachine.cpp | 34 | ||||
-rw-r--r-- | src/corelib/statemachine/qstatemachine_p.h | 1 |
2 files changed, 21 insertions, 14 deletions
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp index 2453ae970d..e53d86a134 100644 --- a/src/corelib/statemachine/qstatemachine.cpp +++ b/src/corelib/statemachine/qstatemachine.cpp @@ -757,20 +757,7 @@ void QStateMachinePrivate::applyProperties(const QList<QAbstractTransition*> &tr } // Find the animations to use for the state change. - QList<QAbstractAnimation*> selectedAnimations; - if (animated) { - for (int i = 0; i < transitionList.size(); ++i) { - QAbstractTransition *transition = transitionList.at(i); - - selectedAnimations << transition->animations(); - selectedAnimations << defaultAnimationsForSource.values(transition->sourceState()); - - QList<QAbstractState *> targetStates = transition->targetStates(); - for (int j=0; j<targetStates.size(); ++j) - selectedAnimations << defaultAnimationsForTarget.values(targetStates.at(j)); - } - selectedAnimations << defaultAnimations; - } + QList<QAbstractAnimation *> selectedAnimations = selectAnimations(transitionList); // Initialize animations from property assignments. for (int i = 0; i < selectedAnimations.size(); ++i) { @@ -1153,6 +1140,25 @@ void QStateMachinePrivate::_q_animationFinished() } } +QList<QAbstractAnimation *> QStateMachinePrivate::selectAnimations(const QList<QAbstractTransition *> &transitionList) const +{ + QList<QAbstractAnimation *> selectedAnimations; + if (animated) { + for (int i = 0; i < transitionList.size(); ++i) { + QAbstractTransition *transition = transitionList.at(i); + + selectedAnimations << transition->animations(); + selectedAnimations << defaultAnimationsForSource.values(transition->sourceState()); + + QList<QAbstractState *> targetStates = transition->targetStates(); + for (int j=0; j<targetStates.size(); ++j) + selectedAnimations << defaultAnimationsForTarget.values(targetStates.at(j)); + } + selectedAnimations << defaultAnimations; + } + return selectedAnimations; +} + #endif // !QT_NO_ANIMATION namespace { diff --git a/src/corelib/statemachine/qstatemachine_p.h b/src/corelib/statemachine/qstatemachine_p.h index 6159107dc0..b9716483a6 100644 --- a/src/corelib/statemachine/qstatemachine_p.h +++ b/src/corelib/statemachine/qstatemachine_p.h @@ -228,6 +228,7 @@ public: QMultiHash<QAbstractState *, QAbstractAnimation *> defaultAnimationsForSource; QMultiHash<QAbstractState *, QAbstractAnimation *> defaultAnimationsForTarget; + QList<QAbstractAnimation *> selectAnimations(const QList<QAbstractTransition *> &transitionList) const; #endif // QT_NO_ANIMATION QSignalEventGenerator *signalEventGenerator; |