Warning, /plasma/flatpak-kcm/ui/AddEnvironmentVariableDialog.qml is written in an unsupported language. File is not indexed.

0001 /**
0002  * SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk>
0003  * SPDX-License-Identifier: GPL-2.0-or-later
0004  */
0005 
0006 import QtQuick
0007 import QtQuick.Controls as QQC2
0008 import QtQuick.Layouts
0009 
0010 import org.kde.kirigami as Kirigami
0011 import org.kde.plasma.kcm.flatpakpermissions
0012 
0013 Kirigami.PromptDialog {
0014     id: root
0015 
0016     required property FlatpakPermissionModel model
0017 
0018     title: i18n("Set Environment Variable")
0019     standardButtons: QQC2.Dialog.Ok | QQC2.Dialog.Discard
0020     closePolicy: QQC2.Popup.CloseOnEscape
0021 
0022     QQC2.Overlay.modal: KcmPopupModal {}
0023 
0024     Kirigami.FormLayout {
0025         QQC2.TextField {
0026             id: nameField
0027 
0028             Layout.fillWidth: true
0029 
0030             Keys.onEnterPressed: valueField.forceActiveFocus(Qt.TabFocusReason)
0031             Keys.onReturnPressed: valueField.forceActiveFocus(Qt.TabFocusReason)
0032             KeyNavigation.down: valueField
0033 
0034             Kirigami.FormData.label: i18nc("@label:textbox name of environment variable", "Name:")
0035         }
0036 
0037         QQC2.TextField {
0038             id: valueField
0039 
0040             Layout.fillWidth: true
0041 
0042             Keys.onEnterPressed: root.accepted()
0043             Keys.onReturnPressed: root.accepted()
0044 
0045             Kirigami.FormData.label: i18nc("@label:textbox value of environment variable", "Value:")
0046             // No validation needed, empty value is also acceptable.
0047         }
0048     }
0049 
0050     function acceptableInput() {
0051         const name = nameField.text;
0052 
0053         if (permsModel.permissionExists(FlatpakPermissionsSectionType.Environment, name)) {
0054             return false;
0055         }
0056 
0057         return permsModel.isEnvironmentVariableNameValid(name);
0058     }
0059 
0060     onOpened: {
0061         const ok = standardButton(QQC2.Dialog.Ok);
0062         ok.enabled = Qt.binding(() => acceptableInput());
0063         ok.KeyNavigation.up = valueField;
0064 
0065         const discard = standardButton(QQC2.Dialog.Discard);
0066         discard.KeyNavigation.up = valueField;
0067 
0068         nameField.forceActiveFocus(Qt.PopupFocusReason);
0069     }
0070 
0071     onAccepted: {
0072         if (acceptableInput()) {
0073             const name = nameField.text;
0074             const value = valueField.text;
0075             model.addUserEnteredPermission(FlatpakPermissionsSectionType.Environment, name, value);
0076             close();
0077         }
0078     }
0079 
0080     onDiscarded: {
0081         close();
0082     }
0083 }