QmlDesigner: Add ModelNode::ensureIdExists()

Calling ModelNode::validId() and don't get the value looks a little bit
strange.

Removing the refactoring step too. If there was no id, why it should be
refactored?

Change-Id: I0ec31f2e9a654635bcdb815e7ab1236506d37d2b
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Marco Bubke
2024-06-13 12:05:33 +02:00
parent 0506a6c199
commit 9c1e834eaf
10 changed files with 22 additions and 16 deletions

View File

@@ -1622,7 +1622,7 @@ void addMouseAreaFill(const SelectionContext &selectionContext)
QmlDesigner::ModelNode mouseAreaNode = selectionContext.view()->createModelNode( QmlDesigner::ModelNode mouseAreaNode = selectionContext.view()->createModelNode(
"QtQuick.MouseArea", itemMetaInfo.majorVersion(), itemMetaInfo.minorVersion()); "QtQuick.MouseArea", itemMetaInfo.majorVersion(), itemMetaInfo.minorVersion());
#endif #endif
mouseAreaNode.validId(); mouseAreaNode.ensureIdExists();
modelNode.defaultNodeListProperty().reparentHere(mouseAreaNode); modelNode.defaultNodeListProperty().reparentHere(mouseAreaNode);
QmlItemNode mouseAreaItemNode(mouseAreaNode); QmlItemNode mouseAreaItemNode(mouseAreaNode);

View File

@@ -55,7 +55,7 @@ void MaterialUtils::assignMaterialTo3dModel(AbstractView *view, const ModelNode
metaInfo.majorVersion(), metaInfo.majorVersion(),
metaInfo.minorVersion()); metaInfo.minorVersion());
#endif #endif
newMaterialNode.validId(); newMaterialNode.ensureIdExists();
} }
} }

View File

@@ -171,7 +171,7 @@ void StatesEditorView::createNewState()
} }
executeInTransaction("createNewState", [this, newStateName]() { executeInTransaction("createNewState", [this, newStateName]() {
activeStatesGroupNode().validId(); activeStatesGroupNode().ensureIdExists();
ModelNode newState = activeStateGroup().addState(newStateName); ModelNode newState = activeStateGroup().addState(newStateName);
setCurrentState(newState); setCurrentState(newState);

View File

@@ -388,7 +388,7 @@ void TextureEditorView::handleToolBarAction(int action)
metaInfo.majorVersion(), metaInfo.majorVersion(),
metaInfo.minorVersion()); metaInfo.minorVersion());
#endif #endif
newTextureNode.validId(); newTextureNode.ensureIdExists();
matLib.defaultNodeListProperty().reparentHere(newTextureNode); matLib.defaultNodeListProperty().reparentHere(newTextureNode);
}); });
break; break;
@@ -770,7 +770,7 @@ void TextureEditorView::duplicateTexture(const ModelNode &texture)
QmlObjectNode duplicateTex = createModelNode(matType, metaInfo.majorVersion(), metaInfo.minorVersion()); QmlObjectNode duplicateTex = createModelNode(matType, metaInfo.majorVersion(), metaInfo.minorVersion());
#endif #endif
duplicateTextureNode = duplicateTex .modelNode(); duplicateTextureNode = duplicateTex .modelNode();
duplicateTextureNode.validId(); duplicateTextureNode.ensureIdExists();
// sync properties. Only the base state is duplicated. // sync properties. Only the base state is duplicated.
const QList<AbstractProperty> props = texture.properties(); const QList<AbstractProperty> props = texture.properties();

View File

