diff --git a/src/plugins/qmldesigner/designercore/include/abstractview.h b/src/plugins/qmldesigner/designercore/include/abstractview.h index d29f3e4b6e828a9badd9bbc1d24dffe43547a0b7..695aa16826c7d6d97349a335c440cb5f95c94a04 100644 --- a/src/plugins/qmldesigner/designercore/include/abstractview.h +++ b/src/plugins/qmldesigner/designercore/include/abstractview.h @@ -159,6 +159,7 @@ public: ModelNode modelNodeForId(const QString &id); bool hasId(const QString &id) const; + QString generateNewId(const QString prefixName) const; ModelNode modelNodeForInternalId(qint32 internalId); bool hasModelNodeForInternalId(qint32 internalId) const; diff --git a/src/plugins/qmldesigner/designercore/include/modelnode.h b/src/plugins/qmldesigner/designercore/include/modelnode.h index 63b63c4ad5f269daa0efab52e8cd06512cff23fd..5f6eff7f00b22317db903683a46330ca866f2cca 100644 --- a/src/plugins/qmldesigner/designercore/include/modelnode.h +++ b/src/plugins/qmldesigner/designercore/include/modelnode.h @@ -185,7 +185,7 @@ public: private: // functions Internal::InternalNodePointer internalNode() const; - QString generateNewId() const; + private: // variables Internal::InternalNodePointer m_internalNode; diff --git a/src/plugins/qmldesigner/designercore/model/abstractview.cpp b/src/plugins/qmldesigner/designercore/model/abstractview.cpp index 4e8eac4e9a1f420fa6d5a29e72e2d0989b6af814..7a29ce0d8c8712f4e3d2a7007c4010b13f2156bd 100644 --- a/src/plugins/qmldesigner/designercore/model/abstractview.cpp +++ b/src/plugins/qmldesigner/designercore/model/abstractview.cpp @@ -375,6 +375,20 @@ bool AbstractView::hasId(const QString &id) const return model()->d->hasId(id); } +QString AbstractView::generateNewId(const QString prefixName) const +{ + int counter = 1; + + QString newId = QString("%1%2").arg(prefixName.toLower()).arg(counter); + + while (hasId(newId)) { + counter += 1; + newId = QString("%1%2").arg(prefixName.toLower()).arg(counter); + } + + return newId; +} + ModelNode AbstractView::modelNodeForInternalId(qint32 internalId) { return ModelNode(model()->d->nodeForInternalId(internalId), model(), this); diff --git a/src/plugins/qmldesigner/designercore/model/modelnode.cpp b/src/plugins/qmldesigner/designercore/model/modelnode.cpp index 06a016f4fed8c7462f99cb65cac56daff2772610..a46fcd898c73f9a60a414c3678f3d0205b47d42c 100644 --- a/src/plugins/qmldesigner/designercore/model/modelnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/modelnode.cpp @@ -125,19 +125,6 @@ ModelNode::~ModelNode() { } -QString ModelNode::generateNewId() const -{ - int counter = 1; - QString newId = QString("%1%2").arg(QString::fromUtf8(simplifiedTypeName()).toLower()).arg(counter); - - while (view()->hasId(newId)) { - counter += 1; - newId = QString("%1%2").arg(QString::fromUtf8(simplifiedTypeName()).toLower()).arg(counter); - } - - return newId; -} - /*! \brief returns the name of node which is a short cut to a property like objectName \return name of the node */ @@ -152,7 +139,7 @@ QString ModelNode::id() const QString ModelNode::validId() { if (id().isEmpty()) - setId(generateNewId()); + setId(view()->generateNewId(QString::fromUtf8(simplifiedTypeName()))); return id(); } diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index 8938c9a788b820a45eeeba0a01e4367895efac84..fd1e2c67ae3d8a58e4b5ef7837555854b9ac1563 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -147,17 +147,7 @@ QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibrary if (!newQmlItemNode.isValid()) return newQmlItemNode; - QString id; - int i = 1; - QString name(itemLibraryEntry.name().toLower()); - //remove forbidden characters - name.replace(QRegExp(QLatin1String("[^a-zA-Z0-9_]")), QLatin1String("_")); - do { - id = name + QString::number(i); - i++; - } while (view->hasId(id)); //If the name already exists count upwards - - newQmlItemNode.setId(id); + newQmlItemNode.setId(view->generateNewId("image")); if (!QmlModelState(view->actualStateNode()).isBaseState()) { newQmlItemNode.modelNode().variantProperty("opacity").setValue(0); @@ -224,16 +214,8 @@ QmlItemNode QmlItemNode::createQmlItemNodeFromImage(AbstractView *view, const QS Q_ASSERT(newQmlItemNode.isValid()); - QString id; - int i = 1; - QString name("image"); - name.remove(QLatin1Char(' ')); - do { - id = name + QString::number(i); - i++; - } while (view->hasId(id)); //If the name already exists count upwards + newQmlItemNode.setId(view->generateNewId("image")); - newQmlItemNode.setId(id); if (!QmlModelState(view->actualStateNode()).isBaseState()) { newQmlItemNode.modelNode().variantProperty("opacity").setValue(0); newQmlItemNode.setVariantProperty("opacity", 1);