diff options
Diffstat (limited to 'examples/deviceutilities/settingsuiapp/DeviceUtilities/SettingsUI/Network/WifiSettings.qml')
-rw-r--r-- | examples/deviceutilities/settingsuiapp/DeviceUtilities/SettingsUI/Network/WifiSettings.qml | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/examples/deviceutilities/settingsuiapp/DeviceUtilities/SettingsUI/Network/WifiSettings.qml b/examples/deviceutilities/settingsuiapp/DeviceUtilities/SettingsUI/Network/WifiSettings.qml new file mode 100644 index 0000000..7b4f246 --- /dev/null +++ b/examples/deviceutilities/settingsuiapp/DeviceUtilities/SettingsUI/Network/WifiSettings.qml @@ -0,0 +1,252 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Device Utilities module of the Qt Toolkit. +** +** $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 QtQuick.Layouts +import QtQuick.Controls +import QtDeviceUtilities.NetworkSettings + +Item { + id: root + anchors.fill: parent + Component.onCompleted: NetworkSettingsManager.services.type = NetworkSettingsType.Wifi; + property bool connecting: false + property var selectedInterface: undefined + + Flickable { + anchors.fill: parent + contentHeight: content.height + contentWidth: width + + GroupBox { + title: qsTr("Wireless Settings") + width: parent.width + + ColumnLayout { + id: content + spacing: 20 + width: parent.width + + RowLayout { + spacing: 10 + id: enableSwitch + width: parent.width + + Label { + Layout.preferredWidth: root.width * 0.382 + Layout.alignment: Qt.AlignVCenter + horizontalAlignment: Text.AlignRight + text: selectedInterface.powered ? qsTr("Wi-Fi ON") : qsTr("Wi-Fi OFF") + } + Switch { + checked: selectedInterface.powered + onCheckedChanged: { + selectedInterface.powered = checked + root.connecting = false + connectView.visible = false + } + } + } + RowLayout { + spacing: 10 + width: parent.width + + visible: selectedInterface.powered && networkSelection.count > 0 + Label { + Layout.preferredWidth: root.width * 0.382 + text: qsTr("Current network") + horizontalAlignment: Text.AlignRight + Layout.alignment: Qt.AlignVCenter + + } + ComboBoxEntry { + id: networkSelection + model: NetworkSettingsManager.services + + textRole: "name" + Layout.fillWidth: true + onActivated: function(index) { + if (index >= 0) { + connectView.visible = false + + var service = model.itemFromRow(index) + if (service) { + root.connecting = true + service.connectService(); + } + } + } + + onCountChanged: { + if (count === 0) { + root.connecting = false + connectView.visible = false + } + } + + Component.onCompleted: { + networkSelection.currentIndex = model.activeRow() + } + + delegate: WifiSelectorDelegate { + width: networkSelection.width + onConnectChanged: if (connect) networkSelection.currentIndex = index + } + } + } + + Row { + id: infoRow + spacing: 10 + width: parent.width + visible: selectedInterface.powered && selectedInterface.state !== NetworkSettingsState.Online + Label { + id: scanningText + text: { + if (networkSelection.count == 0) + return qsTr("Searching for Wi-Fi networks...") + else if (root.connecting) + return qsTr("Connecting to the network...") + else + return "" + } + horizontalAlignment: Text.AlignLeft + } + WifiSignalMonitor { + id: scanningIcon + scanning: true + visible: scanningText.text !== "" + height: scanningText.height + width: height + } + } + + GroupBox { + id: connectView + title: qsTr("Enter a passphrase") + visible: false + Layout.fillWidth: true + ColumnLayout { + width: parent.width + + RowLayout { + id: errorView + visible: text.text !== "" + spacing: 10 + property alias text: text.text + + Image { + source: "icons/Alert_yellow_1x.png" + Layout.alignment: Qt.AlignVCenter + } + Text { + id: text + color: "#face20" + text: "" + Layout.alignment: Qt.AlignVCenter + } + } + RowLayout { + spacing: 10 + width: parent.width + + Label { + text: qsTr("Passphrase:") + horizontalAlignment: Text.AlignRight + Layout.preferredWidth: root.width * 0.382 + Layout.alignment: Qt.AlignVCenter + } + TextField { + id: passphrase + text: "" + echoMode: TextInput.Password + inputMethodHints: Qt.ImhNoPredictiveText | Qt.ImhNoAutoUppercase | Qt.ImhPreferLowercase | Qt.ImhSensitiveData + Layout.alignment: Qt.AlignVCenter + Layout.fillWidth: true + } + } + RowLayout { + spacing: 10 + + Button { + text: qsTr("Connect") + onClicked: { + connectView.visible = false + NetworkSettingsManager.userAgent.setPassphrase(passphrase.text) + if (networkSelection.currentIndex != -1) { + NetworkSettingsManager.services.itemFromRow(networkSelection.currentIndex).connectService(); + } + } + } + Button { + text: qsTr("Cancel") + onClicked: { + networkSelection.currentIndex = -1 + connectView.visible = false + } + } + } + } + } + ColumnLayout { + spacing: parent.spacing + width: parent.width + visible: selectedInterface.state === NetworkSettingsState.Online || + selectedInterface.state === NetworkSettingsState.Ready + Label { + text: qsTr("IP Address: ") + NetworkSettingsManager.services.itemFromRow(networkSelection.currentIndex).ipv4.address + } + Button { + id: disconnect + text: qsTr("Disconnect") + onClicked: { + NetworkSettingsManager.services.itemFromRow(networkSelection.currentIndex).disconnectService(); + networkSelection.currentIndex = -1; + root.connecting = false + } + } + } + } + Connections { + target: NetworkSettingsManager.userAgent + function onShowUserCredentialsInput() { + connectView.visible = true + root.connecting = false + } + function onError() { + errorView.visible = true + connectView.visible = true + root.connecting = false + if (networkSelection.currentIndex != -1) { + NetworkSettingsManager.services.itemFromRow(networkSelection.currentIndex).removeService(); + } + } + } + } + } +} |