@@ -90,7 +90,7 @@ void TimelineActions::pasteKeyframesToTarget(const ModelNode &targetNode,
view.executeInTransaction("TimelineActions::pasteKeyframesToTarget", [=, &view](){ view.executeInTransaction("TimelineActions::pasteKeyframesToTarget", [=, &view](){
ModelNode nonConstTargetNode = targetNode; ModelNode nonConstTargetNode = targetNode;
nonConstTargetNode.validId(); nonConstTargetNode.ensureIdExists();
if (QmlTimelineKeyframeGroup::checkKeyframesType(rootNode)) { if (QmlTimelineKeyframeGroup::checkKeyframesType(rootNode)) {
/* Single selection */ /* Single selection */

View File

@@ -349,7 +349,7 @@ const QmlTimeline TimelineView::addNewTimeline()
metaInfo.majorVersion(), metaInfo.majorVersion(),
metaInfo.minorVersion()); metaInfo.minorVersion());
#endif #endif
timelineNode.validId(); timelineNode.ensureIdExists();
timelineNode.variantProperty("startFrame").setValue(0); timelineNode.variantProperty("startFrame").setValue(0);
timelineNode.variantProperty("endFrame").setValue(1000); timelineNode.variantProperty("endFrame").setValue(1000);
@@ -390,7 +390,7 @@ ModelNode TimelineView::addAnimation(QmlTimeline timeline)
metaInfo.minorVersion()); metaInfo.minorVersion());
animationNode.variantProperty("duration").setValue(timeline.duration()); animationNode.variantProperty("duration").setValue(timeline.duration());
#endif #endif
animationNode.validId(); animationNode.ensureIdExists();
animationNode.variantProperty("from").setValue(timeline.startKeyframe()); animationNode.variantProperty("from").setValue(timeline.startKeyframe());
animationNode.variantProperty("to").setValue(timeline.endKeyframe()); animationNode.variantProperty("to").setValue(timeline.endKeyframe());

View File

@@ -252,7 +252,7 @@ ModelNode TransitionEditorView::addNewTransition()
}}); }});
#endif #endif
transition.setAuxiliaryData(transitionDurationProperty, 2000); transition.setAuxiliaryData(transitionDurationProperty, 2000);
transition.validId(); transition.ensureIdExists();
root.nodeListProperty("transitions").reparentHere(transition); root.nodeListProperty("transitions").reparentHere(transition);
for (auto it = idPropertyList.cbegin(); it != idPropertyList.cend(); ++it) { for (auto it = idPropertyList.cbegin(); it != idPropertyList.cend(); ++it) {

View File

@@ -152,7 +152,8 @@ public:
void destroy(); void destroy();
QString id() const; QString id() const;
QString validId(); void ensureIdExists();
[[nodiscard]] QString validId();
void setIdWithRefactoring(const QString &id); void setIdWithRefactoring(const QString &id);
void setIdWithoutRefactoring(const QString &id); void setIdWithoutRefactoring(const QString &id);
static bool isValidId(const QString &id); static bool isValidId(const QString &id);

View File

@@ -80,10 +80,15 @@ QString ModelNode::id() const
return m_internalNode->id; return m_internalNode->id;
} }
void ModelNode::ensureIdExists()
{
if (!hasId())
setIdWithoutRefactoring(model()->generateNewId(simplifiedTypeName()));
}
QString ModelNode::validId() QString ModelNode::validId()
{ {
if (id().isEmpty()) ensureIdExists();
setIdWithRefactoring(model()->generateNewId(simplifiedTypeName()));
return id(); return id();
} }

View File

@@ -39,7 +39,7 @@ void QmlObjectNode::setVariantProperty(const PropertyName &name, const QVariant
return; return;
if (timelineIsActive() && currentTimeline().isRecording()) { if (timelineIsActive() && currentTimeline().isRecording()) {
modelNode().validId(); modelNode().ensureIdExists();
QmlTimelineKeyframeGroup timelineFrames(currentTimeline().keyframeGroup(modelNode(), name)); QmlTimelineKeyframeGroup timelineFrames(currentTimeline().keyframeGroup(modelNode(), name));
@@ -69,7 +69,7 @@ void QmlObjectNode::setVariantProperty(const PropertyName &name, const QVariant
if (isInBaseState()) { if (isInBaseState()) {
modelNode().variantProperty(name).setValue(value); //basestate modelNode().variantProperty(name).setValue(value); //basestate
} else { } else {
modelNode().validId(); modelNode().ensureIdExists();
QmlPropertyChanges changeSet(currentState().propertyChanges(modelNode())); QmlPropertyChanges changeSet(currentState().propertyChanges(modelNode()));
Q_ASSERT(changeSet.isValid()); Q_ASSERT(changeSet.isValid());
@@ -88,7 +88,7 @@ void QmlObjectNode::setBindingProperty(const PropertyName &name, const QString &
if (isInBaseState()) { if (isInBaseState()) {
modelNode().bindingProperty(name).setExpression(expression); //basestate modelNode().bindingProperty(name).setExpression(expression); //basestate
} else { } else {
modelNode().validId(); modelNode().ensureIdExists();
QmlPropertyChanges changeSet(currentState().propertyChanges(modelNode())); QmlPropertyChanges changeSet(currentState().propertyChanges(modelNode()));
Q_ASSERT(changeSet.isValid()); Q_ASSERT(changeSet.isValid());
@@ -338,7 +338,7 @@ void QmlObjectNode::ensureAliasExport()
return; return;
if (!isAliasExported()) { if (!isAliasExported()) {
modelNode().validId(); modelNode().ensureIdExists();
ModelNode rootModelNode = view()->rootModelNode(); ModelNode rootModelNode = view()->rootModelNode();
rootModelNode.bindingProperty(modelNode().id().toUtf8()). rootModelNode.bindingProperty(modelNode().id().toUtf8()).
setDynamicTypeNameAndExpression("alias", modelNode().id()); setDynamicTypeNameAndExpression("alias", modelNode().id());