Files
DankMaterialShell/quickshell/Modules/OSD/MediaVolumeOSD.qml
T

49 lines
1.3 KiB
QML

import QtQuick
import qs.Common
import qs.Services
LevelOSD {
id: root
osdKind: "mediaVolume"
readonly property var player: MprisController.activePlayer
readonly property bool volumeSupported: player?.volumeSupported ?? false
readonly property real playerVolume: player?.volume ?? 0
property bool _suppressNewPlayer: false
iconName: playerVolume === 0 && player ? "music_off" : "music_note"
insetIconName: "music_note"
endIconName: "equalizer"
iconInteractive: true
iconLabel: playerVolume === 0 ? I18n.tr("Unmute") : I18n.tr("Mute")
value: Math.min(100, Math.round(playerVolume * 100))
available: volumeSupported
onIconClicked: {
if (player)
player.volume = player.volume > 0 ? 0 : 1;
}
onLevelRequested: level => player.volume = level / 100
onPlayerChanged: {
_suppressNewPlayer = true;
_suppressTimer.restart();
}
Timer {
id: _suppressTimer
interval: 2000
onTriggered: root._suppressNewPlayer = false
}
Connections {
target: root.player
function onVolumeChanged() {
if (SettingsData.osdMediaVolumeEnabled && root.volumeSupported && !root._suppressNewPlayer)
root.show();
}
}
}