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