~danielholm/+junk/whip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import QtQuick 2.0
import Ubuntu.Components 1.1
import QtMultimedia 5.0
import QtSensors 5.0

/*!
    \brief MainView with a Label and Button elements.
*/

MainView {
    // objectName for functional testing purposes (autopilot-qt5)
    objectName: "mainView"

    // Note! applicationName needs to match the "name" field of the click manifest
    applicationName: "com.ubuntu.developer.danielholm.whip"

    /*
     This property enables the application to change orientation
     when the device is rotated. The default is false.
    */
    //automaticOrientation: true

    // Removes the old toolbar and enables new features of the new header.
    useDeprecatedToolbar: false

    width: units.gu(50)
    height: units.gu(75)

    backgroundColor: "#5E2750";

    Page {
        title: i18n.tr("Whip")

        state: "default"

        Column {
            spacing: units.gu(1)
            anchors {
                margins: units.gu(2)
                fill: parent
            }

            Label {
                id: label
                objectName: "label"

                text: i18n.tr("Swing phone like you were whipping, \nor press the whip.")
            }


            SoundEffect {
                id: playSound
                source: "audio/whip-crack.wav"
            }

            Icon {
                id: whipIcon
                width: units.gu(48)
                height: units.gu(48)
                anchors.horizontalCenter: parent.horizontalCenter
                anchors.verticalCenter: parent.verticalCenter
                source: "icons/whip.svg"
                MouseArea {
                    anchors.fill: parent
                    onClicked: {
                        // play whip crack
                        console.debug("Whipping by pressing!")
                        playSound.play()
                    }
                }
            }

            states: [
                State {
                    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; y:triangle1.x + triangle1.height; }
                    PropertyChanges { target: triangle3; rotation: 0; x:0;
                    y: triangle2.y + triangle2.height; }
                }
            ]

            SensorGesture {
                id: sensorGesture
                enabled: true
                gestures : ["QtSensors.whip"]
                onDetected:{
                    console.debug(gesture)
                    label.text = gesture

                    if (gesture == "whip") {
                        //window.state == "whipped" ? window.state = "default" : window.state = "whipped"
                        window.state = "default"
                        console.debug("Whipping by whipping!")
                        playSound.play()
                   }
                }
            }
        }
    }
}