forked from qt-creator/qt-creator
QmlDesigner: Remove NodeMetaInfo::typeName() usage
The project storage is using the imports of a document to get the type. So it is not using qualified types and gets the version from the imports. After we switch all three methods will be removed. Task-number: QDS-10266 Change-Id: Ic127a3bb6bd6f559457b3ce6a8631774359259a5 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
@@ -592,9 +592,9 @@ QList<SlotList> getSlotsLists(const ModelNode &node)
|
|||||||
ModelNode createNewConnection(ModelNode targetNode)
|
ModelNode createNewConnection(ModelNode targetNode)
|
||||||
{
|
{
|
||||||
NodeMetaInfo connectionsMetaInfo = targetNode.view()->model()->qtQuickConnectionsMetaInfo();
|
NodeMetaInfo connectionsMetaInfo = targetNode.view()->model()->qtQuickConnectionsMetaInfo();
|
||||||
ModelNode newConnectionNode = targetNode.view()->createModelNode(connectionsMetaInfo.typeName(),
|
const auto typeName = useProjectStorage() ? "Connections" : "QtQuick.Connections";
|
||||||
connectionsMetaInfo.majorVersion(),
|
ModelNode newConnectionNode = targetNode.view()->createModelNode(
|
||||||
connectionsMetaInfo.minorVersion());
|
typeName, connectionsMetaInfo.majorVersion(), connectionsMetaInfo.minorVersion());
|
||||||
if (QmlItemNode::isValidQmlItemNode(targetNode)) {
|
if (QmlItemNode::isValidQmlItemNode(targetNode)) {
|
||||||
targetNode.nodeAbstractProperty("data").reparentHere(newConnectionNode);
|
targetNode.nodeAbstractProperty("data").reparentHere(newConnectionNode);
|
||||||
} else {
|
} else {
|
||||||
@@ -891,14 +891,18 @@ public:
|
|||||||
NodeMetaInfo elementMetaInfo = view->model()->metaInfo("ListElement");
|
NodeMetaInfo elementMetaInfo = view->model()->metaInfo("ListElement");
|
||||||
|
|
||||||
ListModelEditorModel model{[&] {
|
ListModelEditorModel model{[&] {
|
||||||
return view->createModelNode(modelMetaInfo.typeName(),
|
return view->createModelNode(useProjectStorage()
|
||||||
|
? "ListModel"
|
||||||
|
: "QtQml.Models.ListModel",
|
||||||
modelMetaInfo.majorVersion(),
|
modelMetaInfo.majorVersion(),
|
||||||
modelMetaInfo.minorVersion());
|
modelMetaInfo.minorVersion());
|
||||||
},
|
},
|
||||||
[&] {
|
[&] {
|
||||||
return view->createModelNode(elementMetaInfo.typeName(),
|
return view->createModelNode(
|
||||||
elementMetaInfo.majorVersion(),
|
useProjectStorage() ? "ListElement"
|
||||||
elementMetaInfo.minorVersion());
|
: "QtQml.Models.ListElement",
|
||||||
|
elementMetaInfo.majorVersion(),
|
||||||
|
elementMetaInfo.minorVersion());
|
||||||
},
|
},
|
||||||
[&](const ModelNode &node) {
|
[&](const ModelNode &node) {
|
||||||
bool isNowInComponent = ModelNodeOperations::goIntoComponent(
|
bool isNowInComponent = ModelNodeOperations::goIntoComponent(
|
||||||
|
|||||||
@@ -1205,21 +1205,20 @@ void addFlowEffect(const SelectionContext &selectionContext, const TypeName &typ
|
|||||||
NodeMetaInfo effectMetaInfo = view->model()->metaInfo("FlowView." + typeName, -1, -1);
|
NodeMetaInfo effectMetaInfo = view->model()->metaInfo("FlowView." + typeName, -1, -1);
|
||||||
QTC_ASSERT(typeName == "None" || effectMetaInfo.isValid(), return);
|
QTC_ASSERT(typeName == "None" || effectMetaInfo.isValid(), return);
|
||||||
|
|
||||||
view->executeInTransaction("DesignerActionManager:addFlowEffect",
|
view->executeInTransaction("DesignerActionManager:addFlowEffect", [=]() {
|
||||||
[view, container, effectMetaInfo](){
|
if (container.hasProperty("effect"))
|
||||||
|
container.removeProperty("effect");
|
||||||
|
|
||||||
if (container.hasProperty("effect"))
|
if (effectMetaInfo.isQtObject()) {
|
||||||
container.removeProperty("effect");
|
ModelNode effectNode = view->createModelNode(useProjectStorage()
|
||||||
|
? typeName
|
||||||
|
: effectMetaInfo.typeName(),
|
||||||
|
effectMetaInfo.majorVersion(),
|
||||||
|
effectMetaInfo.minorVersion());
|
||||||
|
|
||||||
if (effectMetaInfo.isQtObject()) {
|
container.nodeProperty("effect").reparentHere(effectNode);
|
||||||
ModelNode effectNode =
|
view->setSelectedModelNode(effectNode);
|
||||||
view->createModelNode(effectMetaInfo.typeName(),
|
}
|
||||||
effectMetaInfo.majorVersion(),
|
|
||||||
effectMetaInfo.minorVersion());
|
|
||||||
|
|
||||||
container.nodeProperty("effect").reparentHere(effectNode);
|
|
||||||
view->setSelectedModelNode(effectNode);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1404,21 +1403,20 @@ void addCustomFlowEffect(const SelectionContext &selectionContext)
|
|||||||
NodeMetaInfo effectMetaInfo = view->model()->metaInfo(typeName, -1, -1);
|
NodeMetaInfo effectMetaInfo = view->model()->metaInfo(typeName, -1, -1);
|
||||||
QTC_ASSERT(typeName == "None" || effectMetaInfo.isValid(), return);
|
QTC_ASSERT(typeName == "None" || effectMetaInfo.isValid(), return);
|
||||||
|
|
||||||
view->executeInTransaction("DesignerActionManager:addFlowEffect",
|
view->executeInTransaction("DesignerActionManager:addFlowEffect", [=]() {
|
||||||
[view, container, effectMetaInfo](){
|
if (container.hasProperty("effect"))
|
||||||
|
container.removeProperty("effect");
|
||||||
|
|
||||||
if (container.hasProperty("effect"))
|
if (effectMetaInfo.isValid()) {
|
||||||
container.removeProperty("effect");
|
ModelNode effectNode = view->createModelNode(useProjectStorage()
|
||||||
|
? typeName
|
||||||
|
: effectMetaInfo.typeName(),
|
||||||
|
effectMetaInfo.majorVersion(),
|
||||||
|
effectMetaInfo.minorVersion());
|
||||||
|
|
||||||
if (effectMetaInfo.isValid()) {
|
container.nodeProperty("effect").reparentHere(effectNode);
|
||||||
ModelNode effectNode =
|
view->setSelectedModelNode(effectNode);
|
||||||
view->createModelNode(effectMetaInfo.typeName(),
|
}
|
||||||
effectMetaInfo.majorVersion(),
|
|
||||||
effectMetaInfo.minorVersion());
|
|
||||||
|
|
||||||
container.nodeProperty("effect").reparentHere(effectNode);
|
|
||||||
view->setSelectedModelNode(effectNode);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -232,7 +232,11 @@ void BackendModel::addNewBackend()
|
|||||||
int majorVersion = metaInfo.majorVersion();
|
int majorVersion = metaInfo.majorVersion();
|
||||||
|
|
||||||
if (dialog.localDefinition()) {
|
if (dialog.localDefinition()) {
|
||||||
ModelNode newNode = m_connectionView->createModelNode(metaInfo.typeName(), majorVersion, minorVersion);
|
ModelNode newNode = m_connectionView->createModelNode(useProjectStorage()
|
||||||
|
? typeName.toUtf8()
|
||||||
|
: metaInfo.typeName(),
|
||||||
|
majorVersion,
|
||||||
|
minorVersion);
|
||||||
|
|
||||||
m_connectionView->rootModelNode().nodeProperty(propertyName.toUtf8()).setDynamicTypeNameAndsetModelNode(
|
m_connectionView->rootModelNode().nodeProperty(propertyName.toUtf8()).setDynamicTypeNameAndsetModelNode(
|
||||||
typeName.toUtf8(), newNode);
|
typeName.toUtf8(), newNode);
|
||||||
|
|||||||
@@ -209,7 +209,11 @@ void ContentLibraryBundleImporter::handleImportTimer()
|
|||||||
if (isImport == typeComplete) {
|
if (isImport == typeComplete) {
|
||||||
m_pendingTypes.remove(pendingType);
|
m_pendingTypes.remove(pendingType);
|
||||||
if (isImport)
|
if (isImport)
|
||||||
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
emit importFinished(pendingType.toUtf8());
|
||||||
|
#else
|
||||||
emit importFinished(metaInfo);
|
emit importFinished(metaInfo);
|
||||||
|
#endif
|
||||||
else
|
else
|
||||||
emit unimportFinished(metaInfo);
|
emit unimportFinished(metaInfo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,11 @@ signals:
|
|||||||
// The metaInfo parameter will be invalid if an error was encountered during
|
// The metaInfo parameter will be invalid if an error was encountered during
|
||||||
// asynchronous part of the import. In this case all remaining pending imports have been
|
// asynchronous part of the import. In this case all remaining pending imports have been
|
||||||
// terminated, and will not receive separate importFinished notifications.
|
// terminated, and will not receive separate importFinished notifications.
|
||||||
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
void importFinished(const QmlDesigner::TypeName &typeName);
|
||||||
|
#else
|
||||||
void importFinished(const QmlDesigner::NodeMetaInfo &metaInfo);
|
void importFinished(const QmlDesigner::NodeMetaInfo &metaInfo);
|
||||||
|
#endif
|
||||||
void unimportFinished(const QmlDesigner::NodeMetaInfo &metaInfo);
|
void unimportFinished(const QmlDesigner::NodeMetaInfo &metaInfo);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -92,13 +92,27 @@ void ContentLibraryEffectsModel::createImporter(const QString &bundlePath, const
|
|||||||
const QStringList &sharedFiles)
|
const QStringList &sharedFiles)
|
||||||
{
|
{
|
||||||
m_importer = new Internal::ContentLibraryBundleImporter(bundlePath, bundleId, sharedFiles);
|
m_importer = new Internal::ContentLibraryBundleImporter(bundlePath, bundleId, sharedFiles);
|
||||||
connect(m_importer, &Internal::ContentLibraryBundleImporter::importFinished, this,
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
connect(m_importer,
|
||||||
|
&Internal::ContentLibraryBundleImporter::importFinished,
|
||||||
|
this,
|
||||||
|
[&](const QmlDesigner::TypeName &typeName) {
|
||||||
|
m_importerRunning = false;
|
||||||
|
emit importerRunningChanged();
|
||||||
|
if (typeName.size())
|
||||||
|
emit bundleItemImported(typeName);
|
||||||
|
});
|
||||||
|
#else
|
||||||
|
connect(m_importer,
|
||||||
|
&Internal::ContentLibraryBundleImporter::importFinished,
|
||||||
|
this,
|
||||||
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
||||||
m_importerRunning = false;
|
m_importerRunning = false;
|
||||||
emit importerRunningChanged();
|
emit importerRunningChanged();
|
||||||
if (metaInfo.isValid())
|
if (metaInfo.isValid())
|
||||||
emit bundleItemImported(metaInfo);
|
emit bundleItemImported(metaInfo);
|
||||||
});
|
});
|
||||||
|
#endif
|
||||||
|
|
||||||
connect(m_importer, &Internal::ContentLibraryBundleImporter::unimportFinished, this,
|
connect(m_importer, &Internal::ContentLibraryBundleImporter::unimportFinished, this,
|
||||||
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
||||||
|
|||||||
@@ -57,7 +57,11 @@ public:
|
|||||||
signals:
|
signals:
|
||||||
void isEmptyChanged();
|
void isEmptyChanged();
|
||||||
void hasRequiredQuick3DImportChanged();
|
void hasRequiredQuick3DImportChanged();
|
||||||
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
void bundleItemImported(const QmlDesigner::TypeName &typeName);
|
||||||
|
#else
|
||||||
void bundleItemImported(const QmlDesigner::NodeMetaInfo &metaInfo);
|
void bundleItemImported(const QmlDesigner::NodeMetaInfo &metaInfo);
|
||||||
|
#endif
|
||||||
void bundleItemAboutToUnimport(const QmlDesigner::TypeName &type);
|
void bundleItemAboutToUnimport(const QmlDesigner::TypeName &type);
|
||||||
void bundleItemUnimported(const QmlDesigner::NodeMetaInfo &metaInfo);
|
void bundleItemUnimported(const QmlDesigner::NodeMetaInfo &metaInfo);
|
||||||
void importerRunningChanged();
|
void importerRunningChanged();
|
||||||
|
|||||||
@@ -206,13 +206,27 @@ void ContentLibraryMaterialsModel::createImporter(const QString &bundlePath, con
|
|||||||
const QStringList &sharedFiles)
|
const QStringList &sharedFiles)
|
||||||
{
|
{
|
||||||
m_importer = new Internal::ContentLibraryBundleImporter(bundlePath, bundleId, sharedFiles);
|
m_importer = new Internal::ContentLibraryBundleImporter(bundlePath, bundleId, sharedFiles);
|
||||||
connect(m_importer, &Internal::ContentLibraryBundleImporter::importFinished, this,
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
connect(m_importer,
|
||||||
|
&Internal::ContentLibraryBundleImporter::importFinished,
|
||||||
|
this,
|
||||||
|
[&](const QmlDesigner::TypeName &typeName) {
|
||||||
|
m_importerRunning = false;
|
||||||
|
emit importerRunningChanged();
|
||||||
|
if (typeName.size())
|
||||||
|
emit bundleMaterialImported(typeName);
|
||||||
|
});
|
||||||
|
#else
|
||||||
|
connect(m_importer,
|
||||||
|
&Internal::ContentLibraryBundleImporter::importFinished,
|
||||||
|
this,
|
||||||
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
||||||
m_importerRunning = false;
|
m_importerRunning = false;
|
||||||
emit importerRunningChanged();
|
emit importerRunningChanged();
|
||||||
if (metaInfo.isValid())
|
if (metaInfo.isValid())
|
||||||
emit bundleMaterialImported(metaInfo);
|
emit bundleMaterialImported(metaInfo);
|
||||||
});
|
});
|
||||||
|
#endif
|
||||||
|
|
||||||
connect(m_importer, &Internal::ContentLibraryBundleImporter::unimportFinished, this,
|
connect(m_importer, &Internal::ContentLibraryBundleImporter::unimportFinished, this,
|
||||||
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
||||||
|
|||||||
@@ -64,7 +64,11 @@ signals:
|
|||||||
void hasModelSelectionChanged();
|
void hasModelSelectionChanged();
|
||||||
void materialVisibleChanged();
|
void materialVisibleChanged();
|
||||||
void applyToSelectedTriggered(QmlDesigner::ContentLibraryMaterial *mat, bool add = false);
|
void applyToSelectedTriggered(QmlDesigner::ContentLibraryMaterial *mat, bool add = false);
|
||||||
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
void bundleMaterialImported(const QmlDesigner::TypeName &typeName);
|
||||||
|
#else
|
||||||
void bundleMaterialImported(const QmlDesigner::NodeMetaInfo &metaInfo);
|
void bundleMaterialImported(const QmlDesigner::NodeMetaInfo &metaInfo);
|
||||||
|
#endif
|
||||||
void bundleMaterialAboutToUnimport(const QmlDesigner::TypeName &type);
|
void bundleMaterialAboutToUnimport(const QmlDesigner::TypeName &type);
|
||||||
void bundleMaterialUnimported(const QmlDesigner::NodeMetaInfo &metaInfo);
|
void bundleMaterialUnimported(const QmlDesigner::NodeMetaInfo &metaInfo);
|
||||||
void importerRunningChanged();
|
void importerRunningChanged();
|
||||||
|
|||||||
@@ -79,26 +79,40 @@ WidgetInfo ContentLibraryView::widgetInfo()
|
|||||||
|
|
||||||
ContentLibraryMaterialsModel *materialsModel = m_widget->materialsModel().data();
|
ContentLibraryMaterialsModel *materialsModel = m_widget->materialsModel().data();
|
||||||
|
|
||||||
connect(materialsModel, &ContentLibraryMaterialsModel::applyToSelectedTriggered, this,
|
connect(materialsModel,
|
||||||
[&] (ContentLibraryMaterial *bundleMat, bool add) {
|
&ContentLibraryMaterialsModel::applyToSelectedTriggered,
|
||||||
if (m_selectedModels.isEmpty())
|
this,
|
||||||
return;
|
[&](ContentLibraryMaterial *bundleMat, bool add) {
|
||||||
|
if (m_selectedModels.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
m_bundleMaterialTargets = m_selectedModels;
|
m_bundleMaterialTargets = m_selectedModels;
|
||||||
m_bundleMaterialAddToSelected = add;
|
m_bundleMaterialAddToSelected = add;
|
||||||
|
|
||||||
ModelNode defaultMat = getBundleMaterialDefaultInstance(bundleMat->type());
|
ModelNode defaultMat = getBundleMaterialDefaultInstance(bundleMat->type());
|
||||||
if (defaultMat.isValid())
|
if (defaultMat.isValid())
|
||||||
applyBundleMaterialToDropTarget(defaultMat);
|
applyBundleMaterialToDropTarget(defaultMat);
|
||||||
else
|
else
|
||||||
m_widget->materialsModel()->addToProject(bundleMat);
|
m_widget->materialsModel()->addToProject(bundleMat);
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(materialsModel, &ContentLibraryMaterialsModel::bundleMaterialImported, this,
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
[&] (const QmlDesigner::NodeMetaInfo &metaInfo) {
|
connect(materialsModel,
|
||||||
applyBundleMaterialToDropTarget({}, metaInfo);
|
&ContentLibraryMaterialsModel::bundleMaterialImported,
|
||||||
updateBundleMaterialsImportedState();
|
this,
|
||||||
});
|
[&](const QmlDesigner::TypeName &typeName) {
|
||||||
|
applyBundleMaterialToDropTarget({}, typeName);
|
||||||
|
updateBundleMaterialsImportedState();
|
||||||
|
});
|
||||||
|
#else
|
||||||
|
connect(materialsModel,
|
||||||
|
&ContentLibraryMaterialsModel::bundleMaterialImported,
|
||||||
|
this,
|
||||||
|
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
||||||
|
applyBundleMaterialToDropTarget({}, metaInfo);
|
||||||
|
updateBundleMaterialsImportedState();
|
||||||
|
});
|
||||||
|
#endif
|
||||||
|
|
||||||
connect(materialsModel, &ContentLibraryMaterialsModel::bundleMaterialAboutToUnimport, this,
|
connect(materialsModel, &ContentLibraryMaterialsModel::bundleMaterialAboutToUnimport, this,
|
||||||
[&] (const QmlDesigner::TypeName &type) {
|
[&] (const QmlDesigner::TypeName &type) {
|
||||||
@@ -120,30 +134,61 @@ WidgetInfo ContentLibraryView::widgetInfo()
|
|||||||
|
|
||||||
ContentLibraryEffectsModel *effectsModel = m_widget->effectsModel().data();
|
ContentLibraryEffectsModel *effectsModel = m_widget->effectsModel().data();
|
||||||
|
|
||||||
connect(effectsModel, &ContentLibraryEffectsModel::bundleItemImported, this,
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
[&] (const QmlDesigner::NodeMetaInfo &metaInfo) {
|
connect(effectsModel,
|
||||||
QTC_ASSERT(metaInfo.isValid(), return);
|
&ContentLibraryEffectsModel::bundleItemImported,
|
||||||
|
this,
|
||||||
|
[&](const QmlDesigner::TypeName &typeName) {
|
||||||
|
QTC_ASSERT(typeName.size(), return);
|
||||||
|
|
||||||
if (!m_bundleEffectTarget)
|
if (!m_bundleEffectTarget)
|
||||||
m_bundleEffectTarget = active3DSceneNode();
|
m_bundleEffectTarget = active3DSceneNode();
|
||||||
|
|
||||||
QTC_ASSERT(m_bundleEffectTarget, return);
|
QTC_ASSERT(m_bundleEffectTarget, return);
|
||||||
|
|
||||||
executeInTransaction("ContentLibraryView::widgetInfo", [&] {
|
executeInTransaction("ContentLibraryView::widgetInfo", [&] {
|
||||||
QVector3D pos = m_bundleEffectPos.value<QVector3D>();
|
QVector3D pos = m_bundleEffectPos.value<QVector3D>();
|
||||||
ModelNode newEffNode = createModelNode(metaInfo.typeName(), metaInfo.majorVersion(),
|
ModelNode newEffNode = createModelNode(
|
||||||
metaInfo.minorVersion(),
|
typeName, -1, -1, {{"x", pos.x()}, {"y", pos.y()}, {"z", pos.z()}});
|
||||||
{{"x", pos.x()}, {"y", pos.y()}, {"z", pos.z()}});
|
m_bundleEffectTarget.defaultNodeListProperty().reparentHere(newEffNode);
|
||||||
m_bundleEffectTarget.defaultNodeListProperty().reparentHere(newEffNode);
|
clearSelectedModelNodes();
|
||||||
clearSelectedModelNodes();
|
selectModelNode(newEffNode);
|
||||||
selectModelNode(newEffNode);
|
});
|
||||||
});
|
|
||||||
|
|
||||||
updateBundleEffectsImportedState();
|
updateBundleEffectsImportedState();
|
||||||
m_bundleEffectTarget = {};
|
m_bundleEffectTarget = {};
|
||||||
m_bundleEffectPos = {};
|
m_bundleEffectPos = {};
|
||||||
});
|
});
|
||||||
|
#else
|
||||||
|
connect(effectsModel,
|
||||||
|
&ContentLibraryEffectsModel::bundleItemImported,
|
||||||
|
this,
|
||||||
|
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
||||||
|
QTC_ASSERT(metaInfo.isValid(), return);
|
||||||
|
|
||||||
|
if (!m_bundleEffectTarget)
|
||||||
|
m_bundleEffectTarget = active3DSceneNode();
|
||||||
|
|
||||||
|
QTC_ASSERT(m_bundleEffectTarget, return);
|
||||||
|
|
||||||
|
executeInTransaction("ContentLibraryView::widgetInfo", [&] {
|
||||||
|
QVector3D pos = m_bundleEffectPos.value<QVector3D>();
|
||||||
|
ModelNode newEffNode = createModelNode(metaInfo.typeName(),
|
||||||
|
metaInfo.majorVersion(),
|
||||||
|
metaInfo.minorVersion(),
|
||||||
|
{{"x", pos.x()},
|
||||||
|
{"y", pos.y()},
|
||||||
|
{"z", pos.z()}});
|
||||||
|
m_bundleEffectTarget.defaultNodeListProperty().reparentHere(newEffNode);
|
||||||
|
clearSelectedModelNodes();
|
||||||
|
selectModelNode(newEffNode);
|
||||||
|
});
|
||||||
|
|
||||||
|
updateBundleEffectsImportedState();
|
||||||
|
m_bundleEffectTarget = {};
|
||||||
|
m_bundleEffectPos = {};
|
||||||
|
});
|
||||||
|
#endif
|
||||||
connect(effectsModel, &ContentLibraryEffectsModel::bundleItemAboutToUnimport, this,
|
connect(effectsModel, &ContentLibraryEffectsModel::bundleItemAboutToUnimport, this,
|
||||||
[&] (const QmlDesigner::TypeName &type) {
|
[&] (const QmlDesigner::TypeName &type) {
|
||||||
// delete instances of the bundle effect that is about to be unimported
|
// delete instances of the bundle effect that is about to be unimported
|
||||||
@@ -230,8 +275,10 @@ void ContentLibraryView::selectedNodesChanged(const QList<ModelNode> &selectedNo
|
|||||||
m_widget->materialsModel()->setHasModelSelection(!m_selectedModels.isEmpty());
|
m_widget->materialsModel()->setHasModelSelection(!m_selectedModels.isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContentLibraryView::customNotification(const AbstractView *view, const QString &identifier,
|
void ContentLibraryView::customNotification(const AbstractView *view,
|
||||||
const QList<ModelNode> &nodeList, const QList<QVariant> &data)
|
const QString &identifier,
|
||||||
|
const QList<ModelNode> &nodeList,
|
||||||
|
const QList<QVariant> &data)
|
||||||
{
|
{
|
||||||
Q_UNUSED(data)
|
Q_UNUSED(data)
|
||||||
|
|
||||||
@@ -248,7 +295,11 @@ void ContentLibraryView::customNotification(const AbstractView *view, const QStr
|
|||||||
ModelNode defaultMat = getBundleMaterialDefaultInstance(m_draggedBundleMaterial->type());
|
ModelNode defaultMat = getBundleMaterialDefaultInstance(m_draggedBundleMaterial->type());
|
||||||
if (defaultMat.isValid()) {
|
if (defaultMat.isValid()) {
|
||||||
if (m_bundleMaterialTargets.isEmpty()) // if no drop target, create a duplicate material
|
if (m_bundleMaterialTargets.isEmpty()) // if no drop target, create a duplicate material
|
||||||
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
createMaterial(m_draggedBundleMaterial->type());
|
||||||
|
#else
|
||||||
createMaterial(defaultMat.metaInfo());
|
createMaterial(defaultMat.metaInfo());
|
||||||
|
#endif
|
||||||
else
|
else
|
||||||
applyBundleMaterialToDropTarget(defaultMat);
|
applyBundleMaterialToDropTarget(defaultMat);
|
||||||
} else {
|
} else {
|
||||||
@@ -256,7 +307,7 @@ void ContentLibraryView::customNotification(const AbstractView *view, const QStr
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_draggedBundleMaterial = nullptr;
|
m_draggedBundleMaterial = nullptr;
|
||||||
} else if (identifier == "drop_bundle_texture") {
|
} else if (identifier == "drop_bundle_texture") {
|
||||||
ModelNode matLib = materialLibraryNode();
|
ModelNode matLib = materialLibraryNode();
|
||||||
if (!matLib.isValid())
|
if (!matLib.isValid())
|
||||||
return;
|
return;
|
||||||
@@ -288,6 +339,57 @@ void ContentLibraryView::nodeAboutToBeRemoved(const ModelNode &removedNode)
|
|||||||
m_widget->setHasMaterialLibrary(false);
|
m_widget->setHasMaterialLibrary(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
void ContentLibraryView::applyBundleMaterialToDropTarget(const ModelNode &bundleMat,
|
||||||
|
const TypeName &typeName)
|
||||||
|
{
|
||||||
|
if (!bundleMat.isValid() && !typeName.size())
|
||||||
|
return;
|
||||||
|
|
||||||
|
executeInTransaction("ContentLibraryView::applyBundleMaterialToDropTarget", [&] {
|
||||||
|
ModelNode newMatNode = typeName.size() ? createMaterial(typeName) : bundleMat;
|
||||||
|
|
||||||
|
// TODO: unify this logic as it exist elsewhere also
|
||||||
|
auto expToList = [](const QString &exp) {
|
||||||
|
QString copy = exp;
|
||||||
|
copy = copy.remove("[").remove("]");
|
||||||
|
|
||||||
|
QStringList tmp = copy.split(',', Qt::SkipEmptyParts);
|
||||||
|
for (QString &str : tmp)
|
||||||
|
str = str.trimmed();
|
||||||
|
|
||||||
|
return tmp;
|
||||||
|
};
|
||||||
|
|
||||||
|
auto listToExp = [](QStringList &stringList) {
|
||||||
|
if (stringList.size() > 1)
|
||||||
|
return QString("[" + stringList.join(",") + "]");
|
||||||
|
|
||||||
|
if (stringList.size() == 1)
|
||||||
|
return stringList.first();
|
||||||
|
|
||||||
|
return QString();
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const ModelNode &target : std::as_const(m_bundleMaterialTargets)) {
|
||||||
|
if (target.isValid() && target.metaInfo().isQtQuick3DModel()) {
|
||||||
|
QmlObjectNode qmlObjNode(target);
|
||||||
|
if (m_bundleMaterialAddToSelected) {
|
||||||
|
QStringList matList = expToList(qmlObjNode.expression("materials"));
|
||||||
|
matList.append(newMatNode.id());
|
||||||
|
QString updatedExp = listToExp(matList);
|
||||||
|
qmlObjNode.setBindingProperty("materials", updatedExp);
|
||||||
|
} else {
|
||||||
|
qmlObjNode.setBindingProperty("materials", newMatNode.id());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_bundleMaterialTargets = {};
|
||||||
|
m_bundleMaterialAddToSelected = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
#else
|
||||||
void ContentLibraryView::applyBundleMaterialToDropTarget(const ModelNode &bundleMat,
|
void ContentLibraryView::applyBundleMaterialToDropTarget(const ModelNode &bundleMat,
|
||||||
const NodeMetaInfo &metaInfo)
|
const NodeMetaInfo &metaInfo)
|
||||||
{
|
{
|
||||||
@@ -337,6 +439,7 @@ void ContentLibraryView::applyBundleMaterialToDropTarget(const ModelNode &bundle
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
ModelNode ContentLibraryView::getBundleMaterialDefaultInstance(const TypeName &type)
|
ModelNode ContentLibraryView::getBundleMaterialDefaultInstance(const TypeName &type)
|
||||||
{
|
{
|
||||||
@@ -344,7 +447,7 @@ ModelNode ContentLibraryView::getBundleMaterialDefaultInstance(const TypeName &t
|
|||||||
if (!matLib.isValid())
|
if (!matLib.isValid())
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
const QList <ModelNode> matLibNodes = matLib.directSubModelNodes();
|
const QList<ModelNode> matLibNodes = matLib.directSubModelNodes();
|
||||||
for (const ModelNode &mat : matLibNodes) {
|
for (const ModelNode &mat : matLibNodes) {
|
||||||
if (mat.isValid() && mat.type() == type) {
|
if (mat.isValid() && mat.type() == type) {
|
||||||
bool isDefault = true;
|
bool isDefault = true;
|
||||||
@@ -363,15 +466,40 @@ ModelNode ContentLibraryView::getBundleMaterialDefaultInstance(const TypeName &t
|
|||||||
|
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
ModelNode ContentLibraryView::createMaterial(const TypeName &typeName)
|
||||||
|
{
|
||||||
|
ModelNode matLib = materialLibraryNode();
|
||||||
|
if (!matLib.isValid() || !typeName.size())
|
||||||
|
return {};
|
||||||
|
|
||||||
|
ModelNode newMatNode = createModelNode(typeName, -1, -1);
|
||||||
|
matLib.defaultNodeListProperty().reparentHere(newMatNode);
|
||||||
|
|
||||||
|
static QRegularExpression rgx("([A-Z])([a-z]*)");
|
||||||
|
QString newName = QString::fromUtf8(typeName).replace(rgx, " \\1\\2").trimmed();
|
||||||
|
if (newName.endsWith(" Material"))
|
||||||
|
newName.chop(9); // remove trailing " Material"
|
||||||
|
QString newId = model()->generateIdFromName(newName, "material");
|
||||||
|
newMatNode.setIdWithRefactoring(newId);
|
||||||
|
|
||||||
|
VariantProperty objNameProp = newMatNode.variantProperty("objectName");
|
||||||
|
objNameProp.setValue(newName);
|
||||||
|
|
||||||
|
emitCustomNotification("focus_material_section", {});
|
||||||
|
|
||||||
|
return newMatNode;
|
||||||
|
}
|
||||||
|
#else
|
||||||
ModelNode ContentLibraryView::createMaterial(const NodeMetaInfo &metaInfo)
|
ModelNode ContentLibraryView::createMaterial(const NodeMetaInfo &metaInfo)
|
||||||
{
|
{
|
||||||
ModelNode matLib = materialLibraryNode();
|
ModelNode matLib = materialLibraryNode();
|
||||||
if (!matLib.isValid() || !metaInfo.isValid())
|
if (!matLib.isValid() || !metaInfo.isValid())
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
ModelNode newMatNode = createModelNode(metaInfo.typeName(), metaInfo.majorVersion(),
|
ModelNode newMatNode = createModelNode(metaInfo.typeName(),
|
||||||
metaInfo.minorVersion());
|
metaInfo.majorVersion(),
|
||||||
|
metaInfo.minorVersion());
|
||||||
matLib.defaultNodeListProperty().reparentHere(newMatNode);
|
matLib.defaultNodeListProperty().reparentHere(newMatNode);
|
||||||
|
|
||||||
static QRegularExpression rgx("([A-Z])([a-z]*)");
|
static QRegularExpression rgx("([A-Z])([a-z]*)");
|
||||||
@@ -388,6 +516,7 @@ ModelNode ContentLibraryView::createMaterial(const NodeMetaInfo &metaInfo)
|
|||||||
|
|
||||||
return newMatNode;
|
return newMatNode;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void ContentLibraryView::updateBundleMaterialsImportedState()
|
void ContentLibraryView::updateBundleMaterialsImportedState()
|
||||||
{
|
{
|
||||||
@@ -432,7 +561,7 @@ void ContentLibraryView::updateBundlesQuick3DVersion()
|
|||||||
bool hasImport = false;
|
bool hasImport = false;
|
||||||
int major = -1;
|
int major = -1;
|
||||||
int minor = -1;
|
int minor = -1;
|
||||||
const QString url {"QtQuick3D"};
|
const QString url{"QtQuick3D"};
|
||||||
const auto imports = model()->imports();
|
const auto imports = model()->imports();
|
||||||
for (const auto &import : imports) {
|
for (const auto &import : imports) {
|
||||||
if (import.url() == url) {
|
if (import.url() == url) {
|
||||||
|
|||||||
@@ -47,10 +47,18 @@ private:
|
|||||||
void updateBundleMaterialsImportedState();
|
void updateBundleMaterialsImportedState();
|
||||||
void updateBundleEffectsImportedState();
|
void updateBundleEffectsImportedState();
|
||||||
void updateBundlesQuick3DVersion();
|
void updateBundlesQuick3DVersion();
|
||||||
void applyBundleMaterialToDropTarget(const ModelNode &bundleMat, const NodeMetaInfo &metaInfo = {});
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
void applyBundleMaterialToDropTarget(const ModelNode &bundleMat, const TypeName &typeName = {});
|
||||||
|
#else
|
||||||
|
void applyBundleMaterialToDropTarget(const ModelNode &bundleMat,
|
||||||
|
const NodeMetaInfo &metaInfo = {});
|
||||||
|
#endif
|
||||||
ModelNode getBundleMaterialDefaultInstance(const TypeName &type);
|
ModelNode getBundleMaterialDefaultInstance(const TypeName &type);
|
||||||
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
ModelNode createMaterial(const TypeName &typeName);
|
||||||
|
#else
|
||||||
ModelNode createMaterial(const NodeMetaInfo &metaInfo);
|
ModelNode createMaterial(const NodeMetaInfo &metaInfo);
|
||||||
|
#endif
|
||||||
QPointer<ContentLibraryWidget> m_widget;
|
QPointer<ContentLibraryWidget> m_widget;
|
||||||
QList<ModelNode> m_bundleMaterialTargets;
|
QList<ModelNode> m_bundleMaterialTargets;
|
||||||
ModelNode m_bundleEffectTarget; // target of the dropped bundle effect
|
ModelNode m_bundleEffectTarget; // target of the dropped bundle effect
|
||||||
|
|||||||
@@ -186,12 +186,15 @@ void EventList::initialize(EventListPluginView *parent)
|
|||||||
if (!m_model) {
|
if (!m_model) {
|
||||||
QByteArray unqualifiedTypeName = "ListModel";
|
QByteArray unqualifiedTypeName = "ListModel";
|
||||||
auto metaInfo = parent->model()->metaInfo(unqualifiedTypeName);
|
auto metaInfo = parent->model()->metaInfo(unqualifiedTypeName);
|
||||||
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
m_model = Model::create(unqualifiedTypeName, -1, -1);
|
||||||
|
#else
|
||||||
QByteArray fullTypeName = metaInfo.typeName();
|
QByteArray fullTypeName = metaInfo.typeName();
|
||||||
int minorVersion = metaInfo.minorVersion();
|
int minorVersion = metaInfo.minorVersion();
|
||||||
int majorVersion = metaInfo.majorVersion();
|
int majorVersion = metaInfo.majorVersion();
|
||||||
|
|
||||||
m_model = Model::create(fullTypeName, majorVersion, minorVersion);
|
m_model = Model::create(fullTypeName, majorVersion, minorVersion);
|
||||||
|
#endif
|
||||||
m_model->setParent(parent);
|
m_model->setParent(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -85,6 +85,9 @@ void EventListView::addEvent(const Event &event)
|
|||||||
executeInTransaction("EventListView::addEvent", [=]() {
|
executeInTransaction("EventListView::addEvent", [=]() {
|
||||||
|
|
||||||
QByteArray unqualifiedTypeName = "ListElement";
|
QByteArray unqualifiedTypeName = "ListElement";
|
||||||
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
ModelNode eventNode = createModelNode(unqualifiedTypeName, -1, -1);
|
||||||
|
#else
|
||||||
auto metaInfo = model()->metaInfo(unqualifiedTypeName);
|
auto metaInfo = model()->metaInfo(unqualifiedTypeName);
|
||||||
|
|
||||||
QByteArray fullTypeName = metaInfo.typeName();
|
QByteArray fullTypeName = metaInfo.typeName();
|
||||||
@@ -92,6 +95,7 @@ void EventListView::addEvent(const Event &event)
|
|||||||
int majorVersion = metaInfo.majorVersion();
|
int majorVersion = metaInfo.majorVersion();
|
||||||
|
|
||||||
ModelNode eventNode = createModelNode(fullTypeName, majorVersion, minorVersion);
|
ModelNode eventNode = createModelNode(fullTypeName, majorVersion, minorVersion);
|
||||||
|
#endif
|
||||||
eventNode.variantProperty("eventId").setValue(event.eventId);
|
eventNode.variantProperty("eventId").setValue(event.eventId);
|
||||||
|
|
||||||
if (!event.shortcut.isEmpty())
|
if (!event.shortcut.isEmpty())
|
||||||
|
|||||||
@@ -233,11 +233,19 @@ void MaterialEditorContextObject::changeTypeName(const QString &typeName)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
if (m_selectedMaterial.isRootNode())
|
||||||
|
rewriterView->changeRootNodeType(typeName.toUtf8(), -1, -1);
|
||||||
|
else
|
||||||
|
m_selectedMaterial.changeType(typeName.toUtf8(), -1, -1);
|
||||||
|
#else
|
||||||
if (m_selectedMaterial.isRootNode())
|
if (m_selectedMaterial.isRootNode())
|
||||||
rewriterView->changeRootNodeType(metaInfo.typeName(), metaInfo.majorVersion(), metaInfo.minorVersion());
|
rewriterView->changeRootNodeType(metaInfo.typeName(), metaInfo.majorVersion(), metaInfo.minorVersion());
|
||||||
else
|
else
|
||||||
m_selectedMaterial.changeType(metaInfo.typeName(), metaInfo.majorVersion(), metaInfo.minorVersion());
|
m_selectedMaterial.changeType(metaInfo.typeName(),
|
||||||
|
metaInfo.majorVersion(),
|
||||||
|
metaInfo.minorVersion());
|
||||||
|
#endif
|
||||||
for (const auto &key : copyKeys) {
|
for (const auto &key : copyKeys) {
|
||||||
const CopyData ©Data = copyMap[key];
|
const CopyData ©Data = copyMap[key];
|
||||||
if (copyData.isBinding)
|
if (copyData.isBinding)
|
||||||
|
|||||||
@@ -197,13 +197,13 @@ void MaterialEditorView::changeExpression(const QString &propertyName)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (auto property = m_selectedMaterial.metaInfo().property(name)) {
|
if (auto property = m_selectedMaterial.metaInfo().property(name)) {
|
||||||
auto propertyTypeName = property.propertyType().typeName();
|
auto propertyType = property.propertyType();
|
||||||
if (propertyTypeName == "QColor") {
|
if (propertyType.isColor()) {
|
||||||
if (QColor(value->expression().remove('"')).isValid()) {
|
if (QColor(value->expression().remove('"')).isValid()) {
|
||||||
qmlObjectNode.setVariantProperty(name, QColor(value->expression().remove('"')));
|
qmlObjectNode.setVariantProperty(name, QColor(value->expression().remove('"')));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (propertyTypeName == "bool") {
|
} else if (propertyType.isBool()) {
|
||||||
if (isTrueFalseLiteral(value->expression())) {
|
if (isTrueFalseLiteral(value->expression())) {
|
||||||
if (value->expression().compare("true", Qt::CaseInsensitive) == 0)
|
if (value->expression().compare("true", Qt::CaseInsensitive) == 0)
|
||||||
qmlObjectNode.setVariantProperty(name, true);
|
qmlObjectNode.setVariantProperty(name, true);
|
||||||
@@ -211,21 +211,21 @@ void MaterialEditorView::changeExpression(const QString &propertyName)
|
|||||||
qmlObjectNode.setVariantProperty(name, false);
|
qmlObjectNode.setVariantProperty(name, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (propertyTypeName == "int") {
|
} else if (propertyType.isInteger()) {
|
||||||
bool ok;
|
bool ok;
|
||||||
int intValue = value->expression().toInt(&ok);
|
int intValue = value->expression().toInt(&ok);
|
||||||
if (ok) {
|
if (ok) {
|
||||||
qmlObjectNode.setVariantProperty(name, intValue);
|
qmlObjectNode.setVariantProperty(name, intValue);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (propertyTypeName == "qreal") {
|
} else if (propertyType.isFloat()) {
|
||||||
bool ok;
|
bool ok;
|
||||||
qreal realValue = value->expression().toDouble(&ok);
|
qreal realValue = value->expression().toDouble(&ok);
|
||||||
if (ok) {
|
if (ok) {
|
||||||
qmlObjectNode.setVariantProperty(name, realValue);
|
qmlObjectNode.setVariantProperty(name, realValue);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (propertyTypeName == "QVariant") {
|
} else if (propertyType.isVariant()) {
|
||||||
bool ok;
|
bool ok;
|
||||||
qreal realValue = value->expression().toDouble(&ok);
|
qreal realValue = value->expression().toDouble(&ok);
|
||||||
if (ok) {
|
if (ok) {
|
||||||
|
|||||||
@@ -272,11 +272,17 @@ void PropertyEditorContextObject::changeTypeName(const QString &typeName)
|
|||||||
selectedNode.removeProperty(p);
|
selectedNode.removeProperty(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
if (selectedNode.isRootNode())
|
||||||
|
rewriterView->changeRootNodeType(typeName.toUtf8(), -1, -1);
|
||||||
|
else
|
||||||
|
selectedNode.changeType(typeName.toUtf8(), -1, -1);
|
||||||
|
#else
|
||||||
if (selectedNode.isRootNode())
|
if (selectedNode.isRootNode())
|
||||||
rewriterView->changeRootNodeType(metaInfo.typeName(), metaInfo.majorVersion(), metaInfo.minorVersion());
|
rewriterView->changeRootNodeType(metaInfo.typeName(), metaInfo.majorVersion(), metaInfo.minorVersion());
|
||||||
else
|
else
|
||||||
selectedNode.changeType(metaInfo.typeName(), metaInfo.majorVersion(), metaInfo.minorVersion());
|
selectedNode.changeType(metaInfo.typeName(), metaInfo.majorVersion(), metaInfo.minorVersion());
|
||||||
|
#endif
|
||||||
transaction.commit();
|
transaction.commit();
|
||||||
} catch (const Exception &e) {
|
} catch (const Exception &e) {
|
||||||
e.showException();
|
e.showException();
|
||||||
|
|||||||
@@ -187,13 +187,13 @@ void TextureEditorView::changeExpression(const QString &propertyName)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (auto property = m_selectedTexture.metaInfo().property(name)) {
|
if (auto property = m_selectedTexture.metaInfo().property(name)) {
|
||||||
auto propertyTypeName = property.propertyType().typeName();
|
auto propertyType = property.propertyType();
|
||||||
if (propertyTypeName == "QColor") {
|
if (propertyType.isColor()) {
|
||||||
if (QColor(value->expression().remove('"')).isValid()) {
|
if (QColor(value->expression().remove('"')).isValid()) {
|
||||||
qmlObjectNode.setVariantProperty(name, QColor(value->expression().remove('"')));
|
qmlObjectNode.setVariantProperty(name, QColor(value->expression().remove('"')));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (propertyTypeName == "bool") {
|
} else if (propertyType.isBool()) {
|
||||||
if (isTrueFalseLiteral(value->expression())) {
|
if (isTrueFalseLiteral(value->expression())) {
|
||||||
if (value->expression().compare("true", Qt::CaseInsensitive) == 0)
|
if (value->expression().compare("true", Qt::CaseInsensitive) == 0)
|
||||||
qmlObjectNode.setVariantProperty(name, true);
|
qmlObjectNode.setVariantProperty(name, true);
|
||||||
@@ -201,21 +201,21 @@ void TextureEditorView::changeExpression(const QString &propertyName)
|
|||||||
qmlObjectNode.setVariantProperty(name, false);
|
qmlObjectNode.setVariantProperty(name, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (propertyTypeName == "int") {
|
} else if (propertyType.isInteger()) {
|
||||||
bool ok;
|
bool ok;
|
||||||
int intValue = value->expression().toInt(&ok);
|
int intValue = value->expression().toInt(&ok);
|
||||||
if (ok) {
|
if (ok) {
|
||||||
qmlObjectNode.setVariantProperty(name, intValue);
|
qmlObjectNode.setVariantProperty(name, intValue);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (propertyTypeName == "qreal") {
|
} else if (propertyType.isFloat()) {
|
||||||
bool ok;
|
bool ok;
|
||||||
qreal realValue = value->expression().toDouble(&ok);
|
qreal realValue = value->expression().toDouble(&ok);
|
||||||
if (ok) {
|
if (ok) {
|
||||||
qmlObjectNode.setVariantProperty(name, realValue);
|
qmlObjectNode.setVariantProperty(name, realValue);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (propertyTypeName == "QVariant") {
|
} else if (propertyType.isVariant()) {
|
||||||
bool ok;
|
bool ok;
|
||||||
qreal realValue = value->expression().toDouble(&ok);
|
qreal realValue = value->expression().toDouble(&ok);
|
||||||
if (ok) {
|
if (ok) {
|
||||||
|
|||||||
@@ -787,12 +787,16 @@ void AbstractView::ensureMaterialLibraryNode()
|
|||||||
}
|
}
|
||||||
|
|
||||||
executeInTransaction(__FUNCTION__, [&] {
|
executeInTransaction(__FUNCTION__, [&] {
|
||||||
// Create material library node
|
// Create material library node
|
||||||
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
|
TypeName nodeTypeName = rootModelNode().metaInfo().isQtQuick3DNode() ? "Node" : "Item";
|
||||||
|
matLib = createModelNode(nodeTypeName, -1, -1);
|
||||||
|
#else
|
||||||
auto nodeType = rootModelNode().metaInfo().isQtQuick3DNode()
|
auto nodeType = rootModelNode().metaInfo().isQtQuick3DNode()
|
||||||
? model()->qtQuick3DNodeMetaInfo()
|
? model()->qtQuick3DNodeMetaInfo()
|
||||||
: model()->qtQuickItemMetaInfo();
|
: model()->qtQuickItemMetaInfo();
|
||||||
matLib = createModelNode(nodeType.typeName(), nodeType.majorVersion(), nodeType.minorVersion());
|
matLib = createModelNode(nodeType.typeName(), nodeType.majorVersion(), nodeType.minorVersion());
|
||||||
|
#endif
|
||||||
matLib.setIdWithoutRefactoring(Constants::MATERIAL_LIB_ID);
|
matLib.setIdWithoutRefactoring(Constants::MATERIAL_LIB_ID);
|
||||||
rootModelNode().defaultNodeListProperty().reparentHere(matLib);
|
rootModelNode().defaultNodeListProperty().reparentHere(matLib);
|
||||||
});
|
});
|
||||||
@@ -928,10 +932,8 @@ static int getMajorVersionFromNode(const ModelNode &modelNode)
|
|||||||
{
|
{
|
||||||
if (modelNode.metaInfo().isValid()) {
|
if (modelNode.metaInfo().isValid()) {
|
||||||
for (const NodeMetaInfo &info : modelNode.metaInfo().selfAndPrototypes()) {
|
for (const NodeMetaInfo &info : modelNode.metaInfo().selfAndPrototypes()) {
|
||||||
if (info.typeName() == "QtQml.QtObject" || info.typeName() == "QtQuick.QtObject"
|
if (info.isQtObject() || info.isQtQuickItem())
|
||||||
|| info.typeName() == "QtQuick.Item") {
|
|
||||||
return info.majorVersion();
|
return info.majorVersion();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -943,7 +945,7 @@ static int getMinorVersionFromNode(const ModelNode &modelNode)
|
|||||||
if (modelNode.metaInfo().isValid()) {
|
if (modelNode.metaInfo().isValid()) {
|
||||||
const NodeMetaInfos infos = modelNode.metaInfo().selfAndPrototypes();
|
const NodeMetaInfos infos = modelNode.metaInfo().selfAndPrototypes();
|
||||||
for (const NodeMetaInfo &info : infos) {
|
for (const NodeMetaInfo &info : infos) {
|
||||||
if (info.typeName() == "QtQuick.QtObject" || info.typeName() == "QtQuick.Item")
|
if (info.isQtObject() || info.isQtQuickItem())
|
||||||
return info.minorVersion();
|
return info.minorVersion();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1221,7 +1221,7 @@ void TextToModelMerger::syncNode(ModelNode &modelNode,
|
|||||||
if (defaultPropertyName.isEmpty()) //fallback and use the meta system of the model
|
if (defaultPropertyName.isEmpty()) //fallback and use the meta system of the model
|
||||||
defaultPropertyName = modelNode.metaInfo().defaultPropertyName();
|
defaultPropertyName = modelNode.metaInfo().defaultPropertyName();
|
||||||
|
|
||||||
if (modelNode.isRootNode() && !m_rewriterView->allowComponentRoot() && isComponentType(typeName)) {
|
if (modelNode.isRootNode() && !m_rewriterView->allowComponentRoot() && info.isQmlComponent()) {
|
||||||
for (AST::UiObjectMemberList *iter = astInitializer->members; iter; iter = iter->next) {
|
for (AST::UiObjectMemberList *iter = astInitializer->members; iter; iter = iter->next) {
|
||||||
if (auto def = AST::cast<AST::UiObjectDefinition *>(iter->member)) {
|
if (auto def = AST::cast<AST::UiObjectDefinition *>(iter->member)) {
|
||||||
syncNode(modelNode, def, context, differenceHandler);
|
syncNode(modelNode, def, context, differenceHandler);
|
||||||
|
|||||||
Reference in New Issue
Block a user