{
}
-InstanceContainer::InstanceContainer(qint32 instanceId, const QString &type, int majorNumber, int minorNumber, const QString &componentPath, const QString &nodeSource, NodeSourceType nodeSourceType)
+InstanceContainer::InstanceContainer(qint32 instanceId, const QString &type, int majorNumber, int minorNumber, const QString &componentPath, const QString &nodeSource, NodeSourceType nodeSourceType,NodeMetaType metaType)
: m_instanceId(instanceId), m_type(type), m_majorNumber(majorNumber), m_minorNumber(minorNumber), m_componentPath(componentPath),
- m_nodeSource(nodeSource), m_nodeSourceType(nodeSourceType)
+ m_nodeSource(nodeSource), m_nodeSourceType(nodeSourceType), m_metaType(metaType)
{
m_type.replace(QLatin1Char('.'), QLatin1Char('/'));
}
return static_cast<NodeSourceType>(m_nodeSourceType);
}
+InstanceContainer::NodeMetaType InstanceContainer::metaType() const
+{
+ return static_cast<NodeMetaType>(m_metaType);
+}
+
QDataStream &operator<<(QDataStream &out, const InstanceContainer &container)
{
out << container.instanceId();
out << container.componentPath();
out << container.nodeSource();
out << container.nodeSourceType();
+ out << container.metaType();
return out;
}
in >> container.m_componentPath;
in >> container.m_nodeSource;
in >> container.m_nodeSourceType;
+ in >> container.m_metaType;
return in;
}
ComponentSource = 2
};
+ enum NodeMetaType {
+ ObjectMetaType,
+ ItemMetaType
+ };
+
InstanceContainer();
- InstanceContainer(qint32 instanceId, const QString &type, int majorNumber, int minorNumber, const QString &componentPath, const QString &nodeSource, NodeSourceType nodeSourceType);
+ InstanceContainer(qint32 instanceId, const QString &type, int majorNumber, int minorNumber, const QString &componentPath, const QString &nodeSource, NodeSourceType nodeSourceType, NodeMetaType metaType);
qint32 instanceId() const;
QString type() const;
QString componentPath() const;
QString nodeSource() const;
NodeSourceType nodeSourceType() const;
+ NodeMetaType metaType() const;
private:
qint32 m_instanceId;
QString m_componentPath;
QString m_nodeSource;
qint32 m_nodeSourceType;
+ qint32 m_metaType;
};
} // namespace QmlDesigner
object = Internal::ObjectNodeInstance::createPrimitive(instanceContainer.type(), instanceContainer.majorNumber(), instanceContainer.minorNumber(), nodeInstanceServer->context());
}
+ if ((object == 0) && (instanceContainer.metaType() == InstanceContainer::ItemMetaType)) //If we cannot instanciate the object but we know it has to be an Ttem, we create an Item instead.
+#if QT_VERSION >= 0x050000
+ object = Internal::ObjectNodeInstance::createPrimitive("QSGItem", 2, 0, nodeInstanceServer->context())
+#else
+ object = Internal::ObjectNodeInstance::createPrimitive("QDeclarativeItem", 2, 0, nodeInstanceServer->context());
+#endif
+
ServerNodeInstance instance(createInstance(object));
instance.internalInstance()->setNodeInstanceServer(nodeInstanceServer);
QVector<InstanceContainer> instanceContainerList;
foreach(const NodeInstance &instance, instanceList) {
InstanceContainer::NodeSourceType nodeSourceType = static_cast<InstanceContainer::NodeSourceType>(instance.modelNode().nodeSourceType());
+
+ InstanceContainer::NodeMetaType nodeMetaType = nodeMetaType = InstanceContainer::ObjectMetaType;
+ if (instance.modelNode().metaInfo().isSubclassOf("QtQuick.Item", -1, -1))
+ nodeMetaType = InstanceContainer::ItemMetaType;
+
InstanceContainer container(instance.instanceId(),
instance.modelNode().type(),
instance.modelNode().majorVersion(),
instance.modelNode().minorVersion(),
instance.modelNode().metaInfo().componentFileName(),
instance.modelNode().nodeSource(),
- nodeSourceType
+ nodeSourceType,
+ nodeMetaType
);
instanceContainerList.append(container);
QVector<InstanceContainer> containerList;
foreach(const NodeInstance &instance, instanceList) {
InstanceContainer::NodeSourceType nodeSourceType = static_cast<InstanceContainer::NodeSourceType>(instance.modelNode().nodeSourceType());
+
+ InstanceContainer::NodeMetaType nodeMetaType = nodeMetaType = InstanceContainer::ObjectMetaType;
+ if (instance.modelNode().metaInfo().isSubclassOf("QtQuick.Item", -1, -1))
+ nodeMetaType = InstanceContainer::ItemMetaType;
+
InstanceContainer container(instance.instanceId(), instance.modelNode().type(), instance.modelNode().majorVersion(), instance.modelNode().minorVersion(),
- instance.modelNode().metaInfo().componentFileName(), instance.modelNode().nodeSource(), nodeSourceType);
+ instance.modelNode().metaInfo().componentFileName(), instance.modelNode().nodeSource(), nodeSourceType, nodeMetaType);
containerList.append(container);
}