Refine button handling. Change key mappings.
[qzeecontrol] / qml / QZeeControl / MainPage.qml
index d624df6..58cf162 100644 (file)
@@ -1,3 +1,22 @@
+/*
+ *  Copyright 2012 Ruediger Gad
+ *
+ *  This file is part of QZeeControl.
+ *
+ *  QZeeControl is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  QZeeControl is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with QZeeControl.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 import QtQuick 1.1
 import com.nokia.meego 1.0
 import QtMobility.connectivity 1.2
@@ -8,18 +27,14 @@ Page {
 
     Label {
         id: label
-        anchors.centerIn: parent
-        text: "Click to Scan"
+        anchors{bottom: connectButton.top; bottomMargin: 10; horizontalCenter: parent.horizontalCenter}
+
+        text: "Press to connect."
     }
 
     Button{
-        id: scanButton
-
-        anchors {
-            horizontalCenter: parent.horizontalCenter
-            top: label.bottom
-            topMargin: 10
-        }
+        id: connectButton
+        anchors{bottom: disconnectButton.top; bottomMargin: 10; horizontalCenter: parent.horizontalCenter}
 
         text: "Connect"
 
@@ -28,6 +43,63 @@ Page {
         }
     }
 
+    Button{
+        id: disconnectButton
+        anchors{bottom: buttonRow.top; bottomMargin: 10; horizontalCenter: parent.horizontalCenter}
+
+        text: "Disconnect"
+
+        onClicked: {
+            btConn.disconnect()
+        }
+    }
+
+    Row{
+        id: buttonRow
+        anchors.centerIn: parent
+        spacing: 20
+
+        Label{
+            id: labelA
+            text: "A"
+            color: btConn.a ? "red" : "blue"
+        }
+        Label{
+            id: labelB
+            text: "B"
+            color: btConn.b ? "red" : "blue"
+        }
+        Label{
+            id: labelC
+            text: "C"
+            color: btConn.c ? "red" : "blue"
+        }
+        Label{
+            id: labelD
+            text: "D"
+            color: btConn.d ? "red" : "blue"
+        }
+    }
+
+    Rectangle{
+        id: moveArea
+        anchors{top: buttonRow.bottom; topMargin: 10; horizontalCenter: parent.horizontalCenter}
+        color: "gray"
+
+        width: 256
+        height: 256
+    }
+
+    Rectangle{
+        id: cursorRectangle
+        width: 10
+        height: 10
+        color: "red"
+
+        x: moveArea.x + (moveArea.width * 0.5) + btConn.x - (cursorRectangle.width * 0.5)
+        y: moveArea.y + (moveArea.height * 0.5) + btConn.y - (cursorRectangle.height * 0.5)
+    }
+
     BluetoothDiscoveryModel{
         id: btDiscovery
 
@@ -37,10 +109,11 @@ Page {
         onDiscoveryChanged: {
             if(discovery){
                 label.text = "Scanning for devices..."
-                scanButton.enabled = false
+                connectButton.enabled = false
+                disconnectButton.enabled = false
             }else{
-                label.text = "Scan finished."
-                scanButton.enabled = true
+                connectButton.enabled = true
+                disconnectButton.enabled = false
             }
         }
 
@@ -71,5 +144,72 @@ Page {
 
     BtConnector{
         id: btConn
+
+        property int joystickThreshold: 50
+
+        onConnected: {
+            connectButton.enabled = false
+            disconnectButton.enabled = true
+            label.text = "Connected."
+        }
+
+        onDisconnected: {
+            connectButton.enabled = true
+            disconnectButton.enabled = false
+            label.text = "Press to connect."
+        }
+
+        onStickMoved: {
+            console.log("Stick moved. x: " + x + " y: " + y)
+        }
+
+        onButtonsChanged: {
+            console.log("Buttons changed. A: " + a + " B: " + b + " C: " + c + " D: " + d)
+        }
+
+        onAChanged: {
+            console.log("A changed to: " + val)
+            if(val){
+                xtstAdapter.sendKeyPress("a");
+            }
+        }
+        onBChanged: {
+            console.log("B changed to: " + val)
+            if(val){
+                xtstAdapter.sendKeyPress("b");
+            }
+        }
+        onCChanged: {
+            console.log("C changed to: " + val)
+            if(val){
+                xtstAdapter.sendKeyPress("c");
+            }
+        }
+        onDChanged: {
+            console.log("D changed to: " + val)
+            if(val){
+                xtstAdapter.sendKeyPress("d");
+            }
+        }
+
+        onXChanged: {
+            if(val > joystickThreshold){
+                xtstAdapter.sendKeyPress("Right");
+            }else if(val < -joystickThreshold){
+                xtstAdapter.sendKeyPress("Left");
+            }
+        }
+
+        onYChanged: {
+            if(val > joystickThreshold){
+                xtstAdapter.sendKeyPress("Down");
+            }else if(val < -joystickThreshold){
+                xtstAdapter.sendKeyPress("Up");
+            }
+        }
+    }
+
+    XtstAdapter{
+        id: xtstAdapter
     }
 }