Warning, /plasma/plasma-bigscreen/kcms/wifi/ui/NetworkItem.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2018 Aditya Mehra <aix.m@outlook.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 
0006 */
0007 
0008 import QtQuick 2.14
0009 import QtQuick.Layouts 1.14
0010 import org.kde.plasma.core 2.0 as PlasmaCore
0011 import org.kde.plasma.networkmanagement as PlasmaNM
0012 import org.kde.kirigami 2.12 as Kirigami
0013 
0014 Kirigami.AbstractListItem {
0015     id: connectionItem
0016 
0017     property bool activating: model.ConnectionState == PlasmaNM.Enums.Activating
0018     property bool deactivating: model.ConnectionState == PlasmaNM.Enums.Deactivating
0019     property bool predictableWirelessPassword: !model.Uuid && model.Type == PlasmaNM.Enums.Wireless &&
0020                                                (model.SecurityType == PlasmaNM.Enums.StaticWep || model.SecurityType == PlasmaNM.Enums.WpaPsk ||
0021                                                 model.SecurityType == PlasmaNM.Enums.Wpa2Psk)
0022 
0023     checked: connectionView.currentIndex === index && connectionView.activeFocus
0024     contentItem: Item {
0025         implicitWidth: delegateLayout.implicitWidth;
0026         implicitHeight: delegateLayout.implicitHeight;
0027 
0028         ColumnLayout {
0029             id: delegateLayout
0030             anchors {
0031                 left: parent.left;
0032                 top: parent.top;
0033                 right: parent.right;
0034             }
0035 
0036             RowLayout {
0037                 Layout.fillWidth: true
0038                 spacing: Math.round(units.gridUnit / 2)
0039 
0040                 Kirigami.Icon {
0041                     id: connectionSvgIcon
0042                     Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
0043                     Layout.preferredHeight: PlasmaCore.Units.iconSizes.medium
0044                     Layout.preferredWidth: PlasmaCore.Units.iconSizes.medium
0045                     color: Kirigami.Theme.textColor
0046                     //elementId: model.ConnectionIcon
0047                     source: itemSignalIcon(model.Signal)
0048                 }
0049 
0050                 ColumnLayout {
0051                     Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
0052 
0053                     Kirigami.Heading {
0054                         id: connectionNameLabel
0055                         Layout.alignment: Qt.AlignLeft
0056                         level: 2
0057                         elide: Text.ElideRight
0058                         font.weight: model.ConnectionState == PlasmaNM.Enums.Activated ? Font.DemiBold : Font.Normal
0059                         font.italic: model.ConnectionState == PlasmaNM.Enums.Activating ? true : false
0060                         text: model.ItemUniqueName
0061                         textFormat: Text.PlainText
0062                     }
0063 
0064                     Kirigami.Heading {
0065                         id: connectionStatusLabel
0066                         Layout.alignment: Qt.AlignLeft
0067                         level: 3
0068                         elide: Text.ElideRight
0069                         opacity: 0.6
0070                         text: itemText()
0071                     }
0072                 }
0073             }
0074         }
0075     }
0076 
0077     function itemText() {
0078         if (model.ConnectionState == PlasmaNM.Enums.Activating) {
0079             if (model.Type == PlasmaNM.Enums.Vpn)
0080                 return model.VpnState
0081             else
0082                 return model.DeviceState
0083         } else if (model.ConnectionState == PlasmaNM.Enums.Deactivating) {
0084             if (model.Type == PlasmaNM.Enums.Vpn)
0085                 return model.VpnState
0086             else
0087                 return model.DeviceState
0088         } else if (model.ConnectionState == PlasmaNM.Enums.Deactivated) {
0089             var result = model.LastUsed
0090             if (model.SecurityType > PlasmaNM.Enums.NoneSecurity)
0091                 result += ", " + model.SecurityTypeString
0092             return result
0093         } else if (model.ConnectionState == PlasmaNM.Enums.Activated) {
0094                 return i18n("Connected")
0095         }
0096     }
0097     
0098     function itemSignalIcon(signalState) {
0099         if (signalState <= 25){
0100             return "network-wireless-connected-25"
0101         } else if (signalState <= 50){
0102             return "network-wireless-connected-50"
0103         } else if (signalState <= 75){
0104             return "network-wireless-connected-75"
0105         } else if (signalState <= 100){
0106             return "network-wireless-connected-100"
0107         } else {
0108             return "network-wireless-connected-00"
0109         }
0110     }
0111 
0112     Keys.onReturnPressed: clicked()
0113     onClicked: {
0114         if (!model.ConnectionPath) {
0115             networkSelectionView.devicePath = model.DevicePath
0116             networkSelectionView.specificPath = model.SpecificPath
0117             networkSelectionView.connectionName = connectionNameLabel.text
0118             networkSelectionView.securityType = model.SecurityType
0119             passwordLayer.open();
0120         } else if (model.ConnectionState == PlasmaNM.Enums.Deactivated) {
0121             handler.activateConnection(model.ConnectionPath, model.DevicePath, model.SpecificPath)
0122         } else {
0123             handler.deactivateConnection(model.ConnectionPath, model.DevicePath)
0124         }
0125     }
0126 
0127     onPressAndHold: {
0128         pathToRemove = model.ConnectionPath
0129         nameToRemove = model.ItemUniqueName
0130         networkActions.open()
0131     }
0132 }