From 6b775ffda38549bc9d76b6374dd9604115868a18 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 17 Feb 2012 14:02:49 +1000 Subject: [PATCH] Use an enum rather than a string to represent state event types. Change-Id: Iad230b610f35b1c1faa6ce60615551f293d4745d Reviewed-by: Bea Lam --- src/quick/items/qquickanimation.cpp | 4 ++-- src/quick/items/qquickstateoperations.cpp | 12 ++++++------ src/quick/items/qquickstateoperations_p.h | 4 ++-- src/quick/util/qdeclarativeanimation.cpp | 2 +- src/quick/util/qdeclarativepropertychanges.cpp | 4 ++-- src/quick/util/qdeclarativestate.cpp | 11 +++-------- src/quick/util/qdeclarativestate_p.h | 4 +++- src/quick/util/qdeclarativestateoperations.cpp | 5 ++--- src/quick/util/qdeclarativestateoperations_p.h | 2 +- src/quick/util/qdeclarativetransitionmanager.cpp | 2 +- 10 files changed, 23 insertions(+), 27 deletions(-) diff --git a/src/quick/items/qquickanimation.cpp b/src/quick/items/qquickanimation.cpp index 233e44a..4880190 100644 --- a/src/quick/items/qquickanimation.cpp +++ b/src/quick/items/qquickanimation.cpp @@ -263,7 +263,7 @@ QAbstractAnimationJob* QQuickParentAnimation::transition(QDeclarativeStateAction if (!hasExplicit) for (int i = 0; i < actions.size(); ++i) { QDeclarativeAction &action = actions[i]; - if (action.event && action.event->typeName() == QLatin1String("ParentChange") + if (action.event && action.event->type() == QDeclarativeActionEvent::ParentChange && (!d->target || static_cast(action.event)->object() == d->target)) { QQuickParentChange *pc = static_cast(action.event); @@ -537,7 +537,7 @@ QAbstractAnimationJob* QQuickAnchorAnimation::transition(QDeclarativeStateAction for (int ii = 0; ii < actions.count(); ++ii) { QDeclarativeAction &action = actions[ii]; - if (action.event && action.event->typeName() == QLatin1String("AnchorChanges") + if (action.event && action.event->type() == QDeclarativeActionEvent::AnchorChanges && (d->targets.isEmpty() || d->targets.contains(static_cast(action.event)->object()))) { data->actions << static_cast(action.event)->additionalActions(); } diff --git a/src/quick/items/qquickstateoperations.cpp b/src/quick/items/qquickstateoperations.cpp index bf78bad..c4dd0fd 100644 --- a/src/quick/items/qquickstateoperations.cpp +++ b/src/quick/items/qquickstateoperations.cpp @@ -465,15 +465,15 @@ void QQuickParentChange::reverse(Reason) d->doChange(d->origParent, d->origStackBefore); } -QString QQuickParentChange::typeName() const +QDeclarativeActionEvent::EventType QQuickParentChange::type() const { - return QLatin1String("ParentChange"); + return ParentChange; } bool QQuickParentChange::override(QDeclarativeActionEvent*other) { Q_D(QQuickParentChange); - if (other->typeName() != QLatin1String("ParentChange")) + if (other->type() != ParentChange) return false; if (QQuickParentChange *otherPC = static_cast(other)) return (d->target == otherPC->object()); @@ -1116,9 +1116,9 @@ void QQuickAnchorChanges::reverse(Reason reason) d->target->setY(d->origY); } -QString QQuickAnchorChanges::typeName() const +QDeclarativeActionEvent::EventType QQuickAnchorChanges::type() const { - return QLatin1String("AnchorChanges"); + return AnchorChanges; } QList QQuickAnchorChanges::additionalActions() @@ -1278,7 +1278,7 @@ void QQuickAnchorChanges::clearBindings() bool QQuickAnchorChanges::override(QDeclarativeActionEvent*other) { - if (other->typeName() != QLatin1String("AnchorChanges")) + if (other->type() != AnchorChanges) return false; if (static_cast(this) == other) return true; diff --git a/src/quick/items/qquickstateoperations_p.h b/src/quick/items/qquickstateoperations_p.h index 91a1c33..328beab 100644 --- a/src/quick/items/qquickstateoperations_p.h +++ b/src/quick/items/qquickstateoperations_p.h @@ -111,7 +111,7 @@ public: virtual void execute(Reason reason = ActualChange); virtual bool isReversable(); virtual void reverse(Reason reason = ActualChange); - virtual QString typeName() const; + virtual EventType type() const; virtual bool override(QDeclarativeActionEvent*other); virtual void rewind(); virtual void saveCurrentValues(); @@ -247,7 +247,7 @@ public: virtual void execute(Reason reason = ActualChange); virtual bool isReversable(); virtual void reverse(Reason reason = ActualChange); - virtual QString typeName() const; + virtual EventType type() const; virtual bool override(QDeclarativeActionEvent*other); virtual bool changesBindings(); virtual void saveOriginals(); diff --git a/src/quick/util/qdeclarativeanimation.cpp b/src/quick/util/qdeclarativeanimation.cpp index e70c3ea..2c2bcf9 100644 --- a/src/quick/util/qdeclarativeanimation.cpp +++ b/src/quick/util/qdeclarativeanimation.cpp @@ -929,7 +929,7 @@ QAbstractAnimationJob* QDeclarativeScriptAction::transition(QDeclarativeStateAct for (int ii = 0; ii < actions.count(); ++ii) { QDeclarativeAction &action = actions[ii]; - if (action.event && action.event->typeName() == QLatin1String("StateChangeScript") + if (action.event && action.event->type() == QDeclarativeActionEvent::Script && static_cast(action.event)->name() == d->name) { d->runScriptScript = static_cast(action.event)->script(); d->hasRunScriptScript = true; diff --git a/src/quick/util/qdeclarativepropertychanges.cpp b/src/quick/util/qdeclarativepropertychanges.cpp index 623f0d6..350c84e 100644 --- a/src/quick/util/qdeclarativepropertychanges.cpp +++ b/src/quick/util/qdeclarativepropertychanges.cpp @@ -144,7 +144,7 @@ public: delete ownedExpression; } - virtual QString typeName() const { return QLatin1String("ReplaceSignalHandler"); } + virtual EventType type() const { return SignalHandler; } QDeclarativeProperty property; QDeclarativeExpression *expression; @@ -196,7 +196,7 @@ public: virtual bool override(QDeclarativeActionEvent*other) { if (other == this) return true; - if (other->typeName() != typeName()) + if (other->type() != type()) return false; if (static_cast(other)->property == property) return true; diff --git a/src/quick/util/qdeclarativestate.cpp b/src/quick/util/qdeclarativestate.cpp index 98992da..f0795e9 100644 --- a/src/quick/util/qdeclarativestate.cpp +++ b/src/quick/util/qdeclarativestate.cpp @@ -86,11 +86,6 @@ QDeclarativeActionEvent::~QDeclarativeActionEvent() { } -QString QDeclarativeActionEvent::typeName() const -{ - return QString(); -} - void QDeclarativeActionEvent::execute(Reason) { } @@ -594,7 +589,7 @@ void QDeclarativeState::apply(QDeclarativeTransition *trans, QDeclarativeState * bool found = false; for (int jj = 0; jj < d->revertList.count(); ++jj) { QDeclarativeActionEvent *event = d->revertList.at(jj).event(); - if (event && event->typeName() == action.event->typeName()) { + if (event && event->type() == action.event->type()) { if (action.event->override(event)) { found = true; @@ -656,7 +651,7 @@ void QDeclarativeState::apply(QDeclarativeTransition *trans, QDeclarativeState * continue; for (int jj = 0; !found && jj < applyList.count(); ++jj) { const QDeclarativeAction &action = applyList.at(jj); - if (action.event && action.event->typeName() == event->typeName()) { + if (action.event && action.event->type() == event->type()) { if (action.event->override(event)) found = true; } @@ -702,7 +697,7 @@ void QDeclarativeState::apply(QDeclarativeTransition *trans, QDeclarativeState * if (stateChangeDebug()) { foreach(const QDeclarativeAction &action, applyList) { if (action.event) - qWarning() << " QDeclarativeAction event:" << action.event->typeName(); + qWarning() << " QDeclarativeAction event:" << action.event->type(); else qWarning() << " QDeclarativeAction:" << action.property.object() << action.property.name() << "From:" << action.fromValue diff --git a/src/quick/util/qdeclarativestate_p.h b/src/quick/util/qdeclarativestate_p.h index 7c6bfcf..5c2606e 100644 --- a/src/quick/util/qdeclarativestate_p.h +++ b/src/quick/util/qdeclarativestate_p.h @@ -88,10 +88,12 @@ class Q_AUTOTEST_EXPORT QDeclarativeActionEvent { public: virtual ~QDeclarativeActionEvent(); - virtual QString typeName() const; + enum EventType { Script, SignalHandler, ParentChange, AnchorChanges }; enum Reason { ActualChange, FastForward }; + virtual EventType type() const = 0; + virtual void execute(Reason reason = ActualChange); virtual bool isReversable(); virtual void reverse(Reason reason = ActualChange); diff --git a/src/quick/util/qdeclarativestateoperations.cpp b/src/quick/util/qdeclarativestateoperations.cpp index 7d6f70d..3ecf497 100644 --- a/src/quick/util/qdeclarativestateoperations.cpp +++ b/src/quick/util/qdeclarativestateoperations.cpp @@ -146,12 +146,11 @@ QDeclarativeStateChangeScript::ActionList QDeclarativeStateChangeScript::actions return rv; } -QString QDeclarativeStateChangeScript::typeName() const +QDeclarativeActionEvent::EventType QDeclarativeStateChangeScript::type() const { - return QLatin1String("StateChangeScript"); + return Script; } - #include QT_END_NAMESPACE diff --git a/src/quick/util/qdeclarativestateoperations_p.h b/src/quick/util/qdeclarativestateoperations_p.h index e6bdf3c..a64a7e2 100644 --- a/src/quick/util/qdeclarativestateoperations_p.h +++ b/src/quick/util/qdeclarativestateoperations_p.h @@ -64,7 +64,7 @@ public: virtual ActionList actions(); - virtual QString typeName() const; + virtual EventType type() const; QDeclarativeScriptString script() const; void setScript(const QDeclarativeScriptString &); diff --git a/src/quick/util/qdeclarativetransitionmanager.cpp b/src/quick/util/qdeclarativetransitionmanager.cpp index 7b4e8f4..ebe7805 100644 --- a/src/quick/util/qdeclarativetransitionmanager.cpp +++ b/src/quick/util/qdeclarativetransitionmanager.cpp @@ -258,7 +258,7 @@ void QDeclarativeTransitionManager::transition(const QList & if (stateChangeDebug()) { foreach(const QDeclarativeAction &action, applyList) { if (action.event) - qWarning() << " No transition for event:" << action.event->typeName(); + qWarning() << " No transition for event:" << action.event->type(); else qWarning() << " No transition for:" << action.property.object() << action.property.name() << "From:" << action.fromValue -- 2.7.4