131 lines
3.2 KiB
QML
131 lines
3.2 KiB
QML
import "root:/widgets"
|
|
import "root:/services"
|
|
import "root:/config"
|
|
import Quickshell
|
|
import QtQuick
|
|
|
|
Variants {
|
|
model: Quickshell.screens
|
|
|
|
Scope {
|
|
id: root
|
|
|
|
required property ShellScreen modelData
|
|
readonly property Brightness.Monitor monitor: Brightness.getMonitorForScreen(modelData)
|
|
property int winHeight
|
|
property bool osdVisible
|
|
property bool hovered
|
|
|
|
function show(): void {
|
|
root.osdVisible = true;
|
|
timer.restart();
|
|
}
|
|
|
|
Connections {
|
|
target: Audio
|
|
|
|
function onMutedChanged(): void {
|
|
root.show();
|
|
}
|
|
|
|
function onVolumeChanged(): void {
|
|
root.show();
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
target: root.monitor
|
|
|
|
function onBrightnessChanged(): void {
|
|
root.show();
|
|
}
|
|
}
|
|
|
|
Timer {
|
|
id: timer
|
|
|
|
interval: OsdConfig.hideDelay
|
|
onTriggered: {
|
|
if (!root.hovered)
|
|
root.osdVisible = false;
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
target: Drawers
|
|
|
|
function onPosChanged(screen: ShellScreen, x: int, y: int): void {
|
|
if (screen === root.modelData && x > screen.width / 2 && y > (screen.height - root.winHeight) / 2 && y < (screen.height + root.winHeight) / 2)
|
|
root.show();
|
|
}
|
|
}
|
|
|
|
LazyLoader {
|
|
loading: true
|
|
|
|
StyledWindow {
|
|
id: win
|
|
|
|
screen: root.modelData
|
|
name: "osd"
|
|
visible: wrapper.shouldBeVisible
|
|
|
|
mask: Region {
|
|
item: wrapper
|
|
}
|
|
|
|
anchors.left: true
|
|
anchors.right: true
|
|
height: wrapper.height
|
|
|
|
Component.onCompleted: root.winHeight = height
|
|
|
|
Background {
|
|
id: bg
|
|
|
|
visible: false
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.right: parent.right
|
|
|
|
wrapperHeight: wrapper.height
|
|
realWrapperWidth: Math.min(wrapper.width, content.width)
|
|
}
|
|
|
|
LayerShadow {
|
|
source: bg
|
|
}
|
|
|
|
Wrapper {
|
|
id: wrapper
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.right: parent.right
|
|
|
|
implicitHeight: content.height + bg.rounding * 2
|
|
|
|
osdVisible: root.osdVisible
|
|
contentWidth: content.width
|
|
|
|
Content {
|
|
id: content
|
|
|
|
monitor: root.monitor
|
|
}
|
|
}
|
|
|
|
HoverHandler {
|
|
id: hoverHandler
|
|
|
|
onHoveredChanged: {
|
|
root.hovered = hovered;
|
|
if (hovered)
|
|
timer.stop();
|
|
else
|
|
root.osdVisible = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|