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,