diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-05-01 07:04:56 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-05-01 07:04:56 (GMT) |
commit | 311ccc09dfe1defd2e51838737fe88d60d1047b4 (patch) | |
tree | 9abc8e5d86eafc7b48eeb377652aa631235353b3 /src/declarative/qml/qmlscriptparser.cpp | |
parent | 7f6cec754823ebbdc173fc9265e1049ae00649c7 (diff) | |
download | Qt-311ccc09dfe1defd2e51838737fe88d60d1047b4.zip Qt-311ccc09dfe1defd2e51838737fe88d60d1047b4.tar.gz Qt-311ccc09dfe1defd2e51838737fe88d60d1047b4.tar.bz2 |
Add QML signal declaration syntax
Syntax is
signal <signalName>
Currently signal parameters aren't supported
Diffstat (limited to 'src/declarative/qml/qmlscriptparser.cpp')
-rw-r--r-- | src/declarative/qml/qmlscriptparser.cpp | 91 |
1 files changed, 50 insertions, 41 deletions
diff --git a/src/declarative/qml/qmlscriptparser.cpp b/src/declarative/qml/qmlscriptparser.cpp index 89cde7b..8039b5c 100644 --- a/src/declarative/qml/qmlscriptparser.cpp +++ b/src/declarative/qml/qmlscriptparser.cpp @@ -334,53 +334,62 @@ bool ProcessAST::visit(AST::UiImport *node) // UiMemberType: "property" | "signal" bool ProcessAST::visit(AST::UiPublicMember *node) { - const QString memberType = node->memberType->asString(); - const QString name = node->name->asString(); + if(node->type == AST::UiPublicMember::Signal) { + const QString name = node->name->asString(); - const struct TypeNameToType { - const char *name; + Object::DynamicSignal signal; + signal.name = name.toUtf8(); + + _stateStack.top().object->dynamicSignals << signal; + } else { + const QString memberType = node->memberType->asString(); + const QString name = node->name->asString(); + + const struct TypeNameToType { + const char *name; + Object::DynamicProperty::Type type; + } propTypeNameToTypes[] = { + { "int", Object::DynamicProperty::Int }, + { "bool", Object::DynamicProperty::Bool }, + { "double", Object::DynamicProperty::Real }, + { "real", Object::DynamicProperty::Real }, + { "string", Object::DynamicProperty::String }, + { "color", Object::DynamicProperty::Color }, + { "date", Object::DynamicProperty::Date }, + { "var", Object::DynamicProperty::Variant }, + { "variant", Object::DynamicProperty::Variant } + }; + const int propTypeNameToTypesCount = sizeof(propTypeNameToTypes) / + sizeof(propTypeNameToTypes[0]); + + bool typeFound = false; Object::DynamicProperty::Type type; - } propTypeNameToTypes[] = { - { "int", Object::DynamicProperty::Int }, - { "bool", Object::DynamicProperty::Bool }, - { "double", Object::DynamicProperty::Real }, - { "real", Object::DynamicProperty::Real }, - { "string", Object::DynamicProperty::String }, - { "color", Object::DynamicProperty::Color }, - { "date", Object::DynamicProperty::Date }, - { "var", Object::DynamicProperty::Variant }, - { "variant", Object::DynamicProperty::Variant } - }; - const int propTypeNameToTypesCount = sizeof(propTypeNameToTypes) / - sizeof(propTypeNameToTypes[0]); - - bool typeFound = false; - Object::DynamicProperty::Type type; - for(int ii = 0; !typeFound && ii < propTypeNameToTypesCount; ++ii) { - if(QLatin1String(propTypeNameToTypes[ii].name) == memberType) { - type = propTypeNameToTypes[ii].type; - typeFound = true; + for(int ii = 0; !typeFound && ii < propTypeNameToTypesCount; ++ii) { + if(QLatin1String(propTypeNameToTypes[ii].name) == memberType) { + type = propTypeNameToTypes[ii].type; + typeFound = true; + } + } + + if(!typeFound) { + qWarning() << "Unknown property type" << memberType; // ### FIXME + return false; } - } - - if(!typeFound) { - qWarning() << "Unknown property type" << memberType; // ### FIXME - return false; - } - Object::DynamicProperty property; - property.isDefaultProperty = node->isDefaultMember; - property.type = type; - property.name = name.toUtf8(); + Object::DynamicProperty property; + property.isDefaultProperty = node->isDefaultMember; + property.type = type; + property.name = name.toUtf8(); - if (node->expression) { // default value - property.defaultValue = new Property; - Value *value = new Value; - value->primitive = getPrimitive("value", node->expression); - property.defaultValue->values << value; - } + if (node->expression) { // default value + property.defaultValue = new Property; + Value *value = new Value; + value->primitive = getPrimitive("value", node->expression); + property.defaultValue->values << value; + } - _stateStack.top().object->dynamicProperties << property; + _stateStack.top().object->dynamicProperties << property; + } return true; } |