summaryrefslogtreecommitdiffstats
path: root/demos/qtdemo/qmlShell.qml
diff options
context:
space:
mode:
Diffstat (limited to 'demos/qtdemo/qmlShell.qml')
-rw-r--r--demos/qtdemo/qmlShell.qml174
1 files changed, 174 insertions, 0 deletions
diff --git a/demos/qtdemo/qmlShell.qml b/demos/qtdemo/qmlShell.qml
new file mode 100644
index 0000000..b1ee79a
--- /dev/null
+++ b/demos/qtdemo/qmlShell.qml
@@ -0,0 +1,174 @@
+/****************************************************************************
+**
+** 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.<br />If you installed Qt's QML modules this is a bug!<br />"
+ + 'Report it at <a href="http://bugreports.qt.nokia.com">http://bugreports.qt.nokia.com</a>';
+ 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
+ }
+ }
+ ]
+}