From 27688270fd0fda28d7fe73e254938648d7187c81 Mon Sep 17 00:00:00 2001 From: Marco Bubke <marco.bubke@nokia.com> Date: Tue, 18 May 2010 16:38:09 +0200 Subject: [PATCH] Load plugins at the beginning of the meta info initializing Reviewed-by: kkoehne --- .../designercore/metainfo/metainfo.cpp | 20 +++++++++++++++++++ .../qml/qmldesigner/coretests/testcore.cpp | 6 ++++++ 2 files changed, 26 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp index 1d01df700d6..7bf49440265 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp @@ -68,6 +68,7 @@ public: void clear(); void initialize(); + void loadPlugins(QDeclarativeEngine *engine); void parseQmlTypes(); void parseNonQmlTypes(); void parseValueTypes(); @@ -112,6 +113,7 @@ void MetaInfoPrivate::initialize() QDeclarativeEngine engine; Q_UNUSED(engine); + loadPlugins(&engine); parseQmlTypes(); parseNonQmlTypes(); parseValueTypes(); @@ -120,7 +122,25 @@ void MetaInfoPrivate::initialize() m_isInitialized = true; } +void MetaInfoPrivate::loadPlugins(QDeclarativeEngine *engine) +{ + // hack to load plugins + QDeclarativeComponent pluginComponent(engine); + + QStringList pluginList; + pluginList += "import Qt 4.7"; + pluginList += "import org.webkit 1.0"; + + // load maybe useful plugins + pluginList += "import Qt.labs.folderlistmodel 1.0"; + pluginList += "import Qt.labs.gestures 1.0"; + pluginList += "import Qt.multimedia 4.7"; + pluginList += "import Qt.labs.particles 1.0"; + QString componentString = QString("%1\n Item {}\n").arg(pluginList.join("\n")); + + pluginComponent.setData(componentString.toLatin1(), QUrl()); +} void MetaInfoPrivate::parseProperties(NodeMetaInfo &nodeMetaInfo, const QMetaObject *qMetaObject) const { diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.cpp b/tests/auto/qml/qmldesigner/coretests/testcore.cpp index 3330097b206..a702214dd45 100644 --- a/tests/auto/qml/qmldesigner/coretests/testcore.cpp +++ b/tests/auto/qml/qmldesigner/coretests/testcore.cpp @@ -3606,6 +3606,12 @@ void TestCore::testMetaInfo() { QScopedPointer<Model> model(Model::create("Qt/Item")); QVERIFY(model.data()); + + // test whether default type is registered + QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/Item", 4, 7)); + + // test whether types from plugins are loaded + QVERIFY(model->metaInfo().hasNodeMetaInfo("org.webkit/WebView", 1, 0)); } void TestCore::testMetaInfoSimpleType() -- GitLab