on f909fbf help sign in
unity8/qml/Components/InputMethod.qml
93 lines 2.5 kB history raw
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 */
17import QtQuick 2.4
18import Unity.Application 0.1
19import Ubuntu.Components 1.3
20import Ubuntu.Gestures 0.1
22Item {
23 id: root
25 property bool active: false
26 property int transitionDuration: UbuntuAnimation.FastDuration
28 MirSurfaceItem {
29 id: surfaceItem
30 anchors.fill: parent
32 consumesInput: true
34 surfaceWidth: root.active ? width : -1
35 surfaceHeight: root.active ? height : -1
36 surface: SurfaceManager.inputMethodSurface
38 onLiveChanged: {
39 if (surface !== null && !live) {
40 surface = null;
41 }
42 }
43 }
45 TouchGate {
46 x: UbuntuKeyboardInfo.x
47 y: UbuntuKeyboardInfo.y
48 width: UbuntuKeyboardInfo.width
49 height: UbuntuKeyboardInfo.height
51 targetItem: surfaceItem
52 }
54 state: {
55 if (surfaceItem.surface &&
56 surfaceItem.surfaceState != Mir.HiddenState &&
57 surfaceItem.surfaceState != Mir.MinimizedState &&
58 root.enabled) {
59 return "shown";
60 } else {
61 return "hidden";
62 }
63 }
65 states: [
66 State {
67 name: "shown"
68 PropertyChanges {
69 target: root
70 visible: true
71 y: 0
72 }
73 },
74 State {
75 name: "hidden"
76 PropertyChanges {
77 target: root
78 visible: false
79 // half-way down because the vkb occupies only the lower half of the surface
80 // TODO: consider keyboard rotation
81 y: root.parent.height / 2.0
82 }
83 }
84 ]
86 transitions: [
87 Transition {
88 from: "*"; to: "*"
89 PropertyAction { property: "visible"; value: true }
90 UbuntuNumberAnimation { property: "y"; duration: transitionDuration }
91 }
92 ]