Unity 8
InputMethod.qml
1 /*
2  * Copyright (C) 2014,2015 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.4
18 import Unity.Application 0.1
19 import Ubuntu.Components 1.3
20 import Ubuntu.Gestures 0.1
21 
22 Item {
23  id: root
24 
25  Connections {
26  target: SurfaceManager
27  onSurfaceCreated: {
28  if (surface.type == Mir.InputMethodType) {
29  surfaceItem.surface = surface;
30  }
31  }
32  }
33 
34  property int transitionDuration: UbuntuAnimation.FastDuration
35 
36  MirSurfaceItem {
37  id: surfaceItem
38  anchors.fill: parent
39 
40  consumesInput: true
41 
42  surfaceWidth: width
43  surfaceHeight: height
44 
45  onLiveChanged: {
46  if (surface !== null && !live) {
47  surface = null;
48  }
49  }
50  }
51 
52  TouchGate {
53  x: UbuntuKeyboardInfo.x
54  y: UbuntuKeyboardInfo.y
55  width: UbuntuKeyboardInfo.width
56  height: UbuntuKeyboardInfo.height
57 
58  targetItem: surfaceItem
59  }
60 
61  state: {
62  if (surfaceItem.surface && surfaceItem.surfaceState != Mir.MinimizedState) {
63  return "shown";
64  } else {
65  return "hidden";
66  }
67  }
68 
69  states: [
70  State {
71  name: "shown"
72  PropertyChanges {
73  target: root
74  visible: true
75  y: 0
76  }
77  },
78  State {
79  name: "hidden"
80  PropertyChanges {
81  target: root
82  visible: false
83  // half-way down because the vkb occupies only the lower half of the surface
84  // TODO: consider keyboard rotation
85  y: root.parent.height / 2.0
86  }
87  }
88  ]
89 
90  transitions: [
91  Transition {
92  from: "*"; to: "*"
93  PropertyAction { property: "visible"; value: true }
94  UbuntuNumberAnimation { property: "y"; duration: transitionDuration }
95  }
96  ]
97 }