From 0c6f18ac2ac82e2abc0f6a2fbc9f28a4dab3dea1 Mon Sep 17 00:00:00 2001 From: Vikas Pachdha Date: Tue, 25 Mar 2025 14:29:27 +0100 Subject: [PATCH] DesignSystem: Generate unique collection name on creating new collection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QDS-14670 Change-Id: I7f3609535a2d7d3005d3146bc33c118cce9163d7 Reviewed-by: Thomas Hartmann Reviewed-by: Henning Gründl --- share/qtcreator/qmldesigner/designsystem/Main.qml | 8 +++++--- .../components/designsystemview/designsysteminterface.cpp | 5 +++++ .../components/designsystemview/designsysteminterface.h | 1 + src/plugins/qmldesigner/libs/designsystem/dsstore.h | 3 ++- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/qmldesigner/designsystem/Main.qml b/share/qtcreator/qmldesigner/designsystem/Main.qml index 7021a91edc1..ffcffe81dd0 100644 --- a/share/qtcreator/qmldesigner/designsystem/Main.qml +++ b/share/qtcreator/qmldesigner/designsystem/Main.qml @@ -154,6 +154,7 @@ Rectangle { StudioControls.Dialog { id: createCollectionDialog + property alias newCollectionName: createCollectionTextField.text; title: qsTr("Create collection") width: Math.min(300, root.width) closePolicy: Popup.CloseOnEscape @@ -172,8 +173,6 @@ Rectangle { translationIndicatorVisible: false width: parent.width - text: qsTr("NewCollection") - onAccepted: createCollectionDialog.accept() onRejected: createCollectionDialog.reject() } @@ -318,7 +317,10 @@ Rectangle { StudioControls.MenuItem { text: qsTr("Create collection") - onTriggered: createCollectionDialog.open() + onTriggered: { + createCollectionDialog.newCollectionName = DesignSystemBackend.dsInterface.generateCollectionName(qsTr("NewCollection")); + createCollectionDialog.open() + } } } } diff --git a/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.cpp b/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.cpp index 0634a5f19cc..ffdfe2eff6f 100644 --- a/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.cpp +++ b/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.cpp @@ -42,6 +42,11 @@ CollectionModel *DesignSystemInterface::model(const QString &typeName) return nullptr; } +QString DesignSystemInterface::generateCollectionName(const QString &hint) const +{ + return m_store->uniqueCollectionName(hint); +} + void DesignSystemInterface::addCollection(const QString &name) { if (m_store->addCollection(name)) diff --git a/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.h b/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.h index fd732fb88b6..ef104387a4c 100644 --- a/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.h +++ b/src/plugins/qmldesigner/components/designsystemview/designsysteminterface.h @@ -24,6 +24,7 @@ public: Q_INVOKABLE void loadDesignSystem(); Q_INVOKABLE CollectionModel *model(const QString &typeName); + Q_INVOKABLE QString generateCollectionName(const QString &hint) const; Q_INVOKABLE void addCollection(const QString &name); Q_INVOKABLE void removeCollection(const QString &name); Q_INVOKABLE void renameCollection(const QString &oldName, const QString &newName); diff --git a/src/plugins/qmldesigner/libs/designsystem/dsstore.h b/src/plugins/qmldesigner/libs/designsystem/dsstore.h index 2ad120aa6ea..7912dd4da3f 100644 --- a/src/plugins/qmldesigner/libs/designsystem/dsstore.h +++ b/src/plugins/qmldesigner/libs/designsystem/dsstore.h @@ -40,8 +40,9 @@ public: ThemeProperty resolvedDSBinding(QStringView binding) const; -private: QString uniqueCollectionName(const QString &hint) const; + +private: std::optional loadCollection(const QString &typeName, const Utils::FilePath &qmlFilePath); std::optional writeQml(const DSThemeManager &mgr, const QString &typeName,