From 57ca7465e92f430d397a436bbc88b3e42172d563 Mon Sep 17 00:00:00 2001 From: hygienic-books Date: Mon, 7 Mar 2022 02:25:17 +0100 Subject: [PATCH] Remove interaction with username and password fields on mouse and key press events for background videos --- Main.qml | 211 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 206 insertions(+), 5 deletions(-) diff --git a/Main.qml b/Main.qml index b1a0236..1a6c16b 100644 --- a/Main.qml +++ b/Main.qml @@ -20,6 +20,8 @@ Rectangle { LayoutMirroring.enabled: Qt.locale().textDirection == Qt.RightToLeft LayoutMirroring.childrenInherit: true + property int sessionIndex: session.index + // Inherited from SDDMComponents TextConstants { id: textConstants @@ -75,9 +77,23 @@ Rectangle { id: mouseArea1 anchors.fill: parent; //onPressed: {playlist1.shuffle(); playlist1.next();} - onPressed: {} + onPressed: { + fader1.state = fader1.state == "off" ? "on" : "off" ; + if (config.autofocusInput == "true") { + if (username_input_box.text == "") + username_input_box.focus = true + else + password_input_box.focus = true + } + } + } + Keys.onPressed: { + fader1.state = "on"; + if (username_input_box.text == "") + username_input_box.focus = true + else + password_input_box.focus = true } - Keys.onPressed: {} } WallpaperFader { id: fader1 @@ -85,6 +101,8 @@ Rectangle { anchors.fill: parent state: "off" source: video1 + mainStack: login_container + footer: login_container } // Set Background Video2 @@ -106,10 +124,27 @@ Rectangle { id: mouseArea2 enabled: false anchors.fill: parent; - onPressed: {} + onPressed: { + fader1.state = fader1.state == "off" ? "on" : "off" ; + if (config.autofocusInput == "true") { + if (username_input_box.text == "") + username_input_box.focus = true + else + password_input_box.focus = true + } + } + } + Behavior on opacity { + enabled: true + NumberAnimation { easing.type: Easing.InOutQuad; duration: 3000 } + } + Keys.onPressed: { + fader2.state = "on"; + if (username_input_box.text == "") + username_input_box.focus = true + else + password_input_box.focus = true } - Behavior on opacity {} - Keys.onPressed: {} } WallpaperFader { @@ -118,6 +153,8 @@ Rectangle { anchors.fill: parent state: "off" source: video2 + mainStack: login_container + footer: login_container } property MediaPlayer currentPlayer: mediaplayer1 @@ -217,6 +254,7 @@ Rectangle { QQC2.StackView { id: mainStack anchors.fill: parent + height: root.height + PlasmaCore.Units.gridUnit * 3 // If true (depends on the style and environment variables), hover events are always accepted // and propagation stopped. This means the parent MouseArea won't get them and the UI won't be shown. @@ -255,6 +293,57 @@ Rectangle { return userListModel.count <= userListModel.disableAvatarsThreshold && (userList.y + mainStack.y) > 0 } + + notificationMessage: { + var text = "" + if (keystateSource.data["Caps Lock"]["Locked"]) { + text += i18nd("plasma_lookandfeel_org.kde.lookandfeel","Caps Lock is on") + if (root.notificationMessage) { + text += " • " + } + } + text += root.notificationMessage + return text + } + + actionItems: [ + ActionButton { + iconSource: "system-suspend" + text: i18ndc("plasma_lookandfeel_org.kde.lookandfeel","Suspend to RAM","Sleep") + fontSize: parseInt(config.fontSize) + 1 + onClicked: sddm.suspend() + enabled: sddm.canSuspend + visible: !inputPanel.keyboardActive + }, + ActionButton { + iconSource: "system-reboot" + text: i18nd("plasma_lookandfeel_org.kde.lookandfeel","Restart") + fontSize: parseInt(config.fontSize) + 1 + onClicked: sddm.reboot() + enabled: sddm.canReboot + visible: !inputPanel.keyboardActive + }, + ActionButton { + iconSource: "system-shutdown" + text: i18nd("plasma_lookandfeel_org.kde.lookandfeel","Shut Down") + fontSize: parseInt(config.fontSize) + 1 + onClicked: sddm.powerOff() + enabled: sddm.canPowerOff + visible: !inputPanel.keyboardActive + }, + ActionButton { + iconSource: "system-user-prompt" + text: i18ndc("plasma_lookandfeel_org.kde.lookandfeel", "For switching to a username and password prompt", "Other…") + fontSize: parseInt(config.fontSize) + 1 + onClicked: mainStack.push(userPromptComponent) + enabled: true + visible: !userListComponent.showUsernamePrompt && !inputPanel.keyboardActive + }] + + onLoginRequest: { + //root.notificationMessage = "" + sddm.login("sven", password, sessionButton.currentIndex) + } } Behavior on opacity { @@ -358,6 +447,11 @@ Rectangle { target: mainStack y: Math.min(0, root.height - inputPanel.height - userListComponent.visibleBoundary) } + PropertyChanges { + target: inputPanel + y: root.height - inputPanel.height + opacity: 1 + } }, State { name: "hidden" @@ -365,6 +459,11 @@ Rectangle { target: mainStack y: 0 } + PropertyChanges { + target: inputPanel + y: root.height - root.height/4 + opacity: 0 + } } ] transitions: [ @@ -372,6 +471,12 @@ Rectangle { from: "hidden" to: "visible" SequentialAnimation { + ScriptAction { + script: { + inputPanel.item.activated = true; + Qt.inputMethod.show(); + } + } ParallelAnimation { NumberAnimation { target: mainStack @@ -379,6 +484,17 @@ Rectangle { duration: PlasmaCore.Units.longDuration easing.type: Easing.InOutQuad } + NumberAnimation { + target: inputPanel + property: "y" + duration: PlasmaCore.Units.longDuration + easing.type: Easing.OutQuad + } + OpacityAnimator { + target: inputPanel + duration: PlasmaCore.Units.longDuration + easing.type: Easing.OutQuad + } } } }, @@ -393,6 +509,23 @@ Rectangle { duration: PlasmaCore.Units.longDuration easing.type: Easing.InOutQuad } + NumberAnimation { + target: inputPanel + property: "y" + duration: PlasmaCore.Units.longDuration + easing.type: Easing.InQuad + } + OpacityAnimator { + target: inputPanel + duration: PlasmaCore.Units.longDuration + easing.type: Easing.InQuad + } + } + ScriptAction { + script: { + inputPanel.item.activated = false; + Qt.inputMethod.hide(); + } } } } @@ -404,6 +537,7 @@ Rectangle { id: userPromptComponent Login { showUsernamePrompt: true + notificationMessage: root.notificationMessage loginScreenUiVisible: loginScreenRoot.uiVisible fontSize: parseInt(config.fontSize) + 2 @@ -418,6 +552,66 @@ Rectangle { setProperty(0, "name", i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Type in Username and Password")); } } + + onLoginRequest: { + root.notificationMessage = "" + sddm.login(username, password, sessionButton.currentIndex) + } + + actionItems: [ + ActionButton { + iconSource: "system-suspend" + text: i18ndc("plasma_lookandfeel_org.kde.lookandfeel","Suspend to RAM","Sleep") + fontSize: parseInt(config.fontSize) + 1 + onClicked: sddm.suspend() + enabled: sddm.canSuspend + visible: !inputPanel.keyboardActive + }, + ActionButton { + iconSource: "system-reboot" + text: i18nd("plasma_lookandfeel_org.kde.lookandfeel","Restart") + fontSize: parseInt(config.fontSize) + 1 + onClicked: sddm.reboot() + enabled: sddm.canReboot + visible: !inputPanel.keyboardActive + }, + ActionButton { + iconSource: "system-shutdown" + text: i18nd("plasma_lookandfeel_org.kde.lookandfeel","Shut Down") + fontSize: parseInt(config.fontSize) + 1 + onClicked: sddm.powerOff() + enabled: sddm.canPowerOff + visible: !inputPanel.keyboardActive + }, + ActionButton { + iconSource: "system-user-list" + text: i18nd("plasma_lookandfeel_org.kde.lookandfeel","List Users") + fontSize: parseInt(config.fontSize) + 1 + onClicked: mainStack.pop() + visible: !inputPanel.keyboardActive + } + ] + } + } + + DropShadow { + id: logoShadow + anchors.fill: logo + source: logo + visible: !softwareRendering && config.showlogo == "shown" + horizontalOffset: 1 + verticalOffset: 1 + radius: 6 + samples: 14 + spread: 0.3 + color : "black" // shadows should always be black + opacity: loginScreenRoot.uiVisible ? 0 : 1 + Behavior on opacity { + //OpacityAnimator when starting from 0 is buggy (it shows one frame with opacity 1)" + NumberAnimation { + duration: PlasmaCore.Units.longDuration + easing.type: Easing.InOutQuad + } } } @@ -517,5 +711,12 @@ Rectangle { playlist1.shuffle() playlist2.shuffle() } + + if (config.showLoginButton == "false") { + login_button.visible = false + password_input_box.anchors.rightMargin = 0 + clear_passwd_button.anchors.rightMargin = 0 + } + clear_passwd_button.visible = false } }