Unity 8
 All Classes Functions Properties
SwitchingApplicationImage.qml
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 */
18 
19 import QtQuick 2.0
20 import Ubuntu.Components 0.1
21 
22 Rectangle {
23  id: root
24  implicitHeight: image.implicitHeight
25  implicitWidth: image.implicitWidth
26  color: "black"
27 
28  property var application
29 
30  signal switched()
31 
32  function switchTo(application) {
33  if (root.application == application) {
34  root.switched();
35  return;
36  }
37 
38  priv.newApplication = application
39  root.visible = true;
40  switchToAnimation.start()
41  }
42 
43  QtObject {
44  id: priv
45  property var newApplication
46  }
47 
48  Image {
49  id: newImage
50  anchors.bottom: parent.bottom
51  width: root.width
52  source: priv.newApplication ? priv.newApplication.screenshot : ""
53  }
54 
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
62 
63  }
64 
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  }
81 }