You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
nheko/resources/qml/PrivacyScreen.qml

81 lines
1.7 KiB

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;
}
}
}
}