QAbstractAnimationJob* QQuickParentAnimation::transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction)
+ TransitionDirection direction,
+ QObject *defaultTarget)
{
Q_D(QQuickParentAnimation);
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);
}
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;
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();
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;
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();
protected:
virtual QAbstractAnimationJob* transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction);
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
};
class QQuickAnchorAnimationPrivate;
protected:
virtual QAbstractAnimationJob* transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction);
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
};
class QQuickItem;
protected:
virtual QAbstractAnimationJob* transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction);
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
Q_SIGNALS:
void durationChanged(int);
void easingChanged(const QEasingCurve &);
QAbstractAnimationJob* QDeclarativeAbstractAnimation::transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction)
+ TransitionDirection direction,
+ QObject *defaultTarget)
{
Q_UNUSED(actions);
Q_UNUSED(modified);
Q_UNUSED(direction);
+ Q_UNUSED(defaultTarget);
return 0;
}
QAbstractAnimationJob* QDeclarativePauseAnimation::transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction)
+ TransitionDirection direction,
+ QObject *defaultTarget)
{
Q_D(QDeclarativePauseAnimation);
Q_UNUSED(actions);
Q_UNUSED(modified);
Q_UNUSED(direction);
+ Q_UNUSED(defaultTarget);
return initInstance(new QPauseAnimationJob(d->duration));
}
QAbstractAnimationJob* QDeclarativeScriptAction::transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction)
+ TransitionDirection direction,
+ QObject *defaultTarget)
{
Q_D(QDeclarativeScriptAction);
Q_UNUSED(modified);
+ Q_UNUSED(defaultTarget);
d->hasRunScriptScript = false;
d->reversing = (direction == Backward);
QAbstractAnimationJob* QDeclarativePropertyAction::transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction)
+ TransitionDirection direction,
+ QObject *defaultTarget)
{
Q_D(QDeclarativePropertyAction);
Q_UNUSED(direction);
targets << d->defaultProperty.object();
}
+ if (defaultTarget && targets.isEmpty())
+ targets << defaultTarget;
+
QDeclarativeSetPropertyAnimationAction *data = new QDeclarativeSetPropertyAnimationAction;
bool hasExplicit = false;
QAbstractAnimationJob* QDeclarativeSequentialAnimation::transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction)
+ TransitionDirection direction,
+ QObject *defaultTarget)
{
Q_D(QDeclarativeAnimationGroup);
for (int ii = from; ii < d->animations.count() && ii >= 0; ii += inc) {
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);
inc == -1 ? ag->prependAnimation(anim) : ag->appendAnimation(anim);
}
QAbstractAnimationJob* QDeclarativeParallelAnimation::transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction)
+ TransitionDirection direction,
+ QObject *defaultTarget)
{
Q_D(QDeclarativeAnimationGroup);
QParallelAnimationGroupJob *ag = new QParallelAnimationGroupJob;
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);
}
return initInstance(ag);
}
QDeclarativeStateActions QDeclarativePropertyAnimation::createTransitionActions(QDeclarativeStateActions &actions,
- QDeclarativeProperties &modified)
+ QDeclarativeProperties &modified,
+ QObject *defaultTarget)
{
Q_D(QDeclarativePropertyAnimation);
QDeclarativeStateActions newActions;
targets << d->defaultProperty.object();
}
+ if (defaultTarget && targets.isEmpty())
+ targets << defaultTarget;
+
if (props.isEmpty() && !d->defaultProperties.isEmpty()) {
props << d->defaultProperties.split(QLatin1Char(','));
}
QAbstractAnimationJob* QDeclarativePropertyAnimation::transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction)
+ TransitionDirection direction,
+ QObject *defaultTarget)
{
Q_D(QDeclarativePropertyAnimation);
- QDeclarativeStateActions dataActions = createTransitionActions(actions, modified);
+ QDeclarativeStateActions dataActions = createTransitionActions(actions, modified, defaultTarget);
QDeclarativeBulkValueAnimator *animator = new QDeclarativeBulkValueAnimator;
animator->setDuration(d->duration);
enum TransitionDirection { Forward, Backward };
virtual QAbstractAnimationJob* transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction);
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
QAbstractAnimationJob* qtAnimation();
private Q_SLOTS:
protected:
QAbstractAnimationJob* transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction);
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
};
class QDeclarativeScriptActionPrivate;
protected:
virtual QAbstractAnimationJob* transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction);
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
};
class QDeclarativePropertyActionPrivate;
protected:
virtual QAbstractAnimationJob* transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction);
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
};
class QDeclarativePropertyAnimationPrivate;
protected:
QDeclarativeStateActions createTransitionActions(QDeclarativeStateActions &actions,
- QDeclarativeProperties &modified);
+ QDeclarativeProperties &modified,
+ QObject *defaultTarget = 0);
QDeclarativePropertyAnimation(QDeclarativePropertyAnimationPrivate &dd, QObject *parent);
virtual QAbstractAnimationJob* transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction);
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
Q_SIGNALS:
void durationChanged(int);
void fromChanged(QVariant);
protected:
virtual QAbstractAnimationJob* transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction);
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
};
class Q_QUICK_PRIVATE_EXPORT QDeclarativeParallelAnimation : public QDeclarativeAnimationGroup
protected:
virtual QAbstractAnimationJob* transition(QDeclarativeStateActions &actions,
QDeclarativeProperties &modified,
- TransitionDirection direction);
+ TransitionDirection direction,
+ QObject *defaultTarget = 0);
};
QDeclarativeTransitionInstance *QDeclarativeTransition::prepare(QDeclarativeStateOperation::ActionList &actions,
QList<QDeclarativeProperty> &after,
- QDeclarativeTransitionManager *manager)
+ QDeclarativeTransitionManager *manager,
+ QObject *defaultTarget)
{
Q_D(QDeclarativeTransition);
QAbstractAnimationJob *anim = 0;
for (int i = start; i != end;) {
- anim = d->animations.at(i)->transition(actions, after, direction);
+ anim = d->animations.at(i)->transition(actions, after, direction, defaultTarget);
if (anim)
d->reversed ? group->prependAnimation(anim) : group->appendAnimation(anim);
d->reversed ? --i : ++i;
QDeclarativeTransitionInstance *prepare(QDeclarativeStateOperation::ActionList &actions,
QList<QDeclarativeProperty> &after,
- QDeclarativeTransitionManager *end);
+ QDeclarativeTransitionManager *end,
+ QObject *defaultTarget);
void setReversed(bool r);
}
void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &list,
- QDeclarativeTransition *transition)
+ QDeclarativeTransition *transition,
+ QObject *defaultTarget)
{
cancel();
if (transition) {
QList<QDeclarativeProperty> touched;
QDeclarativeTransitionInstance *oldInstance = d->transitionInstance;
- d->transitionInstance = transition->prepare(applyList, touched, this);
+ d->transitionInstance = transition->prepare(applyList, touched, this, defaultTarget);
d->transitionInstance->start();
if (oldInstance && oldInstance != d->transitionInstance)
delete oldInstance;
bool isRunning() const;
- void transition(const QList<QDeclarativeAction> &, QDeclarativeTransition *transition);
+ void transition(const QList<QDeclarativeAction> &, QDeclarativeTransition *transition, QObject *defaultTarget = 0);
void cancel();