Filter properties that do not exist in the new node type

Task-number: QDS-2071
Change-Id: Iedc7f65e3cebfed8410dda80707910a633c6670f
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Michael Brüning
2020-05-28 15:16:41 +02:00
parent e5d892c74a
commit 38eaada47d

View File

@@ -58,7 +58,7 @@ static void splitIdInBaseNameAndNumber(const QString &id, QString *baseId, int *
void StylesheetMerger::syncNodeProperties(ModelNode &outputNode, const ModelNode &inputNode, bool skipDuplicates) void StylesheetMerger::syncNodeProperties(ModelNode &outputNode, const ModelNode &inputNode, bool skipDuplicates)
{ {
foreach (const NodeProperty &nodeProperty, inputNode.nodeProperties()) { for (const NodeProperty &nodeProperty : inputNode.nodeProperties()) {
ModelNode oldNode = nodeProperty.modelNode(); ModelNode oldNode = nodeProperty.modelNode();
if (m_templateView->hasId(oldNode.id()) && skipDuplicates) if (m_templateView->hasId(oldNode.id()) && skipDuplicates)
continue; continue;
@@ -73,8 +73,8 @@ void StylesheetMerger::syncNodeProperties(ModelNode &outputNode, const ModelNode
void StylesheetMerger::syncNodeListProperties(ModelNode &outputNode, const ModelNode &inputNode, bool skipDuplicates) void StylesheetMerger::syncNodeListProperties(ModelNode &outputNode, const ModelNode &inputNode, bool skipDuplicates)
{ {
foreach (const NodeListProperty &nodeListProperty, inputNode.nodeListProperties()) { for (const NodeListProperty &nodeListProperty : inputNode.nodeListProperties()) {
foreach (ModelNode node, nodeListProperty.toModelNodeList()) { for (ModelNode node : nodeListProperty.toModelNodeList()) {
if (m_templateView->hasId(node.id()) && skipDuplicates) if (m_templateView->hasId(node.id()) && skipDuplicates)
continue; continue;
ModelNode newNode = createReplacementNode(node, node); ModelNode newNode = createReplacementNode(node, node);
@@ -85,7 +85,7 @@ void StylesheetMerger::syncNodeListProperties(ModelNode &outputNode, const Model
void StylesheetMerger::syncVariantProperties(ModelNode &outputNode, const ModelNode &inputNode) void StylesheetMerger::syncVariantProperties(ModelNode &outputNode, const ModelNode &inputNode)
{ {
foreach (const VariantProperty &variantProperty, inputNode.variantProperties()) { for (const VariantProperty &variantProperty : inputNode.variantProperties()) {
outputNode.variantProperty(variantProperty.name()).setValue(variantProperty.value()); outputNode.variantProperty(variantProperty.name()).setValue(variantProperty.value());
} }
} }
@@ -99,7 +99,7 @@ void StylesheetMerger::syncAuxiliaryProperties(ModelNode &outputNode, const Mode
void StylesheetMerger::syncBindingProperties(ModelNode &outputNode, const ModelNode &inputNode) void StylesheetMerger::syncBindingProperties(ModelNode &outputNode, const ModelNode &inputNode)
{ {
foreach (const BindingProperty &bindingProperty, inputNode.bindingProperties()) { for (const BindingProperty &bindingProperty : inputNode.bindingProperties()) {
outputNode.bindingProperty(bindingProperty.name()).setExpression(bindingProperty.expression()); outputNode.bindingProperty(bindingProperty.name()).setExpression(bindingProperty.expression());
} }
} }
@@ -116,7 +116,7 @@ void StylesheetMerger::syncId(ModelNode &outputNode, ModelNode &inputNode)
void StylesheetMerger::setupIdRenamingHash() void StylesheetMerger::setupIdRenamingHash()
{ {
foreach (const ModelNode &node, m_templateView->rootModelNode().allSubModelNodesAndThisNode()) { for (const ModelNode &node : m_templateView->rootModelNode().allSubModelNodesAndThisNode()) {
if (!node.id().isEmpty()) { if (!node.id().isEmpty()) {
QString newId = node.id(); QString newId = node.id();
QString baseId; QString baseId;
@@ -137,10 +137,12 @@ ModelNode StylesheetMerger::createReplacementNode(const ModelNode& styleNode, Mo
{ {
QList<QPair<PropertyName, QVariant> > propertyList; QList<QPair<PropertyName, QVariant> > propertyList;
QList<QPair<PropertyName, QVariant> > variantPropertyList; QList<QPair<PropertyName, QVariant> > variantPropertyList;
foreach (const VariantProperty &variantProperty, modelNode.variantProperties()) { NodeMetaInfo nodeMetaInfo = m_templateView->model()->metaInfo(styleNode.type());
for (const VariantProperty &variantProperty : modelNode.variantProperties()) {
if (nodeMetaInfo.hasProperty(variantProperty.name()))
propertyList.append(QPair<PropertyName, QVariant>(variantProperty.name(), variantProperty.value())); propertyList.append(QPair<PropertyName, QVariant>(variantProperty.name(), variantProperty.value()));
} }
NodeMetaInfo nodeMetaInfo = m_templateView->model()->metaInfo(styleNode.type());
ModelNode newNode(m_templateView->createModelNode(styleNode.type(), nodeMetaInfo.majorVersion(), nodeMetaInfo.minorVersion(), ModelNode newNode(m_templateView->createModelNode(styleNode.type(), nodeMetaInfo.majorVersion(), nodeMetaInfo.minorVersion(),
propertyList, variantPropertyList, styleNode.nodeSource(), styleNode.nodeSourceType())); propertyList, variantPropertyList, styleNode.nodeSource(), styleNode.nodeSourceType()));
@@ -303,8 +305,7 @@ void StylesheetMerger::adjustNodeIndex(ModelNode &node)
void StylesheetMerger::applyStyleProperties(ModelNode &templateNode, const ModelNode &styleNode) void StylesheetMerger::applyStyleProperties(ModelNode &templateNode, const ModelNode &styleNode)
{ {
QRegExp regEx("[a-z]", Qt::CaseInsensitive); QRegExp regEx("[a-z]", Qt::CaseInsensitive);
foreach (const VariantProperty &variantProperty, styleNode.variantProperties()) { for (const VariantProperty &variantProperty : styleNode.variantProperties()) {
// check for existing bindings with that property name
if (templateNode.hasBindingProperty(variantProperty.name())) { if (templateNode.hasBindingProperty(variantProperty.name())) {
// if the binding does not contain any alpha letters (i.e. binds to a term rather than a property, // if the binding does not contain any alpha letters (i.e. binds to a term rather than a property,
// replace it with the corresponding variant property. // replace it with the corresponding variant property.
@@ -397,7 +398,7 @@ void StylesheetMerger::merge()
//removePropertyIfExists(templateNode, "height"); //removePropertyIfExists(templateNode, "height");
} }
} }
transaction.commit();
} }
} }
} }