diff --git a/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectMaker.qml b/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectMaker.qml index 49731b37130..56fcdcf5a30 100644 --- a/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectMaker.qml +++ b/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectMaker.qml @@ -15,13 +15,19 @@ Item { property int moveFromIdx: 0 property int moveToIdx: 0 + SaveDialog { + id: saveDialog + anchors.centerIn: parent + onAccepted: print("TODO: export and save effect files") + } + Column { id: col anchors.fill: parent spacing: 1 EffectMakerTopBar { - + onSaveClicked: saveDialog.open() } EffectMakerPreview { diff --git a/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectMakerTopBar.qml b/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectMakerTopBar.qml index eb5463f3bdf..c8758ff2ebb 100644 --- a/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectMakerTopBar.qml +++ b/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectMakerTopBar.qml @@ -15,15 +15,15 @@ Rectangle { height: StudioTheme.Values.toolbarHeight color: StudioTheme.Values.themeToolbarBackground + signal saveClicked + HelperWidgets.Button { anchors.verticalCenter: parent.verticalCenter x: 5 text: qsTr("Save in Library") - onClicked: { - // TODO - } + onClicked: root.saveClicked() } HelperWidgets.AbstractButton { diff --git a/share/qtcreator/qmldesigner/effectMakerQmlSources/SaveDialog.qml b/share/qtcreator/qmldesigner/effectMakerQmlSources/SaveDialog.qml new file mode 100644 index 00000000000..309dd433395 --- /dev/null +++ b/share/qtcreator/qmldesigner/effectMakerQmlSources/SaveDialog.qml @@ -0,0 +1,88 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +import QtQuick +import QtQuick.Controls +import HelperWidgets as HelperWidgets +import StudioControls as StudioControls +import StudioTheme as StudioTheme +import AssetsLibraryBackend + +StudioControls.Dialog { + id: root + + title: qsTr("Save Effect") + + closePolicy: Popup.CloseOnEscape + modal: true + implicitWidth: 250 + + onOpened: { + nameText.text = "" + emptyText.opacity = 0 + nameText.forceActiveFocus() + } + + HelperWidgets.RegExpValidator { + id: validator + regExp: /^(\w[^*/>