summaryrefslogtreecommitdiffstats
path: root/demos/qtdemo/qmlShell.qml
diff options
context:
space:
mode:
authorAlan Alpert <alan.alpert@nokia.com>2010-05-24 19:02:51 (GMT)
committerAlan Alpert <alan.alpert@nokia.com>2010-05-24 19:26:34 (GMT)
commit3af5a362a034fe7f9085a202adfdf13252de1715 (patch)
treede73840eb45305dbc20f7185549eb163d1e900b9 /demos/qtdemo/qmlShell.qml
parent3003f1d885e732e7cc19f73f9733aa8102b70717 (diff)
downloadQt-3af5a362a034fe7f9085a202adfdf13252de1715.zip
Qt-3af5a362a034fe7f9085a202adfdf13252de1715.tar.gz
Qt-3af5a362a034fe7f9085a202adfdf13252de1715.tar.bz2
Integrate some QML examples and demos into qtdemo
Includes minor changes and additions to the existing doc and examples, so that they follow Qt conventions better. Note that while blurring the background was part of the plan for the embedded QML viewer I could not get it to perform well enough. In the future, when blur is fast enough (or someone else can get it to perform better than I) -use-blur should become the default, and -no-blur the option. Task-number: QTBUG-10582
Diffstat (limited to 'demos/qtdemo/qmlShell.qml')
-rw-r--r--demos/qtdemo/qmlShell.qml117
1 files changed, 117 insertions, 0 deletions
diff --git a/demos/qtdemo/qmlShell.qml b/demos/qtdemo/qmlShell.qml
new file mode 100644
index 0000000..8c20cf4
--- /dev/null
+++ b/demos/qtdemo/qmlShell.qml
@@ -0,0 +1,117 @@
+import Qt 4.7
+import Effects 1.0
+
+Item {
+ id: main
+ property alias source: loader.source
+ property bool show: false
+ x: 0
+ y: -500 //height and width set by program
+ opacity: 0
+ property QtObject blurEffect: realBlur == null ? dummyBlur : realBlur //Is there a better way to lose those error messages?
+ Loader{//Automatic FocusScope
+ focus: true
+ clip: true
+ id: loader //source set by program
+ 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{
+ z: -1
+ anchors.fill: loader.status == Loader.Ready ? loader : errorTxt
+ anchors.margins: -10
+ radius: 12
+ smooth: true
+ 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*/
+ }
+
+ }
+
+ MouseArea{
+ z: -2
+ hoverEnabled: true //To steal from the buttons
+ anchors.fill: parent
+ onClicked: main.show=false;
+ }
+
+ Text{
+ id: errorTxt
+ anchors.centerIn: parent
+ color: 'white'
+ smooth: true
+ visible: loader.status == Loader.Error
+ textFormat: Text.RichText //includes link for bugreport
+ //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. 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);
+ }
+
+
+ states: [
+ State {
+ name: "show"
+ when: show == true
+ PropertyChanges {
+ target: main
+ opacity: 1
+ y: 0
+ }
+ PropertyChanges {
+ target: blurEffect
+ enabled: true
+ blurRadius: 8
+ blurHints: Blur.AnimationHint | Blur.PerformanceHint
+ }
+ }
+ ]
+ MagicAnim{ id: magicAnim; target: main; from: -500; to: 0 }
+ transitions: [
+ Transition { from: ""; to: "show"
+ SequentialAnimation{
+ ScriptAction{ script: magicAnim.start() }
+ NumberAnimation{ properties: "opacity,blurRadius"; easing.type: Easing.OutCubic; duration: 1000}
+ PropertyAnimation{ target: main; property: "y"}
+ }
+
+ },
+ Transition { from: "show"; to: "" //Addtionally, unload the item
+ SequentialAnimation{
+ NumberAnimation{ properties: "y,opacity,blurRadius";duration: 500 }
+ ScriptAction{ script: loader.source = ''; }
+ }
+ /*Attempt to copy the exeunt animation. Looks bad
+ SequentialAnimation{
+ ParallelAnimation{
+ NumberAnimation{ properties: "opacity,blurRadius"; easing.type: Easing.InCubic; duration: 1000 }
+ SequentialAnimation{
+ NumberAnimation{ target: main; property: 'y'; to: 3.2*height/5; duration: 500}
+ ParallelAnimation{
+ NumberAnimation{ target: main; property: 'y'; to: 3.0*height/5; duration: 100}
+ NumberAnimation{ target: main; property: 'x'; to: 3.0*width/5; duration: 100}
+ }
+ NumberAnimation{ target: main; property: 'x'; to: 700; duration: 400}
+ }
+ }
+ ScriptAction{ script: loader.source = ''; }
+ PropertyAction{ properties: "x,y";}
+ }
+ */
+ }
+ ]
+ Item{ Blur{id: dummyBlur } }
+
+}