/**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the demonstration applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the Technology Preview License Agreement accompanying ** this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ** ** ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import Qt 4.7 import Effects 1.0 /* Vars exposed from C++ pixmap bgAppPixmap bool useBlur (to turn on, pass -use-blur on the cmd line. Off by default 'cause it's too slow) */ Item { id: main //height and width set by program to fill window //below properties are sometimes set from C++ property url qmlFile: '' property bool show: false Image{ id: bg opacity: 0 anchors.fill: parent z: -1 pixmap: bgAppPixmap effect: Blur { id: blurEffect; enabled: useBlur; blurRadius: 8;} } Item{ id:embeddedViewer width: parent.width height: parent.height opacity: 0; z: 10 Loader{ id: loader z: 10 focus: true //Automatic FocusScope clip: true source: qmlFile anchors.centerIn: parent onStatusChanged: if(status == Loader.Ready) { if(loader.item.width > 640) loader.item.width = 640; if(loader.item.height > 480) loader.item.height = 480; } } Rectangle{ id: frame z: 9 anchors.fill: loader.status == Loader.Ready ? loader : errorTxt anchors.margins: -8 radius: 4 smooth: true border.color: "#88aaaaaa" gradient: Gradient{ GradientStop{ position: 0.0; color: "#14FFFFFF" } GradientStop{ position: 1.0; color: "#5AFFFFFF" } } MouseArea{ anchors.fill: parent onClicked: loader.focus=true;/* and don't propogate to the 'exit' area*/ } Rectangle{ id: innerFrame anchors.margins: 7 anchors.bottomMargin: 8 anchors.rightMargin: 8 color: "black" border.color: "#44000000" anchors.fill:parent } effect: DropShadow { enabled: useBlur; blurRadius: 9; color: "#88000000"; xOffset:0 yOffset:0 } } Text{ id: errorTxt z: 10 anchors.centerIn: parent color: 'white' smooth: true visible: loader.status == Loader.Error textFormat: Text.RichText //Note that if loader is Error, it is because the file was found but there was an error creating the component //This means either we have a bug in our demos, or the required modules (which ship with Qt) did not deploy correctly text: "The example has failed to load.
If you installed Qt's QML modules this is a bug!
" + 'Report it at http://bugreports.qt.nokia.com'; onLinkActivated: Qt.openUrlExternally(link); } } Rectangle{ id: blackout //Maybe use a colorize effect instead? z: 8 anchors.fill: parent color: "#000000" opacity: 0 } MouseArea{ z: 8 enabled: main.show hoverEnabled: true //To steal focus from the buttons anchors.fill: parent onClicked: main.show=false; } states: [ State { name: "show" when: show == true PropertyChanges { target: embeddedViewer opacity: 1 } PropertyChanges { target: bg opacity: 1 } PropertyChanges { target: blackout opacity: 0.5 } } ] transitions: [//Should not be too long, because the component has already started running Transition { from: ''; to: "show"; reversible: true SequentialAnimation{ PropertyAction { target: bg; property: useBlur?"y":"opacity";}//fade in blurred background only if blurred NumberAnimation{ properties: "opacity"; easing.type: Easing.InQuad; duration: 500} PropertyAction { target: loader; property: "focus"; value: true}//Might be needed to ensure the focus stays with us } } ] }