summaryrefslogtreecommitdiffstats
path: root/app/qml/Main.qml
diff options
context:
space:
mode:
Diffstat (limited to 'app/qml/Main.qml')
-rw-r--r--app/qml/Main.qml163
1 files changed, 163 insertions, 0 deletions
diff --git a/app/qml/Main.qml b/app/qml/Main.qml
index 4139cb9..2162e2e 100644
--- a/app/qml/Main.qml
+++ b/app/qml/Main.qml
@@ -1,5 +1,7 @@
import QtQuick 2.0
import QtQuick.Controls 2.2
+import QtWebSockets 1.0
+import QtPositioning 5.0
import "qrc:/qml"
@@ -11,6 +13,167 @@ ApplicationWindow {
width: 640
visible: true
+ property string tbt_navi_request_str: ""
+ property string api_str: "naviapi"
+ property string verb_getrouteinfo: "navicore_getrouteinfo"
+ property string verb_getallsessions: "navicore_getallsessions"
+ property string verb_subscribe: "subscribe"
+ property string verb_unsubscribe: "unsubscribe"
+ property string event_setdemorouteinfo: "naviapi/navicore_setdemorouteinfo"
+ property string event_arrivedest: "naviapi/navicore_arrivedest"
+ property string event_stopdemo: "naviapi/navicore_stopdemo"
+ property string event_setdestpos: "naviapi/navicore_setdestpos"
+ property string event_gps: "naviapi/navicore_gps"
+ property string event_getdestdir: "naviapi/navicore_getdestdir"
+ property var msgid_enu: { "call":2, "retok":3, "reterr":4, "event":5 }
+
+ WebSocket {
+ id: websocket
+ url: bindingAddress
+
+ onStatusChanged: {
+ if (websocket.status === WebSocket.Error){
+ console.log ("Error: " + websocket.errorString)
+ websocket.active = false
+ countdown.start()
+ }else if (websocket.status === WebSocket.Open){
+ console.log ("Socket Open")
+ do_getallsessions()
+ }else if (websocket.status === WebSocket.Closed){
+ console.log ("Socket closed")
+ }
+ }
+
+ onTextMessageReceived: {
+ console.log("tbtnavi:onTextMessageReceived: " + message)
+ var message_json = JSON.parse(message)
+
+ //analyse the infomation from the naviapi service
+ if (message_json[0] === msgid_enu.event)
+ {
+ //set route infomation during the route demo
+ if(message_json[2].event === event_setdemorouteinfo)
+ {
+ var latitude = message_json[2].data[0].DemoLatitude
+ var longitude = message_json[2].data[0].DemoLongitude
+ var distance = message_json[2].data[0].DemoDistance
+ var direction = message_json[2].data[0].DemoDirection
+ console.log("tbtnavi: distance = " + distance + "direction = " + direction)
+ mapwindow.do_setDirection(direction)
+ mapwindow.do_setNextCrossDistance(distance)
+ }
+ //when arrive the destination
+ else if(message_json[2].event === event_arrivedest)
+ {
+ mapwindow.do_arrivedest()
+ }
+ //when the demo stopped
+ else if(message_json[2].event === event_stopdemo)
+ {
+ mapwindow.do_stopnavidemo()
+ mapwindow.do_setCoordinate(35.6673965582,139.7491882778)
+ mapwindow.startPoint = QtPositioning.coordinate(35.6673965582,139.7491882778);
+ }
+ //when add destination
+ else if(message_json[2].event === event_setdestpos)
+ {
+ var allroutes = message_json[2].data[0].AllRoutes
+ var destlat = message_json[2].data[0].DestinationLatitude
+ var destlon = message_json[2].data[0].DestinationLongitude
+ mapwindow.do_setdest(allroutes,destlat,destlon)
+ }
+ else if(message_json[2].event === event_gps){
+ console.log ("tbt:Receive Event======event_gps")
+ var lat = message_json[2].data.latitude
+ var lon = message_json[2].data.longitude
+ console.log ("tbt:Receive Event lat====== " + lat+" "+"lon======"+lon)
+ mapwindow.do_setCoordinate(lat,lon)
+
+ }
+ else if(message_json[2].event === event_getdestdir){
+ var state = message_json[2].data.state
+ mapwindow.do_setTbtState(state)
+ }
+ }
+ else if (message_json[0] === msgid_enu.retok)
+ {
+ //when connect successed request the route infomation
+ if(message_json[2].request.info === verb_getallsessions)
+ {
+ do_getrouteinfo()
+ }
+ //add destination
+ else if(message_json[2].request.info === verb_getrouteinfo)
+ {
+ var routes = message_json[2].response[0].AllRoutes
+ var currentlat = message_json[2].response[0].CurrentLatitude
+ var currentlon = message_json[2].response[0].CurrentLongitude
+ var destposlat = message_json[2].response[0].DestinationLatitude
+ var destposlon = message_json[2].response[0].DestinationLongitude
+ mapwindow.do_addRoutePoint(currentlat,currentlon,destposlat,destposlon,routes)
+ }
+ }
+ else{
+ console.log("Raw response: " + message)
+ }
+ }
+ active: false
+ }
+
+ Timer {
+ id: countdown
+ repeat: false
+ interval: 3000
+ triggeredOnStart: false
+ onTriggered: {
+ websocket.active = true
+ }
+ }
+
+ onVisibleChanged: {
+ if (visible){
+ if (!websocket.active){
+ websocket.active = true
+ }
+ }
+ else {
+ countdown.stop()
+ if (websocket.active){
+ do_unsubscribe("setdemopos")
+ do_unsubscribe("stopdemo")
+ do_unsubscribe("arrivedest")
+ }
+ }
+ }
+
+ //make a connect to the naviapi service
+ function do_getallsessions() {
+ tbt_navi_request_str = '[' + msgid_enu.call + ',"99999","' + api_str+'/'+verb_getallsessions + '", {} ]'
+ console.log (tbt_navi_request_str)
+ websocket.sendTextMessage (tbt_navi_request_str)
+ }
+
+ //get route information
+ function do_getrouteinfo() {
+ tbt_navi_request_str = '[' + msgid_enu.call + ',"99999","' + api_str+'/'+verb_getrouteinfo+ '", {}]'
+ console.log (tbt_navi_request_str)
+ websocket.sendTextMessage (tbt_navi_request_str)
+ }
+
+ //subscribe
+ function do_subscribe( event ) {
+ tbt_navi_request_str = '[' + msgid_enu.call + ',"99999","' + api_str+'/'+verb_subscribe + '", {"value":"' + event + '"} ]'
+ console.log (tbt_navi_request_str)
+ websocket.sendTextMessage (tbt_navi_request_str)
+ }
+
+ //unsubscribe
+ function do_unsubscribe( event ) {
+ tbt_navi_request_str = '[' + msgid_enu.call + ',"99999","' + api_str+'/'+verb_unsubscribe + '", {"value":"' + event + '"} ]'
+ console.log (tbt_navi_request_str)
+ websocket.sendTextMessage (tbt_navi_request_str)
+ }
+
Item {
anchors.centerIn: parent
width: parent.width