Warning, /plasma/plasma-mobile/initialstart/modules/wifi/package/contents/ui/main.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2017 Martin Kacej <m.kacej@atlas.sk>
0002 // SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org>
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 import QtQuick
0006 import QtQuick.Controls
0007 import QtQuick.Layouts
0008 
0009 import org.kde.kirigami 2.20 as Kirigami
0010 import org.kde.kirigamiaddons.formcard 1.0 as FormCard
0011 import org.kde.plasma.networkmanagement as PlasmaNM
0012 import org.kde.plasma.mobileinitialstart.wifi 1.0 as WiFi
0013 
0014 Item {
0015     id: root
0016     property string name: i18n("Network")
0017 
0018     readonly property real cardWidth: Math.min(Kirigami.Units.gridUnit * 30, root.width - Kirigami.Units.gridUnit * 2)
0019 
0020     PlasmaNM.Handler {
0021         id: handler
0022     }
0023 
0024     PlasmaNM.EnabledConnections {
0025         id: enabledConnections
0026     }
0027 
0028     PlasmaNM.NetworkModel {
0029         id: connectionModel
0030     }
0031 
0032     PlasmaNM.MobileProxyModel {
0033         id: mobileProxyModel
0034         sourceModel: connectionModel
0035         showSavedMode: false
0036     }
0037 
0038     ConnectDialog {
0039         id: connectionDialog
0040     }
0041 
0042     Component.onCompleted: handler.requestScan()
0043 
0044     Timer {
0045         id: scanTimer
0046         interval: 10200
0047         repeat: true
0048         running: parent.visible
0049 
0050         onTriggered: handler.requestScan()
0051     }
0052 
0053     ColumnLayout {
0054         anchors {
0055             fill: parent
0056             topMargin: Kirigami.Units.gridUnit
0057             bottomMargin: Kirigami.Units.largeSpacing
0058         }
0059 
0060         width: root.width
0061         spacing: Kirigami.Units.gridUnit
0062 
0063         Label {
0064             Layout.leftMargin: Kirigami.Units.gridUnit
0065             Layout.rightMargin: Kirigami.Units.gridUnit
0066             Layout.alignment: Qt.AlignTop
0067             Layout.fillWidth: true
0068 
0069             wrapMode: Text.Wrap
0070             horizontalAlignment: Text.AlignHCenter
0071             text: i18n("Connect to a WiFi network for network access.")
0072         }
0073 
0074         FormCard.FormCard {
0075             id: savedCard
0076             maximumWidth: root.cardWidth
0077             visible: enabledConnections.wirelessEnabled && count > 0
0078 
0079             // number of visible entries
0080             property int count: 0
0081             function updateCount() {
0082                 count = 0;
0083                 for (let i = 0; i < connectedRepeater.count; i++) {
0084                     let item = connectedRepeater.itemAt(i);
0085                     if (item && item.shouldDisplay) {
0086                         count++;
0087                     }
0088                 }
0089             }
0090 
0091             Repeater {
0092                 id: connectedRepeater
0093                 model: mobileProxyModel
0094                 delegate: ConnectionItemDelegate {
0095                     editMode: false
0096                     
0097                     // connected or saved
0098                     property bool shouldDisplay: (Uuid != "") || ConnectionState === PlasmaNM.Enums.Activated
0099                     onShouldDisplayChanged: savedCard.updateCount()
0100                     
0101                     // separate property for visible since visible is false when the whole card is not visible
0102                     visible: (Uuid != "") || ConnectionState === PlasmaNM.Enums.Activated
0103                 }
0104             }
0105         }
0106 
0107         FormCard.FormCard {
0108             Layout.fillHeight: true
0109             maximumWidth: root.cardWidth
0110             visible: enabledConnections.wirelessEnabled
0111 
0112             ListView {
0113                 id: listView
0114 
0115                 clip: true
0116                 Layout.fillWidth: true
0117                 Layout.fillHeight: true
0118                 model: mobileProxyModel
0119 
0120                 delegate: ConnectionItemDelegate {
0121                     width: ListView.view.width
0122                     editMode: false
0123                     height: visible ? implicitHeight : 0
0124                     visible: !((Uuid != "") || ConnectionState === PlasmaNM.Enums.Activated)
0125                 }
0126             }
0127         }
0128     }
0129 }
0130 
0131