1 /****************************************************************************
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 ** This file is part of the Qt Components project.
9 ** $QT_BEGIN_LICENSE:BSD$
10 ** You may use this file under the terms of the BSD license as follows:
12 ** "Redistribution and use in source and binary forms, with or without
13 ** modification, are permitted provided that the following conditions are
15 ** * Redistributions of source code must retain the above copyright
16 ** notice, this list of conditions and the following disclaimer.
17 ** * Redistributions in binary form must reproduce the above copyright
18 ** notice, this list of conditions and the following disclaimer in
19 ** the documentation and/or other materials provided with the
21 ** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
22 ** the names of its contributors may be used to endorse or promote
23 ** products derived from this software without specific prior written
26 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
39 ****************************************************************************/
47 property double dim: 0.9
48 property int fadeInDuration: 250
49 property int fadeOutDuration: 250
51 property int fadeInDelay: 0
52 property int fadeOutDelay: 0
54 property int fadeInEasingType: Easing.InQuint
55 property int fadeOutEasingType: Easing.OutQuint
57 property url background: ""
59 property Item visualParent: null
60 property Item originalParent: parent
62 // widen the edges to avoid artefacts during rotation
64 anchors.rightMargin: -1
65 anchors.bottomMargin: -1
66 anchors.leftMargin: -1
68 // opacity is passed to child elements - that is not, what we want
69 // so we need to use alpha value here
70 property double alpha: dim
74 //Deprecated, TODO Remove the following two lines on w13
76 onClicked: privateClicked()
78 // we need the possibility to fetch the red, green, blue components from a color
79 // see http://bugreports.qt.nokia.com/browse/QTBUG-14731
80 color: background != "" ? "transparent" : Qt.rgba(0.0, 0.0, 0.0, alpha)
89 enabled: faderBackground.alpha != 0.0
90 onClicked: { parent.privateClicked() }
94 id: backgroundComponent
99 width: faderBackground.width
100 height: faderBackground.height
102 opacity: faderBackground.alpha
105 Loader {id: backgroundLoader}
108 if (background && faderBackground.alpha && backgroundLoader.sourceComponent == undefined) {
109 backgroundLoader.sourceComponent = backgroundComponent;
111 if (!faderBackground.alpha) {
112 backgroundLoader.sourceComponent = undefined;
116 function findRoot() {
120 while (next.parent) {
121 if(next.objectName == "appWindowContent" || next.objectName == "windowContent"){
136 target: faderBackground
143 target: faderBackground
151 from: "hidden"; to: "visible"
152 //reparent fader whenever it is going to be visible
153 SequentialAnimation {
154 ScriptAction {script: {
155 //console.log("=============00=============");
156 // the algorithm works in the following way:
157 // First: Check if visualParent property is set; if yes, center the fader in visualParent
158 // Second: If not, center inside window content element
159 // Third: If no window was found, use root window
160 originalParent = faderBackground.parent;
161 if (visualParent != null) {
162 faderBackground.parent = visualParent
164 var root = findRoot();
166 faderBackground.parent = root;
168 // console.log("Error: Cannot find root");
173 PauseAnimation { duration: fadeInDelay }
177 duration: faderBackground.fadeInDuration
178 easing.type: faderBackground.fadeInEasingType;
183 from: "visible"; to: "hidden"
184 SequentialAnimation {
185 PauseAnimation { duration: fadeOutDelay }
189 duration: faderBackground.fadeOutDuration
190 easing.type: faderBackground.fadeOutEasingType;
192 ScriptAction {script: {
193 faderBackground.parent = originalParent;