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

0001 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0002 // SPDX-FileCopyrightText: 2018 Alexis Lopes Zubeta <contact@azubieta.net>
0003 // SPDX-FileCopyrightText: 2020 Tomaz Canabrava <tcanabrava@kde.org>
0004 
0005 import QtQuick 2.12
0006 import QtQuick.Controls 2.0
0007 import QtQuick.Layouts 1.1
0008 
0009 import QtQuick.Controls 2.12 as QQC2
0010 import org.kde.kirigami 2.4 as Kirigami
0011 
0012 import org.kcm.firewall 1.0 as Firewall
0013 
0014 FocusScope {
0015     id: ruleEdit
0016 
0017     property bool busy: false
0018     property bool ready: (!advancedRuleEdit.sourceAddress.length || advancedRuleEdit.sourceAddress.acceptableInput)
0019                           && (!advancedRuleEdit.destinationAddress.length || advancedRuleEdit.destinationAddress.acceptableInput)
0020                           && !(advancedRuleEdit.sourceAddress.text == advancedRuleEdit.destinationAddress.text
0021                                && advancedRuleEdit.sourcePort.text == advancedRuleEdit.destinationPort.text)
0022                           || simple.index != -1
0023     property alias simple: simpleRuleEdit
0024 
0025     property Firewall.FirewallClient client: null
0026 
0027     property var defaultOutgoingPolicyRule: null
0028     property var defaultIncomingPolicyRule: null
0029 
0030     property var rule: Firewall.Rule {
0031         policy: "deny"
0032         incoming: true
0033         logging: "none"
0034         protocol: 0
0035     }
0036 
0037     property var ruleChoices : [
0038         {text: i18n("None"), data: "none"},
0039         {text: i18n("New Connections"), data: "log"},
0040         {text: i18n("All Packets"), data: "log-all"}
0041     ]
0042     property bool newRule: false
0043 
0044     enabled: !busy
0045 
0046     implicitWidth: formLayout.implicitWidth
0047     implicitHeight: formLayout.implicitHeight
0048 
0049     Kirigami.FormLayout {
0050         id: formLayout
0051         width: parent.width
0052         Kirigami.InlineMessage {
0053             Layout.fillWidth: true
0054             type: Kirigami.MessageType.Information
0055             text: rule.incoming ? i18n("The default incoming policy is already '%1'.", advancedRuleEdit.policy.currentText)
0056                                 : i18n("The default outgoing policy is already '%1'.", advancedRuleEdit.policy.currentText)
0057             visible: rule.policy === (advancedRuleEdit.incoming.checked ? defaultIncomingPolicyRule : defaultOutgoingPolicyRule) && advancedRules.checked
0058         }
0059         Kirigami.InlineMessage {
0060             Layout.fillWidth: true
0061             type: Kirigami.MessageType.Information
0062             text: rule.incoming ? i18n("The default incoming policy is already '%1'.", advancedRuleEdit.policy.currentText)
0063                                 : i18n("The default outgoing policy is already '%1'.", advancedRuleEdit.policy.currentText)
0064             visible: rule.policy === (simple.incoming.checked ? defaultIncomingPolicyRule : defaultOutgoingPolicyRule) && !advancedRules.checked
0065         }
0066         SimpleRuleEdit {
0067             id: simpleRuleEdit
0068             visible: !advancedRules.checked
0069         }
0070 
0071         CheckBox {
0072             id: advancedRules
0073             text:"Advanced"
0074             onClicked: rule.simplified = !rule.simplified
0075             checked: rule.simplified ? false : true // show advanced mode directly if isn't simple !
0076         }
0077 
0078         AdvancedRuleEdit {
0079             id: advancedRuleEdit
0080             rule: ruleEdit.rule
0081             visible: advancedRules.checked
0082         }
0083     }
0084 }