Warning, /graphics/krita/libs/libqml/plugins/components/VirtualKeyboard.qml is written in an unsupported language. File is not indexed.

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2012 Arjen Hiemstra <ahiemstra@heimr.nl>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 import QtQuick 2.3
0008 import org.krita.sketch 1.0
0009 
0010 Rectangle {
0011     id: base;
0012 
0013     property bool keyboardVisible: false;
0014     onKeyboardVisibleChanged: if (!keyboardVisible) keys.mode = KeyboardModel.NormalMode;
0015 
0016     anchors.left: parent.left;
0017     anchors.right: parent.right;
0018 
0019     y: parent.height;
0020     height: parent.height * 0.45;
0021     color: "black";
0022 
0023     MouseArea {
0024         anchors.fill: parent;
0025         onClicked: { }
0026     }
0027     SimpleTouchArea {
0028         anchors.fill: parent;
0029         onTouched: { }
0030     }
0031 
0032    Flow {
0033        visible: keys.useBuiltIn;
0034        anchors.fill: parent;
0035        anchors.topMargin: 4;
0036        anchors.leftMargin: Constants.GridWidth * 1.5;
0037        anchors.rightMargin: Constants.GridWidth * 1.5;
0038        anchors.bottomMargin: 4;
0039 
0040        Repeater {
0041            model: keys;
0042            delegate: keyDelegate;
0043        }
0044    }
0045 
0046     states: State {
0047         name: "visible";
0048         PropertyChanges { target: base; y: base.parent.height * 0.55; keyboardVisible: true; }
0049     }
0050 
0051     transitions: Transition {
0052         reversible: true;
0053         SequentialAnimation {
0054             NumberAnimation { properties: "y"; }
0055             PropertyAction { property: "keyboardVisible"; }
0056         }
0057     }
0058 
0059     Connections {
0060         target: Krita.VirtualKeyboardController;
0061 
0062         onShowKeyboard: {
0063             base.state = "visible";
0064         }
0065         onHideKeyboard: base.state = "";
0066     }
0067 
0068     Connections {
0069         target: Settings;
0070 
0071         onFocusItemChanged: {
0072             if (Settings.focusItem != null && Settings.focusItem != undefined) {
0073                 if (Settings.focusItem.text == "") {
0074                     keys.mode = KeyboardModel.CapitalMode;
0075                 }
0076                 if (Settings.focusItem.numeric != undefined && Settings.focusItem.numeric === true) {
0077                     keys.mode = KeyboardModel.NumericMode;
0078                 }
0079             }
0080         }
0081     }
0082 
0083     KeyboardModel {
0084         id: keys;
0085     }
0086 
0087     Component {
0088         id: keyDelegate;
0089 
0090         Item {
0091             width: (Constants.GridWidth * 0.75) * model.width;
0092             height: (base.height - 8) / 4;
0093 
0094             Button {
0095                 anchors {
0096                     left: parent.left;
0097                     right: parent.right;
0098                     top: parent.top;
0099                     margins: 4;
0100                 }
0101 
0102                 height: model.keyType == KeyboardModel.EnterKey && keys.mode == KeyboardModel.NumericMode ? parent.height * 2 - 4: parent.height - 4;
0103 
0104                 border.width: model.keyType == KeyboardModel.SpacerKey ? 0 : 2;
0105                 border.color: "white";
0106                 radius: 8;
0107 
0108                 color: {
0109                     if (model.keyType == KeyboardModel.ShiftKey && keys.mode == KeyboardModel.CapitalMode) {
0110                         return "#666666";
0111                     } else if (model.keyType == KeyboardModel.NumericModeKey && keys.mode == KeyboardModel.NumericMode) {
0112                         return "#666666";
0113                     } else {
0114                         return "transparent";
0115                     }
0116                 }
0117 
0118                 text: model.text;
0119                 textColor: model.keyType != KeyboardModel.SpacerKey ? "white" : "#333333";
0120 
0121                 highlight: model.keyType != KeyboardModel.SpacerKey ? true : false;
0122                 highlightColor: "#666666";
0123 
0124                 onClicked: {
0125                     switch(model.keyType) {
0126                         case KeyboardModel.BackspaceKey:
0127                             Settings.focusItem.text = Settings.focusItem.text.substring(0, Settings.focusItem.text.length - 1);
0128                             break;
0129                         case KeyboardModel.EnterKey:
0130                             base.state = "";
0131                             break;
0132                         case KeyboardModel.ShiftKey:
0133                             keys.mode = keys.mode != KeyboardModel.CapitalMode ? KeyboardModel.CapitalMode : KeyboardModel.NormalMode;
0134                             break;
0135                         case KeyboardModel.LeftArrowKey:
0136                             Settings.focusItem.cursorPosition -= 1;
0137                             break;
0138                         case KeyboardModel.RightArrowKey:
0139                             Settings.focusItem.cursorPosition += 1;
0140                             break;
0141                         case KeyboardModel.NumericModeKey:
0142                             keys.mode = keys.mode != KeyboardModel.NumericMode ? KeyboardModel.NumericMode : KeyboardModel.NormalMode;
0143                             break;
0144                         case KeyboardModel.NormalKey:
0145                             Settings.focusItem.text += model.text;
0146                             if (keys.mode == KeyboardModel.CapitalMode) {
0147                                 keys.mode = KeyboardModel.NormalMode;
0148                             }
0149                             break;
0150                         case KeyboardModel.CloseKey:
0151                             base.state = "";
0152                             break;
0153                         default:
0154                             break;
0155                     }
0156                 }
0157             }
0158         }
0159     }
0160 }