aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickanimation.cpp
diff options
context:
space:
mode:
authorBea Lam <bea.lam@nokia.com>2012-02-03 13:18:05 +1000
committerQt by Nokia <qt-info@nokia.com>2012-02-08 03:27:31 +0100
commitf5a43c09dbbf0caece4976303250a7582f6037ec (patch)
tree9cd519c671c792c708b186a92d18681deb31405e /src/quick/items/qquickanimation.cpp
parent74ff1216a449d6098975b3c9baca7abb1399211b (diff)
Accept default targets for transitions
QDeclarativeAbstractAnimation::transition(), QDeclarativeTransition::prepare() and QDeclarativeTransitionManager now accept a QObject* to specify a default target for a transition. For view transitions, this will allow the view to pass a view item as the default target for a view transition so that the Transition does not have to explicitly set the target for every animation. Change-Id: I2c8d5535283335e139d98ef56f399f338627fb3e Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
Diffstat (limited to 'src/quick/items/qquickanimation.cpp')
-rw-r--r--src/quick/items/qquickanimation.cpp28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/quick/items/qquickanimation.cpp b/src/quick/items/qquickanimation.cpp
index baf1c8dc45..4962fc21ce 100644
--- a/src/quick/items/qquickanimation.cpp
+++ b/src/quick/items/qquickanimation.cpp
@@ -206,7 +206,8 @@ QPointF QQuickParentAnimationPrivate::computeTransformOrigin(QQuickItem::Transfo
QAbstractAnimationJob* QQuickParentAnimation::transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction)
+ TransitionDirection direction,
+ QObject *defaultTarget)
{
Q_D(QQuickParentAnimation);
@@ -387,7 +388,7 @@ QAbstractAnimationJob* QQuickParentAnimation::transition(QDeclarativeStateAction
for (int ii = 0; ii < d->animations.count(); ++ii) {
if (valid)
d->animations.at(ii)->setDefaultTarget(d->defaultProperty);
- anim = d->animations.at(ii)->transition(actions, modified, direction);
+ anim = d->animations.at(ii)->transition(actions, modified, direction, defaultTarget);
ag->appendAnimation(anim);
}
@@ -521,9 +522,11 @@ void QQuickAnchorAnimation::setEasing(const QEasingCurve &e)
QAbstractAnimationJob* QQuickAnchorAnimation::transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction)
+ TransitionDirection direction,
+ QObject *defaultTarget)
{
Q_UNUSED(modified);
+ Q_UNUSED(defaultTarget);
Q_D(QQuickAnchorAnimation);
QDeclarativeAnimationPropertyUpdater *data = new QDeclarativeAnimationPropertyUpdater;
data->interpolatorType = QMetaType::QReal;
@@ -823,15 +826,18 @@ void QQuickPathAnimation::setEndRotation(qreal rotation)
QAbstractAnimationJob* QQuickPathAnimation::transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction)
+ TransitionDirection direction,
+ QObject *defaultTarget)
{
Q_D(QQuickPathAnimation);
+ QQuickItem *target = d->target ? d->target : qobject_cast<QQuickItem*>(defaultTarget);
+
QQuickPathAnimationUpdater prevData;
bool havePrevData = false;
- if (d->activeAnimations.contains(d->target)) {
+ if (d->activeAnimations.contains(target)) {
havePrevData = true;
- prevData = *d->activeAnimations[d->target]->pathUpdater();
+ prevData = *d->activeAnimations[target]->pathUpdater();
}
QList<QQuickItem*> keys = d->activeAnimations.keys();
@@ -846,7 +852,7 @@ QAbstractAnimationJob* QQuickPathAnimation::transition(QDeclarativeStateActions
QQuickPathAnimationUpdater *data = new QQuickPathAnimationUpdater();
QQuickPathAnimationAnimator *pa = new QQuickPathAnimationAnimator(d);
- d->activeAnimations[d->target] = pa;
+ d->activeAnimations[target] = pa;
data->orientation = d->orientation;
data->anchorPoint = d->anchorPoint;
@@ -863,21 +869,21 @@ QAbstractAnimationJob* QQuickPathAnimation::transition(QDeclarativeStateActions
QDeclarativeAction &action = actions[i];
if (action.event)
continue;
- if (action.specifiedObject == d->target && action.property.name() == QLatin1String("x")) {
+ if (action.specifiedObject == target && action.property.name() == QLatin1String("x")) {
data->toX = action.toValue.toReal();
modified << action.property;
action.fromValue = action.toValue;
}
- if (action.specifiedObject == d->target && action.property.name() == QLatin1String("y")) {
+ if (action.specifiedObject == target && action.property.name() == QLatin1String("y")) {
data->toY = action.toValue.toReal();
modified << action.property;
action.fromValue = action.toValue;
}
}
- if (d->target && d->path &&
+ if (target && d->path &&
(modified.count() > origModifiedSize || data->toDefined)) {
- data->target = d->target;
+ data->target = target;
data->path = d->path;
data->path->invalidateSequentialHistory();