Unity 8
InputMethod.qml
1 /*
2  * Copyright (C) 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 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 General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 import QtQuick 2.0
18 import Unity.Application 0.1
19 import Ubuntu.Components 0.1
20 import Ubuntu.Gestures 0.1
21 
22 Item {
23  id: root
24 
25  property var surface: null
26 
27  property int transitionDuration: UbuntuAnimation.FastDuration
28 
29  Binding { target: surface; property: "z"; value: 0 }
30 
31  TouchGate {
32  x: UbuntuKeyboardInfo.x
33  y: UbuntuKeyboardInfo.y
34  z: 1
35  width: UbuntuKeyboardInfo.width
36  height: UbuntuKeyboardInfo.height
37 
38  targetItem: root.surface
39  }
40 
41  state: {
42  if (surface && surface.state != MirSurfaceItem.Minimized) {
43  return "shown";
44  } else {
45  return "hidden";
46  }
47  }
48 
49  states: [
50  State {
51  name: "shown"
52  PropertyChanges {
53  target: root
54  visible: true
55  y: 0
56  }
57  },
58  State {
59  name: "hidden"
60  PropertyChanges {
61  target: root
62  visible: false
63  // half-way down because the vkb occupies only the lower half of the surface
64  // TODO: consider keyboard rotation
65  y: root.parent.height / 2.0
66  }
67  }
68  ]
69 
70  transitions: [
71  Transition {
72  from: "*"; to: "*"
73  PropertyAction { property: "visible"; value: true }
74  UbuntuNumberAnimation { property: "y"; duration: transitionDuration }
75  }
76  ]
77 
78  onSurfaceChanged: {
79  if (surface) {
80  surface.parent = root;
81  surface.anchors.fill = root;
82  }
83  }
84 
85  Component.onDestruction: {
86  if (surface) {
87  surface.parent = null;
88  surface.release();
89  surface = null;
90  }
91  }
92 }