Added BSD license headers to all files...
[qt-labs:qml-presentation-system.git] / examples / customtransition / OpacityTransitionPresentation.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 QtQuick 2.0
38 import Qt.labs.presentation 1.0
39
40 Presentation {
41
42     id: deck
43
44     width: 1280
45     height: 720
46
47     property color textColor: "white"
48
49     property bool inTransition: false;
50
51     property variant fromSlide;
52     property variant toSlide;
53
54     property int transitionTime: 500;
55
56     Rectangle {
57         anchors.fill: parent
58         gradient: Gradient {
59             GradientStop { position: 0; color: "lightsteelblue" }
60             GradientStop { position: 1; color: "black" }
61         }
62     }
63
64     SequentialAnimation {
65         id: transition
66         ScriptAction { script: {
67                 deck.inTransition = true
68                 fromSlide.opacity = 0
69                 toSlide.visible = true
70             }
71         }
72
73         ParallelAnimation {
74             NumberAnimation { target: fromSlide; property: "opacity"; from: 1; to: 0; duration: deck.transitionTime; easing.type: Easing.OutQuart }
75             NumberAnimation { target: fromSlide; property: "scale"; from: 1; to: 1.1; duration: deck.transitionTime; easing.type: Easing.InOutQuart }
76             NumberAnimation { target: toSlide; property: "opacity"; from: 0; to: 1; duration: deck.transitionTime; easing.type: Easing.InQuart }
77             NumberAnimation { target: toSlide; property: "scale"; from: 0.7; to: 1; duration: deck.transitionTime; easing.type: Easing.InOutQuart }
78         }
79
80         ScriptAction { script: {
81                 deck.inTransition = false
82                 fromSlide.visible = false
83                 fromSlide.opacity = 0
84                 fromSlide.scale = 1
85                 toSlide.opacity = 1
86             }
87         }
88     }
89
90     function switchSlides(from, to)
91     {
92         if (deck.inTransition)
93             return false
94
95         deck.fromSlide = from
96         deck.toSlide = to
97
98         transition.running = true;
99
100         return true
101     }
102 }