improved desktop UI
[mardrone] / mardrone / JoyStickTouch.qml
1 import QtQuick 1.0
2 import TouchArea 1.0
3
4 Item {
5         id:joystick
6         property int xv:(knob.x-(width-knob.width)/2)*(200/(width-knob.width))
7         property int yv:(knob.y-(height-knob.height)/2)*(200/(height-knob.height))
8         property bool pressed:false
9         property int touchPointId:-1
10         property bool touchmode:false
11         property url joyBackground:"joybox.png"
12         width: 200
13         height: 200
14
15             Image {
16                 id:knob
17                 x:parent.width/2-width/2
18                 y:parent.width/2-height/2
19                 source: "joyknob.png"
20             }
21
22         TouchArea {
23                 id: joyarea
24                 anchors.fill:parent
25                 minimumTouches: 1
26                 maximumTouches: 1
27
28                 onTouchStart: {
29                 //    console.log("TouchArea:ontouchStart " + joyarea.touches.length);
30                     var touch = joyarea.touches[0];
31                 //    console.log("touchStart",touch.id," at ",touch.y,touch.x,stick.x);
32                     knob.x=touch.x;
33                     knob.y=touch.y;
34                     pressed=true;
35                     touchmode=true
36                 }
37                 onTouchMove: {
38                //     console.log("TouchArea:ontouchMove " + joyarea.changedTouches.length);
39                     var touch = joyarea.changedTouches[0];
40               //     console.log("touchMove",touch.id," at ",touch.y,touch.x);
41                     if((touch.x<width) && (touch.x>0)) knob.x=touch.x;
42                     if((touch.y<height) && (touch.y>0))knob.y=touch.y;
43                 }
44
45                 onTouchEnd: {
46                 //    console.log("TouchArea:ontouchEnd " + joyarea.releasedTouches.length);
47                    var touch = joyarea.releasedTouches[0];
48                 //    console.log("JoyStick:touchEnd",touch.x,touch.y)
49                     knob.x=width/2-knob.width/2
50                     knob.y=width/2-knob.height/2
51                     pressed=false;
52
53                 }
54         }
55         MouseArea {
56             id:mouse_area
57             visible:!touchmode
58             anchors.fill:parent
59             drag.minimumX:0
60             drag.minimumY:0
61             drag.maximumX:parent.width-knob.width
62             drag.maximumY:parent.height-knob.height
63             drag.target:knob;
64             onReleased:{
65                 knob.x=parent.width/2-knob.width/2;
66                 knob.y=parent.height/2-knob.height/2;
67             }
68         }
69         Image {
70             source:joyBackground
71             anchors.fill:parent
72         }
73
74   }