Added BSD license headers to all files...
[qt-labs:qml-presentation-system.git] / examples / tutorial / SlideDeck.qml
1 /***************************************************************************
2 **
3 ** This file is part of QML Presentation System **
4 **
5 ** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).*
6 **
7 ** All rights reserved.
8 ** Contact:  Nokia Corporation (qt-info@nokia.com)
9 **
10 ** You may use this file under the terms of the BSD license as follows:
11 **
12 ** "Redistribution and use in source and binary forms, with or without
13 ** modification, are permitted provided that the following conditions are met:
14 **
15 **  * Redistributions of source code must retain the above copyright notice,
16 **    this list of conditions and the following disclaimer.
17 **  * Redistributions in binary form must reproduce the above copyright notice,
18 **    this list of conditions and the following disclaimer in the documentation
19 **    and/or other materials provided with ** the distribution.
20 **  * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor the
21 **    names of its contributors may be used to endorse or promote products
22 **    derived from this software without specific ** prior written permission.
23 **
24 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 ** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28 ** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 ** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30 ** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32 ** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
34 **
35 **************************************************************************/
36
37 import Qt.labs.presentation 1.0
38 import QtQuick 2.0
39
40 Presentation
41 {
42     width: 1280
43     height: 720
44
45
46     Slide {
47         centeredText: "Use [space] or [keypad] to see intro"
48     }
49
50     Slide {
51         title: "Presentation {} Element"
52         content: [
53             "Toplevel element",
54             "Defines background",
55             "Foreground color",
56         ]
57
58         CodeSection {
59             text: "Presentation
60 {
61     width: 640
62     height: 360
63
64     // Define a background color...
65     Rectangle {
66         anchors.fill: parent
67         color: \"white\"
68     }
69
70     property color textColor: \"black\"
71
72     // Then define slide elements
73     Slide { ... }
74     Slide { ... }
75     Slide { ... }
76     ...
77 }"
78         }
79     }
80
81
82     Slide {
83         title: "Slide {} Element"
84         content: [
85             "Bullet points",
86             "Should be short",
87             "And to the point",
88             " Sub point",
89             "  Sub Sub point",
90             " Sub point"
91         ]
92
93         CodeSection {
94
95             text: "Slide {\n" +
96                   "    id: areaSlide\n" +
97                   "    title: \"Slide {} Element\"\n" +
98                   "    content: [\n" +
99                   "              \"Bullet points\",\n" +
100                   "              \"Should be short\",\n" +
101                   "              \"And to the point\",\n" +
102                   "              \" Sub point\",\n" +
103                   "              \"  Sub Sub point\",\n" +
104                   "              \" Sub point\"\n" +
105                   "             ]\n" +
106                   "}\n"
107         }
108     }
109
110     Slide {
111         title: "Slide {}, continued"
112         Rectangle {
113             anchors.fill: parent
114             color: "lightGray"
115             Text {
116                 text: "Slide fills this area..."
117                 anchors.centerIn: parent
118             }
119         }
120     }
121
122     Slide {
123         id: fillAreaSlide
124         title: "Slide {}, continued"
125         content: ["The built-in property \"contentWidth\" can be used to let the bullet points fill a smaller area of the slide..."]
126
127         SequentialAnimation on contentWidth {
128             PropertyAction { value: fillAreaSlide.width }
129             PauseAnimation { duration: 2500 }
130             NumberAnimation { to: fillAreaSlide.width / 2; duration: 5000; easing.type: Easing.InOutCubic }
131             running: fillAreaSlide.visible
132         }
133
134         Rectangle {
135             height: parent.height
136             width: parent.contentWidth
137
138             color: "lightGray"
139             z: -1
140         }
141     }
142
143     Slide {
144         title: "Slide {}, continued"
145         centeredText: "Use the predefined <i><b><code>centeredText</code></b></i> property to put a single block of text at the center of the Slide{}"
146     }
147
148     Slide {
149         title: "Slide {}, continued"
150         centeredText: '<font color="red"><i>Use</i> rich text, <font color="blue">if <b>you</b> like...'
151     }
152
153
154
155
156     Slide {
157         title: "Font size relative to screen size"
158         content: [
159             "Which means you don't need to worry about it",
160             "Bullet points wraps around on the edges, regardless of how long they are, like this. Even if you should choose to use a very long bullet point (which would distract your audience) it would still look ok'ish",
161             "If you run out of height, you're out of luck though..."
162         ]
163     }
164
165
166
167     Slide {
168         id: interactiveSlide
169
170         title: "Embed Interactive Content"
171
172         Rectangle {
173             id: box
174             width: parent.fontSize * 10
175             height: width
176             color: mouse.pressed ? "lightsteelblue" : "steelblue"
177
178             NumberAnimation on rotation { from: 0; to: 360; duration: 10000; loops: Animation.Infinite; running: visible }
179
180             Text {
181                 text: "Click Me!"
182                 anchors.centerIn: parent
183             }
184
185             MouseArea {
186                 id: mouse
187                 anchors.fill: parent
188                 drag.target: box
189             }
190         }
191     }
192
193
194     Slide {
195         title: "Features"
196         centeredText: 'Hit [esc] to fade out the current page if there are questions from the audience'
197     }
198
199     Slide {
200         title: "Features"
201         centeredText: 'Navigate back and forth using [left] and [right]\n[space] or [click] takes you to the next slide.'
202     }
203
204
205     Slide {
206         centeredText: "Now go make our own presentations\n\nEnjoy!"
207     }
208
209
210 }