summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2009-05-06 00:37:20 (GMT)
committerMichael Brasser <michael.brasser@nokia.com>2009-05-06 00:37:20 (GMT)
commitdd21756ec0b9c6d4f2c9f00df131603a1daf3147 (patch)
treeecc90c266ba426b7cf54033841a1fe9819029b30
parent6df1cbd3890ecbe8d487d15e367eabace43f255d (diff)
parentb291ab1f5ebb496d7eb7aae04c3f06d57a4f547d (diff)
downloadQt-dd21756ec0b9c6d4f2c9f00df131603a1daf3147.zip
Qt-dd21756ec0b9c6d4f2c9f00df131603a1daf3147.tar.gz
Qt-dd21756ec0b9c6d4f2c9f00df131603a1daf3147.tar.bz2
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
-rw-r--r--src/declarative/qml/qmlcompiler.cpp4
-rw-r--r--src/declarative/qml/qmlscriptparser.cpp100
2 files changed, 49 insertions, 55 deletions
diff --git a/src/declarative/qml/qmlcompiler.cpp b/src/declarative/qml/qmlcompiler.cpp
index d4003ab..f0cf4cc 100644
--- a/src/declarative/qml/qmlcompiler.cpp
+++ b/src/declarative/qml/qmlcompiler.cpp
@@ -1256,7 +1256,7 @@ bool QmlCompiler::compileDynamicMeta(QmlParser::Object *obj)
break;
}
- builder.addSignal("qml__" + QByteArray::number(ii) + "()");
+ builder.addSignal(p.name + "Changed()");
builder.addProperty(p.name, type, ii);
}
@@ -1300,7 +1300,7 @@ bool QmlCompiler::compileDynamicMeta(QmlParser::Object *obj)
assign.type = QmlInstruction::AssignSignal;
assign.line = obj->line;
assign.assignSignal.signal =
- output->indexForByteArray("onQml__" + QByteArray::number(ii));
+ output->indexForByteArray(p.name + "Changed()");
assign.assignSignal.value =
output->indexForString(p.onValueChanged);
output->bytecode << assign;
diff --git a/src/declarative/qml/qmlscriptparser.cpp b/src/declarative/qml/qmlscriptparser.cpp
index 22ff4a5..aed17d6 100644
--- a/src/declarative/qml/qmlscriptparser.cpp
+++ b/src/declarative/qml/qmlscriptparser.cpp
@@ -200,72 +200,73 @@ Object *ProcessAST::defineObjectBinding_helper(int line,
{
bool isType = !objectType.isEmpty() && objectType.at(0).isUpper() && !objectType.contains(QLatin1Char('.'));
- if (!isType) {
- QmlError error;
- error.setDescription("Expected type name");
- error.setLine(typeLocation.startLine);
- error.setColumn(typeLocation.startColumn);
- _parser->_errors << error;
- return false;
- }
-
int propertyCount = 0;
for (; propertyName; propertyName = propertyName->next){
++propertyCount;
_stateStack.pushProperty(propertyName->name->asString(), propertyName->identifierToken.startLine);
}
- // Class
- const int typeId = _parser->findOrCreateTypeId(objectType);
+ if (!isType) {
- Object *obj = new Object;
- obj->type = typeId;
- _scope.append(objectType);
- obj->typeName = qualifiedNameId().toLatin1();
- _scope.removeLast();
- obj->line = line;
+ if(propertyCount || !currentObject()) {
+ QmlError error;
+ error.setDescription("Expected type name");
+ error.setLine(typeLocation.startLine);
+ error.setColumn(typeLocation.startColumn);
+ _parser->_errors << error;
+ return 0;
+ }
- if (propertyCount) {
- Property *prop = currentProperty();
- Value *v = new Value;
- v->object = obj;
- v->line = line;
- prop->addValue(v);
+ _stateStack.pushProperty(objectType, line);
+ accept(initializer);
+ _stateStack.pop();
- while (propertyCount--)
- _stateStack.pop();
+ return 0;
} else {
- if (! _parser->tree()) {
- _parser->setTree(obj);
+ // Class
+ const int typeId = _parser->findOrCreateTypeId(objectType);
- if (!_parser->scriptFile().isEmpty()) {
- _stateStack.pushObject(obj);
- Object *scriptObject= defineObjectBinding(line, 0, QLatin1String("Script"), AST::SourceLocation());
- _stateStack.pushObject(scriptObject);
- defineProperty(QLatin1String("src"), line, _parser->scriptFile());
- _stateStack.pop(); // scriptObject
- _stateStack.pop(); // object
- }
+ Object *obj = new Object;
+ obj->type = typeId;
+ _scope.append(objectType);
+ obj->typeName = qualifiedNameId().toLatin1();
+ _scope.removeLast();
+ obj->line = line;
- } else {
- const State state = _stateStack.top();
+ if (propertyCount) {
+ Property *prop = currentProperty();
Value *v = new Value;
v->object = obj;
v->line = line;
- if (state.property)
- state.property->addValue(v);
- else
- state.object->getDefaultProperty()->addValue(v);
+ prop->addValue(v);
+
+ while (propertyCount--)
+ _stateStack.pop();
+
+ } else {
+
+ if (! _parser->tree()) {
+ _parser->setTree(obj);
+ } else {
+ const State state = _stateStack.top();
+ Value *v = new Value;
+ v->object = obj;
+ v->line = line;
+ if (state.property)
+ state.property->addValue(v);
+ else
+ state.object->getDefaultProperty()->addValue(v);
+ }
}
- }
- _stateStack.pushObject(obj);
- accept(initializer);
- _stateStack.pop();
+ _stateStack.pushObject(obj);
+ accept(initializer);
+ _stateStack.pop();
- return obj;
+ return obj;
+ }
}
Object *ProcessAST::defineObjectBinding(int line,
@@ -334,12 +335,6 @@ bool ProcessAST::visit(AST::UiImport *node)
return false;
}
-// UiObjectMember: T_PUBLIC T_DEFAULT UiMemberType T_IDENTIFIER T_COLON Expression
-// UiObjectMember: T_PUBLIC T_DEFAULT UiMemberType T_IDENTIFIER
-// UiObjectMember: T_PUBLIC UiMemberType T_IDENTIFIER T_COLON Expression
-// UiObjectMember: T_PUBLIC UiMemberType T_IDENTIFIER
-//
-// UiMemberType: "property" | "signal"
bool ProcessAST::visit(AST::UiPublicMember *node)
{
if(node->type == AST::UiPublicMember::Signal) {
@@ -662,7 +657,6 @@ void QmlScriptParser::clear()
_nameSpacePaths.clear();
_typeNames.clear();
_errors.clear();
- _scriptFile.clear();
}
int QmlScriptParser::findOrCreateTypeId(const QString &name)