diff options
Diffstat (limited to 'raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/OSD/AudioOutputOSD.qml')
| -rw-r--r-- | raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/OSD/AudioOutputOSD.qml | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/OSD/AudioOutputOSD.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/OSD/AudioOutputOSD.qml new file mode 100644 index 0000000..1bea1e5 --- /dev/null +++ b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/OSD/AudioOutputOSD.qml @@ -0,0 +1,67 @@ +import QtQuick +import qs.Common +import qs.Services +import qs.Widgets + +DankOSD { + id: root + + property string deviceName: "" + property string deviceIcon: "speaker" + + osdWidth: Math.min(Math.max(120, Theme.iconSize + textMetrics.width + Theme.spacingS * 4), Screen.width - Theme.spacingM * 2) + osdHeight: 40 + Theme.spacingS * 2 + autoHideInterval: 2500 + enableMouseInteraction: false + + TextMetrics { + id: textMetrics + font.pixelSize: Theme.fontSizeMedium + font.weight: Font.Medium + font.family: Theme.fontFamily + text: root.deviceName + } + + Connections { + target: AudioService + + function onAudioOutputCycled(name, icon) { + if (!SettingsData.osdAudioOutputEnabled) + return; + root.deviceName = name; + root.deviceIcon = icon; + root.show(); + } + } + + content: Item { + property int gap: Theme.spacingS + + anchors.centerIn: parent + width: parent.width - Theme.spacingS * 2 + height: 40 + + DankIcon { + id: iconItem + width: Theme.iconSize + height: Theme.iconSize + x: parent.gap + anchors.verticalCenter: parent.verticalCenter + name: root.deviceIcon + size: Theme.iconSize + color: Theme.primary + } + + StyledText { + id: textItem + x: parent.gap * 2 + Theme.iconSize + width: parent.width - Theme.iconSize - parent.gap * 3 + anchors.verticalCenter: parent.verticalCenter + text: root.deviceName + font.pixelSize: Theme.fontSizeMedium + font.weight: Font.Medium + color: Theme.surfaceText + elide: Text.ElideRight + } + } +} |