update
This commit is contained in:
103
themes/sm1tee/components/VirtualKeyboard.qml
Normal file
103
themes/sm1tee/components/VirtualKeyboard.qml
Normal file
@@ -0,0 +1,103 @@
|
||||
import QtQuick
|
||||
import QtQuick.VirtualKeyboard
|
||||
import QtQuick.VirtualKeyboard.Settings
|
||||
|
||||
InputPanel {
|
||||
id: inputPanel
|
||||
|
||||
width: Math.min(loginScreen && loginScreen.width ? loginScreen.width / 2 : 800, 600) * Config.virtualKeyboardScale
|
||||
active: Qt.inputMethod.visible
|
||||
visible: loginScreen && loginScreen.showKeyboard && loginScreen.state !== "selectingUser" && loginScreen.state !== "authenticating"
|
||||
opacity: visible ? 1.0 : 0.0
|
||||
externalLanguageSwitchEnabled: true
|
||||
onExternalLanguageSwitch: {
|
||||
if (loginScreen && loginScreen.toggleLayoutPopup) {
|
||||
loginScreen.toggleLayoutPopup();
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
VirtualKeyboardSettings.styleName = "vkeyboardStyle";
|
||||
VirtualKeyboardSettings.layout = "symbols";
|
||||
}
|
||||
|
||||
property string pos: Config.virtualKeyboardPosition
|
||||
property point loginLayoutPosition: loginContainer && loginLayout ? loginContainer.mapToGlobal(loginLayout.x, loginLayout.y) : Qt.point(0, 0)
|
||||
property bool vKeyboardMoved: false
|
||||
|
||||
x: {
|
||||
if (pos === "top" || pos === "bottom") {
|
||||
return (parent.width - inputPanel.width) / 2;
|
||||
} else if (pos === "left") {
|
||||
return Config.menuAreaButtonsMarginLeft;
|
||||
} else if (pos === "right") {
|
||||
return parent.width - inputPanel.width - Config.menuAreaButtonsMarginRight;
|
||||
} else {
|
||||
// pos === "login"
|
||||
if (Config.loginAreaPosition === "left" && Config.loginAreaMargin !== -1) {
|
||||
return Config.loginAreaMargin;
|
||||
} else if (Config.loginAreaPosition === "right" && Config.loginAreaMargin !== -1) {
|
||||
return parent.width - inputPanel.width - Config.loginAreaMargin;
|
||||
} else {
|
||||
return (parent.width - inputPanel.width) / 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
y: {
|
||||
if (pos === "top") {
|
||||
return Config.menuAreaButtonsMarginTop;
|
||||
} else if (pos === "bottom") {
|
||||
return parent.height - inputPanel.height - Config.menuAreaButtonsMarginBottom;
|
||||
} else if (pos === "right" || pos === "left") {
|
||||
return (parent.height - inputPanel.height) / 2;
|
||||
} else {
|
||||
// pos === "login"
|
||||
if (!vKeyboardMoved) {
|
||||
if (loginMessage && loginMessage.visible && Config.loginAreaPosition !== "right" && Config.loginAreaPosition !== "left") {
|
||||
return loginLayoutPosition.y + (loginLayout ? loginLayout.height : 0) + (loginMessage ? loginMessage.height * 2 : 0) + Config.warningMessageMarginTop + Config.warningMessageMarginTop;
|
||||
} else {
|
||||
return loginLayoutPosition.y + (loginLayout ? loginLayout.height : 0) + (loginMessage ? loginMessage.height * 2 : 0) + Config.warningMessageMarginTop;
|
||||
}
|
||||
}
|
||||
return y;
|
||||
}
|
||||
}
|
||||
Behavior on y {
|
||||
enabled: Config.enableAnimations
|
||||
NumberAnimation {
|
||||
duration: 150
|
||||
}
|
||||
}
|
||||
Behavior on x {
|
||||
enabled: Config.enableAnimations
|
||||
NumberAnimation {
|
||||
duration: 150
|
||||
}
|
||||
}
|
||||
Behavior on opacity {
|
||||
enabled: Config.enableAnimations
|
||||
NumberAnimation {
|
||||
duration: 250
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: vKeyboardDragArea
|
||||
property point initialPosition: Qt.point(-1, -1)
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
cursorShape: loginScreen && loginScreen.userNeedsPassword ? Qt.ArrowCursor : Qt.ForbiddenCursor
|
||||
drag.target: inputPanel
|
||||
acceptedButtons: loginScreen && loginScreen.userNeedsPassword ? Qt.MiddleButton : Qt.MiddleButton
|
||||
onPressed: function (event) {
|
||||
cursorShape = Qt.ClosedHandCursor;
|
||||
initialPosition = Qt.point(event.x, event.y);
|
||||
}
|
||||
onReleased: function (event) {
|
||||
cursorShape = loginScreen && loginScreen.userNeedsPassword ? Qt.ArrowCursor : Qt.ForbiddenCursor;
|
||||
if (initialPosition !== Qt.point(event.x, event.y) && !inputPanel.vKeyboardMoved) {
|
||||
inputPanel.vKeyboardMoved = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user