Change copyrights from Nokia to Digia
[qt:qtfeedback.git] / doc / src / snippets / declarative / declarative-feedback.qml
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the QtFeedback
7 **
8 ** $QT_BEGIN_LICENSE:BSD$
9 ** You may use this file under the terms of the BSD license as follows:
10 **
11 ** "Redistribution and use in source and binary forms, with or without
12 ** modification, are permitted provided that the following conditions are
13 ** met:
14 **   * Redistributions of source code must retain the above copyright
15 **     notice, this list of conditions and the following disclaimer.
16 **   * Redistributions in binary form must reproduce the above copyright
17 **     notice, this list of conditions and the following disclaimer in
18 **     the documentation and/or other materials provided with the
19 **     distribution.
20 **   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
21 **     of its contributors may be used to endorse or promote products derived
22 **     from this software without specific prior written permission.
23 **
24 **
25 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
36 **
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
40
41 import QtQuick 2.0
42
43 Rectangle {
44     id: page
45     width: 800
46     height: 350
47     color: "olive"
48
49     //![File Effect]
50     import QtFeedback 5.0
51
52     FileEffect {
53         id: myFileEffect
54         loaded: false
55         source: "file:///myfile.ivs"
56     }
57
58     MouseArea {
59         onClicked: myFileEffect.start();
60     }
61
62     //![File Effect]
63
64     //![Haptics Effect]
65
66     import QtFeedback 5.0
67
68     HapticsEffect {
69         id: rumbleEffect
70         attackIntensity: 0.0
71         attackTime: 250
72         intensity: 1.0
73         duration: 100
74         fadeTime: 250
75         fadeIntensity: 0.0
76     }
77     MouseArea {
78         onClicked: {
79         rumbleEffect.start();  // plays a rumble effect
80     }
81
82     //![Haptics Effect]
83
84     //![Theme]
85     //Example 1: using ThemeEffect declaring element
86
87         import QtFeedback 5.0
88
89         Rectangle {
90             width: 180; height: 20
91             radius:5
92             color: "lightgrey"
93             Text {
94                 anchors.centerIn: parent
95                 text: "Play Theme: Press"
96             }
97             ThemeEffect {
98                  id: myOtherThemeEffect
99                  effect: "Press"
100              }
101             MouseArea {
102                 anchors.fill: parent
103                 onClicked: {
104                     myOtherThemeEffect.play();
105                 }
106             }
107         }
108
109         //Example 2: using ThemeEffect without declaring element
110
111         import QtFeedback.ThemeEffect 5.0 as Effect
112
113         Rectangle {
114             width: 180; height: 20
115             radius:5
116             color: "lightgrey"
117             Text {
118                 anchors.centerIn: parent
119                 text: "Play Theme: Press"
120             }
121             MouseArea {
122                 anchors.fill: parent
123                 onClicked: {
124                     Effect.effect = "Press"
125                     Effect.play();
126                 }
127             }
128         }
129
130         //Example 3: using ThemeEffect without declaring element and calling overloaded play function
131
132         import QtFeedback.ThemeEffect 5.0 as Effect
133
134         Rectangle {
135             width: 180; height: 20
136             radius:5
137             color: "lightgrey"
138             Text {
139                 anchors.centerIn: parent
140                 text: "Play Theme: Press"
141             }
142             MouseArea {
143                 anchors.fill: parent
144                 onClicked: {
145                     Effect.play(Effect.Press)
146                 }
147             }
148         }
149
150     //![Theme]
151
152     //! [Play the system theme button click effect]
153         import QtFeedback.ThemeEffect 5.0 as Effect
154
155         Rectangle {
156             width: 180; height: 20
157             radius:5
158             color: "lightgrey"
159             Text {
160                 anchors.centerIn: parent
161                 text: "Play Theme: Press"
162             }
163             MouseArea {
164                 anchors.fill: parent
165                 onClicked: {
166                     Effect.play(Effect.Press)
167                 }
168             }
169         }
170     //! [Play the system theme button click effect]
171
172     //! [Start playing a custom haptic effect]
173     rumble.start();
174     //! [Start playing a custom haptic effect]
175
176     //! [Pause a custom haptic effect]
177     rumble.pause();
178     //! [Pause a custom haptic effect]
179
180     //! [Stop playing a custom haptic effect]
181     rumble.stop();
182     //! [Stop playing a custom haptic effect]
183
184     //! [Query the state of a custom haptic effect]
185     if (rumble.state === Feedback.Stopped)
186         console.log("The device has stopped rumbling.")
187     //! [Query the state of a custom haptic effect]
188
189     //! [Set the actuator which should play the custom effect]
190     for (var i = 0; rumble.availableActuators[i]; i++) {
191         if (rumble.availableActuators[i].name === "ExampleActuatorName") {
192            rumble.actuator = rumble.availableActuators[i]
193            }
194     }
195     //! [Set the actuator which should play the custom effect]