diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-07-01 08:21:39 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-07-01 11:20:54 (GMT) |
commit | 5118020e63f5e634a74082c417362d735a7a2303 (patch) | |
tree | e8825b7d0960d260e124e22cbb6263bc5e01bb53 /src/declarative/fx | |
parent | 59a3b7d39e75884027decdd8a029062f0fdde32a (diff) | |
download | Qt-5118020e63f5e634a74082c417362d735a7a2303.zip Qt-5118020e63f5e634a74082c417362d735a7a2303.tar.gz Qt-5118020e63f5e634a74082c417362d735a7a2303.tar.bz2 |
Remove QmlSetProperty
This involves the introduction of separation between states and transition application. This was necessary to allow layouts to continue to use transitions.
Diffstat (limited to 'src/declarative/fx')
-rw-r--r-- | src/declarative/fx/qfxlayouts.cpp | 34 | ||||
-rw-r--r-- | src/declarative/fx/qfxlayouts_p.h | 7 |
2 files changed, 18 insertions, 23 deletions
diff --git a/src/declarative/fx/qfxlayouts.cpp b/src/declarative/fx/qfxlayouts.cpp index e27135c..af51318 100644 --- a/src/declarative/fx/qfxlayouts.cpp +++ b/src/declarative/fx/qfxlayouts.cpp @@ -310,9 +310,6 @@ void QFxBaseLayout::preLayout() d->_ep = true; QCoreApplication::postEvent(this, new QEvent(QEvent::User)); } - if (d->stateGroup) { - delete d->stateGroup; d->stateGroup = 0; - } QSet<QFxItem *> allItems; for (int ii = 0; ii < this->QSimpleCanvasItem::children().count(); ++ii) { QFxItem *child = qobject_cast<QFxItem *>(this->QSimpleCanvasItem::children().at(ii)); @@ -388,32 +385,29 @@ void QFxBaseLayout::preLayout() } //###This should be considered to move more centrally, as it seems useful -void QFxBaseLayout::applyTransition(const QList<QPair<QString, QVariant> >& changes, - QFxItem* target, QmlTransition* trans) +void QFxBaseLayout::applyTransition(const QList<QPair<QString, QVariant> >& changes, QFxItem* target, QmlTransition* trans) { Q_D(QFxBaseLayout); if (!trans||!target)//TODO: if !trans, just apply changes return; setLayoutItem(target); - if (d->stateGroup) - delete d->stateGroup; - d->stateGroup = new QmlStateGroup(this); - QmlState *state = new QmlState; - *(d->stateGroup->statesProperty()) << state; + QmlStateOperation::ActionList actions; + for (int ii=0; ii<changes.size(); ++ii){ - QmlSetProperty *sp = new QmlSetProperty(state); - sp->setObject(target); - QVariant val = changes[ii].second; - if (d->_margin && - (changes[ii].first == QLatin1String("x") || changes[ii].first == QLatin1String("y"))){ + + QVariant val = changes[ii].second; + if (d->_margin && + (changes[ii].first == QLatin1String("x") || + changes[ii].first == QLatin1String("y"))) { val = QVariant(val.toInt() + d->_margin); - } - sp->setValue(val); - sp->setProperty(changes[ii].first); - *state << sp; + } + + actions << Action(target, changes[ii].first, val); + } - state->apply(d->stateGroup, trans, 0); + + d->transitionManager.transition(actions, trans); d->_animated << target; } diff --git a/src/declarative/fx/qfxlayouts_p.h b/src/declarative/fx/qfxlayouts_p.h index 77b0ea1..5ffe70e 100644 --- a/src/declarative/fx/qfxlayouts_p.h +++ b/src/declarative/fx/qfxlayouts_p.h @@ -58,7 +58,7 @@ #include <QtCore/QString> #include <QtDeclarative/qfxlayouts.h> #include <QtDeclarative/qmlstate.h> - +#include <private/qmltransitionmanager_p.h> QT_BEGIN_NAMESPACE class QFxBaseLayoutPrivate : public QFxItemPrivate @@ -69,7 +69,7 @@ public: QFxBaseLayoutPrivate() : _ep(false), _componentComplete(false), _spacing(0), _margin(0), aut(QFxBaseLayout::None), moveTransition(0), addTransition(0), - removeTransition(0), _layoutItem(0), stateGroup(0), _movingItem(0) + removeTransition(0), _layoutItem(0), _movingItem(0) { } @@ -92,7 +92,8 @@ public: QSet<QFxItem *> _newItems; QSet<QFxItem *> _animated; QFxItem *_layoutItem; - QmlStateGroup *stateGroup; + QmlTransitionManager transitionManager; +// QmlStateGroup *stateGroup; QFxItem *_movingItem; }; |