From 2729df73c54eebcd4b981eaf1487d604e467c4d5 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Tue, 23 Jun 2009 10:13:58 +0200 Subject: Changed SetProperty to SetProperties to anticipate deprecation of SetProperty. --- examples/declarative/states/states.qml | 12 +++++++++--- examples/declarative/states/transitions.qml | 12 +++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/examples/declarative/states/states.qml b/examples/declarative/states/states.qml index bcde20c..c7ee172 100644 --- a/examples/declarative/states/states.qml +++ b/examples/declarative/states/states.qml @@ -26,15 +26,21 @@ Rect { // In state 'Position1', change the 'myrect' item x, y to 150, 50. State { name: "Position1" - SetProperty { target: myrect; property: "x"; value: 150 } - SetProperty { target: myrect; property: "y"; value: 50 } + SetProperties { + target: myrect + x: 150 + y: 50 + } }, // In state 'Position2', change y to 100. We do not specify 'x' here - // it will therefore be restored to its default value of 0, if it // had been changed. State { name: "Position2" - SetProperty { target: myrect; property: "y"; value: 200 } + SetProperties { + target: myrect + y: 200 + } } ] } diff --git a/examples/declarative/states/transitions.qml b/examples/declarative/states/transitions.qml index 4c1dceb..736cc87 100644 --- a/examples/declarative/states/transitions.qml +++ b/examples/declarative/states/transitions.qml @@ -26,15 +26,21 @@ Rect { // In state 'Position1', change the 'myrect' item x, y to 150, 50. State { name: "Position1" - SetProperty { target: myrect; property: "x"; value: 150 } - SetProperty { target: myrect; property: "y"; value: 50 } + SetProperties { + target: myrect + x: 150 + y: 50 + } }, // In state 'Position2', change y to 100. We do not specify 'x' here - // it will therefore be restored to its default value of 0, if it // had been changed. State { name: "Position2" - SetProperty { target: myrect; property: "y"; value: 200 } + SetProperties { + target: myrect + y: 200 + } } ] -- cgit v0.12 From 2020c692803a8a7839d85860d05174a193d9a848 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Tue, 23 Jun 2009 10:16:18 +0200 Subject: Changed SetProperty to SetProperties to anticipate deprecation of SetProperty. --- examples/declarative/tutorials/helloworld/t3/tutorial3.qml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/examples/declarative/tutorials/helloworld/t3/tutorial3.qml b/examples/declarative/tutorials/helloworld/t3/tutorial3.qml index bd89ecf..127d99e 100644 --- a/examples/declarative/tutorials/helloworld/t3/tutorial3.qml +++ b/examples/declarative/tutorials/helloworld/t3/tutorial3.qml @@ -14,15 +14,10 @@ Rect { State { name: "down" when: MouseRegion.pressed == true - SetProperty { + SetProperties { target: HelloText - property: "y" - value: 160 - } - SetProperty { - target: HelloText - property: "color" - value: "red" + y: 160 + color: "red" } } ] -- cgit v0.12 From 969f15aa35863bf5bd3d3d2cfa087cf67d5ddc81 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 25 Jun 2009 09:40:13 +1000 Subject: Add support for setting/getting animation time. --- src/declarative/util/qmlanimation.cpp | 10 ++++++++++ src/declarative/util/qmlanimation.h | 3 +++ 2 files changed, 13 insertions(+) diff --git a/src/declarative/util/qmlanimation.cpp b/src/declarative/util/qmlanimation.cpp index 2a6cad9..4776391 100644 --- a/src/declarative/util/qmlanimation.cpp +++ b/src/declarative/util/qmlanimation.cpp @@ -371,6 +371,16 @@ void QmlAbstractAnimation::setRepeat(bool r) emit repeatChanged(r); } +int QmlAbstractAnimation::currentTime() +{ + qtAnimation()->currentTime(); +} + +void QmlAbstractAnimation::setCurrentTime(int time) +{ + qtAnimation()->setCurrentTime(time); +} + QmlAnimationGroup *QmlAbstractAnimation::group() const { Q_D(const QmlAbstractAnimation); diff --git a/src/declarative/util/qmlanimation.h b/src/declarative/util/qmlanimation.h index 0452159..b0dd261 100644 --- a/src/declarative/util/qmlanimation.h +++ b/src/declarative/util/qmlanimation.h @@ -86,6 +86,9 @@ public: bool repeat() const; void setRepeat(bool); + int currentTime(); + void setCurrentTime(int); + QmlAnimationGroup *group() const; void setGroup(QmlAnimationGroup *); -- cgit v0.12 From 128a0c387801194a690f646cde6579bbf804b7de Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 25 Jun 2009 15:07:21 +1000 Subject: Refactoring animation code. Greatly simplify the NumericAnimation and ColorAnimation classes. Still need to optimize. --- src/declarative/util/qmlanimation.cpp | 651 +++++----------------------------- src/declarative/util/qmlanimation.h | 167 +++------ src/declarative/util/qmlanimation_p.h | 60 ---- 3 files changed, 131 insertions(+), 747 deletions(-) diff --git a/src/declarative/util/qmlanimation.cpp b/src/declarative/util/qmlanimation.cpp index 4776391..f2a91eb 100644 --- a/src/declarative/util/qmlanimation.cpp +++ b/src/declarative/util/qmlanimation.cpp @@ -373,7 +373,7 @@ void QmlAbstractAnimation::setRepeat(bool r) int QmlAbstractAnimation::currentTime() { - qtAnimation()->currentTime(); + return qtAnimation()->currentTime(); } void QmlAbstractAnimation::setCurrentTime(int time) @@ -716,9 +716,9 @@ QAbstractAnimation *QmlPauseAnimation::qtAnimation() */ QmlColorAnimation::QmlColorAnimation(QObject *parent) -: QmlAbstractAnimation(*(new QmlColorAnimationPrivate), parent) +: QmlVariantAnimation(parent) { - Q_D(QmlColorAnimation); + Q_D(QmlVariantAnimation); d->init(); } @@ -726,46 +726,6 @@ QmlColorAnimation::~QmlColorAnimation() { } -void QmlColorAnimationPrivate::init() -{ - Q_Q(QmlColorAnimation); - ca = new QmlTimeLineValueAnimator(q); - ca->setStartValue(QVariant(0.0f)); - ca->setEndValue(QVariant(1.0f)); -} - -/*! - \qmlproperty int ColorAnimation::duration - This property holds the duration of the color transition, in milliseconds. - - The default value is 250. -*/ -/*! - \property QmlColorAnimation::duration - \brief the duration of the transition, in milliseconds. - - The default value is 250. -*/ -int QmlColorAnimation::duration() const -{ - Q_D(const QmlColorAnimation); - return d->ca->duration(); -} - -void QmlColorAnimation::setDuration(int duration) -{ - if (duration < 0) { - qWarning("QmlColorAnimation: Cannot set a duration of < 0"); - return; - } - - Q_D(QmlColorAnimation); - if (d->ca->duration() == duration) - return; - d->ca->setDuration(duration); - emit durationChanged(duration); -} - /*! \qmlproperty color ColorAnimation::from This property holds the starting color. @@ -776,18 +736,13 @@ void QmlColorAnimation::setDuration(int duration) */ QColor QmlColorAnimation::from() const { - Q_D(const QmlColorAnimation); - return d->fromValue; + Q_D(const QmlVariantAnimation); + return d->from.value(); } void QmlColorAnimation::setFrom(const QColor &f) { - Q_D(QmlColorAnimation); - if (d->fromIsDefined && f == d->fromValue) - return; - d->fromValue = f; - d->fromIsDefined = f.isValid(); - emit fromChanged(f); + QmlVariantAnimation::setFrom(f); } /*! @@ -800,202 +755,15 @@ void QmlColorAnimation::setFrom(const QColor &f) */ QColor QmlColorAnimation::to() const { - Q_D(const QmlColorAnimation); - return d->toValue; + Q_D(const QmlVariantAnimation); + return d->to.value(); } void QmlColorAnimation::setTo(const QColor &t) { - Q_D(QmlColorAnimation); - if (d->toIsDefined && t == d->toValue) - return; - d->toValue = t; - d->toIsDefined = t.isValid(); - emit toChanged(t); -} - -/*! - \qmlproperty string ColorAnimation::easing - This property holds the easing curve used for the transition. - - Each channel of the color is eased using the same easing curve. - See NumericAnimation::easing for a full discussion of easing, - and a list of available curves. -*/ -QString QmlColorAnimation::easing() const -{ - Q_D(const QmlColorAnimation); - return d->easing; -} - -void QmlColorAnimation::setEasing(const QString &e) -{ - Q_D(QmlColorAnimation); - if (d->easing == e) - return; - - d->easing = e; - d->ca->setEasingCurve(stringToCurve(d->easing)); - emit easingChanged(e); -} - -/*! - \qmlproperty list ColorAnimation::filter - This property holds the items selected to be affected by this animation (all if not set). - \sa exclude -*/ -QList *QmlColorAnimation::filter() -{ - Q_D(QmlColorAnimation); - return &d->filter; -} - -/*! - \qmlproperty list ColorAnimation::exclude - This property holds the items not to be affected by this animation. - \sa filter -*/ -QList *QmlColorAnimation::exclude() -{ - Q_D(QmlColorAnimation); - return &d->exclude; -} - -void QmlColorAnimation::prepare(QmlMetaProperty &p) -{ - Q_D(QmlColorAnimation); - if (d->userProperty.isNull) - d->property = p; - else - d->property = d->userProperty; - d->fromSourced = false; - d->value.QmlTimeLineValue::setValue(0.); - d->ca->setAnimValue(&d->value, QAbstractAnimation::KeepWhenStopped); - d->ca->setFromSourcedValue(&d->fromSourced); -} - -QAbstractAnimation *QmlColorAnimation::qtAnimation() -{ - Q_D(QmlColorAnimation); - return d->ca; -} - -void QmlColorAnimation::transition(QmlStateActions &actions, - QmlMetaProperties &modified, - TransitionDirection direction) -{ - Q_D(QmlColorAnimation); - Q_UNUSED(direction); - - struct NTransitionData : public QmlTimeLineValue - { - QmlStateActions actions; - void write(QmlMetaProperty &property, const QVariant &color) - { - if (property.propertyType() == QVariant::Color) { - property.write(color); - } - } - - void setValue(qreal v) - { - QmlTimeLineValue::setValue(v); - for (int ii = 0; ii < actions.count(); ++ii) { - Action &action = actions[ii]; - - QColor to(action.toValue.value()); - - if (v == 1.) { - write(action.property, to); - } else { - if (action.fromValue.isNull()) { - action.fromValue = action.property.read(); - if (action.fromValue.isNull()) - action.fromValue = QVariant(QColor()); - } - - QColor from(action.fromValue.value()); - - QVariant newColor = QmlColorAnimationPrivate::colorInterpolator(&from, &to, v); - write(action.property, newColor); - } - } - } - }; - - //XXX should we get rid of this? - QStringList props; - props << QLatin1String("color"); - if (!d->propertyName.isEmpty() && !props.contains(d->propertyName)) - props.append(d->propertyName); - - NTransitionData *data = new NTransitionData; - - QSet objs; - for (int ii = 0; ii < actions.count(); ++ii) { - Action &action = actions[ii]; - - QObject *obj = action.property.object(); - QString propertyName = action.property.name(); - - if ((d->filter.isEmpty() || d->filter.contains(obj)) && - (!d->exclude.contains(obj)) && props.contains(propertyName) && - (!target() || target() == obj)) { - objs.insert(obj); - Action myAction = action; - - if (d->fromIsDefined) { - myAction.fromValue = QVariant(d->fromValue); - } else { - myAction.fromValue = QVariant(); - } - if (d->toIsDefined) - myAction.toValue = QVariant(d->toValue); - - modified << action.property; - data->actions << myAction; - action.fromValue = myAction.toValue; - } - } - - if (d->toValue.isValid() && target() && !objs.contains(target())) { - QObject *obj = target(); - for (int jj = 0; jj < props.count(); ++jj) { - Action myAction; - myAction.property = QmlMetaProperty(obj, props.at(jj)); - - if (d->fromIsDefined) - myAction.fromValue = QVariant(d->fromValue); - - myAction.toValue = QVariant(d->toValue); - myAction.bv = 0; - myAction.event = 0; - data->actions << myAction; - } - } - - if (data->actions.count()) - d->ca->setAnimValue(data, QAbstractAnimation::DeleteWhenStopped); - else - delete data; + QmlVariantAnimation::setTo(t); } -QVariantAnimation::Interpolator QmlColorAnimationPrivate::colorInterpolator = 0; - -void QmlColorAnimationPrivate::valueChanged(qreal v) -{ - if (!fromSourced) { - if (!fromIsDefined) { - fromValue = qvariant_cast(property.read()); - } - fromSourced = true; - } - - if (property.propertyType() == QVariant::Color) { - QVariant newColor = colorInterpolator(&fromValue, &toValue, v); - property.write(newColor); - } -} QML_DEFINE_TYPE(QmlColorAnimation,ColorAnimation) /*! @@ -1428,9 +1196,9 @@ QML_DEFINE_TYPE(QmlParentChangeAction,ParentChangeAction) */ QmlNumericAnimation::QmlNumericAnimation(QObject *parent) -: QmlAbstractAnimation(*(new QmlNumericAnimationPrivate), parent) +: QmlVariantAnimation(parent) { - Q_D(QmlNumericAnimation); + Q_D(QmlVariantAnimation); d->init(); } @@ -1438,46 +1206,6 @@ QmlNumericAnimation::~QmlNumericAnimation() { } -void QmlNumericAnimationPrivate::init() -{ - Q_Q(QmlNumericAnimation); - na = new QmlTimeLineValueAnimator(q); - na->setStartValue(QVariant(0.0f)); - na->setEndValue(QVariant(1.0f)); -} - -/*! - \qmlproperty int NumericAnimation::duration - This property holds the duration of the transition, in milliseconds. - - The default value is 250. -*/ -/*! - \property QmlNumericAnimation::duration - \brief the duration of the transition, in milliseconds. - - The default value is 250. -*/ -int QmlNumericAnimation::duration() const -{ - Q_D(const QmlNumericAnimation); - return d->na->duration(); -} - -void QmlNumericAnimation::setDuration(int duration) -{ - if (duration < 0) { - qWarning("QmlNumericAnimation: Cannot set a duration of < 0"); - return; - } - - Q_D(QmlNumericAnimation); - if (d->na->duration() == duration) - return; - d->na->setDuration(duration); - emit durationChanged(duration); -} - /*! \qmlproperty real NumericAnimation::from This property holds the starting value. @@ -1489,17 +1217,13 @@ void QmlNumericAnimation::setDuration(int duration) */ qreal QmlNumericAnimation::from() const { - Q_D(const QmlNumericAnimation); - return d->from; + Q_D(const QmlVariantAnimation); + return d->from.toDouble(); //### toFloat? } void QmlNumericAnimation::setFrom(qreal f) { - Q_D(QmlNumericAnimation); - if (!d->from.isNull && f == d->from) - return; - d->from = f; - emit fromChanged(f); + QmlVariantAnimation::setFrom(f); } /*! @@ -1513,280 +1237,13 @@ void QmlNumericAnimation::setFrom(qreal f) */ qreal QmlNumericAnimation::to() const { - Q_D(const QmlNumericAnimation); - return d->to; + Q_D(const QmlVariantAnimation); + return d->to.toDouble(); //### toFloat? } void QmlNumericAnimation::setTo(qreal t) { - Q_D(QmlNumericAnimation); - if (!d->to.isNull && t == d->to) - return; - d->to = t; - emit toChanged(t); -} - -/*! - \qmlproperty string NumericAnimation::easing - \brief the easing curve used for the transition. - - Available values are: - - \list - \i \e easeNone - Easing equation function for a simple linear tweening, with no easing. - \i \e easeInQuad - Easing equation function for a quadratic (t^2) easing in: accelerating from zero velocity. - \i \e easeOutQuad - Easing equation function for a quadratic (t^2) easing out: decelerating to zero velocity. - \i \e easeInOutQuad - Easing equation function for a quadratic (t^2) easing in/out: acceleration until halfway, then deceleration. - \i \e easeOutInQuad - Easing equation function for a quadratic (t^2) easing out/in: deceleration until halfway, then acceleration. - \i \e easeInCubic - Easing equation function for a cubic (t^3) easing in: accelerating from zero velocity. - \i \e easeOutCubic - Easing equation function for a cubic (t^3) easing out: decelerating from zero velocity. - \i \e easeInOutCubic - Easing equation function for a cubic (t^3) easing in/out: acceleration until halfway, then deceleration. - \i \e easeOutInCubic - Easing equation function for a cubic (t^3) easing out/in: deceleration until halfway, then acceleration. - \i \e easeInQuart - Easing equation function for a quartic (t^4) easing in: accelerating from zero velocity. - \i \e easeOutQuart - Easing equation function for a quartic (t^4) easing out: decelerating from zero velocity. - \i \e easeInOutQuart - Easing equation function for a quartic (t^4) easing in/out: acceleration until halfway, then deceleration. - \i \e easeOutInQuart - Easing equation function for a quartic (t^4) easing out/in: deceleration until halfway, then acceleration. - \i \e easeInQuint - Easing equation function for a quintic (t^5) easing in: accelerating from zero velocity. - \i \e easeOutQuint - Easing equation function for a quintic (t^5) easing out: decelerating from zero velocity. - \i \e easeInOutQuint - Easing equation function for a quintic (t^5) easing in/out: acceleration until halfway, then deceleration. - \i \e easeOutInQuint - Easing equation function for a quintic (t^5) easing out/in: deceleration until halfway, then acceleration. - \i \e easeInSine - Easing equation function for a sinusoidal (sin(t)) easing in: accelerating from zero velocity. - \i \e easeOutSine - Easing equation function for a sinusoidal (sin(t)) easing out: decelerating from zero velocity. - \i \e easeInOutSine - Easing equation function for a sinusoidal (sin(t)) easing in/out: acceleration until halfway, then deceleration. - \i \e easeOutInSine - Easing equation function for a sinusoidal (sin(t)) easing out/in: deceleration until halfway, then acceleration. - \i \e easeInExpo - Easing equation function for an exponential (2^t) easing in: accelerating from zero velocity. - \i \e easeOutExpo - Easing equation function for an exponential (2^t) easing out: decelerating from zero velocity. - \i \e easeInOutExpo - Easing equation function for an exponential (2^t) easing in/out: acceleration until halfway, then deceleration. - \i \e easeOutInExpo - Easing equation function for an exponential (2^t) easing out/in: deceleration until halfway, then acceleration. - \i \e easeInCirc - Easing equation function for a circular (sqrt(1-t^2)) easing in: accelerating from zero velocity. - \i \e easeOutCirc - Easing equation function for a circular (sqrt(1-t^2)) easing out: decelerating from zero velocity. - \i \e easeInOutCirc - Easing equation function for a circular (sqrt(1-t^2)) easing in/out: acceleration until halfway, then deceleration. - \i \e easeOutInCirc - Easing equation function for a circular (sqrt(1-t^2)) easing out/in: deceleration until halfway, then acceleration. - \i \e easeInElastic - Easing equation function for an elastic (exponentially decaying sine wave) easing in: accelerating from zero velocity. The peak amplitude can be set with the \e amplitude parameter, and the period of decay by the \e period parameter. - \i \e easeOutElastic - Easing equation function for an elastic (exponentially decaying sine wave) easing out: decelerating from zero velocity. The peak amplitude can be set with the \e amplitude parameter, and the period of decay by the \e period parameter. - \i \e easeInOutElastic - Easing equation function for an elastic (exponentially decaying sine wave) easing in/out: acceleration until halfway, then deceleration. - \i \e easeOutInElastic - Easing equation function for an elastic (exponentially decaying sine wave) easing out/in: deceleration until halfway, then acceleration. - \i \e easeInBack - Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing in: accelerating from zero velocity. - \i \e easeOutBack - Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing out: decelerating from zero velocity. - \i \e easeInOutBack - Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing in/out: acceleration until halfway, then deceleration. - \i \e easeOutInBack - Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing out/in: deceleration until halfway, then acceleration. - \i \e easeOutBounce - Easing equation function for a bounce (exponentially decaying parabolic bounce) easing out: decelerating from zero velocity. - \i \e easeInBounce - Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in: accelerating from zero velocity. - \i \e easeInOutBounce - Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in/out: acceleration until halfway, then deceleration. - \i \e easeOutInBounce - Easing equation function for a bounce (exponentially decaying parabolic bounce) easing out/in: deceleration until halfway, then acceleration. - \endlist -*/ - -/*! - \property QmlNumericAnimation::easing - This property holds the easing curve to use. - - \sa QEasingCurve -*/ -QString QmlNumericAnimation::easing() const -{ - Q_D(const QmlNumericAnimation); - return d->easing; -} - -void QmlNumericAnimation::setEasing(const QString &e) -{ - Q_D(QmlNumericAnimation); - if (d->easing == e) - return; - - d->easing = e; - d->na->setEasingCurve(stringToCurve(d->easing)); - emit easingChanged(e); -} - -/*! - \qmlproperty string NumericAnimation::properties - This property holds the properties this animation should be applied to. - - This is a comma-separated list of properties that should use - this animation when they change. -*/ -/*! - \property QmlNumericAnimation::properties - \brief the properties this animation should be applied to. - - properties holds a comma-separated list of properties that should use - this animation when they change. -*/ -QString QmlNumericAnimation::properties() const -{ - Q_D(const QmlNumericAnimation); - return d->properties; -} - -void QmlNumericAnimation::setProperties(const QString &prop) -{ - Q_D(QmlNumericAnimation); - if (d->properties == prop) - return; - - d->properties = prop; - emit propertiesChanged(prop); -} - -/*! - \qmlproperty list NumericAnimation::filter - This property holds the items selected to be affected by this animation (all if not set). - \sa exclude -*/ -QList *QmlNumericAnimation::filter() -{ - Q_D(QmlNumericAnimation); - return &d->filter; -} - -/*! - \qmlproperty list NumericAnimation::exclude - This property holds the items not to be affected by this animation. - \sa filter -*/ -QList *QmlNumericAnimation::exclude() -{ - Q_D(QmlNumericAnimation); - return &d->exclude; -} - -void QmlNumericAnimationPrivate::valueChanged(qreal r) -{ - if (!fromSourced) { - if (from.isNull) { - fromValue = qvariant_cast(property.read()); - } else { - fromValue = from; - } - fromSourced = true; - } - - if (r == 1.) { - property.write(to.value); - } else { - qreal val = fromValue + (to-fromValue) * r; - property.write(val); - } -} - -void QmlNumericAnimation::prepare(QmlMetaProperty &p) -{ - Q_D(QmlNumericAnimation); - if (d->userProperty.isNull) - d->property = p; - else - d->property = d->userProperty; - d->fromSourced = false; - d->value.QmlTimeLineValue::setValue(0.); - d->na->setAnimValue(&d->value, QAbstractAnimation::KeepWhenStopped); - d->na->setFromSourcedValue(&d->fromSourced); -} - -QAbstractAnimation *QmlNumericAnimation::qtAnimation() -{ - Q_D(QmlNumericAnimation); - return d->na; -} - -void QmlNumericAnimation::transition(QmlStateActions &actions, - QmlMetaProperties &modified, - TransitionDirection direction) -{ - Q_D(QmlNumericAnimation); - Q_UNUSED(direction); - - struct NTransitionData : public QmlTimeLineValue - { - QmlStateActions actions; - void setValue(qreal v) - { - QmlTimeLineValue::setValue(v); - for (int ii = 0; ii < actions.count(); ++ii) { - Action &action = actions[ii]; - - QmlBehaviour::_ignore = true; - if (v == 1.) - action.property.write(action.toValue.toDouble()); - else { - if (action.fromValue.isNull()) { - action.fromValue = action.property.read(); - if (action.fromValue.isNull()) { - action.fromValue = QVariant(0.); - } - } - qreal start = action.fromValue.toDouble(); - qreal end = action.toValue.toDouble(); - qreal val = start + (end-start) * v; - action.property.write(val); - } - QmlBehaviour::_ignore = false; - } - } - }; - - QStringList props = d->properties.isEmpty() ? QStringList() : d->properties.split(QLatin1Char(',')); - for (int ii = 0; ii < props.count(); ++ii) - props[ii] = props.at(ii).trimmed(); - if (!d->propertyName.isEmpty() && !props.contains(d->propertyName)) - props.append(d->propertyName); - - if (d->userProperty.isValid() && props.isEmpty() && !target()) { - props.append(d->userProperty.value.name()); - d->target = d->userProperty.value.object(); - } - - NTransitionData *data = new NTransitionData; - - QSet objs; - for (int ii = 0; ii < actions.count(); ++ii) { - Action &action = actions[ii]; - - QObject *obj = action.property.object(); - QString propertyName = action.property.name(); - - if ((d->filter.isEmpty() || d->filter.contains(obj)) && - (!d->exclude.contains(obj)) && props.contains(propertyName) && - (!target() || target() == obj)) { - objs.insert(obj); - Action myAction = action; - if (d->from.isValid()) { - myAction.fromValue = QVariant(d->from); - } else { - myAction.fromValue = QVariant(); - } - if (d->to.isValid()) - myAction.toValue = QVariant(d->to); - - modified << action.property; - - data->actions << myAction; - action.fromValue = myAction.toValue; - } - } - - if (d->to.isValid() && target() && !objs.contains(target())) { - QObject *obj = target(); - for (int jj = 0; jj < props.count(); ++jj) { - Action myAction; - myAction.property = QmlMetaProperty(obj, props.at(jj)); - - if (d->from.isValid()) - myAction.fromValue = QVariant(d->from); - - myAction.toValue = QVariant(d->to); - myAction.bv = 0; - myAction.event = 0; - data->actions << myAction; - } - } - - if (data->actions.count()) { - d->na->setAnimValue(data, QAbstractAnimation::DeleteWhenStopped); - } else { - delete data; - } + QmlVariantAnimation::setTo(t); } QML_DEFINE_TYPE(QmlNumericAnimation,NumericAnimation) @@ -1971,6 +1428,7 @@ void QmlParallelAnimation::transition(QmlStateActions &actions, QML_DEFINE_TYPE(QmlParallelAnimation,ParallelAnimation) +//### profile and optimize QVariant QmlVariantAnimationPrivate::interpolateVariant(const QVariant &from, const QVariant &to, qreal progress) { if (from.userType() != to.userType()) @@ -1981,6 +1439,8 @@ QVariant QmlVariantAnimationPrivate::interpolateVariant(const QVariant &from, co } //convert a variant from string type to another animatable type +//### should use any registered string convertor +//### profile and optimize void QmlVariantAnimationPrivate::convertVariant(QVariant &variant, QVariant::Type type) { if (variant.type() != QVariant::String) { @@ -2137,10 +1597,53 @@ void QmlVariantAnimation::setTo(const QVariant &t) /*! \qmlproperty string VariantAnimation::easing - This property holds the easing curve used for the transition. + \brief the easing curve used for the transition. + + Available values are: - See NumericAnimation::easing for a full discussion of easing, - and a list of available curves. + \list + \i \e easeNone - Easing equation function for a simple linear tweening, with no easing. + \i \e easeInQuad - Easing equation function for a quadratic (t^2) easing in: accelerating from zero velocity. + \i \e easeOutQuad - Easing equation function for a quadratic (t^2) easing out: decelerating to zero velocity. + \i \e easeInOutQuad - Easing equation function for a quadratic (t^2) easing in/out: acceleration until halfway, then deceleration. + \i \e easeOutInQuad - Easing equation function for a quadratic (t^2) easing out/in: deceleration until halfway, then acceleration. + \i \e easeInCubic - Easing equation function for a cubic (t^3) easing in: accelerating from zero velocity. + \i \e easeOutCubic - Easing equation function for a cubic (t^3) easing out: decelerating from zero velocity. + \i \e easeInOutCubic - Easing equation function for a cubic (t^3) easing in/out: acceleration until halfway, then deceleration. + \i \e easeOutInCubic - Easing equation function for a cubic (t^3) easing out/in: deceleration until halfway, then acceleration. + \i \e easeInQuart - Easing equation function for a quartic (t^4) easing in: accelerating from zero velocity. + \i \e easeOutQuart - Easing equation function for a quartic (t^4) easing out: decelerating from zero velocity. + \i \e easeInOutQuart - Easing equation function for a quartic (t^4) easing in/out: acceleration until halfway, then deceleration. + \i \e easeOutInQuart - Easing equation function for a quartic (t^4) easing out/in: deceleration until halfway, then acceleration. + \i \e easeInQuint - Easing equation function for a quintic (t^5) easing in: accelerating from zero velocity. + \i \e easeOutQuint - Easing equation function for a quintic (t^5) easing out: decelerating from zero velocity. + \i \e easeInOutQuint - Easing equation function for a quintic (t^5) easing in/out: acceleration until halfway, then deceleration. + \i \e easeOutInQuint - Easing equation function for a quintic (t^5) easing out/in: deceleration until halfway, then acceleration. + \i \e easeInSine - Easing equation function for a sinusoidal (sin(t)) easing in: accelerating from zero velocity. + \i \e easeOutSine - Easing equation function for a sinusoidal (sin(t)) easing out: decelerating from zero velocity. + \i \e easeInOutSine - Easing equation function for a sinusoidal (sin(t)) easing in/out: acceleration until halfway, then deceleration. + \i \e easeOutInSine - Easing equation function for a sinusoidal (sin(t)) easing out/in: deceleration until halfway, then acceleration. + \i \e easeInExpo - Easing equation function for an exponential (2^t) easing in: accelerating from zero velocity. + \i \e easeOutExpo - Easing equation function for an exponential (2^t) easing out: decelerating from zero velocity. + \i \e easeInOutExpo - Easing equation function for an exponential (2^t) easing in/out: acceleration until halfway, then deceleration. + \i \e easeOutInExpo - Easing equation function for an exponential (2^t) easing out/in: deceleration until halfway, then acceleration. + \i \e easeInCirc - Easing equation function for a circular (sqrt(1-t^2)) easing in: accelerating from zero velocity. + \i \e easeOutCirc - Easing equation function for a circular (sqrt(1-t^2)) easing out: decelerating from zero velocity. + \i \e easeInOutCirc - Easing equation function for a circular (sqrt(1-t^2)) easing in/out: acceleration until halfway, then deceleration. + \i \e easeOutInCirc - Easing equation function for a circular (sqrt(1-t^2)) easing out/in: deceleration until halfway, then acceleration. + \i \e easeInElastic - Easing equation function for an elastic (exponentially decaying sine wave) easing in: accelerating from zero velocity. The peak amplitude can be set with the \e amplitude parameter, and the period of decay by the \e period parameter. + \i \e easeOutElastic - Easing equation function for an elastic (exponentially decaying sine wave) easing out: decelerating from zero velocity. The peak amplitude can be set with the \e amplitude parameter, and the period of decay by the \e period parameter. + \i \e easeInOutElastic - Easing equation function for an elastic (exponentially decaying sine wave) easing in/out: acceleration until halfway, then deceleration. + \i \e easeOutInElastic - Easing equation function for an elastic (exponentially decaying sine wave) easing out/in: deceleration until halfway, then acceleration. + \i \e easeInBack - Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing in: accelerating from zero velocity. + \i \e easeOutBack - Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing out: decelerating from zero velocity. + \i \e easeInOutBack - Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing in/out: acceleration until halfway, then deceleration. + \i \e easeOutInBack - Easing equation function for a back (overshooting cubic easing: (s+1)*t^3 - s*t^2) easing out/in: deceleration until halfway, then acceleration. + \i \e easeOutBounce - Easing equation function for a bounce (exponentially decaying parabolic bounce) easing out: decelerating from zero velocity. + \i \e easeInBounce - Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in: accelerating from zero velocity. + \i \e easeInOutBounce - Easing equation function for a bounce (exponentially decaying parabolic bounce) easing in/out: acceleration until halfway, then deceleration. + \i \e easeOutInBounce - Easing equation function for a bounce (exponentially decaying parabolic bounce) easing out/in: deceleration until halfway, then acceleration. + \endlist */ /*! @@ -2230,8 +1733,7 @@ void QmlVariantAnimationPrivate::valueChanged(qreal r) if (r == 1.) { property.write(to); } else { - QVariant val = interpolateVariant(from, to, r); - property.write(val); + property.write(interpolateVariant(from, to, r)); } } @@ -2266,7 +1768,7 @@ void QmlVariantAnimation::transition(QmlStateActions &actions, Q_D(QmlVariantAnimation); Q_UNUSED(direction); - struct NTransitionData : public QmlTimeLineValue + struct PropertyUpdater : public QmlTimeLineValue { QmlStateActions actions; void setValue(qreal v) @@ -2275,28 +1777,38 @@ void QmlVariantAnimation::transition(QmlStateActions &actions, for (int ii = 0; ii < actions.count(); ++ii) { Action &action = actions[ii]; + QmlBehaviour::_ignore = true; if (v == 1.) action.property.write(action.toValue); else { if (action.fromValue.isNull()) { action.fromValue = action.property.read(); /*if (action.fromValue.isNull()) - action.fromValue = QVariant(0.);*/ //XXX can we give a default value for any type? + action.fromValue = QVariant(0.);*/ //### can/should we give a default value for any type? } QVariant val = QmlVariantAnimationPrivate::interpolateVariant(action.fromValue, action.toValue, v); action.property.write(val); } + QmlBehaviour::_ignore = false; } } }; - QStringList props = d->properties.split(QLatin1Char(',')); + QStringList props = d->properties.isEmpty() ? QStringList() : d->properties.split(QLatin1Char(',')); for (int ii = 0; ii < props.count(); ++ii) props[ii] = props.at(ii).trimmed(); if (!d->propertyName.isEmpty() && !props.contains(d->propertyName)) props.append(d->propertyName); - NTransitionData *data = new NTransitionData; + /* ### we used to select properties of name 'color' by default for color animations + props << QLatin1String("color");*/ + + if (d->userProperty.isValid() && props.isEmpty() && !target()) { + props.append(d->userProperty.value.name()); + d->target = d->userProperty.value.object(); + } + + PropertyUpdater *data = new PropertyUpdater; QSet objs; for (int ii = 0; ii < actions.count(); ++ii) { @@ -2339,7 +1851,6 @@ void QmlVariantAnimation::transition(QmlStateActions &actions, d->convertVariant(d->from, (QVariant::Type)myAction.property.propertyType()); myAction.fromValue = d->from; } - d->convertVariant(d->to, (QVariant::Type)myAction.property.propertyType()); myAction.toValue = d->to; myAction.bv = 0; diff --git a/src/declarative/util/qmlanimation.h b/src/declarative/util/qmlanimation.h index b0dd261..00ff3d7 100644 --- a/src/declarative/util/qmlanimation.h +++ b/src/declarative/util/qmlanimation.h @@ -160,53 +160,6 @@ protected: }; QML_DECLARE_TYPE(QmlPauseAnimation) -class QmlColorAnimationPrivate; -class QmlColorAnimation : public QmlAbstractAnimation -{ - Q_OBJECT - Q_DECLARE_PRIVATE(QmlColorAnimation) - Q_PROPERTY(int duration READ duration WRITE setDuration NOTIFY durationChanged) - Q_PROPERTY(QColor from READ from WRITE setFrom NOTIFY fromChanged) - Q_PROPERTY(QColor to READ to WRITE setTo NOTIFY toChanged) - Q_PROPERTY(QString easing READ easing WRITE setEasing NOTIFY easingChanged) - Q_PROPERTY(QList* filter READ filter) - Q_PROPERTY(QList* exclude READ exclude) - -public: - QmlColorAnimation(QObject *parent=0); - virtual ~QmlColorAnimation(); - - int duration() const; - void setDuration(int); - - QColor from() const; - void setFrom(const QColor &); - - QColor to() const; - void setTo(const QColor &); - - QString easing() const; - void setEasing(const QString &); - - QList *filter(); - - QList *exclude(); - -protected: - virtual void transition(QmlStateActions &actions, - QmlMetaProperties &modified, - TransitionDirection direction); - virtual QAbstractAnimation *qtAnimation(); - virtual void prepare(QmlMetaProperty &); - -Q_SIGNALS: - void durationChanged(int); - void fromChanged(const QColor &); - void toChanged(const QColor &); - void easingChanged(const QString &); -}; -QML_DECLARE_TYPE(QmlColorAnimation) - class QmlRunScriptActionPrivate; class QmlRunScriptAction : public QmlAbstractAnimation { @@ -293,32 +246,32 @@ protected: }; QML_DECLARE_TYPE(QmlParentChangeAction) -class QmlNumericAnimationPrivate; -class QmlNumericAnimation : public QmlAbstractAnimation +class QmlVariantAnimationPrivate; +class QmlVariantAnimation : public QmlAbstractAnimation { Q_OBJECT - Q_DECLARE_PRIVATE(QmlNumericAnimation) + Q_DECLARE_PRIVATE(QmlVariantAnimation) Q_PROPERTY(int duration READ duration WRITE setDuration NOTIFY durationChanged) - Q_PROPERTY(qreal from READ from WRITE setFrom NOTIFY fromChanged) - Q_PROPERTY(qreal to READ to WRITE setTo NOTIFY toChanged) + Q_PROPERTY(QVariant from READ from WRITE setFrom NOTIFY fromChanged) + Q_PROPERTY(QVariant to READ to WRITE setTo NOTIFY toChanged) Q_PROPERTY(QString easing READ easing WRITE setEasing NOTIFY easingChanged) Q_PROPERTY(QString properties READ properties WRITE setProperties NOTIFY propertiesChanged) Q_PROPERTY(QList* filter READ filter) Q_PROPERTY(QList* exclude READ exclude) public: - QmlNumericAnimation(QObject *parent=0); - virtual ~QmlNumericAnimation(); + QmlVariantAnimation(QObject *parent=0); + virtual ~QmlVariantAnimation(); int duration() const; void setDuration(int); - qreal from() const; - void setFrom(qreal); + QVariant from() const; + void setFrom(const QVariant &); - qreal to() const; - void setTo(qreal); + QVariant to() const; + void setTo(const QVariant &); QString easing() const; void setEasing(const QString &); @@ -338,19 +291,51 @@ protected: Q_SIGNALS: void durationChanged(int); - void fromChanged(qreal); - void toChanged(qreal); + void fromChanged(QVariant); + void toChanged(QVariant); void easingChanged(const QString &); void propertiesChanged(const QString &); }; -QML_DECLARE_TYPE(QmlNumericAnimation) +QML_DECLARE_TYPE(QmlVariantAnimation) -#if 0 -class QmlDiscreteAnimation : public QmlAbstractAnimation +class QmlColorAnimation : public QmlVariantAnimation { -Q_OBJECT + Q_OBJECT + Q_DECLARE_PRIVATE(QmlVariantAnimation) + Q_PROPERTY(QColor from READ from WRITE setFrom NOTIFY fromChanged) + Q_PROPERTY(QColor to READ to WRITE setTo NOTIFY toChanged) + +public: + QmlColorAnimation(QObject *parent=0); + virtual ~QmlColorAnimation(); + + QColor from() const; + void setFrom(const QColor &); + + QColor to() const; + void setTo(const QColor &); +}; +QML_DECLARE_TYPE(QmlColorAnimation) + +class QmlNumericAnimation : public QmlVariantAnimation +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QmlVariantAnimation) + + Q_PROPERTY(qreal from READ from WRITE setFrom NOTIFY fromChanged) + Q_PROPERTY(qreal to READ to WRITE setTo NOTIFY toChanged) + +public: + QmlNumericAnimation(QObject *parent=0); + virtual ~QmlNumericAnimation(); + + qreal from() const; + void setFrom(qreal); + + qreal to() const; + void setTo(qreal); }; -#endif +QML_DECLARE_TYPE(QmlNumericAnimation) class QmlAnimationGroupPrivate; class QmlAnimationGroup : public QmlAbstractAnimation @@ -404,58 +389,6 @@ protected: }; QML_DECLARE_TYPE(QmlParallelAnimation) -class QmlVariantAnimationPrivate; -class QmlVariantAnimation : public QmlAbstractAnimation -{ - Q_OBJECT - Q_DECLARE_PRIVATE(QmlVariantAnimation) - - Q_PROPERTY(int duration READ duration WRITE setDuration NOTIFY durationChanged) - Q_PROPERTY(QVariant from READ from WRITE setFrom NOTIFY fromChanged) - Q_PROPERTY(QVariant to READ to WRITE setTo NOTIFY toChanged) - Q_PROPERTY(QString easing READ easing WRITE setEasing NOTIFY easingChanged) - Q_PROPERTY(QString properties READ properties WRITE setProperties NOTIFY propertiesChanged) - Q_PROPERTY(QList* filter READ filter) - Q_PROPERTY(QList* exclude READ exclude) - -public: - QmlVariantAnimation(QObject *parent=0); - virtual ~QmlVariantAnimation(); - - int duration() const; - void setDuration(int); - - QVariant from() const; - void setFrom(const QVariant &); - - QVariant to() const; - void setTo(const QVariant &); - - QString easing() const; - void setEasing(const QString &); - - QString properties() const; - void setProperties(const QString &); - - QList *filter(); - QList *exclude(); - -protected: - virtual void transition(QmlStateActions &actions, - QmlMetaProperties &modified, - TransitionDirection direction); - virtual QAbstractAnimation *qtAnimation(); - virtual void prepare(QmlMetaProperty &); - -Q_SIGNALS: - void durationChanged(int); - void fromChanged(QVariant); - void toChanged(QVariant); - void easingChanged(const QString &); - void propertiesChanged(const QString &); -}; -QML_DECLARE_TYPE(QmlVariantAnimation) - QT_END_NAMESPACE QT_END_HEADER diff --git a/src/declarative/util/qmlanimation_p.h b/src/declarative/util/qmlanimation_p.h index f09ab88..ff31895 100644 --- a/src/declarative/util/qmlanimation_p.h +++ b/src/declarative/util/qmlanimation_p.h @@ -207,40 +207,6 @@ public: QPauseAnimation *pa; }; -class QmlColorAnimationPrivate : public QmlAbstractAnimationPrivate -{ - Q_DECLARE_PUBLIC(QmlColorAnimation) -public: - QmlColorAnimationPrivate() - : QmlAbstractAnimationPrivate(), fromSourced(false), fromIsDefined(false), toIsDefined(false), - ca(0), value(this, &QmlColorAnimationPrivate::valueChanged) - { - if (!colorInterpolator) - colorInterpolator = QVariantAnimationPrivate::getInterpolator(QVariant::Color); - } - - void init(); - - QString easing; - - QColor fromValue; - QColor toValue; - - QList filter; - QList exclude; - - bool fromSourced; - bool fromIsDefined; - bool toIsDefined; - - QmlTimeLineValueAnimator *ca; - virtual void valueChanged(qreal); - - QmlTimeLineValueProxy value; - - static QVariantAnimation::Interpolator colorInterpolator; -}; - class QmlRunScriptActionPrivate : public QmlAbstractAnimationPrivate { Q_DECLARE_PUBLIC(QmlRunScriptAction) @@ -295,32 +261,6 @@ public: QActionAnimation *cpa; }; -class QmlNumericAnimationPrivate : public QmlAbstractAnimationPrivate -{ - Q_DECLARE_PUBLIC(QmlNumericAnimation) -public: - QmlNumericAnimationPrivate() - : QmlAbstractAnimationPrivate(), fromSourced(false), na(0), value(this, &QmlNumericAnimationPrivate::valueChanged) {} - - void init(); - - QmlNullableValue from; - QmlNullableValue to; - - QString easing; - - QString properties; - QList filter; - QList exclude; - - bool fromSourced; - qreal fromValue; - QmlTimeLineValueAnimator *na; - virtual void valueChanged(qreal); - - QmlTimeLineValueProxy value; -}; - class QmlAnimationGroupPrivate : public QmlAbstractAnimationPrivate { Q_DECLARE_PUBLIC(QmlAnimationGroup) -- cgit v0.12 From 91a7af3f44dc941929e0f93b98b2f2074f26086d Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 26 Jun 2009 09:25:19 +1000 Subject: Optimize refactored animation classes. --- src/declarative/util/qmlanimation.cpp | 42 ++++++++++++++++++++++++++--------- src/declarative/util/qmlanimation_p.h | 4 +++- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/declarative/util/qmlanimation.cpp b/src/declarative/util/qmlanimation.cpp index f2a91eb..4e637d5 100644 --- a/src/declarative/util/qmlanimation.cpp +++ b/src/declarative/util/qmlanimation.cpp @@ -720,6 +720,8 @@ QmlColorAnimation::QmlColorAnimation(QObject *parent) { Q_D(QmlVariantAnimation); d->init(); + d->interpolatorType = QMetaType::QColor; + d->interpolator = QVariantAnimationPrivate::getInterpolator(d->interpolatorType); } QmlColorAnimation::~QmlColorAnimation() @@ -1200,6 +1202,8 @@ QmlNumericAnimation::QmlNumericAnimation(QObject *parent) { Q_D(QmlVariantAnimation); d->init(); + d->interpolatorType = QMetaType::QReal; + d->interpolator = QVariantAnimationPrivate::getInterpolator(d->interpolatorType); } QmlNumericAnimation::~QmlNumericAnimation() @@ -1726,6 +1730,7 @@ void QmlVariantAnimationPrivate::valueChanged(qreal r) if (!fromSourced) { if (!fromIsDefined) { from = property.read(); + convertVariant(from, (QVariant::Type)(interpolatorType ? interpolatorType : property.propertyType())); } fromSourced = true; } @@ -1733,7 +1738,10 @@ void QmlVariantAnimationPrivate::valueChanged(qreal r) if (r == 1.) { property.write(to); } else { - property.write(interpolateVariant(from, to, r)); + if (interpolator) + property.write(interpolator(from.constData(), to.constData(), r)); + else + property.write(interpolateVariant(from, to, r)); //### optimize } } @@ -1751,9 +1759,9 @@ void QmlVariantAnimation::prepare(QmlMetaProperty &p) else d->property = d->userProperty; - d->convertVariant(d->to, (QVariant::Type)d->property.propertyType()); + d->convertVariant(d->to, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : d->property.propertyType())); if (d->fromIsDefined) - d->convertVariant(d->from, (QVariant::Type)d->property.propertyType()); + d->convertVariant(d->from, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : d->property.propertyType())); d->fromSourced = false; d->value.QmlTimeLineValue::setValue(0.); @@ -1771,6 +1779,9 @@ void QmlVariantAnimation::transition(QmlStateActions &actions, struct PropertyUpdater : public QmlTimeLineValue { QmlStateActions actions; + int interpolatorType; //for Numeric/ColorAnimation + int prevInterpolatorType; //for generic + QVariantAnimation::Interpolator interpolator; void setValue(qreal v) { QmlTimeLineValue::setValue(v); @@ -1783,11 +1794,18 @@ void QmlVariantAnimation::transition(QmlStateActions &actions, else { if (action.fromValue.isNull()) { action.fromValue = action.property.read(); - /*if (action.fromValue.isNull()) - action.fromValue = QVariant(0.);*/ //### can/should we give a default value for any type? + if (interpolatorType) + QmlVariantAnimationPrivate::convertVariant(action.fromValue, (QVariant::Type)interpolatorType); + } + if (!interpolatorType) { + int propType = action.property.propertyType(); + if (!prevInterpolatorType || prevInterpolatorType != propType) { + prevInterpolatorType = propType; + interpolator = QVariantAnimationPrivate::getInterpolator(prevInterpolatorType); + } } - QVariant val = QmlVariantAnimationPrivate::interpolateVariant(action.fromValue, action.toValue, v); - action.property.write(val); + if (interpolator) + action.property.write(interpolator(action.fromValue.constData(), action.toValue.constData(), v)); } QmlBehaviour::_ignore = false; } @@ -1809,6 +1827,8 @@ void QmlVariantAnimation::transition(QmlStateActions &actions, } PropertyUpdater *data = new PropertyUpdater; + data->interpolatorType = d->interpolatorType; + data->interpolator = d->interpolator; QSet objs; for (int ii = 0; ii < actions.count(); ++ii) { @@ -1831,8 +1851,8 @@ void QmlVariantAnimation::transition(QmlStateActions &actions, if (d->toIsDefined) myAction.toValue = d->to; - d->convertVariant(myAction.fromValue, (QVariant::Type)myAction.property.propertyType()); - d->convertVariant(myAction.toValue, (QVariant::Type)myAction.property.propertyType()); + d->convertVariant(myAction.fromValue, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : d->property.propertyType())); + d->convertVariant(myAction.toValue, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : d->property.propertyType())); modified << action.property; @@ -1848,10 +1868,10 @@ void QmlVariantAnimation::transition(QmlStateActions &actions, myAction.property = QmlMetaProperty(obj, props.at(jj)); if (d->fromIsDefined) { - d->convertVariant(d->from, (QVariant::Type)myAction.property.propertyType()); + d->convertVariant(d->from, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : d->property.propertyType())); myAction.fromValue = d->from; } - d->convertVariant(d->to, (QVariant::Type)myAction.property.propertyType()); + d->convertVariant(d->to, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : d->property.propertyType())); myAction.toValue = d->to; myAction.bv = 0; myAction.event = 0; diff --git a/src/declarative/util/qmlanimation_p.h b/src/declarative/util/qmlanimation_p.h index ff31895..7b0649a 100644 --- a/src/declarative/util/qmlanimation_p.h +++ b/src/declarative/util/qmlanimation_p.h @@ -306,7 +306,7 @@ class QmlVariantAnimationPrivate : public QmlAbstractAnimationPrivate public: QmlVariantAnimationPrivate() : QmlAbstractAnimationPrivate(), fromSourced(false), fromIsDefined(false), toIsDefined(false), - va(0), value(this, &QmlVariantAnimationPrivate::valueChanged) {} + interpolatorType(0), interpolator(0), va(0), value(this, &QmlVariantAnimationPrivate::valueChanged) {} void init(); @@ -322,6 +322,8 @@ public: bool fromSourced; bool fromIsDefined; bool toIsDefined; + int interpolatorType; + QVariantAnimation::Interpolator interpolator; QmlTimeLineValueAnimator *va; virtual void valueChanged(qreal); -- cgit v0.12 From baff8c7e3bba56c3d9c53300ed4524c4b3546c15 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 26 Jun 2009 09:40:42 +1000 Subject: Rename VariantAnimation -> PropertyAnimation. --- doc/src/declarative/elements.qdoc | 2 +- src/declarative/util/qmlanimation.cpp | 143 +++++++++++++++++----------------- src/declarative/util/qmlanimation.h | 20 ++--- src/declarative/util/qmlanimation_p.h | 10 +-- 4 files changed, 87 insertions(+), 88 deletions(-) diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc index 35d746b..daf34c4 100644 --- a/doc/src/declarative/elements.qdoc +++ b/doc/src/declarative/elements.qdoc @@ -26,9 +26,9 @@ The following table lists the Qml elements provided by the Qt Declarative module \o \list +\o \l PropertyAnimation \o \l NumericAnimation \o \l ColorAnimation -\o \l VariantAnimation \o \l PauseAnimation \o \l SequentialAnimation \o \l ParallelAnimation diff --git a/src/declarative/util/qmlanimation.cpp b/src/declarative/util/qmlanimation.cpp index 4e637d5..e42672d 100644 --- a/src/declarative/util/qmlanimation.cpp +++ b/src/declarative/util/qmlanimation.cpp @@ -60,7 +60,7 @@ /* TODO: Check for any memory leaks easing should be a QEasingCurve-type property - All other XXXs + All other XXXs and ###s */ QT_BEGIN_NAMESPACE @@ -693,7 +693,7 @@ QAbstractAnimation *QmlPauseAnimation::qtAnimation() /*! \qmlclass ColorAnimation QmlColorAnimation - \inherits Animation + \inherits PropertyAnimation \brief The ColorAnimation allows you to animate color changes. \code @@ -716,9 +716,9 @@ QAbstractAnimation *QmlPauseAnimation::qtAnimation() */ QmlColorAnimation::QmlColorAnimation(QObject *parent) -: QmlVariantAnimation(parent) +: QmlPropertyAnimation(parent) { - Q_D(QmlVariantAnimation); + Q_D(QmlPropertyAnimation); d->init(); d->interpolatorType = QMetaType::QColor; d->interpolator = QVariantAnimationPrivate::getInterpolator(d->interpolatorType); @@ -738,13 +738,13 @@ QmlColorAnimation::~QmlColorAnimation() */ QColor QmlColorAnimation::from() const { - Q_D(const QmlVariantAnimation); + Q_D(const QmlPropertyAnimation); return d->from.value(); } void QmlColorAnimation::setFrom(const QColor &f) { - QmlVariantAnimation::setFrom(f); + QmlPropertyAnimation::setFrom(f); } /*! @@ -757,13 +757,13 @@ void QmlColorAnimation::setFrom(const QColor &f) */ QColor QmlColorAnimation::to() const { - Q_D(const QmlVariantAnimation); + Q_D(const QmlPropertyAnimation); return d->to.value(); } void QmlColorAnimation::setTo(const QColor &t) { - QmlVariantAnimation::setTo(t); + QmlPropertyAnimation::setTo(t); } QML_DEFINE_TYPE(QmlColorAnimation,ColorAnimation) @@ -1176,7 +1176,7 @@ QML_DEFINE_TYPE(QmlParentChangeAction,ParentChangeAction) /*! \qmlclass NumericAnimation QmlNumericAnimation - \inherits Animation + \inherits PropertyAnimation \brief The NumericAnimation allows you to animate changes in properties of type qreal. Animate a set of properties over 200ms, from their values in the start state to @@ -1198,9 +1198,9 @@ QML_DEFINE_TYPE(QmlParentChangeAction,ParentChangeAction) */ QmlNumericAnimation::QmlNumericAnimation(QObject *parent) -: QmlVariantAnimation(parent) +: QmlPropertyAnimation(parent) { - Q_D(QmlVariantAnimation); + Q_D(QmlPropertyAnimation); d->init(); d->interpolatorType = QMetaType::QReal; d->interpolator = QVariantAnimationPrivate::getInterpolator(d->interpolatorType); @@ -1221,13 +1221,13 @@ QmlNumericAnimation::~QmlNumericAnimation() */ qreal QmlNumericAnimation::from() const { - Q_D(const QmlVariantAnimation); + Q_D(const QmlPropertyAnimation); return d->from.toDouble(); //### toFloat? } void QmlNumericAnimation::setFrom(qreal f) { - QmlVariantAnimation::setFrom(f); + QmlPropertyAnimation::setFrom(f); } /*! @@ -1241,13 +1241,13 @@ void QmlNumericAnimation::setFrom(qreal f) */ qreal QmlNumericAnimation::to() const { - Q_D(const QmlVariantAnimation); + Q_D(const QmlPropertyAnimation); return d->to.toDouble(); //### toFloat? } void QmlNumericAnimation::setTo(qreal t) { - QmlVariantAnimation::setTo(t); + QmlPropertyAnimation::setTo(t); } QML_DEFINE_TYPE(QmlNumericAnimation,NumericAnimation) @@ -1433,7 +1433,7 @@ void QmlParallelAnimation::transition(QmlStateActions &actions, QML_DEFINE_TYPE(QmlParallelAnimation,ParallelAnimation) //### profile and optimize -QVariant QmlVariantAnimationPrivate::interpolateVariant(const QVariant &from, const QVariant &to, qreal progress) +QVariant QmlPropertyAnimationPrivate::interpolateVariant(const QVariant &from, const QVariant &to, qreal progress) { if (from.userType() != to.userType()) return QVariant(); @@ -1445,7 +1445,7 @@ QVariant QmlVariantAnimationPrivate::interpolateVariant(const QVariant &from, co //convert a variant from string type to another animatable type //### should use any registered string convertor //### profile and optimize -void QmlVariantAnimationPrivate::convertVariant(QVariant &variant, QVariant::Type type) +void QmlPropertyAnimationPrivate::convertVariant(QVariant &variant, QVariant::Type type) { if (variant.type() != QVariant::String) { variant.convert(type); @@ -1488,9 +1488,9 @@ void QmlVariantAnimationPrivate::convertVariant(QVariant &variant, QVariant::Typ } /*! - \qmlclass VariantAnimation QmlVariantAnimation + \qmlclass PropertyAnimation QmlPropertyAnimation \inherits Animation - \brief The VariantAnimation allows you to animate changes in properties of type QVariant. + \brief The PropertyAnimation allows you to animate property changes. Animate a size property over 200ms, from its current size to 20-by-20: \code @@ -1498,51 +1498,51 @@ void QmlVariantAnimationPrivate::convertVariant(QVariant &variant, QVariant::Typ \endcode */ -QmlVariantAnimation::QmlVariantAnimation(QObject *parent) -: QmlAbstractAnimation(*(new QmlVariantAnimationPrivate), parent) +QmlPropertyAnimation::QmlPropertyAnimation(QObject *parent) +: QmlAbstractAnimation(*(new QmlPropertyAnimationPrivate), parent) { - Q_D(QmlVariantAnimation); + Q_D(QmlPropertyAnimation); d->init(); } -QmlVariantAnimation::~QmlVariantAnimation() +QmlPropertyAnimation::~QmlPropertyAnimation() { } -void QmlVariantAnimationPrivate::init() +void QmlPropertyAnimationPrivate::init() { - Q_Q(QmlVariantAnimation); + Q_Q(QmlPropertyAnimation); va = new QmlTimeLineValueAnimator(q); va->setStartValue(QVariant(0.0f)); va->setEndValue(QVariant(1.0f)); } /*! - \qmlproperty int VariantAnimation::duration + \qmlproperty int PropertyAnimation::duration This property holds the duration of the transition, in milliseconds. The default value is 250. */ /*! - \property QmlVariantAnimation::duration + \property QmlPropertyAnimation::duration \brief the duration of the transition, in milliseconds. The default value is 250. */ -int QmlVariantAnimation::duration() const +int QmlPropertyAnimation::duration() const { - Q_D(const QmlVariantAnimation); + Q_D(const QmlPropertyAnimation); return d->va->duration(); } -void QmlVariantAnimation::setDuration(int duration) +void QmlPropertyAnimation::setDuration(int duration) { if (duration < 0) { - qWarning("QmlVariantAnimation: Cannot set a duration of < 0"); + qWarning("QmlPropertyAnimation: Cannot set a duration of < 0"); return; } - Q_D(QmlVariantAnimation); + Q_D(QmlPropertyAnimation); if (d->va->duration() == duration) return; d->va->setDuration(duration); @@ -1550,23 +1550,23 @@ void QmlVariantAnimation::setDuration(int duration) } /*! - \qmlproperty real VariantAnimation::from + \qmlproperty real PropertyAnimation::from This property holds the starting value. If not set, then the value defined in the start state of the transition. */ /*! - \property QmlVariantAnimation::from + \property QmlPropertyAnimation::from \brief the starting value. */ -QVariant QmlVariantAnimation::from() const +QVariant QmlPropertyAnimation::from() const { - Q_D(const QmlVariantAnimation); + Q_D(const QmlPropertyAnimation); return d->from; } -void QmlVariantAnimation::setFrom(const QVariant &f) +void QmlPropertyAnimation::setFrom(const QVariant &f) { - Q_D(QmlVariantAnimation); + Q_D(QmlPropertyAnimation); if (d->fromIsDefined && f == d->from) return; d->from = f; @@ -1575,23 +1575,23 @@ void QmlVariantAnimation::setFrom(const QVariant &f) } /*! - \qmlproperty real VariantAnimation::to + \qmlproperty real PropertyAnimation::to This property holds the ending value. If not set, then the value defined in the end state of the transition. */ /*! - \property QmlVariantAnimation::to + \property QmlPropertyAnimation::to \brief the ending value. */ -QVariant QmlVariantAnimation::to() const +QVariant QmlPropertyAnimation::to() const { - Q_D(const QmlVariantAnimation); + Q_D(const QmlPropertyAnimation); return d->to; } -void QmlVariantAnimation::setTo(const QVariant &t) +void QmlPropertyAnimation::setTo(const QVariant &t) { - Q_D(QmlVariantAnimation); + Q_D(QmlPropertyAnimation); if (d->toIsDefined && t == d->to) return; d->to = t; @@ -1600,7 +1600,7 @@ void QmlVariantAnimation::setTo(const QVariant &t) } /*! - \qmlproperty string VariantAnimation::easing + \qmlproperty string PropertyAnimation::easing \brief the easing curve used for the transition. Available values are: @@ -1651,20 +1651,20 @@ void QmlVariantAnimation::setTo(const QVariant &t) */ /*! - \property QmlVariantAnimation::easing + \property QmlPropertyAnimation::easing \brief the easing curve to use. \sa QEasingCurve */ -QString QmlVariantAnimation::easing() const +QString QmlPropertyAnimation::easing() const { - Q_D(const QmlVariantAnimation); + Q_D(const QmlPropertyAnimation); return d->easing; } -void QmlVariantAnimation::setEasing(const QString &e) +void QmlPropertyAnimation::setEasing(const QString &e) { - Q_D(QmlVariantAnimation); + Q_D(QmlPropertyAnimation); if (d->easing == e) return; @@ -1674,28 +1674,28 @@ void QmlVariantAnimation::setEasing(const QString &e) } /*! - \qmlproperty string VariantAnimation::properties + \qmlproperty string PropertyAnimation::properties This property holds the properties this animation should be applied to. This is a comma-separated list of properties that should use this animation when they change. */ /*! - \property QmlVariantAnimation::properties + \property QmlPropertyAnimation::properties \brief the properties this animation should be applied to properties holds a copy separated list of properties that should use this animation when they change. */ -QString QmlVariantAnimation::properties() const +QString QmlPropertyAnimation::properties() const { - Q_D(const QmlVariantAnimation); + Q_D(const QmlPropertyAnimation); return d->properties; } -void QmlVariantAnimation::setProperties(const QString &prop) +void QmlPropertyAnimation::setProperties(const QString &prop) { - Q_D(QmlVariantAnimation); + Q_D(QmlPropertyAnimation); if (d->properties == prop) return; @@ -1704,28 +1704,28 @@ void QmlVariantAnimation::setProperties(const QString &prop) } /*! - \qmlproperty list VariantAnimation::filter + \qmlproperty list PropertyAnimation::filter This property holds the items selected to be affected by this animation (all if not set). \sa exclude */ -QList *QmlVariantAnimation::filter() +QList *QmlPropertyAnimation::filter() { - Q_D(QmlVariantAnimation); + Q_D(QmlPropertyAnimation); return &d->filter; } /*! - \qmlproperty list VariantAnimation::exclude + \qmlproperty list PropertyAnimation::exclude This property holds the items not to be affected by this animation. \sa filter */ -QList *QmlVariantAnimation::exclude() +QList *QmlPropertyAnimation::exclude() { - Q_D(QmlVariantAnimation); + Q_D(QmlPropertyAnimation); return &d->exclude; } -void QmlVariantAnimationPrivate::valueChanged(qreal r) +void QmlPropertyAnimationPrivate::valueChanged(qreal r) { if (!fromSourced) { if (!fromIsDefined) { @@ -1745,15 +1745,15 @@ void QmlVariantAnimationPrivate::valueChanged(qreal r) } } -QAbstractAnimation *QmlVariantAnimation::qtAnimation() +QAbstractAnimation *QmlPropertyAnimation::qtAnimation() { - Q_D(QmlVariantAnimation); + Q_D(QmlPropertyAnimation); return d->va; } -void QmlVariantAnimation::prepare(QmlMetaProperty &p) +void QmlPropertyAnimation::prepare(QmlMetaProperty &p) { - Q_D(QmlVariantAnimation); + Q_D(QmlPropertyAnimation); if (d->userProperty.isNull) d->property = p; else @@ -1769,11 +1769,11 @@ void QmlVariantAnimation::prepare(QmlMetaProperty &p) d->va->setFromSourcedValue(&d->fromSourced); } -void QmlVariantAnimation::transition(QmlStateActions &actions, +void QmlPropertyAnimation::transition(QmlStateActions &actions, QmlMetaProperties &modified, TransitionDirection direction) { - Q_D(QmlVariantAnimation); + Q_D(QmlPropertyAnimation); Q_UNUSED(direction); struct PropertyUpdater : public QmlTimeLineValue @@ -1795,7 +1795,7 @@ void QmlVariantAnimation::transition(QmlStateActions &actions, if (action.fromValue.isNull()) { action.fromValue = action.property.read(); if (interpolatorType) - QmlVariantAnimationPrivate::convertVariant(action.fromValue, (QVariant::Type)interpolatorType); + QmlPropertyAnimationPrivate::convertVariant(action.fromValue, (QVariant::Type)interpolatorType); } if (!interpolatorType) { int propType = action.property.propertyType(); @@ -1886,7 +1886,6 @@ void QmlVariantAnimation::transition(QmlStateActions &actions, } } -//XXX whats the best name for this? (just Animation?) -QML_DEFINE_TYPE(QmlVariantAnimation,VariantAnimation) +QML_DEFINE_TYPE(QmlPropertyAnimation,PropertyAnimation) QT_END_NAMESPACE diff --git a/src/declarative/util/qmlanimation.h b/src/declarative/util/qmlanimation.h index 00ff3d7..a91394d 100644 --- a/src/declarative/util/qmlanimation.h +++ b/src/declarative/util/qmlanimation.h @@ -246,11 +246,11 @@ protected: }; QML_DECLARE_TYPE(QmlParentChangeAction) -class QmlVariantAnimationPrivate; -class QmlVariantAnimation : public QmlAbstractAnimation +class QmlPropertyAnimationPrivate; +class QmlPropertyAnimation : public QmlAbstractAnimation { Q_OBJECT - Q_DECLARE_PRIVATE(QmlVariantAnimation) + Q_DECLARE_PRIVATE(QmlPropertyAnimation) Q_PROPERTY(int duration READ duration WRITE setDuration NOTIFY durationChanged) Q_PROPERTY(QVariant from READ from WRITE setFrom NOTIFY fromChanged) @@ -261,8 +261,8 @@ class QmlVariantAnimation : public QmlAbstractAnimation Q_PROPERTY(QList* exclude READ exclude) public: - QmlVariantAnimation(QObject *parent=0); - virtual ~QmlVariantAnimation(); + QmlPropertyAnimation(QObject *parent=0); + virtual ~QmlPropertyAnimation(); int duration() const; void setDuration(int); @@ -296,12 +296,12 @@ Q_SIGNALS: void easingChanged(const QString &); void propertiesChanged(const QString &); }; -QML_DECLARE_TYPE(QmlVariantAnimation) +QML_DECLARE_TYPE(QmlPropertyAnimation) -class QmlColorAnimation : public QmlVariantAnimation +class QmlColorAnimation : public QmlPropertyAnimation { Q_OBJECT - Q_DECLARE_PRIVATE(QmlVariantAnimation) + Q_DECLARE_PRIVATE(QmlPropertyAnimation) Q_PROPERTY(QColor from READ from WRITE setFrom NOTIFY fromChanged) Q_PROPERTY(QColor to READ to WRITE setTo NOTIFY toChanged) @@ -317,10 +317,10 @@ public: }; QML_DECLARE_TYPE(QmlColorAnimation) -class QmlNumericAnimation : public QmlVariantAnimation +class QmlNumericAnimation : public QmlPropertyAnimation { Q_OBJECT - Q_DECLARE_PRIVATE(QmlVariantAnimation) + Q_DECLARE_PRIVATE(QmlPropertyAnimation) Q_PROPERTY(qreal from READ from WRITE setFrom NOTIFY fromChanged) Q_PROPERTY(qreal to READ to WRITE setTo NOTIFY toChanged) diff --git a/src/declarative/util/qmlanimation_p.h b/src/declarative/util/qmlanimation_p.h index 7b0649a..da5ed97 100644 --- a/src/declarative/util/qmlanimation_p.h +++ b/src/declarative/util/qmlanimation_p.h @@ -300,13 +300,13 @@ public: QAnimationGroup *ag; }; -class QmlVariantAnimationPrivate : public QmlAbstractAnimationPrivate +class QmlPropertyAnimationPrivate : public QmlAbstractAnimationPrivate { - Q_DECLARE_PUBLIC(QmlVariantAnimation) + Q_DECLARE_PUBLIC(QmlPropertyAnimation) public: - QmlVariantAnimationPrivate() + QmlPropertyAnimationPrivate() : QmlAbstractAnimationPrivate(), fromSourced(false), fromIsDefined(false), toIsDefined(false), - interpolatorType(0), interpolator(0), va(0), value(this, &QmlVariantAnimationPrivate::valueChanged) {} + interpolatorType(0), interpolator(0), va(0), value(this, &QmlPropertyAnimationPrivate::valueChanged) {} void init(); @@ -328,7 +328,7 @@ public: QmlTimeLineValueAnimator *va; virtual void valueChanged(qreal); - QmlTimeLineValueProxy value; + QmlTimeLineValueProxy value; static QVariant interpolateVariant(const QVariant &from, const QVariant &to, qreal progress); static void convertVariant(QVariant &variant, QVariant::Type type); -- cgit v0.12 From 662488175fb9c6a44e9641867177b5396c507891 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 26 Jun 2009 11:10:56 +1000 Subject: Fix animation bugs, and add autotest. --- src/declarative/util/qmlanimation.cpp | 13 ++-- tests/auto/declarative/animations/animations.pro | 5 ++ .../auto/declarative/animations/data/badtype1.qml | 10 +++ .../auto/declarative/animations/data/badtype2.qml | 10 +++ .../auto/declarative/animations/data/badtype3.qml | 10 +++ .../auto/declarative/animations/data/badtype4.qml | 23 ++++++ tests/auto/declarative/animations/data/color.qml | 10 +++ .../declarative/animations/data/mixedtype1.qml | 22 ++++++ .../declarative/animations/data/mixedtype2.qml | 22 ++++++ tests/auto/declarative/animations/data/number.qml | 10 +++ .../auto/declarative/animations/tst_animations.cpp | 82 ++++++++++++++++++++++ 11 files changed, 212 insertions(+), 5 deletions(-) create mode 100644 tests/auto/declarative/animations/animations.pro create mode 100644 tests/auto/declarative/animations/data/badtype1.qml create mode 100644 tests/auto/declarative/animations/data/badtype2.qml create mode 100644 tests/auto/declarative/animations/data/badtype3.qml create mode 100644 tests/auto/declarative/animations/data/badtype4.qml create mode 100644 tests/auto/declarative/animations/data/color.qml create mode 100644 tests/auto/declarative/animations/data/mixedtype1.qml create mode 100644 tests/auto/declarative/animations/data/mixedtype2.qml create mode 100644 tests/auto/declarative/animations/data/number.qml create mode 100644 tests/auto/declarative/animations/tst_animations.cpp diff --git a/src/declarative/util/qmlanimation.cpp b/src/declarative/util/qmlanimation.cpp index e42672d..42ed40b 100644 --- a/src/declarative/util/qmlanimation.cpp +++ b/src/declarative/util/qmlanimation.cpp @@ -1439,7 +1439,10 @@ QVariant QmlPropertyAnimationPrivate::interpolateVariant(const QVariant &from, c return QVariant(); QVariantAnimation::Interpolator interpolator = QVariantAnimationPrivate::getInterpolator(from.userType()); - return interpolator(from.constData(), to.constData(), progress); + if (interpolator) + return interpolator(from.constData(), to.constData(), progress); + else + return QVariant(); } //convert a variant from string type to another animatable type @@ -1851,8 +1854,8 @@ void QmlPropertyAnimation::transition(QmlStateActions &actions, if (d->toIsDefined) myAction.toValue = d->to; - d->convertVariant(myAction.fromValue, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : d->property.propertyType())); - d->convertVariant(myAction.toValue, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : d->property.propertyType())); + d->convertVariant(myAction.fromValue, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : myAction.property.propertyType())); + d->convertVariant(myAction.toValue, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : myAction.property.propertyType())); modified << action.property; @@ -1868,10 +1871,10 @@ void QmlPropertyAnimation::transition(QmlStateActions &actions, myAction.property = QmlMetaProperty(obj, props.at(jj)); if (d->fromIsDefined) { - d->convertVariant(d->from, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : d->property.propertyType())); + d->convertVariant(d->from, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : myAction.property.propertyType())); myAction.fromValue = d->from; } - d->convertVariant(d->to, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : d->property.propertyType())); + d->convertVariant(d->to, (QVariant::Type)(d->interpolatorType ? d->interpolatorType : myAction.property.propertyType())); myAction.toValue = d->to; myAction.bv = 0; myAction.event = 0; diff --git a/tests/auto/declarative/animations/animations.pro b/tests/auto/declarative/animations/animations.pro new file mode 100644 index 0000000..419da4e --- /dev/null +++ b/tests/auto/declarative/animations/animations.pro @@ -0,0 +1,5 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative +SOURCES += tst_animations.cpp + +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/animations/data/badtype1.qml b/tests/auto/declarative/animations/data/badtype1.qml new file mode 100644 index 0000000..691d2b3 --- /dev/null +++ b/tests/auto/declarative/animations/data/badtype1.qml @@ -0,0 +1,10 @@ +Rect { + width: 240 + height: 320 + Rect { + color: "red" + width: 50; height: 50 + x: 100; y: 100 + x: PropertyAnimation { from: "blue"; to: "green"; running: true; } + } +} diff --git a/tests/auto/declarative/animations/data/badtype2.qml b/tests/auto/declarative/animations/data/badtype2.qml new file mode 100644 index 0000000..18d9079 --- /dev/null +++ b/tests/auto/declarative/animations/data/badtype2.qml @@ -0,0 +1,10 @@ +Rect { + width: 240 + height: 320 + Rect { + color: "red" + width: 50; height: 50 + x: 100; y: 100 + x: NumericAnimation { from: "blue"; to: "green"; running: true; } + } +} diff --git a/tests/auto/declarative/animations/data/badtype3.qml b/tests/auto/declarative/animations/data/badtype3.qml new file mode 100644 index 0000000..f1a89b6 --- /dev/null +++ b/tests/auto/declarative/animations/data/badtype3.qml @@ -0,0 +1,10 @@ +Rect { + width: 240 + height: 320 + Rect { + color: "red" + color: ColorAnimation { from: 10; to: 15; running: true; } + width: 50; height: 50 + x: 100; y: 100 + } +} diff --git a/tests/auto/declarative/animations/data/badtype4.qml b/tests/auto/declarative/animations/data/badtype4.qml new file mode 100644 index 0000000..e3d312e --- /dev/null +++ b/tests/auto/declarative/animations/data/badtype4.qml @@ -0,0 +1,23 @@ +Rect { + id: Wrapper + width: 240 + height: 320 + Rect { + id: MyRect + color: "red" + width: 50; height: 50 + x: 100; y: 100 + MouseRegion { + anchors.fill: parent + onClicked: if (Wrapper.state == "state1") Wrapper.state = ""; else Wrapper.state = "state1"; + } + } + states: State { + name: "state1" + SetProperties { target: MyRect; x: 200; color: "blue" } + } + transitions: Transition { + ColorAnimation { properties: "x,color"; duration: 1000 } //x is real, color is color + //NumericAnimation { properties: "x,color"; duration: 1000 } //x is real, color is color + } +} diff --git a/tests/auto/declarative/animations/data/color.qml b/tests/auto/declarative/animations/data/color.qml new file mode 100644 index 0000000..051e0e1 --- /dev/null +++ b/tests/auto/declarative/animations/data/color.qml @@ -0,0 +1,10 @@ +Rect { + width: 240 + height: 320 + Rect { + color: "red" + color: PropertyAnimation { to: "green"; running: true } + width: 50; height: 50 + x: 100; y: 100 + } +} diff --git a/tests/auto/declarative/animations/data/mixedtype1.qml b/tests/auto/declarative/animations/data/mixedtype1.qml new file mode 100644 index 0000000..415bbfb --- /dev/null +++ b/tests/auto/declarative/animations/data/mixedtype1.qml @@ -0,0 +1,22 @@ +Rect { + id: Wrapper + width: 240 + height: 320 + Rect { + id: MyRect + color: "red" + width: 50; height: 50 + x: 100; y: 100 + MouseRegion { + anchors.fill: parent + onClicked: if (Wrapper.state == "state1") Wrapper.state = ""; else Wrapper.state = "state1"; + } + } + states: State { + name: "state1" + SetProperties { target: MyRect; x: 200; width: 40 } + } + transitions: Transition { + PropertyAnimation { properties: "x,width"; duration: 1000 } //x is real, width is int + } +} diff --git a/tests/auto/declarative/animations/data/mixedtype2.qml b/tests/auto/declarative/animations/data/mixedtype2.qml new file mode 100644 index 0000000..0e9fb8d --- /dev/null +++ b/tests/auto/declarative/animations/data/mixedtype2.qml @@ -0,0 +1,22 @@ +Rect { + id: Wrapper + width: 240 + height: 320 + Rect { + id: MyRect + color: "red" + width: 50; height: 50 + x: 100; y: 100 + MouseRegion { + anchors.fill: parent + onClicked: if (Wrapper.state == "state1") Wrapper.state = ""; else Wrapper.state = "state1"; + } + } + states: State { + name: "state1" + SetProperties { target: MyRect; x: 200; color: "blue" } + } + transitions: Transition { + PropertyAnimation { properties: "x,color"; duration: 1000 } //x is real, color is color + } +} diff --git a/tests/auto/declarative/animations/data/number.qml b/tests/auto/declarative/animations/data/number.qml new file mode 100644 index 0000000..feb551b --- /dev/null +++ b/tests/auto/declarative/animations/data/number.qml @@ -0,0 +1,10 @@ +Rect { + width: 240 + height: 320 + Rect { + color: "red" + width: 50; height: 50 + x: 100; y: 100 + x: PropertyAnimation { from: 0; to: 200; duration: 1000; running: true } + } +} diff --git a/tests/auto/declarative/animations/tst_animations.cpp b/tests/auto/declarative/animations/tst_animations.cpp new file mode 100644 index 0000000..1895cef2 --- /dev/null +++ b/tests/auto/declarative/animations/tst_animations.cpp @@ -0,0 +1,82 @@ +#include +#include +#include +#include +#include + +class tst_animations : public QObject +{ + Q_OBJECT +public: + tst_animations() {} + +private slots: + void badTypes(); + //void mixedTypes(); +}; + +void tst_animations::badTypes() +{ + //don't crash + { + QFxView *view = new QFxView; + view->setUrl(QUrl("file://" SRCDIR "/data/badtype1.qml")); + + view->execute(); + qApp->processEvents(); + + delete view; + } + + //make sure we get a compiler error + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/badtype2.qml")); + QTest::ignoreMessage(QtWarningMsg, "QmlComponent: Component is not ready"); + c.create(); + + QVERIFY(c.errors().count() == 1); + QCOMPARE(c.errors().at(0).description(), QLatin1String("Cannot convert value \"blue\" to double number")); + } + + //make sure we get a compiler error + { + QmlEngine engine; + QmlComponent c(&engine, QUrl("file://" SRCDIR "/data/badtype3.qml")); + QTest::ignoreMessage(QtWarningMsg, "QmlComponent: Component is not ready"); + c.create(); + + QVERIFY(c.errors().count() == 1); + QCOMPARE(c.errors().at(0).description(), QLatin1String("Cannot convert value \"10\" to color")); + } +} + +/*//test animating mixed types with property animation + //for example, int + real; color + real; etc +void tst_animations::mixedTypes() +{ + //### this one isn't real robust because width will likely change to real as well + { + QFxView *view = new QFxView; + view->setUrl(QUrl("file://" SRCDIR "/data/mixedtype1.qml")); + + view->execute(); + qApp->processEvents(); + + delete view; + } + + { + QFxView *view = new QFxView; + view->setUrl(QUrl("file://" SRCDIR "/data/mixedtype2.qml")); + + view->execute(); + qApp->processEvents(); + + delete view; + } +}*/ + +QTEST_MAIN(tst_animations) + +#include "tst_animations.moc" -- cgit v0.12 From ffc9e62cbf7e24cd04a1202de1b3e618f9e12642 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 26 Jun 2009 11:16:57 +1000 Subject: Rename NumericAnimation -> NumberAnimation --- demos/declarative/calculator/calculator.qml | 4 +- demos/declarative/contacts/Button.qml | 2 +- demos/declarative/contacts/ContactField.qml | 2 +- demos/declarative/contacts/FieldText.qml | 4 +- demos/declarative/contacts/RemoveButton.qml | 4 +- demos/declarative/contacts/contacts.qml | 8 +-- demos/declarative/flickr/content/ImageDetails.qml | 2 +- demos/declarative/flickr/content/Loading.qml | 2 +- demos/declarative/flickr/content/MediaLineEdit.qml | 2 +- demos/declarative/flickr/content/ScrollBar.qml | 2 +- demos/declarative/flickr/content/Star.qml | 2 +- demos/declarative/flickr/flickr.qml | 6 +-- demos/declarative/flickr/flickr2.qml | 12 ++--- demos/declarative/webbrowser/webbrowser.qml | 10 ++-- doc/src/declarative/animation.qdoc | 12 ++--- doc/src/declarative/elements.qdoc | 2 +- doc/src/declarative/qmlforcpp.qdoc | 6 +-- doc/src/declarative/tutorial3.qdoc | 4 +- examples/declarative/animation/animation.qml | 4 +- examples/declarative/behaviours/test.qml | 10 ++-- examples/declarative/easing/easing.qml | 4 +- examples/declarative/flowview/flowview.qml | 8 +-- examples/declarative/follow/follow.qml | 4 +- examples/declarative/follow/pong.qml | 4 +- examples/declarative/listview/highlight.qml | 2 +- examples/declarative/listview/recipes.qml | 2 +- examples/declarative/minehunt/minehunt.qml | 4 +- examples/declarative/scrollbar/display.qml | 2 +- examples/declarative/slideswitch/Switch.qml | 2 +- examples/declarative/states/transitions.qml | 6 +-- .../1_Drawing_and_Animation/5/RemoveButton.qml | 2 +- .../contacts/1_Drawing_and_Animation/GroupBox.qml | 2 +- .../tutorials/contacts/2_Reuse/1/RemoveButton.qml | 2 +- .../tutorials/contacts/2_Reuse/1a/RemoveButton.qml | 2 +- .../contacts/2_Reuse/1b/lib/RemoveButton.qml | 2 +- .../tutorials/contacts/2_Reuse/2/RemoveButton.qml | 2 +- .../tutorials/contacts/2_Reuse/3/ContactField.qml | 2 +- .../tutorials/contacts/2_Reuse/3/FieldText.qml | 4 +- .../tutorials/contacts/2_Reuse/3/RemoveButton.qml | 2 +- .../tutorials/contacts/2_Reuse/4/ContactField.qml | 2 +- .../tutorials/contacts/2_Reuse/4/FieldText.qml | 4 +- .../tutorials/contacts/2_Reuse/4/RemoveButton.qml | 2 +- .../tutorials/contacts/2_Reuse/GroupBox.qml | 2 +- .../contacts/3_Collections/2/ContactView.qml | 2 +- .../contacts/3_Collections/3/ContactView.qml | 2 +- .../tutorials/contacts/3_Collections/GroupBox.qml | 2 +- .../contacts/3_Collections/lib/Button.qml | 2 +- .../contacts/3_Collections/lib/ContactField.qml | 2 +- .../contacts/3_Collections/lib/FieldText.qml | 4 +- .../contacts/3_Collections/lib/RemoveButton.qml | 2 +- .../tutorials/helloworld/t3/tutorial3.qml | 2 +- examples/declarative/velocity/Day.qml | 2 +- .../declarative/webview/content/SpinSquare.qml | 2 +- examples/declarative/xmldata/yahoonews.qml | 4 +- src/declarative/fx/qfxflipable.cpp | 2 +- src/declarative/fx/qfxhighlightfilter.cpp | 2 +- src/declarative/fx/qfxlayouts.cpp | 24 ++++----- src/declarative/qml/qmldom.cpp | 10 ++-- src/declarative/util/qmlanimation.cpp | 60 +++++++++++----------- src/declarative/util/qmlanimation.h | 8 +-- src/declarative/util/qmlbehaviour.cpp | 2 +- src/declarative/util/qmlfollow.cpp | 2 +- .../auto/declarative/animations/data/badtype2.qml | 2 +- .../auto/declarative/animations/data/badtype4.qml | 2 +- .../visual/bindinganimation/bindinganimation.qml | 2 +- tests/auto/declarative/visual/easing/easing.qml | 2 +- .../auto/declarative/visual/flipable/flipable.xml | 10 ++-- .../visual/pauseAnimation/pauseAnimation.qml | 4 +- 68 files changed, 163 insertions(+), 163 deletions(-) diff --git a/demos/declarative/calculator/calculator.qml b/demos/declarative/calculator/calculator.qml index 145435b..2a297ef 100644 --- a/demos/declarative/calculator/calculator.qml +++ b/demos/declarative/calculator/calculator.qml @@ -120,8 +120,8 @@ Rect { transitions: [ Transition { - NumericAnimation { properties: "x,y,width"; easing: "easeOutBounce"; duration: 500 } - NumericAnimation { properties: "opacity"; easing: "easeInOutQuad"; duration: 500 } + NumberAnimation { properties: "x,y,width"; easing: "easeOutBounce"; duration: 500 } + NumberAnimation { properties: "opacity"; easing: "easeInOutQuad"; duration: 500 } } ] } diff --git a/demos/declarative/contacts/Button.qml b/demos/declarative/contacts/Button.qml index 3b76a13..295e6cd 100644 --- a/demos/declarative/contacts/Button.qml +++ b/demos/declarative/contacts/Button.qml @@ -49,7 +49,7 @@ Item { ] } opacity: Behavior { - NumericAnimation { + NumberAnimation { property: "opacity" duration: 250 } diff --git a/demos/declarative/contacts/ContactField.qml b/demos/declarative/contacts/ContactField.qml index 003e723..156c00d 100644 --- a/demos/declarative/contacts/ContactField.qml +++ b/demos/declarative/contacts/ContactField.qml @@ -51,7 +51,7 @@ Item { fromState: "" toState: "*" reversible: true - NumericAnimation { + NumberAnimation { properties: "width,rightMargin" duration: 200 } diff --git a/demos/declarative/contacts/FieldText.qml b/demos/declarative/contacts/FieldText.qml index 39e45d4..333a5f6 100644 --- a/demos/declarative/contacts/FieldText.qml +++ b/demos/declarative/contacts/FieldText.qml @@ -74,7 +74,7 @@ Rect { text: fieldText.label opacity: textEdit.text == '' ? 1 : 0 opacity: Behavior { - NumericAnimation { + NumberAnimation { property: "opacity" duration: 250 } @@ -148,7 +148,7 @@ Rect { fromState: "" toState: "*" reversible: true - NumericAnimation { + NumberAnimation { properties: "opacity,leftMargin,rightMargin" duration: 200 } diff --git a/demos/declarative/contacts/RemoveButton.qml b/demos/declarative/contacts/RemoveButton.qml index 8f46fcb..514c978 100644 --- a/demos/declarative/contacts/RemoveButton.qml +++ b/demos/declarative/contacts/RemoveButton.qml @@ -77,7 +77,7 @@ Rect { opacity: 0 } opacity: Behavior { - NumericAnimation { + NumberAnimation { property: "opacity" duration: 250 } @@ -117,7 +117,7 @@ Rect { fromState: "*" toState: "opened" reversible: true - NumericAnimation { + NumberAnimation { properties: "opacity,x,width" duration: 200 } diff --git a/demos/declarative/contacts/contacts.qml b/demos/declarative/contacts/contacts.qml index 0ce9948..c52ef6d 100644 --- a/demos/declarative/contacts/contacts.qml +++ b/demos/declarative/contacts/contacts.qml @@ -123,7 +123,7 @@ Rect { ] transitions: [ Transition { - NumericAnimation { + NumberAnimation { duration: 500 properties: "yPosition,height,opacity" } @@ -221,7 +221,7 @@ Rect { color: 'white' opacity: contacts.mode == 'list' ? 1 : 0 opacity: Behavior { - NumericAnimation { + NumberAnimation { property: "opacity" duration: 250 } @@ -288,7 +288,7 @@ Rect { Transition { fromState: "*" toState: "*" - NumericAnimation { + NumberAnimation { property: "bottomMargin" duration: 250 } @@ -319,7 +319,7 @@ Rect { Transition { fromState: "*" toState: "*" - NumericAnimation { + NumberAnimation { property: "opacity" duration: 500 } diff --git a/demos/declarative/flickr/content/ImageDetails.qml b/demos/declarative/flickr/content/ImageDetails.qml index ccc91cb..a413726 100644 --- a/demos/declarative/flickr/content/ImageDetails.qml +++ b/demos/declarative/flickr/content/ImageDetails.qml @@ -135,7 +135,7 @@ Flipable { transitions: [ Transition { - NumericAnimation { easing: "easeInOutQuad"; properties: "rotation"; duration: 500 } + NumberAnimation { easing: "easeInOutQuad"; properties: "rotation"; duration: 500 } } ] } diff --git a/demos/declarative/flickr/content/Loading.qml b/demos/declarative/flickr/content/Loading.qml index 7488a66..0a8a51a 100644 --- a/demos/declarative/flickr/content/Loading.qml +++ b/demos/declarative/flickr/content/Loading.qml @@ -1,6 +1,6 @@ Image { id: Loading; source: "pics/loading.png"; transformOrigin: "Center" - rotation: NumericAnimation { + rotation: NumberAnimation { id: "RotationAnimation"; from: 0; to: 360; running: Loading.visible == true; repeat: true; duration: 900 } } diff --git a/demos/declarative/flickr/content/MediaLineEdit.qml b/demos/declarative/flickr/content/MediaLineEdit.qml index 691bb5b..b9a5775 100644 --- a/demos/declarative/flickr/content/MediaLineEdit.qml +++ b/demos/declarative/flickr/content/MediaLineEdit.qml @@ -41,7 +41,7 @@ Item { ] transitions: [ Transition { - NumericAnimation { properties: "x,width"; duration: 500; easing: "easeInOutQuad" } + NumberAnimation { properties: "x,width"; duration: 500; easing: "easeInOutQuad" } } ] diff --git a/demos/declarative/flickr/content/ScrollBar.qml b/demos/declarative/flickr/content/ScrollBar.qml index 2c4ff54..551f0ea 100644 --- a/demos/declarative/flickr/content/ScrollBar.qml +++ b/demos/declarative/flickr/content/ScrollBar.qml @@ -28,7 +28,7 @@ Item { Transition { fromState: "*" toState: "*" - NumericAnimation { + NumberAnimation { target: Container properties: "opacity" duration: 400 diff --git a/demos/declarative/flickr/content/Star.qml b/demos/declarative/flickr/content/Star.qml index 22fc138..437450d 100644 --- a/demos/declarative/flickr/content/Star.qml +++ b/demos/declarative/flickr/content/Star.qml @@ -35,7 +35,7 @@ Item { ] transitions: [ Transition { - NumericAnimation { + NumberAnimation { properties: "opacity,scale,x,y" easing: "easeOutBounce" } diff --git a/demos/declarative/flickr/flickr.qml b/demos/declarative/flickr/flickr.qml index 83448ee..3ce442e 100644 --- a/demos/declarative/flickr/flickr.qml +++ b/demos/declarative/flickr/flickr.qml @@ -99,13 +99,13 @@ Item { Transition { fromState: "*"; toState: "Details" ParentChangeAction { } - NumericAnimation { properties: "x,y,scale,opacity,angle"; duration: 500; easing: "easeInOutQuad" } + NumberAnimation { properties: "x,y,scale,opacity,angle"; duration: 500; easing: "easeInOutQuad" } }, Transition { fromState: "Details"; toState: "*" SequentialAnimation { ParentChangeAction { } - NumericAnimation { properties: "x,y,scale,opacity,angle"; duration: 500; easing: "easeInOutQuad" } + NumberAnimation { properties: "x,y,scale,opacity,angle"; duration: 500; easing: "easeInOutQuad" } SetPropertyAction { filter: Wrapper; properties: "z" } } } @@ -194,7 +194,7 @@ Item { transitions: [ Transition { fromState: "*"; toState: "*" - NumericAnimation { properties: "y"; duration: 1000; easing: "easeOutBounce(amplitude:0.5)" } + NumberAnimation { properties: "y"; duration: 1000; easing: "easeOutBounce(amplitude:0.5)" } } ] } diff --git a/demos/declarative/flickr/flickr2.qml b/demos/declarative/flickr/flickr2.qml index 79f7a32..807a0ca 100644 --- a/demos/declarative/flickr/flickr2.qml +++ b/demos/declarative/flickr/flickr2.qml @@ -100,13 +100,13 @@ Item { Transition { fromState: "*"; toState: "Details" ParentChangeAction { } - NumericAnimation { properties: "x,y,scale,opacity,angle"; duration: 500; easing: "easeInOutQuad" } + NumberAnimation { properties: "x,y,scale,opacity,angle"; duration: 500; easing: "easeInOutQuad" } }, Transition { fromState: "Details"; toState: "*" SequentialAnimation { ParentChangeAction { } - NumericAnimation { properties: "x,y,scale,opacity,angle"; duration: 500; easing: "easeInOutQuad" } + NumberAnimation { properties: "x,y,scale,opacity,angle"; duration: 500; easing: "easeInOutQuad" } SetPropertyAction { filter: Wrapper; properties: "z" } } } @@ -146,14 +146,14 @@ Item { SequentialAnimation { SetPropertyAction { target: Wrapper; property: "moveToParent" } ParallelAnimation { - NumericAnimation { + NumberAnimation { target: Wrapper properties: "x,y" to: 0 easing: "easeOutQuad" duration: 350 } - NumericAnimation { target: Wrapper; properties: "scale,angle"; duration: 350 } + NumberAnimation { target: Wrapper; properties: "scale,angle"; duration: 350 } } } }, @@ -163,14 +163,14 @@ Item { PauseAnimation { duration: Math.floor(index/7)*100 } SetPropertyAction { target: Wrapper; property: "moveToParent" } ParallelAnimation { - NumericAnimation { + NumberAnimation { target: Wrapper properties: "x,y" to: 0 easing: "easeOutQuad" duration: 250 } - NumericAnimation { target: Wrapper; properties: "scale,angle"; duration: 250 } + NumberAnimation { target: Wrapper; properties: "scale,angle"; duration: 250 } } } } diff --git a/demos/declarative/webbrowser/webbrowser.qml b/demos/declarative/webbrowser/webbrowser.qml index 889ab87..c8fa832 100644 --- a/demos/declarative/webbrowser/webbrowser.qml +++ b/demos/declarative/webbrowser/webbrowser.qml @@ -169,7 +169,7 @@ Item { ] transitions: [ Transition { - NumericAnimation { + NumberAnimation { target: Header properties: "progressOff" easing: "easeInOutQuad" @@ -283,7 +283,7 @@ Item { ] transitions: [ Transition { - NumericAnimation { + NumberAnimation { properties: "opacity" easing: "easeInOutQuad" duration: 300 @@ -355,7 +355,7 @@ Item { ] transitions: [ Transition { - NumericAnimation { + NumberAnimation { properties: "opacity" easing: "easeInOutQuad" duration: 320 @@ -406,13 +406,13 @@ Item { value: false } ParallelAnimation { - NumericAnimation { + NumberAnimation { target: WebView properties: "zoomedOut" easing: "easeInOutQuad" duration: 200 } - NumericAnimation { + NumberAnimation { target: Flick properties: "xPosition,yPosition" easing: "easeInOutQuad" diff --git a/doc/src/declarative/animation.qdoc b/doc/src/declarative/animation.qdoc index f17f5c9..0517009 100644 --- a/doc/src/declarative/animation.qdoc +++ b/doc/src/declarative/animation.qdoc @@ -25,7 +25,7 @@ Other Features: \o Animation synchronization \endlist -The simplest form of animation is using \l NumericAnimation +The simplest form of animation is using \l NumberAnimation The following example creates a bouncing effect: \code @@ -40,9 +40,9 @@ Rect { y: SequentialAnimation { running: true repeat: true - NumericAnimation { to: 200-img.height; easing: "easeOutBounce"; duration: 2000 } + NumberAnimation { to: 200-img.height; easing: "easeOutBounce"; duration: 2000 } PauseAnimation { duration: 1000 } - NumericAnimation { to: 0; easing: "easeOutQuad"; duration: 1000 } + NumberAnimation { to: 0; easing: "easeOutQuad"; duration: 1000 } } } } @@ -113,7 +113,7 @@ For the previous example, a transition could describe how \c myrect moved from i \code transitions: [ Transition { - NumericAnimation { + NumberAnimation { properties: "x,y" easing: "easeOutBounce" duration: 200 @@ -147,13 +147,13 @@ Transition { duration: 1000 } ParallelAnimation { - NumericAnimation { + NumberAnimation { duration: 1000 easing: "easeOutBounce" target: box1 properties: "x,y" } - NumericAnimation { + NumberAnimation { duration: 1000 target: box2 properties: "x,y" diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc index daf34c4..192dfa1 100644 --- a/doc/src/declarative/elements.qdoc +++ b/doc/src/declarative/elements.qdoc @@ -27,7 +27,7 @@ The following table lists the Qml elements provided by the Qt Declarative module \o \list \o \l PropertyAnimation -\o \l NumericAnimation +\o \l NumberAnimation \o \l ColorAnimation \o \l PauseAnimation \o \l SequentialAnimation diff --git a/doc/src/declarative/qmlforcpp.qdoc b/doc/src/declarative/qmlforcpp.qdoc index 4095071..c95cb71 100644 --- a/doc/src/declarative/qmlforcpp.qdoc +++ b/doc/src/declarative/qmlforcpp.qdoc @@ -438,7 +438,7 @@ \code Button { id: MyButton - onClicked: NumericAnimation { + onClicked: NumberAnimation { target: MyButton property: "x" to: 100 @@ -555,12 +555,12 @@ \code Rect { - x: NumericAnimation { running: true; repeat; true; from: 0; to: 100; } + x: NumberAnimation { running: true; repeat; true; from: 0; to: 100; } } \endcode Here the \c x property of the rectangle will be animated from 0 to 100. - To support this, the NumericAnimation class inherits the + To support this, the NumberAnimation class inherits the QmlPropertyValueSource class. If a type inherits this class and is assigned to a property for which type assignment would otherwise fail (ie. the property itself doesn't have a type of QmlPropertyValueSource *), the QML diff --git a/doc/src/declarative/tutorial3.qdoc b/doc/src/declarative/tutorial3.qdoc index 0b97e63..e9f861e 100644 --- a/doc/src/declarative/tutorial3.qdoc +++ b/doc/src/declarative/tutorial3.qdoc @@ -46,7 +46,7 @@ Rect { toState: "down" reversible: true ParallelAnimation { - NumericAnimation { + NumberAnimation { properties: "y" duration: 500 easing: "easeOutBounce" @@ -114,7 +114,7 @@ Because we want the same transition to be run in reverse when changing back from \code ParallelAnimation { - NumericAnimation { + NumberAnimation { properties: "y" duration: 500 easing: "easeOutBounce" diff --git a/examples/declarative/animation/animation.qml b/examples/declarative/animation/animation.qml index 5cb471e..272aeec 100644 --- a/examples/declarative/animation/animation.qml +++ b/examples/declarative/animation/animation.qml @@ -14,7 +14,7 @@ Rect { running: true repeat: true // Move from 0 to 360 in 500ms, using the easeInOutQuad easing function - NumericAnimation { + NumberAnimation { from: 0 to: 360 easing: "easeInOutQuad" @@ -25,7 +25,7 @@ Rect { duration: 200 } // Then move back to 0 in 2 seconds, using the easeInOutElastic easing function - NumericAnimation { + NumberAnimation { from: 360 to: 0 easing: "easeInOutElastic" diff --git a/examples/declarative/behaviours/test.qml b/examples/declarative/behaviours/test.qml index e6a50cd..4c092bf 100644 --- a/examples/declarative/behaviours/test.qml +++ b/examples/declarative/behaviours/test.qml @@ -56,7 +56,7 @@ Rect { id: bluerect x: Behavior { SequentialAnimation { - NumericAnimation { + NumberAnimation { target: bluerect properties: "y" from: 0 @@ -64,7 +64,7 @@ Rect { easing: "easeOutBounce(amplitude:30)" duration: 250 } - NumericAnimation { + NumberAnimation { target: bluerect properties: "y" from: 10 @@ -73,18 +73,18 @@ Rect { duration: 250 } } - NumericAnimation { duration: 500 } + NumberAnimation { duration: 500 } } parent: Behavior { SequentialAnimation { - NumericAnimation { + NumberAnimation { target: bluerect properties: "opacity" to: 0 duration: 150 } SetPropertyAction {} - NumericAnimation { + NumberAnimation { target: bluerect properties: "opacity" to: 1 diff --git a/examples/declarative/easing/easing.qml b/examples/declarative/easing/easing.qml index af675d1..4fdf512 100644 --- a/examples/declarative/easing/easing.qml +++ b/examples/declarative/easing/easing.qml @@ -63,7 +63,7 @@ Rect { font.italic: true x: SequentialAnimation { id: Anim - NumericAnimation { + NumberAnimation { from: 0 to: Window.width / 2 easing: type @@ -72,7 +72,7 @@ Rect { PauseAnimation { duration: 300 } - NumericAnimation { + NumberAnimation { to: 0 from: Window.width / 2 easing: type diff --git a/examples/declarative/flowview/flowview.qml b/examples/declarative/flowview/flowview.qml index 4c9aecc..61b8794 100644 --- a/examples/declarative/flowview/flowview.qml +++ b/examples/declarative/flowview/flowview.qml @@ -23,8 +23,8 @@ Rect { fromState: "" ; toState: "rotated" reversible: true SequentialAnimation { - NumericAnimation { filter: [TopBar, BottomBar]; properties: "x,y"; easing: "easeInOutQuad" } - NumericAnimation { filter: [LeftBar, RightBar]; properties: "x,y"; easing: "easeInOutQuad"} + NumberAnimation { filter: [TopBar, BottomBar]; properties: "x,y"; easing: "easeInOutQuad" } + NumberAnimation { filter: [LeftBar, RightBar]; properties: "x,y"; easing: "easeInOutQuad"} } } @@ -66,7 +66,7 @@ Rect { SequentialAnimation { ParentChangeAction{} PauseAnimation { duration: 50 * List.FlowView.column } - NumericAnimation { properties: "x,y,rotation"; easing: "easeInOutQuad" } + NumberAnimation { properties: "x,y,rotation"; easing: "easeInOutQuad" } } }, Transition { @@ -74,7 +74,7 @@ Rect { SequentialAnimation { ParentChangeAction{} PauseAnimation { duration: 50 * (Grid.FlowView.row * 2 + Grid.FlowView.column) } - NumericAnimation { properties: "x,y,rotation"; easing: "easeInOutQuad" } + NumberAnimation { properties: "x,y,rotation"; easing: "easeInOutQuad" } } } ] diff --git a/examples/declarative/follow/follow.qml b/examples/declarative/follow/follow.qml index 3258ea6..21a0309 100644 --- a/examples/declarative/follow/follow.qml +++ b/examples/declarative/follow/follow.qml @@ -7,11 +7,11 @@ Rect { y: 200; width: 60; height: 20 y: SequentialAnimation { running: true; repeat: true - NumericAnimation { + NumberAnimation { to: 20; duration: 500 easing: "easeInOutQuad" } - NumericAnimation { + NumberAnimation { to: 200; duration: 2000 easing: "easeOutBounce" } diff --git a/examples/declarative/follow/pong.qml b/examples/declarative/follow/pong.qml index 582b04c..93ee6a7 100644 --- a/examples/declarative/follow/pong.qml +++ b/examples/declarative/follow/pong.qml @@ -16,9 +16,9 @@ Rect { // Move the ball to the right and back to the left repeatedly x: SequentialAnimation { running: true; repeat: true - NumericAnimation { to: Page.width-40; duration: 2000 } + NumberAnimation { to: Page.width-40; duration: 2000 } SetPropertyAction { target: Ball; property: "direction"; value: "left" } - NumericAnimation { to: 20; duration: 2000 } + NumberAnimation { to: 20; duration: 2000 } SetPropertyAction { target: Ball; property: "direction"; value: "right" } } diff --git a/examples/declarative/listview/highlight.qml b/examples/declarative/listview/highlight.qml index 9a672d9..d0a6e30 100644 --- a/examples/declarative/listview/highlight.qml +++ b/examples/declarative/listview/highlight.qml @@ -30,7 +30,7 @@ Rect { ] transitions: [ Transition { - NumericAnimation { + NumberAnimation { properties: "x"; duration: 200 } } diff --git a/examples/declarative/listview/recipes.qml b/examples/declarative/listview/recipes.qml index ae9756c..b012c5a 100644 --- a/examples/declarative/listview/recipes.qml +++ b/examples/declarative/listview/recipes.qml @@ -115,7 +115,7 @@ Rect { // Make the state changes smooth ParallelAnimation { ColorAnimation { duration: 500 } - NumericAnimation { + NumberAnimation { duration: 300; properties: "detailsOpacity,x,yPosition,height,width" } } diff --git a/examples/declarative/minehunt/minehunt.qml b/examples/declarative/minehunt/minehunt.qml index db826a3..17fc177 100644 --- a/examples/declarative/minehunt/minehunt.qml +++ b/examples/declarative/minehunt/minehunt.qml @@ -29,7 +29,7 @@ Item { source: "pics/flag.png" opacity: modelData.hasFlag opacity: Behavior { - NumericAnimation { + NumberAnimation { property: "opacity" duration: 250 } @@ -77,7 +77,7 @@ Item { PauseAnimation { duration: {var ret = Math.abs(flipable.parent.x-field.clickx) + Math.abs(flipable.parent.y-field.clicky); if (ret > 0) {if(modelData.hasMine==true && modelData.flipped==true){ret*3;}else{ret;}} else {0}} } - NumericAnimation { + NumberAnimation { easing: "easeInOutQuad" properties: "rotation" } diff --git a/examples/declarative/scrollbar/display.qml b/examples/declarative/scrollbar/display.qml index 42e8f25..49f66cc 100644 --- a/examples/declarative/scrollbar/display.qml +++ b/examples/declarative/scrollbar/display.qml @@ -32,7 +32,7 @@ Rect { Transition { fromState: "*" toState: "*" - NumericAnimation { + NumberAnimation { properties: "opacity" duration: 400 } diff --git a/examples/declarative/slideswitch/Switch.qml b/examples/declarative/slideswitch/Switch.qml index 8bc88e4..69633e3 100644 --- a/examples/declarative/slideswitch/Switch.qml +++ b/examples/declarative/slideswitch/Switch.qml @@ -50,7 +50,7 @@ Item { ] transitions: [ Transition { - NumericAnimation { properties: "x"; easing: "easeInOutQuad"; duration: 200 } + NumberAnimation { properties: "x"; easing: "easeInOutQuad"; duration: 200 } } ] } diff --git a/examples/declarative/states/transitions.qml b/examples/declarative/states/transitions.qml index 4c1dceb..214f6e2 100644 --- a/examples/declarative/states/transitions.qml +++ b/examples/declarative/states/transitions.qml @@ -44,17 +44,17 @@ Rect { // with easeOutBounce easing function. Transition { fromState: "*"; toState: "Position1" - NumericAnimation { properties: "x,y"; easing: "easeOutBounce"; duration: 1000 } + NumberAnimation { properties: "x,y"; easing: "easeOutBounce"; duration: 1000 } }, // When transitioning to 'Position2' move x,y over a duration of 2 seconds, // with easeInOutQuad easing function. Transition { fromState: "*"; toState: "Position2" - NumericAnimation { properties: "x,y"; easing: "easeInOutQuad"; duration: 2000 } + NumberAnimation { properties: "x,y"; easing: "easeInOutQuad"; duration: 2000 } }, // For any other state changes move x,y linearly over duration of 200ms. Transition { - NumericAnimation { properties: "x,y"; duration: 200 } + NumberAnimation { properties: "x,y"; duration: 200 } } ] } diff --git a/examples/declarative/tutorials/contacts/1_Drawing_and_Animation/5/RemoveButton.qml b/examples/declarative/tutorials/contacts/1_Drawing_and_Animation/5/RemoveButton.qml index 29d464b..280553e 100644 --- a/examples/declarative/tutorials/contacts/1_Drawing_and_Animation/5/RemoveButton.qml +++ b/examples/declarative/tutorials/contacts/1_Drawing_and_Animation/5/RemoveButton.qml @@ -107,7 +107,7 @@ Rect { fromState: "*" toState: "opened" reversible: true - NumericAnimation { + NumberAnimation { properties: "opacity,x,width" duration: 200 } diff --git a/examples/declarative/tutorials/contacts/1_Drawing_and_Animation/GroupBox.qml b/examples/declarative/tutorials/contacts/1_Drawing_and_Animation/GroupBox.qml index 0d607a9..064aaa2 100644 --- a/examples/declarative/tutorials/contacts/1_Drawing_and_Animation/GroupBox.qml +++ b/examples/declarative/tutorials/contacts/1_Drawing_and_Animation/GroupBox.qml @@ -48,7 +48,7 @@ FocusRealm { onClicked: { parent.parent.focus=true } } opacity: Behavior { - NumericAnimation { + NumberAnimation { property: "opacity" duration: 250 } diff --git a/examples/declarative/tutorials/contacts/2_Reuse/1/RemoveButton.qml b/examples/declarative/tutorials/contacts/2_Reuse/1/RemoveButton.qml index 3142c45..c8df678 100644 --- a/examples/declarative/tutorials/contacts/2_Reuse/1/RemoveButton.qml +++ b/examples/declarative/tutorials/contacts/2_Reuse/1/RemoveButton.qml @@ -106,7 +106,7 @@ Rect { fromState: "*" toState: "opened" reversible: true - NumericAnimation { + NumberAnimation { properties: "opacity,x,width" duration: 200 } diff --git a/examples/declarative/tutorials/contacts/2_Reuse/1a/RemoveButton.qml b/examples/declarative/tutorials/contacts/2_Reuse/1a/RemoveButton.qml index 3142c45..c8df678 100644 --- a/examples/declarative/tutorials/contacts/2_Reuse/1a/RemoveButton.qml +++ b/examples/declarative/tutorials/contacts/2_Reuse/1a/RemoveButton.qml @@ -106,7 +106,7 @@ Rect { fromState: "*" toState: "opened" reversible: true - NumericAnimation { + NumberAnimation { properties: "opacity,x,width" duration: 200 } diff --git a/examples/declarative/tutorials/contacts/2_Reuse/1b/lib/RemoveButton.qml b/examples/declarative/tutorials/contacts/2_Reuse/1b/lib/RemoveButton.qml index bf6e82d..afbb039 100644 --- a/examples/declarative/tutorials/contacts/2_Reuse/1b/lib/RemoveButton.qml +++ b/examples/declarative/tutorials/contacts/2_Reuse/1b/lib/RemoveButton.qml @@ -108,7 +108,7 @@ Rect { fromState: "*" toState: "opened" reversible: true - NumericAnimation { + NumberAnimation { properties: "opacity,x,width" duration: 200 } diff --git a/examples/declarative/tutorials/contacts/2_Reuse/2/RemoveButton.qml b/examples/declarative/tutorials/contacts/2_Reuse/2/RemoveButton.qml index 99a521d..6e6a6e5 100644 --- a/examples/declarative/tutorials/contacts/2_Reuse/2/RemoveButton.qml +++ b/examples/declarative/tutorials/contacts/2_Reuse/2/RemoveButton.qml @@ -114,7 +114,7 @@ Rect { fromState: "*" toState: "opened" reversible: true - NumericAnimation { + NumberAnimation { properties: "opacity,x,width" duration: 200 } diff --git a/examples/declarative/tutorials/contacts/2_Reuse/3/ContactField.qml b/examples/declarative/tutorials/contacts/2_Reuse/3/ContactField.qml index 890d781..ba7f676 100644 --- a/examples/declarative/tutorials/contacts/2_Reuse/3/ContactField.qml +++ b/examples/declarative/tutorials/contacts/2_Reuse/3/ContactField.qml @@ -51,7 +51,7 @@ Item { fromState: "" toState: "*" reversible: true - NumericAnimation { + NumberAnimation { properties: "width,rightMargin" duration: 200 } diff --git a/examples/declarative/tutorials/contacts/2_Reuse/3/FieldText.qml b/examples/declarative/tutorials/contacts/2_Reuse/3/FieldText.qml index 8bf5317..5afcac3 100644 --- a/examples/declarative/tutorials/contacts/2_Reuse/3/FieldText.qml +++ b/examples/declarative/tutorials/contacts/2_Reuse/3/FieldText.qml @@ -71,7 +71,7 @@ Rect { text: fieldText.label opacity: textEdit.text == '' ? 1 : 0 opacity: Behavior { - NumericAnimation { + NumberAnimation { property: "opacity" duration: 250 } @@ -136,7 +136,7 @@ Rect { fromState: "" toState: "*" reversible: true - NumericAnimation { + NumberAnimation { properties: "opacity,leftMargin,rightMargin" duration: 200 } diff --git a/examples/declarative/tutorials/contacts/2_Reuse/3/RemoveButton.qml b/examples/declarative/tutorials/contacts/2_Reuse/3/RemoveButton.qml index 2f27a69..8f3604a 100644 --- a/examples/declarative/tutorials/contacts/2_Reuse/3/RemoveButton.qml +++ b/examples/declarative/tutorials/contacts/2_Reuse/3/RemoveButton.qml @@ -109,7 +109,7 @@ Rect { fromState: "*" toState: "opened" reversible: true - NumericAnimation { + NumberAnimation { properties: "opacity,x,width" duration: 200 } diff --git a/examples/declarative/tutorials/contacts/2_Reuse/4/ContactField.qml b/examples/declarative/tutorials/contacts/2_Reuse/4/ContactField.qml index e9927e9..6499293 100644 --- a/examples/declarative/tutorials/contacts/2_Reuse/4/ContactField.qml +++ b/examples/declarative/tutorials/contacts/2_Reuse/4/ContactField.qml @@ -49,7 +49,7 @@ Item { fromState: "" toState: "*" reversible: true - NumericAnimation { + NumberAnimation { properties: "width,rightMargin" duration: 200 } diff --git a/examples/declarative/tutorials/contacts/2_Reuse/4/FieldText.qml b/examples/declarative/tutorials/contacts/2_Reuse/4/FieldText.qml index d4fbc20..dee15c6 100644 --- a/examples/declarative/tutorials/contacts/2_Reuse/4/FieldText.qml +++ b/examples/declarative/tutorials/contacts/2_Reuse/4/FieldText.qml @@ -73,7 +73,7 @@ Rect { text: fieldText.label opacity: textEdit.text == '' ? 1 : 0 opacity: Behavior { - NumericAnimation { + NumberAnimation { property: "opacity" duration: 250 } @@ -137,7 +137,7 @@ Rect { fromState: "" toState: "*" reversible: true - NumericAnimation { + NumberAnimation { properties: "opacity,leftMargin,rightMargin" duration: 200 } diff --git a/examples/declarative/tutorials/contacts/2_Reuse/4/RemoveButton.qml b/examples/declarative/tutorials/contacts/2_Reuse/4/RemoveButton.qml index bfe496e..f7e2f22 100644 --- a/examples/declarative/tutorials/contacts/2_Reuse/4/RemoveButton.qml +++ b/examples/declarative/tutorials/contacts/2_Reuse/4/RemoveButton.qml @@ -114,7 +114,7 @@ Rect { fromState: "*" toState: "opened" reversible: true - NumericAnimation { + NumberAnimation { properties: "opacity,x,width" duration: 200 } diff --git a/examples/declarative/tutorials/contacts/2_Reuse/GroupBox.qml b/examples/declarative/tutorials/contacts/2_Reuse/GroupBox.qml index 0d607a9..064aaa2 100644 --- a/examples/declarative/tutorials/contacts/2_Reuse/GroupBox.qml +++ b/examples/declarative/tutorials/contacts/2_Reuse/GroupBox.qml @@ -48,7 +48,7 @@ FocusRealm { onClicked: { parent.parent.focus=true } } opacity: Behavior { - NumericAnimation { + NumberAnimation { property: "opacity" duration: 250 } diff --git a/examples/declarative/tutorials/contacts/3_Collections/2/ContactView.qml b/examples/declarative/tutorials/contacts/3_Collections/2/ContactView.qml index 0a293f5..b1e4721 100644 --- a/examples/declarative/tutorials/contacts/3_Collections/2/ContactView.qml +++ b/examples/declarative/tutorials/contacts/3_Collections/2/ContactView.qml @@ -102,7 +102,7 @@ Item { //! [transitions] transitions: [ Transition { - NumericAnimation { + NumberAnimation { duration: 500 properties: "yPosition,height,opacity" } diff --git a/examples/declarative/tutorials/contacts/3_Collections/3/ContactView.qml b/examples/declarative/tutorials/contacts/3_Collections/3/ContactView.qml index 7a44a3f..e4a145f 100644 --- a/examples/declarative/tutorials/contacts/3_Collections/3/ContactView.qml +++ b/examples/declarative/tutorials/contacts/3_Collections/3/ContactView.qml @@ -118,7 +118,7 @@ Item { ] transitions: [ Transition { - NumericAnimation { + NumberAnimation { duration: 500 properties: "yPosition,height,opacity" } diff --git a/examples/declarative/tutorials/contacts/3_Collections/GroupBox.qml b/examples/declarative/tutorials/contacts/3_Collections/GroupBox.qml index 0d607a9..064aaa2 100644 --- a/examples/declarative/tutorials/contacts/3_Collections/GroupBox.qml +++ b/examples/declarative/tutorials/contacts/3_Collections/GroupBox.qml @@ -48,7 +48,7 @@ FocusRealm { onClicked: { parent.parent.focus=true } } opacity: Behavior { - NumericAnimation { + NumberAnimation { property: "opacity" duration: 250 } diff --git a/examples/declarative/tutorials/contacts/3_Collections/lib/Button.qml b/examples/declarative/tutorials/contacts/3_Collections/lib/Button.qml index 3b76a13..295e6cd 100644 --- a/examples/declarative/tutorials/contacts/3_Collections/lib/Button.qml +++ b/examples/declarative/tutorials/contacts/3_Collections/lib/Button.qml @@ -49,7 +49,7 @@ Item { ] } opacity: Behavior { - NumericAnimation { + NumberAnimation { property: "opacity" duration: 250 } diff --git a/examples/declarative/tutorials/contacts/3_Collections/lib/ContactField.qml b/examples/declarative/tutorials/contacts/3_Collections/lib/ContactField.qml index e9927e9..6499293 100644 --- a/examples/declarative/tutorials/contacts/3_Collections/lib/ContactField.qml +++ b/examples/declarative/tutorials/contacts/3_Collections/lib/ContactField.qml @@ -49,7 +49,7 @@ Item { fromState: "" toState: "*" reversible: true - NumericAnimation { + NumberAnimation { properties: "width,rightMargin" duration: 200 } diff --git a/examples/declarative/tutorials/contacts/3_Collections/lib/FieldText.qml b/examples/declarative/tutorials/contacts/3_Collections/lib/FieldText.qml index 111d9c5..4e699c3 100644 --- a/examples/declarative/tutorials/contacts/3_Collections/lib/FieldText.qml +++ b/examples/declarative/tutorials/contacts/3_Collections/lib/FieldText.qml @@ -73,7 +73,7 @@ Rect { text: fieldText.label opacity: textEdit.text == '' ? 1 : 0 opacity: Behavior { - NumericAnimation { + NumberAnimation { property: "opacity" duration: 250 } @@ -137,7 +137,7 @@ Rect { fromState: "" toState: "*" reversible: true - NumericAnimation { + NumberAnimation { properties: "opacity,leftMargin,rightMargin" duration: 200 } diff --git a/examples/declarative/tutorials/contacts/3_Collections/lib/RemoveButton.qml b/examples/declarative/tutorials/contacts/3_Collections/lib/RemoveButton.qml index c0ea79d..a403be7 100644 --- a/examples/declarative/tutorials/contacts/3_Collections/lib/RemoveButton.qml +++ b/examples/declarative/tutorials/contacts/3_Collections/lib/RemoveButton.qml @@ -112,7 +112,7 @@ Rect { fromState: "*" toState: "opened" reversible: true - NumericAnimation { + NumberAnimation { properties: "opacity,x,width" duration: 200 } diff --git a/examples/declarative/tutorials/helloworld/t3/tutorial3.qml b/examples/declarative/tutorials/helloworld/t3/tutorial3.qml index bd89ecf..5ea0dd6 100644 --- a/examples/declarative/tutorials/helloworld/t3/tutorial3.qml +++ b/examples/declarative/tutorials/helloworld/t3/tutorial3.qml @@ -32,7 +32,7 @@ Rect { toState: "down" reversible: true ParallelAnimation { - NumericAnimation { + NumberAnimation { properties: "y" duration: 500 easing: "easeOutBounce" diff --git a/examples/declarative/velocity/Day.qml b/examples/declarative/velocity/Day.qml index c70a211..8f78822 100644 --- a/examples/declarative/velocity/Day.qml +++ b/examples/declarative/velocity/Day.qml @@ -100,7 +100,7 @@ Rect { ] transitions: [ Transition { - NumericAnimation { + NumberAnimation { properties: "rotation,scale" duration: 200 } diff --git a/examples/declarative/webview/content/SpinSquare.qml b/examples/declarative/webview/content/SpinSquare.qml index 5e4735e..640416f 100644 --- a/examples/declarative/webview/content/SpinSquare.qml +++ b/examples/declarative/webview/content/SpinSquare.qml @@ -13,7 +13,7 @@ Item { width: Root.width height: width } - rotation: NumericAnimation { + rotation: NumberAnimation { from: 0 to: 360 repeat: true diff --git a/examples/declarative/xmldata/yahoonews.qml b/examples/declarative/xmldata/yahoonews.qml index b465ef1..c2a0e34 100644 --- a/examples/declarative/xmldata/yahoonews.qml +++ b/examples/declarative/xmldata/yahoonews.qml @@ -82,12 +82,12 @@ Rect { toState: "Details" reversible: true SequentialAnimation { - NumericAnimation { + NumberAnimation { duration: 200 properties: "height" easing: "easeOutQuad" } - NumericAnimation { + NumberAnimation { duration: 200 properties: "opacity" } diff --git a/src/declarative/fx/qfxflipable.cpp b/src/declarative/fx/qfxflipable.cpp index 4c02e74..9595724 100644 --- a/src/declarative/fx/qfxflipable.cpp +++ b/src/declarative/fx/qfxflipable.cpp @@ -94,7 +94,7 @@ Flipable { ] transitions: [ Transition { - NumericAnimation { + NumberAnimation { easing: "easeInOutQuad" properties: "rotation" } diff --git a/src/declarative/fx/qfxhighlightfilter.cpp b/src/declarative/fx/qfxhighlightfilter.cpp index 1671fc6..78a91af 100644 --- a/src/declarative/fx/qfxhighlightfilter.cpp +++ b/src/declarative/fx/qfxhighlightfilter.cpp @@ -80,7 +80,7 @@ Text { text: "Highlight" filter: Highlight { source: "pics/highlight.png" - xOffset: NumericAnimation { + xOffset: NumberAnimation { running: true repeat: true from: 320 diff --git a/src/declarative/fx/qfxlayouts.cpp b/src/declarative/fx/qfxlayouts.cpp index a975778..e27135c 100644 --- a/src/declarative/fx/qfxlayouts.cpp +++ b/src/declarative/fx/qfxlayouts.cpp @@ -132,7 +132,7 @@ BaseLayout { id: layout y: 0 move: Transition { - NumericAnimation { + NumberAnimation { properties: "y" ease: "easeOutBounce" } @@ -161,7 +161,7 @@ BaseLayout { id: layout y: 0 add: Transition { - NumericAnimation { + NumberAnimation { target: layout.item properties: "opacity" from: 0 @@ -196,7 +196,7 @@ BaseLayout { id: layout y: 0 remove: Transition { - NumericAnimation { + NumberAnimation { target: layout.item properties: "opacity" from: 1 @@ -512,7 +512,7 @@ VerticalLayout { VerticalLayout { id: layout remove: Transition { - NumericAnimation { + NumberAnimation { target: layout.item properties: "opacity" from: 1 @@ -539,7 +539,7 @@ VerticalLayout { VerticalLayout { id: layout add: Transition { - NumericAnimation { + NumberAnimation { target: layout.item properties: "opacity" from: 0 @@ -566,7 +566,7 @@ VerticalLayout { VerticalLayout { id: layout move: Transition { - NumericAnimation { + NumberAnimation { properties: "y" ease: "easeOutBounce" } @@ -683,7 +683,7 @@ HorizontalLayout { HorizontalLayout { id: layout remove: Transition { - NumericAnimation { + NumberAnimation { target: layout.item properties: "opacity" from: 1 @@ -705,7 +705,7 @@ HorizontalLayout { HorizontalLayout { id: layout add: Transition { - NumericAnimation { + NumberAnimation { target: layout.item properties: "opacity" from: 0 @@ -727,7 +727,7 @@ HorizontalLayout { HorizontalLayout { id: layout move: Transition { - NumericAnimation { + NumberAnimation { properties: "x" ease: "easeOutBounce" } @@ -875,7 +875,7 @@ GridLayout { GridLayout { id: layout remove: Transition { - NumericAnimation { + NumberAnimation { target: layout.item properties: "opacity" from: 1 @@ -900,7 +900,7 @@ GridLayout { GridLayout { id: layout add: Transition { - NumericAnimation { + NumberAnimation { target: layout.item properties: "opacity" from: 0 @@ -923,7 +923,7 @@ GridLayout { GridLayout { id: layout move: Transition { - NumericAnimation { + NumberAnimation { properties: "x,y" ease: "easeOutBounce" } diff --git a/src/declarative/qml/qmldom.cpp b/src/declarative/qml/qmldom.cpp index d2608c8..be58071 100644 --- a/src/declarative/qml/qmldom.cpp +++ b/src/declarative/qml/qmldom.cpp @@ -959,11 +959,11 @@ void QmlDomValueBinding::setBinding(const QString &expression) In QML, value sources are special value generating types that may be assigned to properties. Value sources inherit the QmlPropertyValueSource class. In the example below, the "x" property is being assigned the - NumericAnimation value source. + NumberAnimation value source. \qml Rect { - x: NumericAnimation { + x: NumberAnimation { from: 0 to: 100 repeat: true @@ -1008,11 +1008,11 @@ QmlDomValueValueSource &QmlDomValueValueSource::operator=(const QmlDomValueValue /*! Return the value source object. - In the example below, an object representing the NumericAnimation will be + In the example below, an object representing the NumberAnimation will be returned. \qml Rect { - x: NumericAnimation { + x: NumberAnimation { from: 0 to: 100 repeat: true @@ -1357,7 +1357,7 @@ Item { \qml Item { x: 10 - x: NumericAnimation { + x: NumberAnimation { running: false from: 0 to: 100 diff --git a/src/declarative/util/qmlanimation.cpp b/src/declarative/util/qmlanimation.cpp index 42ed40b..b2a3356 100644 --- a/src/declarative/util/qmlanimation.cpp +++ b/src/declarative/util/qmlanimation.cpp @@ -179,7 +179,7 @@ QmlAbstractAnimation::QmlAbstractAnimation(QmlAbstractAnimationPrivate &dd, QObj \code Rect { width: 100; height: 100 - x: NumericAnimation { + x: NumberAnimation { running: MyMouse.pressed from: 0; to: 100 } @@ -192,7 +192,7 @@ QmlAbstractAnimation::QmlAbstractAnimation(QmlAbstractAnimationPrivate &dd, QObj or not the animation is running. \code - NumericAnimation { id: MyAnimation } + NumberAnimation { id: MyAnimation } Text { text: MyAnimation.running ? "Animation is running" : "Animation is not running" } \endcode @@ -349,7 +349,7 @@ void QmlAbstractAnimation::setFinishPlaying(bool f) \code Rect { - rotation: NumericAnimation { running: true; repeat: true; from: 0 to: 360 } + rotation: NumberAnimation { running: true; repeat: true; from: 0 to: 360 } } \endcode */ @@ -512,7 +512,7 @@ void QmlAbstractAnimation::resume() no further influence on property values. In this example animation \code Rect { - x: NumericAnimation { from: 0; to: 100; duration: 500 } + x: NumberAnimation { from: 0; to: 100; duration: 500 } } \endcode was stopped at time 250ms, the \c x property will have a value of 50. @@ -550,7 +550,7 @@ void QmlAbstractAnimation::restart() its end. In the following example, \code Rect { - x: NumericAnimation { from: 0; to: 100; duration: 500 } + x: NumberAnimation { from: 0; to: 100; duration: 500 } } \endcode calling \c stop() at time 250ms will result in the \c x property having @@ -606,9 +606,9 @@ void QmlAbstractAnimation::timelineComplete() A 500ms animation sequence, with a 100ms pause between two animations: \code SequentialAnimation { - NumericAnimation { ... duration: 200 } + NumberAnimation { ... duration: 200 } PauseAnimation { duration: 100 } - NumericAnimation { ... duration: 200 } + NumberAnimation { ... duration: 200 } } \endcode */ @@ -1175,29 +1175,29 @@ void QmlParentChangeAction::transition(QmlStateActions &actions, QML_DEFINE_TYPE(QmlParentChangeAction,ParentChangeAction) /*! - \qmlclass NumericAnimation QmlNumericAnimation + \qmlclass NumberAnimation QmlNumberAnimation \inherits PropertyAnimation - \brief The NumericAnimation allows you to animate changes in properties of type qreal. + \brief The NumberAnimation allows you to animate changes in properties of type qreal. Animate a set of properties over 200ms, from their values in the start state to their values in the end state of the transition: \code - NumericAnimation { properties: "x,y,scale"; duration: 200 } + NumberAnimation { properties: "x,y,scale"; duration: 200 } \endcode */ /*! \internal - \class QmlNumericAnimation + \class QmlNumberAnimation \ingroup group_animation \ingroup group_states - \brief The QmlNumericAnimation class allows you to animate changes in properties of type qreal. + \brief The QmlNumberAnimation class allows you to animate changes in properties of type qreal. - A QmlNumericAnimation object can be instantiated in Qml using the tag - \l{xmlNumericAnimation} {<NumericAnimation>}. + A QmlNumberAnimation object can be instantiated in Qml using the tag + \l{xmlNumberAnimation} {<NumberAnimation>}. */ -QmlNumericAnimation::QmlNumericAnimation(QObject *parent) +QmlNumberAnimation::QmlNumberAnimation(QObject *parent) : QmlPropertyAnimation(parent) { Q_D(QmlPropertyAnimation); @@ -1206,51 +1206,51 @@ QmlNumericAnimation::QmlNumericAnimation(QObject *parent) d->interpolator = QVariantAnimationPrivate::getInterpolator(d->interpolatorType); } -QmlNumericAnimation::~QmlNumericAnimation() +QmlNumberAnimation::~QmlNumberAnimation() { } /*! - \qmlproperty real NumericAnimation::from + \qmlproperty real NumberAnimation::from This property holds the starting value. If not set, then the value defined in the start state of the transition. */ /*! - \property QmlNumericAnimation::from + \property QmlNumberAnimation::from \brief the starting value. */ -qreal QmlNumericAnimation::from() const +qreal QmlNumberAnimation::from() const { Q_D(const QmlPropertyAnimation); return d->from.toDouble(); //### toFloat? } -void QmlNumericAnimation::setFrom(qreal f) +void QmlNumberAnimation::setFrom(qreal f) { QmlPropertyAnimation::setFrom(f); } /*! - \qmlproperty real NumericAnimation::to + \qmlproperty real NumberAnimation::to This property holds the ending value. If not set, then the value defined in the end state of the transition. */ /*! - \property QmlNumericAnimation::to + \property QmlNumberAnimation::to \brief the ending value. */ -qreal QmlNumericAnimation::to() const +qreal QmlNumberAnimation::to() const { Q_D(const QmlPropertyAnimation); return d->to.toDouble(); //### toFloat? } -void QmlNumericAnimation::setTo(qreal t) +void QmlNumberAnimation::setTo(qreal t) { QmlPropertyAnimation::setTo(t); } -QML_DEFINE_TYPE(QmlNumericAnimation,NumericAnimation) +QML_DEFINE_TYPE(QmlNumberAnimation,NumberAnimation) QmlAnimationGroup::QmlAnimationGroup(QObject *parent) : QmlAbstractAnimation(*(new QmlAnimationGroupPrivate), parent) @@ -1279,8 +1279,8 @@ QmlList *QmlAnimationGroup::animations() \code SequentialAnimation { - NumericAnimation { target: MyItem; property: "x"; to: 100 } - NumericAnimation { target: MyItem; property: "x"; to: 0 } + NumberAnimation { target: MyItem; property: "x"; to: 100 } + NumberAnimation { target: MyItem; property: "x"; to: 0 } } \endcode @@ -1362,8 +1362,8 @@ QML_DEFINE_TYPE(QmlSequentialAnimation,SequentialAnimation) \code ParallelAnimation { - NumericAnimation { target: MyItem; property: "x"; to: 100 } - NumericAnimation { target: MyItem; property: "y"; to: 100 } + NumberAnimation { target: MyItem; property: "x"; to: 100 } + NumberAnimation { target: MyItem; property: "y"; to: 100 } } \endcode @@ -1782,7 +1782,7 @@ void QmlPropertyAnimation::transition(QmlStateActions &actions, struct PropertyUpdater : public QmlTimeLineValue { QmlStateActions actions; - int interpolatorType; //for Numeric/ColorAnimation + int interpolatorType; //for Number/ColorAnimation int prevInterpolatorType; //for generic QVariantAnimation::Interpolator interpolator; void setValue(qreal v) diff --git a/src/declarative/util/qmlanimation.h b/src/declarative/util/qmlanimation.h index a91394d..110c43e 100644 --- a/src/declarative/util/qmlanimation.h +++ b/src/declarative/util/qmlanimation.h @@ -317,7 +317,7 @@ public: }; QML_DECLARE_TYPE(QmlColorAnimation) -class QmlNumericAnimation : public QmlPropertyAnimation +class QmlNumberAnimation : public QmlPropertyAnimation { Q_OBJECT Q_DECLARE_PRIVATE(QmlPropertyAnimation) @@ -326,8 +326,8 @@ class QmlNumericAnimation : public QmlPropertyAnimation Q_PROPERTY(qreal to READ to WRITE setTo NOTIFY toChanged) public: - QmlNumericAnimation(QObject *parent=0); - virtual ~QmlNumericAnimation(); + QmlNumberAnimation(QObject *parent=0); + virtual ~QmlNumberAnimation(); qreal from() const; void setFrom(qreal); @@ -335,7 +335,7 @@ public: qreal to() const; void setTo(qreal); }; -QML_DECLARE_TYPE(QmlNumericAnimation) +QML_DECLARE_TYPE(QmlNumberAnimation) class QmlAnimationGroupPrivate; class QmlAnimationGroup : public QmlAbstractAnimation diff --git a/src/declarative/util/qmlbehaviour.cpp b/src/declarative/util/qmlbehaviour.cpp index 3617541..4beca5e 100644 --- a/src/declarative/util/qmlbehaviour.cpp +++ b/src/declarative/util/qmlbehaviour.cpp @@ -115,7 +115,7 @@ public: color: "#00ff00" y: 200 //initial value y: Behavior { - NumericAnimation { + NumberAnimation { easing: "easeOutBounce(amplitude:100)" duration: 200 } diff --git a/src/declarative/util/qmlfollow.cpp b/src/declarative/util/qmlfollow.cpp index d1ecac4..95e7792 100644 --- a/src/declarative/util/qmlfollow.cpp +++ b/src/declarative/util/qmlfollow.cpp @@ -183,7 +183,7 @@ void QmlFollowPrivate::stop() y: SequentialAnimation { running: true repeat: true - NumericAnimation { + NumberAnimation { to: 200 easing: "easeOutBounce(amplitude:100)" duration: 2000 diff --git a/tests/auto/declarative/animations/data/badtype2.qml b/tests/auto/declarative/animations/data/badtype2.qml index 18d9079..aa248a6 100644 --- a/tests/auto/declarative/animations/data/badtype2.qml +++ b/tests/auto/declarative/animations/data/badtype2.qml @@ -5,6 +5,6 @@ Rect { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumericAnimation { from: "blue"; to: "green"; running: true; } + x: NumberAnimation { from: "blue"; to: "green"; running: true; } } } diff --git a/tests/auto/declarative/animations/data/badtype4.qml b/tests/auto/declarative/animations/data/badtype4.qml index e3d312e..fa4eebe 100644 --- a/tests/auto/declarative/animations/data/badtype4.qml +++ b/tests/auto/declarative/animations/data/badtype4.qml @@ -18,6 +18,6 @@ Rect { } transitions: Transition { ColorAnimation { properties: "x,color"; duration: 1000 } //x is real, color is color - //NumericAnimation { properties: "x,color"; duration: 1000 } //x is real, color is color + //NumberAnimation { properties: "x,color"; duration: 1000 } //x is real, color is color } } diff --git a/tests/auto/declarative/visual/bindinganimation/bindinganimation.qml b/tests/auto/declarative/visual/bindinganimation/bindinganimation.qml index 61cedc2..b06314f 100644 --- a/tests/auto/declarative/visual/bindinganimation/bindinganimation.qml +++ b/tests/auto/declarative/visual/bindinganimation/bindinganimation.qml @@ -27,7 +27,7 @@ Rect { ] transitions: [ Transition { - NumericAnimation { + NumberAnimation { properties: "x" } } diff --git a/tests/auto/declarative/visual/easing/easing.qml b/tests/auto/declarative/visual/easing/easing.qml index 4a0ed14..59dd25c 100644 --- a/tests/auto/declarative/visual/easing/easing.qml +++ b/tests/auto/declarative/visual/easing/easing.qml @@ -169,7 +169,7 @@ Rect { fromState: "*" toState: "to" reversible: true - NumericAnimation { + NumberAnimation { properties: "x" easing: type } diff --git a/tests/auto/declarative/visual/flipable/flipable.xml b/tests/auto/declarative/visual/flipable/flipable.xml index d769e55..9288acc 100644 --- a/tests/auto/declarative/visual/flipable/flipable.xml +++ b/tests/auto/declarative/visual/flipable/flipable.xml @@ -104,17 +104,17 @@ - + - - + + - - + + diff --git a/tests/auto/declarative/visual/pauseAnimation/pauseAnimation.qml b/tests/auto/declarative/visual/pauseAnimation/pauseAnimation.qml index 5c00f58..e0880f0 100644 --- a/tests/auto/declarative/visual/pauseAnimation/pauseAnimation.qml +++ b/tests/auto/declarative/visual/pauseAnimation/pauseAnimation.qml @@ -11,11 +11,11 @@ Rect { y: SequentialAnimation { running: true repeat: true - NumericAnimation { + NumberAnimation { to: 0; duration: 500 easing: "easeInOutQuad" } - NumericAnimation { + NumberAnimation { to: 200-img.height easing: "easeOutBounce" duration: 2000 -- cgit v0.12 From 98286fd1ac3bb7940618d5a170c7b98b0e2a4dae Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 26 Jun 2009 12:53:17 +1000 Subject: Color property is required to be explicity set (at least for now). --- demos/declarative/contacts/Button.qml | 2 ++ demos/declarative/contacts/FieldText.qml | 1 + doc/src/declarative/animation.qdoc | 3 ++- doc/src/declarative/tutorial3.qdoc | 4 ++-- examples/declarative/animation/animation.qml | 2 ++ examples/declarative/listview/recipes.qml | 2 +- examples/declarative/tutorials/contacts/2_Reuse/3/FieldText.qml | 1 + examples/declarative/tutorials/contacts/2_Reuse/4/FieldText.qml | 1 + examples/declarative/tutorials/contacts/3_Collections/lib/Button.qml | 2 ++ .../declarative/tutorials/contacts/3_Collections/lib/FieldText.qml | 1 + examples/declarative/tutorials/helloworld/t3/tutorial3.qml | 2 +- src/declarative/util/qmlanimation.cpp | 4 ---- 12 files changed, 16 insertions(+), 9 deletions(-) diff --git a/demos/declarative/contacts/Button.qml b/demos/declarative/contacts/Button.qml index 295e6cd..842825f 100644 --- a/demos/declarative/contacts/Button.qml +++ b/demos/declarative/contacts/Button.qml @@ -36,6 +36,7 @@ Item { fromState: "*" toState: "pressed" ColorAnimation { + property: "color" duration: 200 } }, @@ -43,6 +44,7 @@ Item { fromState: "pressed" toState: "*" ColorAnimation { + property: "color" duration: 1000 } } diff --git a/demos/declarative/contacts/FieldText.qml b/demos/declarative/contacts/FieldText.qml index 333a5f6..ddeed11 100644 --- a/demos/declarative/contacts/FieldText.qml +++ b/demos/declarative/contacts/FieldText.qml @@ -153,6 +153,7 @@ Rect { duration: 200 } ColorAnimation { + property: "color" duration: 150 } } diff --git a/doc/src/declarative/animation.qdoc b/doc/src/declarative/animation.qdoc index 0517009..9f3f4f6 100644 --- a/doc/src/declarative/animation.qdoc +++ b/doc/src/declarative/animation.qdoc @@ -132,7 +132,7 @@ Transition { } \endcode -Transitions can happen in parallel, in sequence, or in any combination of the two:; +Transitions can happen in parallel, in sequence, or in any combination of the two: \code Transition { @@ -141,6 +141,7 @@ Transition { reversible: true SequentialAnimation { ColorAnimation { + property: "color" duration: 1000 } PauseAnimation { diff --git a/doc/src/declarative/tutorial3.qdoc b/doc/src/declarative/tutorial3.qdoc index e9f861e..d8bed78 100644 --- a/doc/src/declarative/tutorial3.qdoc +++ b/doc/src/declarative/tutorial3.qdoc @@ -51,7 +51,7 @@ Rect { duration: 500 easing: "easeOutBounce" } - ColorAnimation { duration: 500 } + ColorAnimation { property: "color"; duration: 500 } } } ] @@ -119,7 +119,7 @@ ParallelAnimation { duration: 500 easing: "easeOutBounce" } - ColorAnimation { duration: 500 } + ColorAnimation { property: "color"; duration: 500 } } \endcode diff --git a/examples/declarative/animation/animation.qml b/examples/declarative/animation/animation.qml index 272aeec..37e68d6 100644 --- a/examples/declarative/animation/animation.qml +++ b/examples/declarative/animation/animation.qml @@ -37,11 +37,13 @@ Rect { running: true repeat: true ColorAnimation { + property: "color" from: "#FF0000" to: "#00FF00" duration: 5000 } ColorAnimation { + property: "color" from: "#00FF00" to: "#FF0000" duration: 5000 diff --git a/examples/declarative/listview/recipes.qml b/examples/declarative/listview/recipes.qml index b012c5a..e5cb8ff 100644 --- a/examples/declarative/listview/recipes.qml +++ b/examples/declarative/listview/recipes.qml @@ -114,7 +114,7 @@ Rect { Transition { // Make the state changes smooth ParallelAnimation { - ColorAnimation { duration: 500 } + ColorAnimation { property: "color"; duration: 500 } NumberAnimation { duration: 300; properties: "detailsOpacity,x,yPosition,height,width" } diff --git a/examples/declarative/tutorials/contacts/2_Reuse/3/FieldText.qml b/examples/declarative/tutorials/contacts/2_Reuse/3/FieldText.qml index 5afcac3..6ebcfda 100644 --- a/examples/declarative/tutorials/contacts/2_Reuse/3/FieldText.qml +++ b/examples/declarative/tutorials/contacts/2_Reuse/3/FieldText.qml @@ -141,6 +141,7 @@ Rect { duration: 200 } ColorAnimation { + property: "color" duration: 150 } } diff --git a/examples/declarative/tutorials/contacts/2_Reuse/4/FieldText.qml b/examples/declarative/tutorials/contacts/2_Reuse/4/FieldText.qml index dee15c6..d3bca29 100644 --- a/examples/declarative/tutorials/contacts/2_Reuse/4/FieldText.qml +++ b/examples/declarative/tutorials/contacts/2_Reuse/4/FieldText.qml @@ -142,6 +142,7 @@ Rect { duration: 200 } ColorAnimation { + property: "color" duration: 150 } } diff --git a/examples/declarative/tutorials/contacts/3_Collections/lib/Button.qml b/examples/declarative/tutorials/contacts/3_Collections/lib/Button.qml index 295e6cd..842825f 100644 --- a/examples/declarative/tutorials/contacts/3_Collections/lib/Button.qml +++ b/examples/declarative/tutorials/contacts/3_Collections/lib/Button.qml @@ -36,6 +36,7 @@ Item { fromState: "*" toState: "pressed" ColorAnimation { + property: "color" duration: 200 } }, @@ -43,6 +44,7 @@ Item { fromState: "pressed" toState: "*" ColorAnimation { + property: "color" duration: 1000 } } diff --git a/examples/declarative/tutorials/contacts/3_Collections/lib/FieldText.qml b/examples/declarative/tutorials/contacts/3_Collections/lib/FieldText.qml index 4e699c3..a094040 100644 --- a/examples/declarative/tutorials/contacts/3_Collections/lib/FieldText.qml +++ b/examples/declarative/tutorials/contacts/3_Collections/lib/FieldText.qml @@ -142,6 +142,7 @@ Rect { duration: 200 } ColorAnimation { + property: "color" duration: 150 } } diff --git a/examples/declarative/tutorials/helloworld/t3/tutorial3.qml b/examples/declarative/tutorials/helloworld/t3/tutorial3.qml index f4bce32..664bf45 100644 --- a/examples/declarative/tutorials/helloworld/t3/tutorial3.qml +++ b/examples/declarative/tutorials/helloworld/t3/tutorial3.qml @@ -32,7 +32,7 @@ Rect { duration: 500 easing: "easeOutBounce" } - ColorAnimation { duration: 500 } + ColorAnimation { property: "color"; duration: 500 } } } ] diff --git a/src/declarative/util/qmlanimation.cpp b/src/declarative/util/qmlanimation.cpp index b2a3356..921c578 100644 --- a/src/declarative/util/qmlanimation.cpp +++ b/src/declarative/util/qmlanimation.cpp @@ -699,10 +699,6 @@ QAbstractAnimation *QmlPauseAnimation::qtAnimation() \code ColorAnimation { from: "white"; to: "#c0c0c0"; duration: 100 } \endcode - - The default property animated is \c color, but like other animations, - this can be changed by setting \c property. The \c color property will - still animate. XXX is this a bug? */ /*! \internal -- cgit v0.12 From 0ee01c42afb203d60ff0cd543ced124e0c100b8e Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 26 Jun 2009 13:36:53 +1000 Subject: Make ease prefix optional. --- src/declarative/util/qmlanimation.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/declarative/util/qmlanimation.cpp b/src/declarative/util/qmlanimation.cpp index 921c578..c5f2a25 100644 --- a/src/declarative/util/qmlanimation.cpp +++ b/src/declarative/util/qmlanimation.cpp @@ -85,11 +85,17 @@ QEasingCurve stringToCurve(const QString &curve) QString prop_str = easeName.mid(idx + 1, easeName.length() - 1 - idx - 1); normalizedCurve = easeName.left(idx); + if (!normalizedCurve.startsWith(QLatin1String("ease"))) { + qWarning("QEasingCurve: Easing function '%s' must start with 'ease'", + curve.toLatin1().constData()); + } props = prop_str.split(QLatin1Char(',')); } - normalizedCurve = normalizedCurve.mid(4); + if (normalizedCurve.startsWith(QLatin1String("ease"))) + normalizedCurve = normalizedCurve.mid(4); + //XXX optimize? int index = QEasingCurve::staticMetaObject.indexOfEnumerator("Type"); QMetaEnum me = QEasingCurve::staticMetaObject.enumerator(index); -- cgit v0.12 From 40a59d973c324e45954481f608e1bfc2b9579300 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 26 Jun 2009 14:31:54 +1000 Subject: Make sure we update when anchor margins/offsets change. --- src/declarative/fx/qfxanchors.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/declarative/fx/qfxanchors.cpp b/src/declarative/fx/qfxanchors.cpp index 3da58a2..feac96e 100644 --- a/src/declarative/fx/qfxanchors.cpp +++ b/src/declarative/fx/qfxanchors.cpp @@ -772,6 +772,7 @@ void QFxAnchors::setLeftMargin(int offset) if (d->leftMargin == offset) return; d->leftMargin = offset; + d->updateHorizontalAnchors(); emit leftMarginChanged(); } @@ -787,6 +788,7 @@ void QFxAnchors::setRightMargin(int offset) if (d->rightMargin == offset) return; d->rightMargin = offset; + d->updateHorizontalAnchors(); emit rightMarginChanged(); } @@ -802,6 +804,7 @@ void QFxAnchors::setHorizontalCenterOffset(int offset) if (d->hCenterOffset == offset) return; d->hCenterOffset = offset; + d->updateHorizontalAnchors(); emit horizontalCenterOffsetChanged(); } @@ -817,6 +820,7 @@ void QFxAnchors::setTopMargin(int offset) if (d->topMargin == offset) return; d->topMargin = offset; + d->updateVerticalAnchors(); emit topMarginChanged(); } @@ -832,6 +836,7 @@ void QFxAnchors::setBottomMargin(int offset) if (d->bottomMargin == offset) return; d->bottomMargin = offset; + d->updateVerticalAnchors(); emit bottomMarginChanged(); } @@ -847,6 +852,7 @@ void QFxAnchors::setVerticalCenterOffset(int offset) if (d->vCenterOffset == offset) return; d->vCenterOffset = offset; + d->updateVerticalAnchors(); emit verticalCenterOffsetChanged(); } -- cgit v0.12