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 }