summaryrefslogtreecommitdiffstats
path: root/src/declarative/fx
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2009-07-01 08:21:39 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2009-07-01 11:20:54 (GMT)
commit5118020e63f5e634a74082c417362d735a7a2303 (patch)
treee8825b7d0960d260e124e22cbb6263bc5e01bb53 /src/declarative/fx
parent59a3b7d39e75884027decdd8a029062f0fdde32a (diff)
downloadQt-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.cpp34
-rw-r--r--src/declarative/fx/qfxlayouts_p.h7
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;
};