From 125eb66b79f17868caab8e06faab95cf6229a672 Mon Sep 17 00:00:00 2001 From: Marco Bubke <marco.bubke@digia.com> Date: Mon, 29 Jul 2013 14:57:37 +0200 Subject: [PATCH] QmlDesigner: Move generateNewId to AbstractView Change-Id: I8753eae6c4f79967822003709e7cd35dbea4eeba Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com> --- .../designercore/include/abstractview.h | 1 + .../designercore/include/modelnode.h | 2 +- .../designercore/model/abstractview.cpp | 14 ++++++++++++ .../designercore/model/modelnode.cpp | 15 +------------ .../designercore/model/qmlitemnode.cpp | 22 ++----------------- 5 files changed, 19 insertions(+), 35 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/include/abstractview.h b/src/plugins/qmldesigner/designercore/include/abstractview.h index d29f3e4b6e8..695aa16826c 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 63b63c4ad5f..5f6eff7f00b 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 4e8eac4e9a1..7a29ce0d8c8 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 06a016f4fed..a46fcd898c7 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 8938c9a788b..fd1e2c67ae3 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); -- GitLab