diff options
author | Erik Verbruggen <[email protected]> | 2010-02-19 15:10:39 +0100 |
---|---|---|
committer | Erik Verbruggen <[email protected]> | 2010-02-19 15:11:03 +0100 |
commit | 78b31454778977c2fbdf2b98a0cbf188e852c3f1 (patch) | |
tree | 2ccf123549f32aa0e205e7de6d84f044aefa2dcf /src/libs/qmljs/qmljsinterpreter.cpp | |
parent | 5e449a80c448db05b49122f3a046e37056ee509d (diff) |
Semantic checking for easing curve names.
Done-with: Christian Kamm
Diffstat (limited to 'src/libs/qmljs/qmljsinterpreter.cpp')
-rw-r--r-- | src/libs/qmljs/qmljsinterpreter.cpp | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index 7caee728108..20b1f47dbe7 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -41,6 +41,7 @@ # include <QtDeclarative/private/qmlgraphicsanchors_p.h> // ### remove me # include <QtDeclarative/private/qmlgraphicsrectangle_p.h> // ### remove me # include <QtDeclarative/private/qmlvaluetype_p.h> // ### remove me +# include <QtDeclarative/private/qmlanimation_p.h> // ### remove me #endif using namespace QmlJS::Interpreter; @@ -329,8 +330,29 @@ const Value *QmlObjectValue::propertyValue(const QMetaProperty &prop) const break; } // end of switch + const QString typeName = prop.typeName(); + if (typeName == QLatin1String("QmlGraphicsAnchorLine")) { + ObjectValue *object = engine()->newObject(/*prototype =*/ 0); + object->setClassName(QLatin1String("AnchorLine")); + value = object; + } + if (value->asStringValue() && prop.name() == QLatin1String("easing") + && isDerivedFrom(&QmlPropertyAnimation::staticMetaObject)) { + value = engine()->easingCurveNameValue(); + } + return value; } + +bool QmlObjectValue::isDerivedFrom(const QMetaObject *base) const +{ + for (const QMetaObject *iter = _metaObject; iter; iter = iter->superClass()) { + if (iter == base) + return true; + } + return false; +} + #endif namespace { @@ -584,6 +606,10 @@ void ValueVisitor::visit(const Reference *) { } +void ValueVisitor::visit(const EasingCurveNameValue *) +{ +} + //////////////////////////////////////////////////////////////////////////////// // Value //////////////////////////////////////////////////////////////////////////////// @@ -640,6 +666,11 @@ const Reference *Value::asReference() const return 0; } +const EasingCurveNameValue *Value::asEasingCurveNameValue() const +{ + return 0; +} + //////////////////////////////////////////////////////////////////////////////// // Values //////////////////////////////////////////////////////////////////////////////// @@ -860,6 +891,67 @@ const Value *Reference::value(Context *) const return _engine->undefinedValue(); } +void EasingCurveNameValue::accept(ValueVisitor *visitor) const +{ + visitor->visit(this); +} + +QSet<QString> EasingCurveNameValue::_curveNames; +QSet<QString> EasingCurveNameValue::curveNames() +{ + if (_curveNames.isEmpty()) { + _curveNames = QSet<QString>() + << "easeLinear" + << "easeInQuad" + << "easeOutQuad" + << "easeInOutQuad" + << "easeOutInQuad" + << "easeInCubic" + << "easeOutCubic" + << "easeInOutCubic" + << "easeOutInCubic" + << "easeInQuart" + << "easeOutQuart" + << "easeInOutQuart" + << "easeOutInQuart" + << "easeInQuint" + << "easeOutQuint" + << "easeInOutQuint" + << "easeOutInQuint" + << "easeInSine" + << "easeOutSine" + << "easeInOutSine" + << "easeOutInSine" + << "easeInExpo" + << "easeOutExpo" + << "easeInOutExpo" + << "easeOutInExpo" + << "easeInCirc" + << "easeOutCirc" + << "easeInOutCirc" + << "easeOutInCirc" + << "easeInElastic" + << "easeOutElastic" + << "easeInOutElastic" + << "easeOutInElastic" + << "easeInBack" + << "easeOutBack" + << "easeInOutBack" + << "easeOutInBack" + << "easeInBounce" + << "easeOutBounce" + << "easeInOutBounce" + << "easeOutInBounce"; + } + + return _curveNames; +} + +const EasingCurveNameValue *EasingCurveNameValue::asEasingCurveNameValue() const +{ + return this; +} + MemberProcessor::MemberProcessor() { } @@ -1499,6 +1591,11 @@ const StringValue *Engine::stringValue() const return &_stringValue; } +const EasingCurveNameValue *Engine::easingCurveNameValue() const +{ + return &_easingCurveNameValue; +} + const Value *Engine::newArray() { return arrayCtor()->construct(); |