nheko/resources/qml/PrivacyScreen.qml
2021-01-26 00:03:09 -05:00

82 lines
1.7 KiB
QML

import QtGraphicalEffects 1.0
import QtQuick 2.12
Item {
property var timelineRoot
property var imageSource
property int screenTimeout
anchors.fill: parent
Timer {
id: screenSaverTimer
interval: screenTimeout * 1000
running: true
onTriggered: {
timelineRoot.grabToImage(function(result) {
imageSource = result.url;
screenSaver.visible = true;
particles.resume();
}, Qt.size(width, height));
}
}
// Reset screensaver timer when clicks are received
MouseArea {
anchors.fill: parent
// Pass mouse events through
propagateComposedEvents: true
hoverEnabled: true
onClicked: {
screenSaverTimer.restart();
mouse.accepted = false;
}
}
Rectangle {
id: screenSaver
anchors.fill: parent
visible: false
color: "transparent"
Image {
id: image
visible: screenSaver.visible
anchors.fill: parent
source: imageSource
}
ShaderEffectSource {
id: effectSource
sourceItem: image
anchors.fill: image
sourceRect: Qt.rect(0, 0, width, height)
}
FastBlur {
id: blur
anchors.fill: effectSource
source: effectSource
radius: 50
}
MouseArea {
anchors.fill: parent
propagateComposedEvents: true
hoverEnabled: true
onClicked: {
screenSaver.visible = false;
screenSaverTimer.restart();
mouse.accepted = false;
}
}
}
}