import QtQuick 2.0
import QtQuick.Window 2.0
import QtQuick.Controls 1.4
import QtWebSockets 1.0
Window {
// VARIABLES
property string port_str: Qt.application.arguments[1]
property string token_str: Qt.application.arguments[2]
property string address_str: "ws://localhost:"+port_str+"/api?token="+token_str
property string request_str: ""
property string status_str: "waiting..."
property var msgid_enu: { "call":2, "retok":3, "reterr":4, "event":5 }
// WINDOW PROPERTIES
visible: true
width: 340
height: 160
// WEBSOCKET WIDGET (MAIN LOGIC)
WebSocket {
id: websocket
url: address_str
onTextMessageReceived: {
// VERB RESPONSE VALIDATION
var message_json = JSON.parse (message)
var request_json = message_json[2].request
if (message_json[0] != msgid_enu.retok) {
console.log ("Return value is not ok !")
status_str = "Bad return value, binding probably not installed"
return
}
// VERB RESPONSE PARSING AND LOGIC
status_str = request_json.info
}
onStatusChanged: {
if (websocket.status == WebSocket.Error)
status_str = "WebSocket error: " + websocket.errorString
}
active: true
}
// OTHER WIDGETS
Rectangle {
anchors.left: parent.left
anchors.top: parent.top
anchors.horizontalCenter: parent.horizontalCenter
anchors.margins: 20
// TITLE SECTION
Label {
text: "QML Websocket Sample Application"
font.pixelSize: 18
font.bold: true
anchors.centerIn: parent
y: 0
}
Text {
id: url_notifier
text: "URL: " + websocket.url
y: 20
}
// PING BUTTON
Button {
text: "Ping!"
onClicked: {
request_str = '[' + msgid_enu.call + ',"99999","hvac/ping", null ]';
websocket.sendTextMessage (request_str)
}
anchors.horizontalCenter: parent.horizontalCenter
y: 60
}
// STATUS SECTION
Text {
id: status_notifier
text: "Status: " + status_str
y: 100
}
}
}