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:
parent
636e786f88
commit
c928a3556f
2
Main.qml
2
Main.qml
|
@ -1,5 +1,5 @@
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import QtGamepad 1.0
|
//import QtGamepad 1.0
|
||||||
import SddmComponents 2.0
|
import SddmComponents 2.0
|
||||||
|
|
||||||
import "components"
|
import "components"
|
||||||
|
|
|
@ -24,4 +24,5 @@ QtObject {
|
||||||
property int fontNormalSize: 24
|
property int fontNormalSize: 24
|
||||||
|
|
||||||
property string background: config.background ? config.background : Qt.resolvedUrl("bg.png")
|
property string background: config.background ? config.background : Qt.resolvedUrl("bg.png")
|
||||||
|
property bool virtualKeyboard: true
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import QtQuick 2.6
|
import QtQuick 2.6
|
||||||
import QtQuick.Controls 2.6
|
import QtQuick.Controls 2.6
|
||||||
|
|
||||||
|
|
||||||
import ".."
|
import ".."
|
||||||
|
|
||||||
FocusScope {
|
FocusScope {
|
||||||
|
@ -22,42 +23,117 @@ FocusScope {
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: Style.overlayColor
|
color: Style.overlayColor
|
||||||
|
Item {
|
||||||
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 }}
|
|
||||||
|
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
|
anchors.top: parent.top
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
//anchors.topMargin: Style.horizontalPadding
|
anchors.bottom: virtualKeyboard.top
|
||||||
anchors.leftMargin: Style.horizontalContentPadding
|
TextField {
|
||||||
anchors.rightMargin: Style.horizontalContentPadding
|
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
|
onLoaded: {
|
||||||
color: Style.foregroundColor
|
item.activated = Style.virtualKeyboard
|
||||||
echoMode: TextInput.Password
|
Qt.inputMethod.show()
|
||||||
|
//state = "visible"
|
||||||
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()
|
//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: {
|
transitions: [
|
||||||
passwordEntered(text)
|
Transition {
|
||||||
text = ""
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
9
components/VirtualKeyboard.qml
Normal file
9
components/VirtualKeyboard.qml
Normal 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
|
||||||
|
}
|
Loading…
Reference in a new issue