summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Lock/LockSurface.qml
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Lock/LockSurface.qml')
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Lock/LockSurface.qml73
1 files changed, 73 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Lock/LockSurface.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Lock/LockSurface.qml
new file mode 100644
index 0000000..9d1beae
--- /dev/null
+++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Lock/LockSurface.qml
@@ -0,0 +1,73 @@
+pragma ComponentBehavior: Bound
+
+import QtQuick
+import Quickshell.Wayland
+import qs.Common
+
+FocusScope {
+ id: root
+
+ required property WlSessionLock lock
+ required property string sharedPasswordBuffer
+ required property string screenName
+ required property bool isLocked
+
+ signal passwordChanged(string newPassword)
+ signal unlockRequested
+
+ Keys.onPressed: event => {
+ if (videoScreensaver.active && videoScreensaver.inputEnabled) {
+ videoScreensaver.dismiss();
+ event.accepted = true;
+ }
+ }
+
+ Rectangle {
+ anchors.fill: parent
+ color: "transparent"
+ }
+
+ LockScreenContent {
+ id: lockContent
+
+ anchors.fill: parent
+ demoMode: false
+ passwordBuffer: root.sharedPasswordBuffer
+ screenName: root.screenName
+ enabled: !videoScreensaver.active
+ focus: !videoScreensaver.active
+ opacity: videoScreensaver.active ? 0 : 1
+ onUnlockRequested: root.unlockRequested()
+ onPasswordBufferChanged: {
+ if (root.sharedPasswordBuffer !== passwordBuffer) {
+ root.passwordChanged(passwordBuffer);
+ }
+ }
+
+ Behavior on opacity {
+ NumberAnimation {
+ duration: 200
+ }
+ }
+ }
+
+ VideoScreensaver {
+ id: videoScreensaver
+ anchors.fill: parent
+ screenName: root.screenName
+ }
+
+ Component.onCompleted: forceActiveFocus()
+
+ onIsLockedChanged: {
+ if (isLocked) {
+ forceActiveFocus();
+ lockContent.resetLockState();
+ if (SettingsData.lockScreenVideoEnabled) {
+ videoScreensaver.start();
+ }
+ return;
+ }
+ lockContent.unlocking = false;
+ }
+}