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(
"QtQuick.MouseArea", itemMetaInfo.majorVersion(), itemMetaInfo.minorVersion());
#endif
mouseAreaNode.validId();
mouseAreaNode.ensureIdExists();
modelNode.defaultNodeListProperty().reparentHere(mouseAreaNode);
QmlItemNode mouseAreaItemNode(mouseAreaNode);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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