summaryrefslogtreecommitdiff
path: root/modules/osd/Osd.qml
blob: 4d744f62ee94497a7248a2de96c317ebc3ba7902 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import "root:/widgets"
import "root:/services"
import "root:/config"
import Quickshell
import QtQuick

Scope {
    id: root

    property bool osdVisible

    function show(): void {
        root.osdVisible = true;
        timer.restart();
    }

    Connections {
        target: Audio

        function onMutedChanged(): void {
            root.show();
        }

        function onVolumeChanged(): void {
            root.show();
        }
    }

    Timer {
        id: timer

        interval: OsdConfig.hideDelay
        onTriggered: root.osdVisible = false
    }

    Variants {
        model: Quickshell.screens

        LazyLoader {
            loading: true

            required property ShellScreen modelData

            StyledWindow {
                id: win

                screen: parent.modelData
                name: "osd"
                visible: wrapper.shouldBeVisible

                mask: Region {
                    item: wrapper
                }

                anchors.left: true
                anchors.right: true
                height: wrapper.height

                Background {
                    id: bg

                    anchors.verticalCenter: parent.verticalCenter
                    anchors.right: parent.right

                    wrapperHeight: wrapper.height
                    realWrapperWidth: Math.min(wrapper.width, content.width)
                }

                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

                        screen: parent.modelData
                    }
                }
            }
        }
    }
}