pragma ComponentBehavior: Bound import QtQuick import QtCore import QtQuick.Controls as QQC2 import QtQuick.Layouts import org.kde.kirigami as Kirigami import org.kde.kirigamiaddons.formcard as FormCard import org.deprecated.kodereviewer 1.0 Kirigami.Dialog { id: root standardButtons: Kirigami.Dialog.Ok | Kirigami.Dialog.Cancel title: i18nc("@title:window", "Review changes") padding: Kirigami.Units.largeSpacing preferredWidth: Kirigami.Units.gridUnit * 20 property string event: '' property alias reviewBodyText: reviewBody.text ColumnLayout { MarkdownTextArea { id: reviewBody Layout.fillWidth: true } Kirigami.Separator { Kirigami.FormData.isSection: true Layout.fillWidth: true } QQC2.RadioButton { id: approveRadioButton text: "Approve" onCheckedChanged: if(checked) { root.event = 'APPROVE' } } QQC2.RadioButton { id: commentRadioButton text: "Comment" onCheckedChanged: if(checked) { root.event = 'COMMENT' } } QQC2.RadioButton { id: requestChangesRadioButton text: "Request changes" onCheckedChanged: if(checked) { root.event = 'REQUEST_CHANGES' } } } function requiredFieldsFilled() { // Approve doesn't need a message. if (event == 'APPROVE') { return true } return event != '' && reviewBodyText != '' } function clearForm() { reviewBodyText = '' approveRadioButton.checked = false commentRadioButton.checked = false requestChangesRadioButton.checked = false event = '' } Component.onCompleted: { const button = standardButton(Kirigami.Dialog.Ok); button.enabled = Qt.binding( () => requiredFieldsFilled() ); } }