/* * 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 . */ import QtQuick 1.1 import com.nokia.meego 1.0 import QtMobility.connectivity 1.2 import "settingsstorage.js" as SettingsStorage import qzeecontrol 1.0 Page { tools: commonTools Component.onCompleted: { SettingsStorage.initialize(); var address = SettingsStorage.getSetting("address"); var port = SettingsStorage.getSetting("port"); if(address !== "Unknown" && port !== "Unknown"){ console.log("Loaded address " + address + " and port " + port + " from DB.") addressField.text = address portField.text = port } } states: [ State { name: "active" PropertyChanges { target: cursorRectangle 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) } PropertyChanges { target: labelA color: btConn.a ? "red" : "blue" } PropertyChanges { target: labelB color: btConn.b ? "red" : "blue" } PropertyChanges { target: labelC color: btConn.c ? "red" : "blue" } PropertyChanges { target: labelD color: btConn.d ? "red" : "blue" } }, State { name: "inactive" PropertyChanges { target: cursorRectangle x: moveArea.x + (moveArea.width * 0.5) - (cursorRectangle.width * 0.5) y: moveArea.y + (moveArea.height * 0.5) - (cursorRectangle.height * 0.5) } PropertyChanges { target: labelA color: "blue" } PropertyChanges { target: labelB color: "blue" } PropertyChanges { target: labelC color: "blue" } PropertyChanges { target: labelD color: "blue" } } ] Connections { target: platformWindow onActiveChanged: { if(platformWindow.active){ state = "active" }else{ state = "inactive" } } } Button{ id: scanButton anchors{bottom: addressRow.top; bottomMargin: 10; horizontalCenter: parent.horizontalCenter} enabled: true text: "Scan" onClicked: { btDiscovery.discovery = true } } Row{ id: addressRow spacing: 5 anchors{bottom: infoText.top; bottomMargin: 10; horizontalCenter: parent.horizontalCenter} TextField{ id: addressField text: "No device found yet." onTextChanged: { if(text === "No device found yet.") return connectButton.enabled = true infoText.text = "Press \"Connect\" to connect to the device." console.log("Storing address in DB: " + text) SettingsStorage.setSetting("address", text) } } TextField{ id: portField text: "na" width: 60 validator: IntValidator{} onTextChanged: { if(text === "na") return console.log("Storing port in DB: " + text) SettingsStorage.setSetting("port", text) } } } Label { id: infoText anchors{bottom: connectButton.top; bottomMargin: 10; horizontalCenter: parent.horizontalCenter} width: parent.width text: "Please scan for a device first." horizontalAlignment: Text.AlignHCenter wrapMode: Text.WordWrap } Button{ id: connectButton anchors{bottom: disconnectButton.top; bottomMargin: 10; horizontalCenter: parent.horizontalCenter} enabled: false text: "Connect" onClicked: { enabled = false btConn.connect(addressField.text, parseInt(portField.text)) } } 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 discovery: false minimalDiscovery: true onDiscoveryChanged: { if(discovery){ infoText.text = "Scanning for devices..." scanButton.enabled = false connectButton.enabled = false disconnectButton.enabled = false }else{ scanButton.enabled = true disconnectButton.enabled = false } } onNewServiceDiscovered: { console.log("Service " + service.serviceName + " found on " + service.deviceName + " at address " + service.deviceAddress + " on port " + service.servicePort + ".") if(service.serviceName === "Zeemote"){ addressField.text = service.deviceAddress portField.text = service.servicePort } } } BtConnector{ id: btConn property int joystickThreshold: 50 onConnected: { disconnectButton.enabled = true infoText.text = "Connected. Have fun." } onDisconnected: { connectButton.enabled = true disconnectButton.enabled = false infoText.text = "Press \"Connect\" to connect to the device." } // 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) xtstAdapter.sendKey("a", val); } onBChanged: { // console.log("B changed to: " + val) xtstAdapter.sendKey("b", val); } onCChanged: { // console.log("C changed to: " + val) xtstAdapter.sendKey("c", val); } onDChanged: { // console.log("D changed to: " + val) xtstAdapter.sendKey("d", val); } onXChanged: { if(val > joystickThreshold){ xtstAdapter.sendKey("Right", true); }else if(val < -joystickThreshold){ xtstAdapter.sendKey("Left", true); }else{ xtstAdapter.sendKey("Right", false); xtstAdapter.sendKey("Left", false); } } onYChanged: { if(val > joystickThreshold){ xtstAdapter.sendKey("Down", true); }else if(val < -joystickThreshold){ xtstAdapter.sendKey("Up", true); }else{ xtstAdapter.sendKey("Down", false); xtstAdapter.sendKey("Up", false); } } } XtstAdapter{ id: xtstAdapter } }