~system-settings-touch/ubuntu-system-settings/15.04

« back to all changes in this revision

Viewing changes to plugins/phone/KeyboardRectangle.qml

merged trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 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.2
 
18
 
 
19
Item {
 
20
    id: keyboardRect
 
21
    anchors.left: parent.left
 
22
    anchors.right: parent.right
 
23
    anchors.bottom: parent.bottom
 
24
    height: Qt.inputMethod.visible ? Qt.inputMethod.keyboardRectangle.height : 0
 
25
 
 
26
    Behavior on height {
 
27
        NumberAnimation {
 
28
            duration: 300
 
29
            easing.type: Easing.InOutQuad
 
30
        }
 
31
    }
 
32
 
 
33
    states: [
 
34
        State {
 
35
            name: "hidden"
 
36
            when: keyboardRect.height == 0
 
37
        },
 
38
        State {
 
39
            name: "shown"
 
40
            when: keyboardRect.height == Qt.inputMethod.keyboardRectangle.height
 
41
        }
 
42
    ]
 
43
 
 
44
    function recursiveFindFocusedItem(parent) {
 
45
        if (parent.activeFocus) {
 
46
            return parent;
 
47
        }
 
48
 
 
49
        for (var i in parent.children) {
 
50
            var child = parent.children[i];
 
51
            if (child.activeFocus) {
 
52
                return child;
 
53
            }
 
54
 
 
55
            var item = recursiveFindFocusedItem(child);
 
56
 
 
57
            if (item != null) {
 
58
                return item;
 
59
            }
 
60
        }
 
61
 
 
62
        return null;
 
63
    }
 
64
 
 
65
    Connections {
 
66
        target: Qt.inputMethod
 
67
 
 
68
        onVisibleChanged: {
 
69
            if (!Qt.inputMethod.visible) {
 
70
                var focusedItem = recursiveFindFocusedItem(keyboardRect.parent);
 
71
                if (focusedItem != null) {
 
72
                    focusedItem.focus = false;
 
73
                }
 
74
            }
 
75
        }
 
76
    }
 
77
}