1
0
Fork 0
mirror of https://github.com/HenkKalkwater/sddm-nx synced 2024-12-22 07:55:16 +00:00

Added proper Virtual Keyboard support

This commit is contained in:
Chris Josten 2020-05-18 12:54:49 +02:00
parent 636e786f88
commit c928a3556f
4 changed files with 116 additions and 30 deletions

View file

@ -1,5 +1,5 @@
import QtQuick 2.0
import QtGamepad 1.0
//import QtGamepad 1.0
import SddmComponents 2.0
import "components"

View file

@ -24,4 +24,5 @@ QtObject {
property int fontNormalSize: 24
property string background: config.background ? config.background : Qt.resolvedUrl("bg.png")
property bool virtualKeyboard: true
}

View file

@ -1,6 +1,7 @@
import QtQuick 2.6
import QtQuick.Controls 2.6
import ".."
FocusScope {
@ -22,42 +23,117 @@ FocusScope {
Rectangle {
anchors.fill: parent
color: Style.overlayColor
TextField {
focus: true
//anchors.top: parent.top
property real _vkeyboardOffset: Qt.inputMethod.visible
? root.height - Qt.inputMethod.keyboardRectangle.top : 0
y: (parent.height - _vkeyboardOffset) / 2 - height / 2
Behavior on y { NumberAnimation { duration: 100 }}
Item {
anchors.left: parent.left
anchors.top: parent.top
anchors.right: parent.right
//anchors.topMargin: Style.horizontalPadding
anchors.leftMargin: Style.horizontalContentPadding
anchors.rightMargin: Style.horizontalContentPadding
anchors.bottom: virtualKeyboard.top
TextField {
id: passwordField
focus: true
//anchors.top: parent.top
/*property real _vkeyboardOffset: Qt.inputMethod.visible
? root.height - Qt.inputMethod.keyboardRectangle.top : 0
y: (parent.height - _vkeyboardOffset) / 2 - height / 2*/
Behavior on y { NumberAnimation { duration: 100 }}
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
//anchors.topMargin: Style.horizontalPadding
anchors.leftMargin: Style.horizontalContentPadding
anchors.rightMargin: Style.horizontalContentPadding
padding: Style.mediumPadding
color: Style.foregroundColor
echoMode: TextInput.Password
placeholderText: "Enter the password for %1".arg(username)
//color: Style.foregroundColor
font.pixelSize: Style.fontTitleSize
background: Rectangle {
color: "#00000000"
border.width: Style.highlightBorderSize
border.color: Style.backgroundColor2
}
Keys.onEscapePressed: cancelled()
onAccepted: {
passwordEntered(text)
text = ""
}
}
}
// Optional virtual keyboard
Loader {
id: virtualKeyboard
source: Qt.resolvedUrl("VirtualKeyboard.qml")
width: parent.width
anchors.bottom: parent.bottom
padding: Style.mediumPadding
color: Style.foregroundColor
echoMode: TextInput.Password
placeholderText: "Enter the password for %1".arg(username)
//color: Style.foregroundColor
font.pixelSize: Style.fontTitleSize
background: Rectangle {
color: "#00000000"
border.width: Style.highlightBorderSize
border.color: Style.backgroundColor2
onLoaded: {
item.activated = Style.virtualKeyboard
Qt.inputMethod.show()
//state = "visible"
}
Keys.onEscapePressed: cancelled()
//opacity: item ? item.visible ? 1 : 0 : 0
state: item ? (item.active ? "visible" : "hidden" ) : "hidden"
states: [
State {
name: "visible"
PropertyChanges {
target: virtualKeyboard
anchors.bottomMargin: 0
}
},
State {
name: "hidden"
PropertyChanges {
target: virtualKeyboard
anchors.bottomMargin: -virtualKeyboard.height
}
}
]
onAccepted: {
passwordEntered(text)
text = ""
}
transitions: [
Transition {
from: "visible"
to: "hidden"
SequentialAnimation {
NumberAnimation {
target: virtualKeyboard
property: "anchors.bottomMargin"
duration: 250
easing.type: Easing.InQuad
}
ScriptAction {
script: Qt.inputMethod.hide()
}
}
},
Transition {
from: "hidden"
to: "visible"
SequentialAnimation {
ScriptAction {
script: Qt.inputMethod.show()
}
NumberAnimation {
target: virtualKeyboard
property: "anchors.bottomMargin"
duration: 250
easing.type: Easing.OutQuad
}
}
}
]
}
}
}

View file

@ -0,0 +1,9 @@
import QtQuick 2.6
import QtQuick.VirtualKeyboard 2.4
InputPanel {
id: virtualKeyboard
property bool activated: false
active: Qt.inputMethod.visible && activated
//visible: active
}