Commit 59df13a2 authored by Gus Grubba's avatar Gus Grubba

Merge pull request #2306 from DonLakeFlyer/MultiTouch

Fix virtual joystick MultiTouch
parents 6c714562 c4bfa9ce
...@@ -232,7 +232,10 @@ Item { ...@@ -232,7 +232,10 @@ Item {
MultiPointTouchArea { MultiPointTouchArea {
anchors.fill: parent anchors.fill: parent
maximumTouchPoints: 2 touchPoints: [
TouchPoint { id: point1 },
TouchPoint { id: point2 }
]
property var leftRect: Qt.rect(0, 0, parent.thumbAreaHeight, parent.thumbAreaHeight) property var leftRect: Qt.rect(0, 0, parent.thumbAreaHeight, parent.thumbAreaHeight)
property var rightRect: Qt.rect(parent.width - parent.thumbAreaHeight, 0, parent.thumbAreaHeight, parent.thumbAreaHeight) property var rightRect: Qt.rect(parent.width - parent.thumbAreaHeight, 0, parent.thumbAreaHeight, parent.thumbAreaHeight)
...@@ -251,6 +254,7 @@ Item { ...@@ -251,6 +254,7 @@ Item {
var point1 var point1
if (touchPoints.length > 0) { if (touchPoints.length > 0) {
//console.log("Point1", touchPoints[0].x, touchPoints[0].y)
point1 = touchPoints[0] point1 = touchPoints[0]
if (pointInRect(leftRect, point1)) { if (pointInRect(leftRect, point1)) {
point1Location = -1 point1Location = -1
...@@ -261,6 +265,7 @@ Item { ...@@ -261,6 +265,7 @@ Item {
var point2 var point2
if (touchPoints.length == 2) { if (touchPoints.length == 2) {
//console.log("Point2", touchPoints[1].x, touchPoints[1].y)
point2 = touchPoints[1] point2 = touchPoints[1]
if (pointInRect(leftRect, point2)) { if (pointInRect(leftRect, point2)) {
point2Location = -1 point2Location = -1
...@@ -269,33 +274,39 @@ Item { ...@@ -269,33 +274,39 @@ Item {
} }
} }
var leftStickSet = false
var rightStickSet = false
// Make sure points are not both in the same rect // Make sure points are not both in the same rect
if (point1Location != point2Location) { if (point1Location != point2Location) {
if (point1Location != 0) { if (point1Location != 0) {
if (point1Location == -1) { if (point1Location == -1) {
leftStick.stickPosition = point1 leftStick.stickPosition = point1
leftStickSet = true
} else { } else {
rightStick.stickPosition = Qt.point(point1.x - (multiTouchItem.width - multiTouchItem.thumbAreaHeight), point1.y) rightStick.stickPosition = Qt.point(point1.x - (multiTouchItem.width - multiTouchItem.thumbAreaHeight), point1.y)
rightStickSet = true
} }
} }
if (point2Location != 0) { if (point2Location != 0) {
if (point2Location == -1) { if (point2Location == -1) {
rightStick.stickPosition = Qt.point(point2.x - (multiTouchItem.width - multiTouchItem.thumbAreaHeight), point2.y)
} else {
leftStick.stickPosition = point2 leftStick.stickPosition = point2
leftStickSet = true
} else {
rightStick.stickPosition = Qt.point(point2.x - (multiTouchItem.width - multiTouchItem.thumbAreaHeight), point2.y)
rightStickSet = true
} }
} }
} }
} if (!leftStickSet) {
onPressed: newTouchPoints(touchPoints)
onTouchUpdated: newTouchPoints(touchPoints)
onReleased: {
leftStick.reCenter() leftStick.reCenter()
}
if (!rightStickSet) {
rightStick.reCenter() rightStick.reCenter()
} }
}
onTouchUpdated: newTouchPoints(touchPoints)
} }
Timer { Timer {
......
...@@ -46,10 +46,13 @@ Rectangle { ...@@ -46,10 +46,13 @@ Rectangle {
stickPosition = Qt.point(width / 2, width / 2) stickPosition = Qt.point(width / 2, width / 2)
} }
/*
Keep in for debugging
Column { Column {
QGCLabel { text: xAxis } QGCLabel { text: xAxis }
QGCLabel { text: yAxis } QGCLabel { text: yAxis }
} }
*/
Rectangle { Rectangle {
anchors.margins: parent.width / 4 anchors.margins: parent.width / 4
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment