2023-02-22 01:48:49 +03:00
|
|
|
// SPDX-FileCopyrightText: Nheko Contributors
|
2021-03-07 07:57:56 +03:00
|
|
|
//
|
2021-03-05 02:35:15 +03:00
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
2021-01-26 07:46:55 +03:00
|
|
|
import QtGraphicalEffects 1.0
|
2021-01-26 08:03:09 +03:00
|
|
|
import QtQuick 2.12
|
2022-01-12 21:09:46 +03:00
|
|
|
import QtQuick.Window 2.2
|
2021-01-27 01:23:28 +03:00
|
|
|
import im.nheko 1.0
|
2021-01-26 07:46:55 +03:00
|
|
|
|
|
|
|
Item {
|
2021-01-27 01:23:28 +03:00
|
|
|
id: privacyScreen
|
|
|
|
|
2023-02-23 04:16:55 +03:00
|
|
|
readonly property bool active: Settings.privacyScreen && screenSaver.state === "Visible"
|
2021-01-26 07:46:55 +03:00
|
|
|
property var timelineRoot
|
|
|
|
property int screenTimeout
|
2021-01-26 08:03:09 +03:00
|
|
|
|
2022-05-12 21:56:22 +03:00
|
|
|
required property var windowTarget
|
|
|
|
|
2021-01-27 01:23:28 +03:00
|
|
|
Connections {
|
2022-05-12 19:48:12 +03:00
|
|
|
function onActiveChanged() {
|
2022-05-12 21:56:22 +03:00
|
|
|
if (windowTarget.active) {
|
2021-01-27 01:23:28 +03:00
|
|
|
screenSaverTimer.stop();
|
|
|
|
screenSaver.state = "Invisible";
|
|
|
|
} else {
|
2021-02-02 19:37:10 +03:00
|
|
|
if (timelineRoot.visible)
|
2021-02-02 02:57:59 +03:00
|
|
|
screenSaverTimer.start();
|
2021-02-02 19:37:10 +03:00
|
|
|
|
2021-01-27 01:23:28 +03:00
|
|
|
}
|
|
|
|
}
|
2021-07-27 23:35:38 +03:00
|
|
|
|
2022-05-12 21:56:22 +03:00
|
|
|
target: windowTarget
|
2021-01-27 01:23:28 +03:00
|
|
|
}
|
|
|
|
|
2021-01-26 07:46:55 +03:00
|
|
|
Timer {
|
|
|
|
id: screenSaverTimer
|
2021-01-26 08:03:09 +03:00
|
|
|
|
2021-01-26 07:46:55 +03:00
|
|
|
interval: screenTimeout * 1000
|
2022-05-12 21:56:22 +03:00
|
|
|
running: !windowTarget.active
|
2021-01-26 07:46:55 +03:00
|
|
|
onTriggered: {
|
2021-02-03 05:12:08 +03:00
|
|
|
screenSaver.state = "Visible";
|
2021-01-26 07:46:55 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-02-03 05:12:08 +03:00
|
|
|
Item {
|
2021-01-26 07:46:55 +03:00
|
|
|
id: screenSaver
|
2021-01-26 08:03:09 +03:00
|
|
|
|
2021-01-27 01:23:28 +03:00
|
|
|
state: "Invisible"
|
2021-01-26 07:46:55 +03:00
|
|
|
anchors.fill: parent
|
|
|
|
visible: false
|
2021-01-27 01:23:28 +03:00
|
|
|
states: [
|
|
|
|
State {
|
|
|
|
name: "Visible"
|
|
|
|
|
|
|
|
PropertyChanges {
|
|
|
|
target: screenSaver
|
|
|
|
visible: true
|
|
|
|
}
|
|
|
|
|
|
|
|
PropertyChanges {
|
|
|
|
target: screenSaver
|
|
|
|
opacity: 1
|
|
|
|
}
|
|
|
|
},
|
|
|
|
State {
|
|
|
|
name: "Invisible"
|
|
|
|
|
|
|
|
PropertyChanges {
|
|
|
|
target: screenSaver
|
|
|
|
opacity: 0
|
|
|
|
}
|
|
|
|
|
|
|
|
PropertyChanges {
|
|
|
|
target: screenSaver
|
|
|
|
visible: false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
transitions: [
|
|
|
|
Transition {
|
|
|
|
from: "Invisible"
|
|
|
|
to: "Visible"
|
2023-02-21 03:18:05 +03:00
|
|
|
reversible: true
|
2021-01-27 01:23:28 +03:00
|
|
|
|
|
|
|
SequentialAnimation {
|
|
|
|
NumberAnimation {
|
|
|
|
target: screenSaver
|
|
|
|
property: "visible"
|
|
|
|
duration: 0
|
|
|
|
}
|
|
|
|
|
|
|
|
NumberAnimation {
|
|
|
|
target: screenSaver
|
|
|
|
property: "opacity"
|
2023-02-21 03:18:05 +03:00
|
|
|
duration: 300
|
2023-02-21 03:59:06 +03:00
|
|
|
easing.type: Easing.Linear
|
2021-01-27 01:23:28 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
]
|
2021-01-26 07:46:55 +03:00
|
|
|
|
2021-01-26 08:03:09 +03:00
|
|
|
FastBlur {
|
2021-01-26 07:46:55 +03:00
|
|
|
id: blur
|
2021-01-26 08:03:09 +03:00
|
|
|
|
2021-02-03 05:12:08 +03:00
|
|
|
anchors.fill: parent
|
|
|
|
source: timelineRoot
|
2021-01-26 07:46:55 +03:00
|
|
|
radius: 50
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2021-01-26 08:03:09 +03:00
|
|
|
|
|
|
|
}
|