summaryrefslogtreecommitdiffstats
path: root/startupscreen/NetworkSettings/NetworkListView.qml
diff options
context:
space:
mode:
Diffstat (limited to 'startupscreen/NetworkSettings/NetworkListView.qml')
-rw-r--r--startupscreen/NetworkSettings/NetworkListView.qml115
1 files changed, 115 insertions, 0 deletions
diff --git a/startupscreen/NetworkSettings/NetworkListView.qml b/startupscreen/NetworkSettings/NetworkListView.qml
new file mode 100644
index 0000000..5ac722e
--- /dev/null
+++ b/startupscreen/NetworkSettings/NetworkListView.qml
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2022 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt for Device Creation.
+**
+** $QT_BEGIN_LICENSE:GPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 or (at your option) any later version
+** approved by the KDE Free Qt Foundation. The licenses are as published by
+** the Free Software Foundation and appearing in the file LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+import QtQuick
+import QtDeviceUtilities.NetworkSettings
+
+
+Item {
+ id: root
+
+ property var connectingService: null
+ property bool retryConnectAfterIdle: false
+
+ Connections {
+ target: NetworkSettingsManager.userAgent
+ function onShowUserCredentialsInput() {
+ passphraseEnter.visible = true;
+ }
+ }
+
+ function connectBySsid() {
+ passphraseEnter.showSsid = true
+ passphraseEnter.visible = true
+ }
+
+ function connectingServiceStateChange() {
+ if (connectingService) {
+ if (connectingService.state === NetworkSettingsState.Failure) {
+ // If authentication failed, request connection again. That will
+ // initiate new passphrase request.
+ retryConnectAfterIdle = true
+ } else if (connectingService.state === NetworkSettingsState.Ready) {
+ // If connection succeeded, we no longer have service connecting
+ connectingService = null;
+ retryConnectAfterIdle = false;
+ } else if (connectingService.state === NetworkSettingsState.Idle) {
+ if (retryConnectAfterIdle) {
+ passphraseEnter.extraInfo = qsTr("Invalid passphrase");
+ connectingService.connectService();
+ }
+ retryConnectAfterIdle = false;
+ }
+ }
+ }
+
+ NetworkDelegate {
+ id: manualConnectionPane
+ anchors.top: parent.top
+ anchors.right: parent.right
+ visible: wifiSwitch.checked
+ nameLabelText: qsTr("Manual connection")
+ ipLabelText: qsTr("Add a new connection manually")
+ ipText: ""
+ isConnected: false
+ onClicked: connectBySsid()
+ }
+
+ ListView {
+ id: list
+ clip: true
+ focus: true
+ boundsBehavior: Flickable.DragOverBounds
+ model: NetworkSettingsManager.services
+
+ anchors.top: manualConnectionPane.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ visible: wifiSwitch.checked
+
+ delegate: NetworkDelegate {
+ isConnected: connected
+ ipText: isConnected ? NetworkSettingsManager.services.itemFromRow(index).ipv4.address
+ : (NetworkSettingsManager.services.itemFromRow(index).state === NetworkSettingsState.Idle) ?
+ qsTr("Not connected") : qsTr("Connecting")
+ onClicked: {
+ if (isConnected) {
+ NetworkSettingsManager.services.itemFromRow(index).disconnectService();
+ } else {
+ root.connectingService = NetworkSettingsManager.services.itemFromRow(index)
+ if (root.connectingService) {
+ passphraseEnter.extraInfo = "";
+ root.connectingService.connectService();
+ root.connectingService.stateChanged.connect(connectingServiceStateChange);
+ }
+ }
+ }
+ }
+ }
+}