diff options
author | Kai Koehne <kai.koehne@nokia.com> | 2009-05-07 09:33:30 (GMT) |
---|---|---|
committer | Kai Koehne <kai.koehne@nokia.com> | 2009-05-07 09:33:30 (GMT) |
commit | 495150413916a9a41cdffc5879f36a6e16e7866c (patch) | |
tree | c390a023b505c4fef479580b89e17491657d6d8c | |
parent | 02b0285ba6c2382d801be8d9259f91d1bfbc94d7 (diff) | |
download | Qt-495150413916a9a41cdffc5879f36a6e16e7866c.zip Qt-495150413916a9a41cdffc5879f36a6e16e7866c.tar.gz Qt-495150413916a9a41cdffc5879f36a6e16e7866c.tar.bz2 |
Fix loading of components containing sub components through QmlDom
Pass a (optional) url to QmlDomDocument::load so that the compiler can
find referenced components
-rw-r--r-- | src/declarative/qml/qmldom.cpp | 5 | ||||
-rw-r--r-- | src/declarative/qml/qmldom.h | 2 | ||||
-rw-r--r-- | tests/auto/declarative/qmldom/tst_qmldom.cpp | 13 |
3 files changed, 14 insertions, 6 deletions
diff --git a/src/declarative/qml/qmldom.cpp b/src/declarative/qml/qmldom.cpp index 689446b..a31be81 100644 --- a/src/declarative/qml/qmldom.cpp +++ b/src/declarative/qml/qmldom.cpp @@ -149,16 +149,15 @@ int QmlDomDocument::version() const \sa QmlDomDocument::save() QmlDomDocument::loadError() */ -bool QmlDomDocument::load(QmlEngine *engine, const QByteArray &data) +bool QmlDomDocument::load(QmlEngine *engine, const QByteArray &data, const QUrl &url) { Q_UNUSED(engine); - d->errors.clear(); QmlCompiledComponent component; QmlCompiler compiler; - QmlCompositeTypeData *td = ((QmlEnginePrivate *)QmlEnginePrivate::get(engine))->typeManager.getImmediate(data, QUrl());; + QmlCompositeTypeData *td = ((QmlEnginePrivate *)QmlEnginePrivate::get(engine))->typeManager.getImmediate(data, url);; if(td->status == QmlCompositeTypeData::Error) { d->errors = td->errors; diff --git a/src/declarative/qml/qmldom.h b/src/declarative/qml/qmldom.h index daca888..f90fb08 100644 --- a/src/declarative/qml/qmldom.h +++ b/src/declarative/qml/qmldom.h @@ -73,7 +73,7 @@ public: int version() const; QList<QmlError> errors() const; - bool load(QmlEngine *, const QByteArray &); + bool load(QmlEngine *, const QByteArray &, const QUrl & = QUrl()); QByteArray save() const; QmlDomObject rootObject() const; diff --git a/tests/auto/declarative/qmldom/tst_qmldom.cpp b/tests/auto/declarative/qmldom/tst_qmldom.cpp index 8df1829..ca8929d 100644 --- a/tests/auto/declarative/qmldom/tst_qmldom.cpp +++ b/tests/auto/declarative/qmldom/tst_qmldom.cpp @@ -95,10 +95,19 @@ void tst_qmldom::loadComposite() QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text)); QmlDomDocument document; - QVERIFY(document.load(&engine, file.readAll())); + QVERIFY(document.load(&engine, file.readAll(), QUrl::fromLocalFile(file.fileName()))); QVERIFY(document.errors().isEmpty()); - // TODO: How should sub components be represented? + QmlDomObject rootItem = document.rootObject(); + QVERIFY(rootItem.isValid()); + QCOMPARE(rootItem.objectType(), QByteArray("MyComponent")); + QCOMPARE(rootItem.properties().size(), 2); + + QmlDomProperty widthProperty = rootItem.property("width"); + QVERIFY(widthProperty.value().isLiteral()); + + QmlDomProperty heightProperty = rootItem.property("height"); + QVERIFY(heightProperty.value().isLiteral()); } void tst_qmldom::testValueSource() |