Warning, /plasma/plasma-bigscreen/kcms/wifi/ui/DeviceConnectionItem.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2019 Aditya Mehra <aix.m@outlook.com> 0003 SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 import QtQuick 2.14 0009 import QtQuick.Layouts 1.14 0010 import QtQuick.Controls 2.14 0011 import org.kde.plasma.core 2.0 as PlasmaCore 0012 import org.kde.plasma.components 3.0 as PlasmaComponents 0013 import org.kde.kirigami 2.12 as Kirigami 0014 import org.kde.mycroft.bigscreen 1.0 as BigScreen 0015 import Qt5Compat.GraphicalEffects 0016 import org.kde.plasma.networkmanagement as PlasmaNM 0017 import org.kde.coreaddons 1.0 as KCoreAddons 0018 0019 Item { 0020 id: delegateSettingsItem 0021 property bool activating: model.ConnectionState == PlasmaNM.Enums.Activating 0022 property bool deactivating: model.ConnectionState == PlasmaNM.Enums.Deactivating 0023 property bool predictableWirelessPassword: !model.Uuid && model.Type == PlasmaNM.Enums.Wireless && 0024 (model.SecurityType == PlasmaNM.Enums.StaticWep || model.SecurityType == PlasmaNM.Enums.WpaPsk || 0025 model.SecurityType == PlasmaNM.Enums.Wpa2Psk || model.SecurityType == PlasmaNM.Enums.SAE) 0026 property real rxBytes: 0 0027 property real txBytes: 0 0028 readonly property ListView listView: ListView.view 0029 property bool showSpeed: ConnectionState == PlasmaNM.Enums.Activated && 0030 (Type == PlasmaNM.Enums.Wired || 0031 Type == PlasmaNM.Enums.Wireless || 0032 Type == PlasmaNM.Enums.Gsm || 0033 Type == PlasmaNM.Enums.Cdma) 0034 width: listView.width 0035 height: listView.height 0036 0037 Component.onCompleted: { 0038 if (model.ConnectionState == PlasmaNM.Enums.Activated) { 0039 connectionModel.setDeviceStatisticsRefreshRateMs(DevicePath, showSpeed ? 2000 : 0) 0040 } 0041 } 0042 0043 function itemText() { 0044 if (model.ConnectionState == PlasmaNM.Enums.Activating) { 0045 if (model.Type == PlasmaNM.Enums.Vpn) 0046 return model.VpnState 0047 else 0048 return model.DeviceState 0049 } else if (model.ConnectionState == PlasmaNM.Enums.Deactivating) { 0050 if (model.Type == PlasmaNM.Enums.Vpn) 0051 return model.VpnState 0052 else 0053 return model.DeviceState 0054 } else if (model.ConnectionState == PlasmaNM.Enums.Deactivated) { 0055 var result = model.LastUsed 0056 if (model.SecurityType > PlasmaNM.Enums.NoneSecurity) 0057 result += ", " + model.SecurityTypeString 0058 return result 0059 } else if (model.ConnectionState == PlasmaNM.Enums.Activated) { 0060 return i18n("Connected") 0061 } 0062 } 0063 0064 function itemSignalIcon(signalState) { 0065 if (signalState <= 25){ 0066 return "network-wireless-connected-25" 0067 } else if (signalState <= 50){ 0068 return "network-wireless-connected-50" 0069 } else if (signalState <= 75){ 0070 return "network-wireless-connected-75" 0071 } else if (signalState <= 100){ 0072 return "network-wireless-connected-100" 0073 } else { 0074 return "network-wireless-connected-00" 0075 } 0076 } 0077 0078 onShowSpeedChanged: { 0079 connectionModel.setDeviceStatisticsRefreshRateMs(DevicePath, showSpeed ? 2000 : 0) 0080 } 0081 0082 Timer { 0083 id: timer 0084 repeat: true 0085 interval: 2000 0086 running: showSpeed 0087 property real prevRxBytes 0088 property real prevTxBytes 0089 Component.onCompleted: { 0090 prevRxBytes = RxBytes 0091 prevTxBytes = TxBytes 0092 } 0093 onTriggered: { 0094 rxBytes = (RxBytes - prevRxBytes) * 1000 / interval 0095 txBytes = (TxBytes - prevTxBytes) * 1000 / interval 0096 prevRxBytes = RxBytes 0097 prevTxBytes = TxBytes 0098 } 0099 } 0100 0101 ColumnLayout { 0102 id: colLayoutSettingsItem 0103 anchors { 0104 fill: parent 0105 margins: Kirigami.Units.largeSpacing 0106 } 0107 0108 Item { 0109 Layout.fillWidth: true 0110 Layout.preferredHeight: model.ConnectionState == PlasmaNM.Enums.Activated ? parent.height : parent.height / 3 0111 Layout.alignment: Qt.AlignTop 0112 0113 Kirigami.Icon { 0114 id: dIcon 0115 anchors.top: parent.top 0116 anchors.horizontalCenter: parent.horizontalCenter 0117 width: parent.width 0118 height: width / 3 0119 source: switch(model.Type){ 0120 case PlasmaNM.Enums.Wireless: 0121 return itemSignalIcon(model.Signal) 0122 case PlasmaNM.Enums.Wired: 0123 return "network-wired-activated" 0124 } 0125 } 0126 0127 Kirigami.Heading { 0128 id: label2 0129 width: parent.width 0130 anchors.top: dIcon.bottom 0131 anchors.topMargin: Kirigami.Units.largeSpacing 0132 horizontalAlignment: Text.AlignHCenter 0133 wrapMode: Text.WordWrap 0134 level: 2 0135 maximumLineCount: 2 0136 elide: Text.ElideRight 0137 color: Kirigami.Theme.textColor 0138 text: model.ItemUniqueName 0139 } 0140 0141 Kirigami.Separator { 0142 id: lblSept 0143 anchors.top: label2.bottom 0144 anchors.topMargin: Kirigami.Units.largeSpacing 0145 height: 1 0146 anchors.left: parent.left 0147 anchors.leftMargin: Kirigami.Units.largeSpacing 0148 anchors.right: parent.right 0149 anchors.rightMargin: Kirigami.Units.largeSpacing 0150 } 0151 0152 Rectangle { 0153 id: setCntStatus 0154 width: parent.width 0155 height: Kirigami.Units.gridUnit * 2 0156 anchors.top: lblSept.bottom 0157 anchors.topMargin: Kirigami.Units.smallSpacing 0158 color: Kirigami.Theme.backgroundColor 0159 0160 Item { 0161 anchors.fill: parent 0162 0163 RowLayout { 0164 anchors.centerIn: parent 0165 Kirigami.Icon { 0166 Layout.preferredWidth: Kirigami.Units.iconSizes.medium 0167 Layout.preferredHeight: Kirigami.Units.iconSizes.medium 0168 source: Qt.resolvedUrl("images/green-tick-thick.svg") 0169 visible: model.ConnectionState == PlasmaNM.Enums.Activated ? 1 : 0 0170 } 0171 Kirigami.Heading { 0172 level: 3 0173 text: itemText() 0174 } 0175 } 0176 } 0177 } 0178 0179 Kirigami.Separator { 0180 id: lblSept2 0181 anchors.top: setCntStatus.bottom 0182 anchors.topMargin: Kirigami.Units.smallSpacing 0183 height: 1 0184 anchors.left: parent.left 0185 anchors.leftMargin: Kirigami.Units.largeSpacing 0186 anchors.right: parent.right 0187 anchors.rightMargin: Kirigami.Units.largeSpacing 0188 } 0189 0190 DetailsText { 0191 id: detailsTxtArea 0192 visible: true 0193 details: ConnectionDetails 0194 connected: model.ConnectionState == PlasmaNM.Enums.Activated ? 1 : 0 0195 connectionType: model.Type 0196 clip: true 0197 anchors { 0198 left: parent.left 0199 right: parent.right 0200 top: lblSept2.bottom 0201 topMargin: Kirigami.Units.largeSpacing 0202 bottom: lblSept3.top 0203 bottomMargin: Kirigami.Units.smallSpacing 0204 } 0205 } 0206 0207 Kirigami.Separator { 0208 id: lblSept3 0209 anchors.bottom: label3.top 0210 anchors.bottomMargin: Kirigami.Units.smallSpacing 0211 visible: model.ConnectionState == PlasmaNM.Enums.Activated ? 1 : 0 0212 height: 1 0213 anchors.left: parent.left 0214 anchors.leftMargin: Kirigami.Units.largeSpacing 0215 anchors.right: parent.right 0216 anchors.rightMargin: Kirigami.Units.largeSpacing 0217 } 0218 0219 RowLayout { 0220 id: label3 0221 width: parent.width 0222 anchors.bottom: parent.bottom 0223 anchors.bottomMargin: Kirigami.Units.smallSpacing 0224 visible: model.ConnectionState == PlasmaNM.Enums.Activated ? 1 : 0 0225 0226 Kirigami.Heading { 0227 Layout.fillWidth: true 0228 Layout.alignment: Qt.AlignLeft 0229 Layout.leftMargin: Kirigami.Units.largeSpacing 0230 wrapMode: Text.WordWrap 0231 level: 3 0232 maximumLineCount: 1 0233 elide: Text.ElideRight 0234 color: Kirigami.Theme.textColor 0235 text: i18n("Speed") 0236 } 0237 0238 PlasmaComponents.Label { 0239 Layout.alignment: Qt.AlignRight 0240 Layout.maximumWidth: Kirigami.Units.gridUnit * 4 0241 text: "⬇ " + KCoreAddons.Format.formatByteSize(rxBytes) 0242 } 0243 0244 PlasmaComponents.Label { 0245 Layout.alignment: Qt.AlignRight 0246 Layout.maximumWidth: Kirigami.Units.gridUnit * 4 0247 text: "⬆ " + KCoreAddons.Format.formatByteSize(txBytes) 0248 } 0249 } 0250 } 0251 0252 Item { 0253 Layout.fillWidth: true 0254 Layout.preferredHeight: Kirigami.Units.gridUnit 0255 } 0256 } 0257 }