import QtQuick import QtQuick.Controls import QtQuick.Layouts // Подтверждение удаления. Для непустой папки требуется двойное подтверждение: // первое нажатие показывает предупреждение, второе — удаляет. Dialog { id: root property string message: "" property bool doubleConfirm: false signal confirmed() title: qsTr("Подтверждение") modal: true width: 420 anchors.centerIn: parent closePolicy: Dialog.NoAutoClose standardButtons: Dialog.NoButton property bool armed: false function resetDialog() { root.armed = false deleteButton.text = qsTr("Удалить") warnLabel.visible = false } onOpened: root.resetDialog() ColumnLayout { anchors.fill: parent spacing: 12 Label { Layout.fillWidth: true wrapMode: Text.Wrap text: root.message } Label { id: warnLabel Layout.fillWidth: true wrapMode: Text.Wrap visible: false color: "#b00020" text: qsTr("Внимание: папка содержит файлы. Они будут удалены безвозвратно.\n" + "Если вы уверены — нажмите «Точно удалить».") } RowLayout { Layout.fillWidth: true Item { Layout.fillWidth: true } Button { text: qsTr("Отмена") onClicked: root.reject() } Button { id: deleteButton text: qsTr("Удалить") highlighted: root.armed onClicked: { if (root.doubleConfirm && !root.armed) { root.armed = true deleteButton.text = qsTr("Точно удалить") warnLabel.visible = true return } root.confirmed() root.accept() } } } } }