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 }