From 0a5f2088affd1a92a38b067618585c57730b0646 Mon Sep 17 00:00:00 2001
From: Matt Porter <mporter@konsulko.com>
Date: Wed, 25 Jul 2018 12:24:28 -0400
Subject: wifi: convert to libqtappfw network model

Use libqtappfw's network model for the wifi network
list, wifi status, and wifi power/connect/disconnect
methods. Remove useless websocket message handling
and other related code.

Bug-AGL: SPEC-1542

Change-Id: I269fc03405be98f428b61e6a583eb5cbad767c6e
Signed-off-by: Matt Porter <mporter@konsulko.com>
---
 app/wifi/Wifi.qml | 284 +++++-------------------------------------------------
 1 file changed, 23 insertions(+), 261 deletions(-)

(limited to 'app/wifi')

diff --git a/app/wifi/Wifi.qml b/app/wifi/Wifi.qml
index b30863c..85e8b60 100644
--- a/app/wifi/Wifi.qml
+++ b/app/wifi/Wifi.qml
@@ -1,6 +1,6 @@
-
 /*
  * Copyright (C) 2016 The Qt Company Ltd.
+ * Copyright (C) 2018 Konsulko Group
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,7 +19,6 @@ import QtQuick 2.6
 import QtQuick.Layouts 1.1
 import QtQuick.Controls 2.0
 import AGL.Demo.Controls 1.0
-import QtWebSockets 1.0
 import ".."
 
 SettingPage {
@@ -27,199 +26,11 @@ SettingPage {
     icon: '/wifi/images/HMI_Settings_WifiIcon.svg'
     title: 'Wifi'
     checkable: true
+    checked: network.wifiEnabled
     readonly property bool isWifi: true
-    property bool isInitializing: true
-
-    property string address_str: bindingAddressWS
-    property string token_str: ""
-    property string api_str: "wifi-manager"
-    property string verb_str: ""
-    property string parameter_str: ""
-    property string payloadLength: "9999"
-
-    property var msgid_enu: {
-         "call": 2,
-         "retok": 3,
-         "reterr": 4,
-         "event": 5
-    }
-    property string request_str: ""
-    property string status_str: ""
-
-
-
-    WebSocket {
-        id: websocket
-        url: address_str
-        onTextMessageReceived: {
-            var message_json = JSON.parse(message)
-            console.debug("Raw response: " + message)
-            /* server is not happy with our request, ignore it */
-            if ((message_json[0] === msgid_enu.reterr)) {
-
-                console.error("Return value is not OK!")
-                console.error("Raw response: " + message)
-                return
-
-            } else if ((message_json[0] === msgid_enu.event)) {
-
-                var eventContent = JSON.parse(JSON.stringify(message_json[2]))
-
-                console.log("Received EVENT: " + eventContent.event)
-
-                if (eventContent.event === "wifi-manager/networkList") {
-
-                    console.debug("Event data:" + eventContent.data.data1 + ", " + eventContent.data.data2 )
-                    console.log("Network List was updated, sending scan_result request")
-
-                    //update network list
-                    verb_str = "scan_result"
-                    sendSocketMesage(verb_str, 'None')
-                }
-
-                else if (eventContent.event === "wifi-manager/passkey") {
-
-                    console.debug("Event data:" + eventContent.data.data1 + ", " + eventContent.data.data2 )
-                    console.log("Passkey requested")
-                    dialog.visible = true
-
-                }
-                else {
-
-                    console.error("Unhadled event.")
-
-                }
-            } else if ((message_json[0] === msgid_enu.retok)) {
-
-
-                /* token creation or refresh happened, store it and enable buttons */
-                if (verb_str == "connect") {
-                    token_str = message_json[3]
-
-                    console.error("Connect reply received!")
-
-
-                } else if (verb_str == "logout") {
-                    websocket.active = false // close the socket
-
-                } else if (verb_str == "scan_result") {
-
-                    var jsonObjectNetworks = JSON.parse(
-                                JSON.stringify(message_json[2].response))
-
-                    networkList.clear()
-                    for (var i = 0; i < jsonObjectNetworks.length; i++) {
-
-                        networkList.append({
-                                               number: jsonObjectNetworks[i].Number,
-                                               name: jsonObjectNetworks[i].ESSID,
-                                               strength: jsonObjectNetworks[i].Strength,
-                                               serviceState: jsonObjectNetworks[i].State,
-                                               security: jsonObjectNetworks[i].Security,
-                                               address: jsonObjectNetworks[i].IPAddress
-                                           })
-                    }
-
-                }
-                else if (verb_str == "status") {
-
-                    var status = "OFF"
-                    status =  (message_json[2].response).Power
-
-                    checked = (status === "ON") ? true : false
-              }
-            } else
-                console.log("Unhadled websocket message", message_json[0])
-        }
-        onStatusChanged: {
-
-            var parameterJson = 0
-            var requestJson = 0
-
-            if (websocket.status == WebSocket.Error) {
-                status_str = "Error: " + websocket.errorString
-
-            } else if (websocket.status == WebSocket.Open) {
-                status_str = "Socket opened; sending message..."
-
-                //first get the status
-                verb_str = "status"
-                parameterJson = 'None'
-                sendSocketMesage(verb_str, parameterJson)
-
-
-
-            } else if (websocket.status == WebSocket.Closed) {
-                status_str = "Socket closed"
-                console.log("Socket closed, bye.")
-
-                websocket.active = false
-
-            }
-
-            console.log(status_str)
-        }
-        active: false
-    }
 
     onCheckedChanged: {
-        console.log("Wifi set to", checked)
-
-        if (websocket.active) {
-
-            if (checked == true) {
-
-                //subscribe for events
-                sendSocketMesage("subscribe", { value: "networkList" })
-                sendSocketMesage("subscribe", { value: "passkey" })
-                sendSocketMesage("activate", 'None')
-
-                //get scan results right away
-                verb_str = "scan_result"
-                sendSocketMesage(verb_str, 'None')
-
-            } else {
-
-                if (!isInitializing) {
-                    networkList.clear()
-
-                    sendSocketMesage("deactivate", 'None')
-                    sendSocketMesage("unsubscribe", { value: "passkey" })
-                    sendSocketMesage("unsubscribe", { value: "networkList" })
-                }
-             }
-            isInitializing = false
-        }
-
-        else {
-            console.log("Websocket not active.")
-            websocket.active = true
-        }
-
-
-
-    }
-
-
-    function sendSocketMesage(verb, parameter) {
-
-
-        var requestJson = [msgid_enu.call, payloadLength, api_str + '/'
-                           + verb, parameter]
-
-        websocket.sendTextMessage(JSON.stringify(requestJson))
-
-    }
-    ListModel {
-        id: networkList
-    }
-
-
-    function securityType(security) {
-        if (security === "Open")
-            return "unsecured"
-        else
-            return "secured"
+        network.power(checked)
     }
 
     Component {
@@ -229,8 +40,6 @@ SettingPage {
             width: ListView.view.width
             Image {
                 anchors.left: parent.left
-                //width: 70
-                //height: 50
                 id: icon
                 source: {
                     var svg
@@ -242,7 +51,7 @@ SettingPage {
                         svg = "3Bars"
                     else
                         svg = "Full"
-                    if (securityType(security) === "unsecured") {
+                    if (security === "Open") {
                         return 'images/HMI_Settings_Wifi_%1.svg'.arg(svg)
                     } else {
                         return 'images/HMI_Settings_Wifi_Locked_%1.svg'.arg(svg)
@@ -254,80 +63,38 @@ SettingPage {
                 anchors.leftMargin: 5
                 Label {
                     id: networkNameText
-                    text: name
+                    text: ssid
                     color: '#66FF99'
                     font.pixelSize: 48
-                    font.bold: serviceState === "ready"
-                               || serviceState === "online"
+                    font.bold: sstate === "ready"
+                               || sstate === "online"
                 }
                 Label {
-                    visible: serviceState === "ready"
-                             || serviceState === "online"
+                    visible: sstate === "ready"
+                             || sstate === "online"
                     text: "connected, " + address
                     font.pixelSize: 18
                     color: "white"
-                    //font.italic: true
                 }
             }
 
-
-
             onClicked: {
-                var parameterJson = 0
-                var requestJson = 0
-
-                //connectButton.border.color = "steelblue"
-                if ((serviceState === "ready") || serviceState === "online") {
-
-
-                    //means we are connected
-                    console.log("Disconnecting from", index, " ,", name)
-
-                    //make some indication that disconnection is in progress
-                    //probably not good enough, though. TODO: make it better
+                if ((sstate === "ready") || sstate === "online") {
+                    console.log("Disconnecting from ", ssid, " (", service, ")")
                     networkNameText.font.italic = 1
-
-                    verb_str = "disconnect"
-                    parameterJson = {
-                        network: view.currentIndex
-                    }
-                    sendSocketMesage(verb_str, parameterJson)
-
-
-
-
+                    network.disconnect(service)
                 } else {
-                    console.log("Requesting connection to network #", index, ", ", name, ".")
-                    view.currentIndex = model.index
-
-                    //make some indication that connection is in progress
-                    //probably not good enough, though. TODO: make it better
+                    console.log("Connecting to ", ssid, " (", service, ")")
                     networkNameText.font.italic = 1
-
-                    verb_str = "connect"
-                    parameterJson = {
-                        network: view.currentIndex
-                    }
-                    sendSocketMesage(verb_str, parameterJson)
-
+                    network.connect(service)
                 }
             }
 
-
-            //            ImageButton {
-            //                anchors.verticalCenter: parent.verticalCenter
-            //                anchors.right: parent.right
-            //                offImage: '../images/HMI_Settings_X.svg'
-            //                onClicked: {
-
-            //                }
-            //            }
             Image {
                 source: '../images/HMI_Settings_DividingLine.svg'
                 anchors.horizontalCenter: parent.horizontalCenter
                 anchors.top: parent.top
                 anchors.topMargin: -15
-
                 visible: model.index > 0
             }
         }
@@ -337,7 +104,7 @@ SettingPage {
         id: view
         anchors.fill: parent
         anchors.margins: 100
-        model: networkList
+        model: WifiNetworkModel
         delegate: wifiDevice
         clip: true
     }
@@ -370,22 +137,14 @@ SettingPage {
                     anchors.centerIn: parent
                     TextField {
                         id: password
+                        property int reqid: 0
                         placeholderText: 'Password'
                     }
                     Button {
                         text: 'Connect'
                         highlighted: true
                         onClicked: {
-
-                            var passkey = password.text
-                            console.log("Validating", passkey)
-
-                            //just send the passkey, binder is waiting for it
-                            verb_str = "insertpasskey"
-                            var parameterJson = {
-                                passkey: passkey
-                            }
-                            sendSocketMesage(verb_str, parameterJson)
+                            network.input(password.reqid, password.text)
                             dialog.visible = false
                         }
                     }
@@ -406,8 +165,11 @@ SettingPage {
         }
     }
 
-    function activateWifi(){
-        websocket.active = true
+    Connections {
+        target: network
+        onInputRequest: {
+            password.reqid = id
+            dialog.visible = true
+        }
     }
-
 }
-- 
cgit