1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
/**
* SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk>
* SPDX-License-Identifier: GPL-2.0-or-later
*/
import QtQuick
import QtQuick.Controls as QQC2
import QtQuick.Layouts
import org.kde.kirigami as Kirigami
import org.kde.plasma.kcm.flatpakpermissions
Kirigami.PromptDialog {
id: root
required property FlatpakPermissionModel model
title: i18n("Set Environment Variable")
standardButtons: QQC2.Dialog.Ok | QQC2.Dialog.Discard
closePolicy: QQC2.Popup.CloseOnEscape
QQC2.Overlay.modal: KcmPopupModal {}
Kirigami.FormLayout {
QQC2.TextField {
id: nameField
Layout.fillWidth: true
Keys.onEnterPressed: valueField.forceActiveFocus(Qt.TabFocusReason)
Keys.onReturnPressed: valueField.forceActiveFocus(Qt.TabFocusReason)
KeyNavigation.down: valueField
Kirigami.FormData.label: i18nc("@label:textbox name of environment variable", "Name:")
}
QQC2.TextField {
id: valueField
Layout.fillWidth: true
Keys.onEnterPressed: root.accepted()
Keys.onReturnPressed: root.accepted()
Kirigami.FormData.label: i18nc("@label:textbox value of environment variable", "Value:")
// No validation needed, empty value is also acceptable.
}
}
function acceptableInput() {
const name = nameField.text;
if (permsModel.permissionExists(FlatpakPermissionsSectionType.Environment, name)) {
return false;
}
return permsModel.isEnvironmentVariableNameValid(name);
}
onOpened: {
const ok = standardButton(QQC2.Dialog.Ok);
ok.enabled = Qt.binding(() => acceptableInput());
ok.KeyNavigation.up = valueField;
const discard = standardButton(QQC2.Dialog.Discard);
discard.KeyNavigation.up = valueField;
nameField.forceActiveFocus(Qt.PopupFocusReason);
}
onAccepted: {
if (acceptableInput()) {
const name = nameField.text;
const value = valueField.text;
model.addUserEnteredPermission(FlatpakPermissionsSectionType.Environment, name, value);
close();
}
}
onDiscarded: {
close();
}
}
|