Forráskód Böngészése

move websocket to its own file

David 9 éve
szülő
commit
109d3d6727
2 módosított fájl, 136 hozzáadás és 116 törlés
  1. 121 0
      components/WebSocket.qml
  2. 15 116
      main.qml

+ 121 - 0
components/WebSocket.qml

@@ -0,0 +1,121 @@
+import QtWebSockets 1.0
+import QtQuick 2.5
+
+Item {
+    property alias tot_slides : socket.total_slides
+    function isOpen(){
+        return  socket.status == WebSocket.Open;
+    }
+    function send_obj(obj) {
+        socket.sendTextMessage(JSON.stringify(obj))
+    }
+
+    function set_preg() {
+        send_obj({
+                     type: "initpreg"
+                 })
+    }
+    function unset_preg() {
+        send_obj({
+                     type: "stoppreg"
+                 })
+    }
+
+    function prev_diapo() {
+        var curImage = Math.max(item1.curImage - 1, 1)
+        send_obj({
+                     type: "command",
+                     commandtype: "diapo",
+                     PDF: item1.curPDF,
+                     slide: curImage
+                 })
+    }
+
+    function next_diapo() {
+        var curImage = Math.min(item1.curImage + 1, tot_slides)
+        send_obj({
+                     type: "command",
+                     commandtype: "diapo",
+                     PDF: item1.curPDF,
+                     slide: curImage
+                 })
+    }
+    function clear_path() {
+        send_obj({
+                     type: "command",
+                     commandtype: "clean"
+                 })
+        canvas.clean_path()
+    }
+    function send_drawing(d) {
+
+        send_obj({
+                     type: "command",
+                     commandtype: "draw",
+                     points: d,
+                     color: canvas.curColor
+                 })
+    }
+
+    WebSocket {
+        property int total_slides: 5
+
+        id: socket
+        url: "wss://wscasa.especificosba.com.ar"
+        active: true
+
+        onTextMessageReceived: {
+            var obj = JSON.parse(message)
+            switch (obj.type) {
+            case "diapo":
+                canvas.clean_path()
+                item1.curPDF = obj.PDF
+                item1.curImage = obj.slide //automagically change_image
+                if (obj.total_slides === undefined){
+                    console.log(obj);
+                    total_slides = 3
+                } else {
+                    total_slides = obj.total_slides
+                }
+
+                break
+            case "preg":
+                item1.addPreg(obj.text)
+
+                break
+            case "deletepreg":
+                item1.pregs = []
+                break
+            case "draw":
+                break
+            case "snowmix":
+                break
+            default:
+                console.log(JSON.stringify(obj))
+            }
+        }
+
+
+
+        onStatusChanged: {
+            if (socket.status == WebSocket.Open) {
+                wsStatus.text = qsTr("Conectado")
+            } else {
+                wsStatus.text = qsTr("Desconectado\nReconectando..")
+            }
+        }
+    }
+
+    Timer {
+        interval: 800;
+        running: true;
+        repeat: true;
+        onTriggered: {
+            if (socket.status != WebSocket.Open){//Reconnect
+                socket.active = false
+                socket.active = true
+                console.log("Connecting... " +Date().toString())
+            }
+        }
+    }
+}

+ 15 - 116
main.qml

@@ -1,9 +1,10 @@
 import QtQuick 2.5
 import QtQuick.Controls 1.4
 import QtQuick.Controls.Styles 1.4
-import QtWebSockets 1.0
 
 import "./simplify.js" as Simplify
