From 274baa15819458003555749d4e0509ac665f8526 Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Tue, 21 Jan 2014 14:26:36 +0100 Subject: [Launcher Settings] Add Wifi GroupBox Change-Id: I3d9850335c79640d29bb335c24acbfbb79375a1c Reviewed-by: Gatis Paeglis --- .../launchersettings/BrightnessController.qml | 2 +- basicsuite/launchersettings/NetworkController.qml | 2 +- basicsuite/launchersettings/NetworkList.qml | 199 +++++++++++++++++++++ basicsuite/launchersettings/PoweroffAction.qml | 2 +- basicsuite/launchersettings/RebootAction.qml | 2 +- basicsuite/launchersettings/WifiController.qml | 58 ++++++ basicsuite/launchersettings/WifiGroupBox.qml | 92 ++++++++++ basicsuite/launchersettings/main.qml | 38 ++-- 8 files changed, 380 insertions(+), 15 deletions(-) create mode 100644 basicsuite/launchersettings/NetworkList.qml create mode 100644 basicsuite/launchersettings/WifiController.qml create mode 100644 basicsuite/launchersettings/WifiGroupBox.qml (limited to 'basicsuite') diff --git a/basicsuite/launchersettings/BrightnessController.qml b/basicsuite/launchersettings/BrightnessController.qml index 8ac6118..777fa30 100644 --- a/basicsuite/launchersettings/BrightnessController.qml +++ b/basicsuite/launchersettings/BrightnessController.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: For any questions to Digia, please use the contact form at ** http://qt.digia.com/ ** diff --git a/basicsuite/launchersettings/NetworkController.qml b/basicsuite/launchersettings/NetworkController.qml index 1962843..85a8de6 100644 --- a/basicsuite/launchersettings/NetworkController.qml +++ b/basicsuite/launchersettings/NetworkController.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: For any questions to Digia, please use the contact form at ** http://qt.digia.com/ ** diff --git a/basicsuite/launchersettings/NetworkList.qml b/basicsuite/launchersettings/NetworkList.qml new file mode 100644 index 0000000..1f26537 --- /dev/null +++ b/basicsuite/launchersettings/NetworkList.qml @@ -0,0 +1,199 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of the examples of the Qt Enterprise Embedded. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 2.0 +import Qt.labs.wifi 0.1 + +Item { + Component { + id: listDelegate + Rectangle { + id: delegateBackground + property bool expanded: false + property bool connected: wifiManager.connectedSSID == network.ssid + property variant networkModel: model + property alias ssidText: ssidLabel.text + height: expanded ? 300 : 70 + clip: true // ### fixme + + Behavior on height { NumberAnimation { duration: 500; easing.type: Easing.InOutCubic } } + + width: parent.width + + gradient: Gradient { + GradientStop { position: 0; color: "white" } + GradientStop { position: 1; color: "lightgray" } + } + + Text { + id: ssidLabel + anchors.top: parent.top + anchors.left: parent.left + anchors.margins: 10 + font.pixelSize: 20 + font.bold: true + text: network.ssid + (connected ? " (connected)" : ""); + } + + Text { + id: bssidLabel + anchors.top: ssidLabel.bottom + anchors.left: parent.left + anchors.margins: 5 + anchors.leftMargin: 40 + text: network.bssid + color: "gray" + font.pixelSize: ssidLabel.font.pixelSize * 0.5 + } + + Text { + id: flagsLabel + x: 200 + anchors.top: bssidLabel.top + text: (network.supportsWPA2 ? "WPA2 " : "") + + (network.supportsWPA ? "WPA " : "") + + (network.supportsWEP ? "WEP " : "") + + (network.supportsWPS ? "WPS " : ""); + color: "gray" + font.pixelSize: ssidLabel.font.pixelSize * 0.5 + font.italic: true + } + + Rectangle { + width: Math.max(100 + network.signalStrength, 0) / 100 * parent.width; + height: 20 + radius: 10 + antialiasing: true + anchors.margins: 20 + anchors.right: parent.right + anchors.top: parent.top + color: "lightblue" + border.color: "lightgray" + } + + MouseArea { + anchors.fill: parent + onClicked: { + parent.expanded = !expanded + } + } + + Rectangle { + id: passwordInputBackground + anchors.fill: passwordInput + anchors.margins: -5 + color: "white" + radius: 5 + border.color: "gray" + } + + TextInput { + id: passwordInput + y: 100 + width: 300 + height: 50 + text: "" + anchors.horizontalCenter: parent.horizontalCenter + font.pixelSize: 18 + } + + Rectangle { + id: connectButton + anchors.top: passwordInput.bottom + anchors.margins: 20 + anchors.horizontalCenter: parent.horizontalCenter + width: passwordInput.width + height: passwordInputBackground.height + enabled: wifiManager.networkState != WifiManager.ObtainingIPAddress + + gradient: Gradient { + GradientStop { position: 0; color: "white" } + GradientStop { position: 1; color: buttonMouse.pressed ? "steelblue" : "lightsteelblue" } + } + + border.color: "gray" + + Text { + anchors.centerIn: parent + font.pixelSize: 24 + text: connected ? "Disconnect" : "Connect" + } + MouseArea { + id: buttonMouse + anchors.fill: parent + onClicked: { + networkView.currentIndex = index + if (connected) { + wifiManager.disconnect() + } else { + networkView.activeNetwork = networkView.currentItem + wifiManager.connect(network, passwordInput.text); + } + } + } + } + + } + } + + ListView { + id: networkView + anchors.fill: parent + model: wifiManager.networks + delegate: listDelegate + + property variant activeNetwork: "" + property variant networkState: wifiManager.networkState + + onNetworkStateChanged: { + if (activeNetwork) { + var ssid = activeNetwork.networkModel.ssid + var state = "" + if (networkState == WifiManager.ObtainingIPAddress) + state = " (obtaining ip..)" + else if (networkState == WifiManager.DhcpRequestFailed) + state = " (dhcp request failed)" + else if (networkState == WifiManager.Connected) + state = " (connected)" + activeNetwork.ssidText = ssid + state + } + } + } +} diff --git a/basicsuite/launchersettings/PoweroffAction.qml b/basicsuite/launchersettings/PoweroffAction.qml index 14c100d..8c14b79 100644 --- a/basicsuite/launchersettings/PoweroffAction.qml +++ b/basicsuite/launchersettings/PoweroffAction.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: For any questions to Digia, please use the contact form at ** http://qt.digia.com/ ** diff --git a/basicsuite/launchersettings/RebootAction.qml b/basicsuite/launchersettings/RebootAction.qml index 476bdaf..e6f57ca 100644 --- a/basicsuite/launchersettings/RebootAction.qml +++ b/basicsuite/launchersettings/RebootAction.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: For any questions to Digia, please use the contact form at ** http://qt.digia.com/ ** diff --git a/basicsuite/launchersettings/WifiController.qml b/basicsuite/launchersettings/WifiController.qml new file mode 100644 index 0000000..3725478 --- /dev/null +++ b/basicsuite/launchersettings/WifiController.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of the examples of the Qt Enterprise Embedded. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 2.0 +import Qt.labs.wifi 0.1 as Wifi + +QtObject { + function createWifiGroupBox() + { + if (Wifi.Interface.wifiSupported()) { + var component = Qt.createComponent("WifiGroupBox.qml"); + var wifi = component.createObject(wifiOptions.contentItem); + if (wifi == null) { + wifiOptions.visible = false + print("Error creating WifiGroupBox"); + } + } else { + wifiOptions.visible = false + } + } +} diff --git a/basicsuite/launchersettings/WifiGroupBox.qml b/basicsuite/launchersettings/WifiGroupBox.qml new file mode 100644 index 0000000..f58c129 --- /dev/null +++ b/basicsuite/launchersettings/WifiGroupBox.qml @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: For any questions to Digia, please use the contact form at +** http://qt.digia.com/ +** +** This file is part of the examples of the Qt Enterprise Embedded. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 2.0 +import QtQuick.Controls 1.0 +import QtQuick.Layouts 1.0 + +import Qt.labs.wifi 0.1 + +ColumnLayout { + + anchors.fill:parent + + WifiManager { + id: wifiManager + scanning: backendReady + } + + ColumnLayout { + anchors.fill: parent + + RowLayout { + + Button { + id: wifiOnOffButton + text: (wifiManager.backendReady) ? "Switch Off" : "Switch On" + onClicked: { + if (wifiManager.backendReady) { + if (networkList.visible) + networkList.visible = false + wifiManager.stop() + } else { + wifiManager.start() + } + } + } + + Button { + id: listNetworksButton + visible: wifiManager.backendReady + text: (networkList.visible) ? "Hide wifi networks" + : "List available wifi networks" + onClicked: networkList.visible = !networkList.visible + } + } + + NetworkList { + id: networkList + implicitHeight: 400 + Layout.fillWidth: true + visible: false + clip: true + } + } +} diff --git a/basicsuite/launchersettings/main.qml b/basicsuite/launchersettings/main.qml index 7cd510c..41054fd 100644 --- a/basicsuite/launchersettings/main.qml +++ b/basicsuite/launchersettings/main.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: For any questions to Digia, please use the contact form at ** http://qt.digia.com/ ** @@ -44,7 +44,7 @@ import QtQuick.Controls 1.0 import QtQuick.Layouts 1.0 Rectangle { - id: root; + id: root gradient: Gradient { GradientStop { position: 0; color: "white" } @@ -76,16 +76,19 @@ Rectangle { source: "NetworkController.qml" } - Flickable { + Loader { + id: wifiControllerLoader + source: "WifiController.qml" + } + + ScrollView { + anchors.top: parent.top anchors.horizontalCenter: parent.horizontalCenter anchors.margins: margin anchors.topMargin: 50 height: parent.height - width: mainLayout.width - - contentHeight: mainLayout.height - contentWidth: mainLayout.width + width: mainLayout.width + 40 ColumnLayout { id: mainLayout @@ -95,12 +98,12 @@ Rectangle { GroupBox { id: powerOptions - title: "Power Options" + title: "Power" Layout.fillWidth: true RowLayout { - id: powerButtonColumn + id: powerButtonRow anchors.fill: parent @@ -123,7 +126,7 @@ Rectangle { GroupBox { id: displayOptions - title: "Display Options" + title: "Display" Layout.fillWidth: true @@ -156,7 +159,7 @@ Rectangle { GroupBox { id: networkOptions - title: "Network Options" + title: "Network" Layout.fillWidth: true @@ -187,6 +190,19 @@ Rectangle { } } + + GroupBox { + id: wifiOptions + title: "Wifi" + Layout.fillWidth: true + } + + Component.onCompleted: { + if (wifiControllerLoader.item != undefined) + wifiControllerLoader.item.createWifiGroupBox() + else + wifiOptions.visible = false + } } } } -- cgit v1.2.3