void ModelToTextMerger::nodeRemoved(const ModelNode &removedNode, const NodeAbstractProperty &parentProperty, PropertyChangeFlags propertyChange) { if (!isInHierarchy(parentProperty)) return; if (parentProperty.isDefaultProperty()) schedule(new RemoveNodeRewriteAction(removedNode)); else if (AbstractView::EmptyPropertiesRemoved == propertyChange) schedule(new RemovePropertyRewriteAction(parentProperty)); else if (parentProperty.isNodeListProperty()) schedule(new RemoveNodeRewriteAction(removedNode)); }
void ModelToTextMerger::nodeReparented(const ModelNode &node, const NodeAbstractProperty &newPropertyParent, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags propertyChange) { if (isInHierarchy(oldPropertyParent) && isInHierarchy(newPropertyParent)) { // the node is moved schedule(new ReparentNodeRewriteAction(node, oldPropertyParent, newPropertyParent, propertyType(newPropertyParent))); } else if (isInHierarchy(oldPropertyParent) && !isInHierarchy(newPropertyParent)) { // the node is removed from hierarchy if (oldPropertyParent.isNodeProperty()) { // ignore, the subsequent remove property will take care of all } else if (oldPropertyParent.isNodeListProperty()) { if (!oldPropertyParent.isDefaultProperty() && oldPropertyParent.toNodeListProperty().toModelNodeList().size() == 0) { schedule(new RemovePropertyRewriteAction(oldPropertyParent)); } else { schedule(new RemoveNodeRewriteAction(node)); } } else { schedule(new RemoveNodeRewriteAction(node)); } } else if (!isInHierarchy(oldPropertyParent) && isInHierarchy(newPropertyParent)) { // the node is inserted into to hierarchy switch (propertyChange) { case AbstractView::PropertiesAdded: schedule(new AddPropertyRewriteAction(newPropertyParent, QmlTextGenerator(getPropertyOrder())(node), propertyType(newPropertyParent), node)); break; case AbstractView::NoAdditionalChanges: schedule(new ChangePropertyRewriteAction(newPropertyParent, QmlTextGenerator(getPropertyOrder())(node), propertyType(newPropertyParent), node)); break; case AbstractView::EmptyPropertiesRemoved: break; default: Q_ASSERT(!"Unknown PropertyChange value"); } } else { // old is outside of hierarchy, new is outside of hierarchy, so who cares? } }