+import "components" as Comps
+
 
 ApplicationWindow {
     id: aw
@@ -12,116 +13,16 @@ ApplicationWindow {
     height: 540
     color: "#fffffe"
 
-    property alias canvas: canvas
-    Timer {
-        interval: 800; running: true; repeat: true
-        onTriggered: {
-            if (socket.status != WebSocket.Open){//Reconnect
-                socket.active = false
-                socket.active = true
-                console.log(Date().toString())
-            }
-        }
-    }
-
-    WebSocket {
-
-        property int total_slides: 5
-
+    Comps.WebSocket {
         id: socket
-        url: "wss://wscasa.especificosba.com.ar"
-        onTextMessageReceived: {
-            var obj = JSON.parse(message)
-            switch (obj.type) {
-            case "diapo":
-                canvas.clean_path()
-                item1.curPDF = obj.PDF
-                item1.curImage = obj.slide //automagically change_image
-                if (obj.total_slides === undefined)
-                    total_slides = 3
-                else
-                    total_slides = obj.total_slides
-
-                break
-            case "preg":
-                item1.addPreg(obj.text)
-                break
-            case "deletepreg":
-                item1.pregs = []
-                break
-            case "draw":
-                break
-            default:
-                console.log(JSON.stringify(obj))
-            }
-        }
-        function send_obj(obj) {
-            sendTextMessage(JSON.stringify(obj))
-        }
-
-        function set_preg() {
-            send_obj({
-                         type: "initpreg"
-                     })
-        }
-        function unset_preg() {
-            send_obj({
-                         type: "stoppreg"
-                     })
-        }
-
-        function prev_diapo() {
-            var curImage = Math.max(item1.curImage - 1, 1)
-            send_obj({
-                         type: "command",
-                         commandtype: "diapo",
-                         PDF: item1.curPDF,
-                         slide: curImage
-                     })
-        }
-
-        function next_diapo() {
-            var curImage = Math.min(item1.curImage + 1, total_slides)
-            send_obj({
-                         type: "command",
-                         commandtype: "diapo",
-                         PDF: item1.curPDF,
-                         slide: curImage
-                     })
-        }
-        function clear_path() {
-            send_obj({
-                         type: "command",
-                         commandtype: "clean"
-                     })
-            canvas.clean_path()
-        }
-        function send_drawing(d) {
-
-            send_obj({
-                         type: "command",
-                         commandtype: "draw",
-                         points: d,
-                         color: canvas.curColor
-                     })
-        }
-
-        onStatusChanged: {
-            //FIXME implement
-            if (socket.status == WebSocket.Open) {
-                wsStatus.text = qsTr("Conectado")
-            } else {
-                wsStatus.text = qsTr("Desconectado\nReconectando..")
-            }
-        }
-        active: true
     }
-
+    property alias t_slides: socket.tot_slides
     Item {
         id: item1
         width: parent.width
         height: parent.height
 
+
         property alias mouseArea1: mouseArea1
         property alias button3: button3
         property int curImage: 1
@@ -129,28 +30,27 @@ ApplicationWindow {
 
         property string curPDF: "EBA"
         anchors.fill: parent
-
         onCurPDFChanged: {
             canvas.change_image(curPDF, curImage)
             diapoStatus.text = qsTr("%1/%2 (%3 preg)").arg(curImage).arg(
-                        socket.total_slides).arg(pregs.length)
+                        t_slides).arg(pregs.length)
         }
         onPregsChanged: {
             diapoStatus.text = qsTr("%1/%2 (%3 preg)").arg(curImage).arg(
-                        socket.total_slides).arg(pregs.length)
+                        t_slides).arg(pregs.length)
         }
 
         onCurImageChanged: {
             canvas.change_image(curPDF, curImage)
             diapoStatus.text = qsTr("%1/%2 (%3 preg)").arg(curImage).arg(
-                        socket.total_slides).arg(pregs.length)
+                        t_slides).arg(pregs.length)
         }
         function addPreg(p) {
             if (pregs.indexOf(p) !== -1) {
                 return
             }
-
             pregs.push(p)
+            curImageChanged();
         }
 
         Grid {
@@ -282,12 +182,12 @@ ApplicationWindow {
                     width: canvas.width
                     height: canvas.height
                     onPressed: {
-                        if (socket.status !== WebSocket.Open)
+                        if (!socket.isOpen())
                             return
                         canvas.start_path()
                     }
                     onPositionChanged: {
-                        if (socket.status !== WebSocket.Open)
+                        if (!socket.isOpen())
                             return
 
                         canvas.add_point({
@@ -296,7 +196,7 @@ ApplicationWindow {
                                          })
                     }
                     onReleased: {
-                        if (socket.status !== WebSocket.Open)
+                        if (!socket.isOpen())
                             return
                         canvas.finish_path()
                     }
@@ -327,7 +227,7 @@ ApplicationWindow {
                                 fillMode: Image.PreserveAspectFit
 
                             }
-                            enabled: socket.status == WebSocket.Open && (item1.curImage > 1)
+                            enabled: socket.isOpen() && (item1.curImage > 1)
                             onClicked : socket.prev_diapo()
                         }
                         MouseArea {
@@ -339,8 +239,7 @@ ApplicationWindow {
                                 source: "qrc:///images/fwd.png"
                                 fillMode: Image.PreserveAspectFit
                             }
-                            enabled: socket.status == WebSocket.Open
-                                     && (item1.curImage < socket.total_slides)
+                            enabled: socket.isOpen() && (item1.curImage < t_slides)
                             onClicked: socket.next_diapo()
                         }
 
@@ -473,7 +372,7 @@ ApplicationWindow {
                         width: parent.width
                         id: button3
                         text: qsTr("Limpiar")
-                        enabled: socket.status == WebSocket.Open
+                        enabled: socket.isOpen()
                         onClicked: socket.clear_path()
                     }