summaryrefslogtreecommitdiff
path: root/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp')
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp24
1 files changed, 22 insertions, 2 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
index ab31bda00d..149db2a501 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
@@ -685,16 +685,36 @@ void NodeInstanceServer::setupDummysForContext(QQmlContext *context)
}
}
+static bool isTypeAvailable(const MockupTypeContainer &mockupType, QQmlEngine *engine)
+{
+ QString qmlSource;
+ qmlSource.append("import " +
+ mockupType.importUri()
+ + " "
+ + QString::number(mockupType.majorVersion())
+ + "." + QString::number(mockupType.minorVersion())
+ + "\n");
+
+ qmlSource.append(QString::fromUtf8(mockupType.typeName()) + "{\n}\n");
+
+ QQmlComponent component(engine);
+ component.setData(qmlSource.toUtf8(), QUrl());
+
+ return !component.isError();
+}
+
void NodeInstanceServer::setupMockupTypes(const QVector<MockupTypeContainer> &container)
{
for (const MockupTypeContainer &mockupType : container) {
+ if (!isTypeAvailable(mockupType, engine()))
#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
- QQuickDesignerSupportMetaInfo::registerMockupObject(mockupType.importUri().toUtf8(),
+
+ QQuickDesignerSupportMetaInfo::registerMockupObject(mockupType.importUri().toUtf8(),
mockupType.majorVersion(),
mockupType.minorVersion(),
mockupType.typeName());
#else
- qmlRegisterType(QUrl("qrc:/qtquickplugin/mockfiles/GenericBackend.qml"),
+ qmlRegisterType(QUrl("qrc:/qtquickplugin/mockfiles/GenericBackend.qml"),
mockupType.importUri().toUtf8(),
mockupType.majorVersion(),
mockupType.minorVersion(),