From bda393ce3853c1507b0870815e57cb136c7d7ac5 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Wed, 1 Feb 2012 10:22:00 +1000 Subject: add more sensor gestures to shakeit Change-Id: I83ddbc84ce90c2e89f7a950f061065f0b0ce38f3 Sanity-Review: Lorn Potter Reviewed-by: Lincoln Ramsay --- examples/sensors/shakeit/audio/loopy2a_mono.wav | Bin 0 -> 67772 bytes examples/sensors/shakeit/audio/phone.wav | Bin 0 -> 22094 bytes examples/sensors/shakeit/qml.pro | 6 + examples/sensors/shakeit/shakeit.pro | 3 + examples/sensors/shakeit/shakeit.qml | 149 +++++++++++++++++++++--- 5 files changed, 145 insertions(+), 13 deletions(-) create mode 100755 examples/sensors/shakeit/audio/loopy2a_mono.wav create mode 100644 examples/sensors/shakeit/audio/phone.wav create mode 100644 examples/sensors/shakeit/qml.pro create mode 100644 examples/sensors/shakeit/shakeit.pro diff --git a/examples/sensors/shakeit/audio/loopy2a_mono.wav b/examples/sensors/shakeit/audio/loopy2a_mono.wav new file mode 100755 index 00000000..7d76cb65 Binary files /dev/null and b/examples/sensors/shakeit/audio/loopy2a_mono.wav differ diff --git a/examples/sensors/shakeit/audio/phone.wav b/examples/sensors/shakeit/audio/phone.wav new file mode 100644 index 00000000..884e9ac2 Binary files /dev/null and b/examples/sensors/shakeit/audio/phone.wav differ diff --git a/examples/sensors/shakeit/qml.pro b/examples/sensors/shakeit/qml.pro new file mode 100644 index 00000000..440ca687 --- /dev/null +++ b/examples/sensors/shakeit/qml.pro @@ -0,0 +1,6 @@ +TEMPLATE = aux + +files.files = info.json icon.png images audio shakeit.qml + +files.path = /opt/mt/applications/com.nokia.mt.shakeit +INSTALLS = files diff --git a/examples/sensors/shakeit/shakeit.pro b/examples/sensors/shakeit/shakeit.pro new file mode 100644 index 00000000..6dc685b9 --- /dev/null +++ b/examples/sensors/shakeit/shakeit.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs + +SUBDIRS = qml.pro diff --git a/examples/sensors/shakeit/shakeit.qml b/examples/sensors/shakeit/shakeit.qml index 0ffcaf0b..fe0a8e16 100644 --- a/examples/sensors/shakeit/shakeit.qml +++ b/examples/sensors/shakeit/shakeit.qml @@ -43,11 +43,27 @@ import QtQuick 2.0 //! [0] import QtSensors 5.0 //! [0] +//import QtMultimedia 4.0 +import Qt.multimediakit 4.0 + + Rectangle { id: window + state: "default" + + Audio { + id :phone + source: "audio/phone.wav" //mono + } + Audio { + id :loopy2a_mono + source: "audio/loopy2a_mono.wav" //mono + } + Text { + id: label text: qsTr("Shake to rotate triangles") y: parent.height / 4 anchors.horizontalCenter: parent.horizontalCenter @@ -56,20 +72,29 @@ Rectangle { id: triangle1 smooth: true source: "images/triangle.png" - y: parent.height / 2 - (triangle1.height); x: parent.width / 2 - (triangle1.width / 2) + y: parent.height / 2 - (triangle1.height); + Behavior on x { SmoothedAnimation { velocity: 200 } } + Behavior on y { SmoothedAnimation { velocity: 200 } } } Image { id: triangle2 smooth: true source: "images/triangle2.png" - anchors.right: triangle1.left; anchors.top: triangle1.bottom + x: parent.width / 2 - (triangle1.width + triangle2.width / 2) + y: parent.height / 2 + (triangle2.height / 2); + Behavior on x { SmoothedAnimation { velocity: 200 } } + Behavior on y { SmoothedAnimation { velocity: 200 } } } Image { id: triangle3 smooth: true source: "images/triangle3.png" - anchors.left: triangle1.right; anchors.top: triangle1.bottom + x: parent.width / 2 + (triangle1.width / 2) + y: parent.height / 2 + (triangle3.height / 2); + + Behavior on x { SmoothedAnimation { velocity: 200 } } + Behavior on y { SmoothedAnimation { velocity: 200 } } } states: [ @@ -80,16 +105,90 @@ Rectangle { PropertyChanges { target: triangle3; rotation: 270 } }, State { - name: "unrotated" - PropertyChanges { target: triangle1; rotation: 0 } - PropertyChanges { target: triangle2; rotation: 0 } - PropertyChanges { target: triangle3; rotation: 0 } - } + name: "default" + PropertyChanges { target: triangle1; rotation: 0; + x: parent.width / 2 - (triangle1.width / 2) + y: parent.height / 2 - (triangle1.height); + } + PropertyChanges { target: triangle2; rotation: 0; + x: parent.width / 2 - (triangle1.width + triangle2.width / 2) + y: parent.height / 2 + (triangle2.height / 2); + } + PropertyChanges { target: triangle3; rotation: 0; + x: parent.width / 2 + (triangle1.width / 2) + y: parent.height / 2 + (triangle3.height / 2); + } + }, + State { + name: "whipped" + PropertyChanges { target: triangle1; rotation: 0; x:0; + } + PropertyChanges { target: triangle2; rotation: 0; x:0; + } + PropertyChanges { target: triangle3; rotation: 0; x:0; + y: triangle2.y + triangle2.height; + } + }, + State { + name: "twisted" + PropertyChanges { target: triangle1; rotation: 270; + x:window.width - triangle1.width; + } + PropertyChanges { target: triangle2; rotation: 180; + x:window.width - triangle2.width; + } + PropertyChanges { target: triangle3; rotation: 90; + x:window.width - triangle3.width; + y:triangle2.y + triangle2.height; + } + }, + State { + name: "covered" + PropertyChanges { target: triangle1; rotation: 0; + x: window.width / 3 - triangle1.width / 2; + y: window.height - triangle1.height; + } + PropertyChanges { target: triangle2; rotation: 0; + x: window.width / 2 - triangle2.width / 2; // middle + y: window.height - triangle2.height; + } + PropertyChanges { target: triangle3; rotation: 0; + x: (window.width / 3 + window.width / 3) - triangle3.width / 2; + y: window.height - triangle3.height; + } + }, + State { + name: "hovered" + PropertyChanges { target: triangle1; rotation: 90; + x: window.width / 3 - triangle1.width / 2; + y: triangle1.height; + } + PropertyChanges { target: triangle2; rotation: 270; + x: window.width / 2 - triangle2.width / 2; // middle + y: triangle2.height; + } + PropertyChanges { target: triangle3; rotation: 180; + x: (window.width / 3 + window.width / 3) - triangle3.width / 2; + y: triangle3.height + } + }/*, + State { + name :"turnedover" + }*/ ] + + transitions: Transition { - RotationAnimation { id: t1Rotation; target: triangle1; duration: 1000; direction: RotationAnimation.Clockwise } - RotationAnimation { id: t2Rotation; target: triangle2; duration: 3000; direction: RotationAnimation.Counterclockwise } - RotationAnimation { id: t3Rotation; target: triangle3; duration: 3000; direction: RotationAnimation.Clockwise } + ParallelAnimation { + running: true + NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce;duration: 3000; } + RotationAnimation { id: t1Rotation; target: triangle1; duration: 1000; + direction: RotationAnimation.Clockwise } + RotationAnimation { id: t2Rotation; target: triangle2; duration: 3000; + direction: RotationAnimation.Counterclockwise } + RotationAnimation { id: t3Rotation; target: triangle3; duration: 3000; + direction: RotationAnimation.Clockwise } + } } //! [1] @@ -100,12 +199,36 @@ Rectangle { enabled: true //! [3] //! [2] - gestures : ["QtSensors.shake"] + gestures : ["QtSensors.shake", "QtSensors.whip", "QtSensors.twist", "QtSensors.cover", + "QtSensors.hover", "QtSensors.turnover", "QtSensors.pickup"] //! [2] //! [4] onDetected:{ + console.debug(gesture) + label.text = gesture + if (gesture == "shake") { - window.state == "rotated" ? window.state = "unrotated" : window.state = "rotated" + window.state == "rotated" ? window.state = "default" : window.state = "rotated" + } + if (gesture == "whip") { + window.state == "whipped" ? window.state = "default" : window.state = "whipped" + } + if (gesture == "twistRight") { + window.state == "twisted" ? window.state = "default" : window.state = "twisted" + } + if (gesture == "cover") { + window.state == "covered" ? window.state = "default" : window.state = "covered" + } + if (gesture == "hover") { + window.state == "hovered" ? window.state = "default" : window.state = "hovered" + } + if (gesture == "turnover") { + window.state = "default" + loopy2a_mono.play(); + } + if (gesture == "pickup") { + window.state = "default" + phone.play() } } //! [4] -- cgit v1.2.3