summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qmlscriptparser.cpp
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2009-05-01 07:04:56 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2009-05-01 07:04:56 (GMT)
commit311ccc09dfe1defd2e51838737fe88d60d1047b4 (patch)
tree9abc8e5d86eafc7b48eeb377652aa631235353b3 /src/declarative/qml/qmlscriptparser.cpp
parent7f6cec754823ebbdc173fc9265e1049ae00649c7 (diff)
downloadQt-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.cpp91
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;
}