on e804c19 help sign in
unity8/qml/Components/InputMethod.qml
92 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 int transitionDuration: UbuntuAnimation.FastDuration
27 MirSurfaceItem {
28 id: surfaceItem
29 anchors.fill: parent
31 consumesInput: true
33 surfaceWidth: width
34 surfaceHeight: height
35 surface: SurfaceManager.inputMethodSurface
37 onLiveChanged: {
38 if (surface !== null && !live) {
39 surface = null;
40 }
41 }
42 }
44 TouchGate {
45 x: UbuntuKeyboardInfo.x
46 y: UbuntuKeyboardInfo.y
47 width: UbuntuKeyboardInfo.width
48 height: UbuntuKeyboardInfo.height
50 targetItem: surfaceItem
51 }
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 }
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 ]
85 transitions: [
86 Transition {
87 from: "*"; to: "*"
88 PropertyAction { property: "visible"; value: true }
89 UbuntuNumberAnimation { property: "y"; duration: transitionDuration }
90 }
91 ]