on 4e77f91 help sign in
unity8/qml/Stages/SwitchingApplicationImage.qml
81 lines 2.3 kB history raw
1/*
2 * Copyright 2014 Canonical Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authors: Michael Zanetti <michael.zanetti@canonical.com>
17*/
19import QtQuick 2.0
20import Ubuntu.Components 0.1
22Rectangle {
23 id: root
24 implicitHeight: image.implicitHeight
25 implicitWidth: image.implicitWidth
26 color: "black"
28 property var application
30 signal switched()
32 function switchTo(application) {
33 if (root.application == application) {
34 root.switched();
35 return;
36 }
38 priv.newApplication = application
39 root.visible = true;
40 switchToAnimation.start()
41 }
43 QtObject {
44 id: priv
45 property var newApplication
46 }
48 Image {
49 id: newImage
50 anchors.bottom: parent.bottom
51 width: root.width
52 source: priv.newApplication ? priv.newApplication.screenshot : ""
53 }
55 Image {
56 id: image
57 visible: true
58 source: root.application ? root.application.screenshot : ""
59 width: root.width
60 height: sourceSize.height
61 anchors.bottom: parent.bottom
63 }
65 SequentialAnimation {
66 id: switchToAnimation
67 ParallelAnimation {
68 UbuntuNumberAnimation { target: image; property: "x"; from: 0; to: root.width; duration: UbuntuAnimation.SlowDuration }
69 UbuntuNumberAnimation { target: newImage; property: "scale"; from: 0.7; to: 1; duration: UbuntuAnimation.SlowDuration }
70 }
71 ScriptAction {
72 script: {
73 image.x = 0
74 root.application = priv.newApplication
75 root.visible = false;
76 priv.newApplication = null
77 root.switched();
78 }
79 }
80 }