mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-26 14:23:09 +00:00
statusbar: Fix volume indicator not being visible
https://invent.kde.org/plasma/plasma-mobile/-/issues/375 Inspired by https://invent.kde.org/plasma/plasma-pa/-/blob/master/applet/contents/ui/main.qml
This commit is contained in:
parent
a930eabbb2
commit
3c81efa21c
2 changed files with 20 additions and 20 deletions
|
|
@ -15,11 +15,11 @@ QtObject {
|
|||
property SinkModel paSinkModel: SinkModel {}
|
||||
|
||||
// whether the audio icon should be visible in the status bar
|
||||
readonly property bool isVisible: paSinkModel.preferredSink
|
||||
readonly property bool isVisible: PreferredDevice.sink
|
||||
|
||||
// the icon that should be displayed in the status bar
|
||||
readonly property string icon: paSinkModel.preferredSink && !isDummyOutput(paSinkModel.preferredSink)
|
||||
? iconName(paSinkModel.preferredSink.volume, paSinkModel.preferredSink.muted)
|
||||
readonly property string icon: PreferredDevice.sink && !isDummyOutput(PreferredDevice.sink)
|
||||
? iconName(PreferredDevice.sink.volume, PreferredDevice.sink.muted)
|
||||
: iconName(0, true)
|
||||
|
||||
// the name of the audio device when it isn't valid
|
||||
|
|
@ -53,33 +53,33 @@ QtObject {
|
|||
}
|
||||
|
||||
function increaseVolume() {
|
||||
if (!paSinkModel.preferredSink || isDummyOutput(paSinkModel.preferredSink)) {
|
||||
if (!PreferredDevice.sink || isDummyOutput(PreferredDevice.sink)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var volume = boundVolume(paSinkModel.preferredSink.volume + volumeStep);
|
||||
var volume = boundVolume(PreferredDevice.sink.volume + volumeStep);
|
||||
var percent = volumePercent(volume, maxVolumeValue);
|
||||
paSinkModel.preferredSink.muted = percent == 0;
|
||||
paSinkModel.preferredSink.volume = volume;
|
||||
PreferredDevice.sink.muted = percent == 0;
|
||||
PreferredDevice.sink.volume = volume;
|
||||
}
|
||||
|
||||
function decreaseVolume() {
|
||||
if (!paSinkModel.preferredSink || isDummyOutput(paSinkModel.preferredSink)) {
|
||||
if (!PreferredDevice.sink || isDummyOutput(PreferredDevice.sink)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var volume = boundVolume(paSinkModel.preferredSink.volume - volumeStep);
|
||||
var volume = boundVolume(PreferredDevice.sink.volume - volumeStep);
|
||||
var percent = volumePercent(volume, maxVolumeValue);
|
||||
paSinkModel.preferredSink.muted = percent == 0;
|
||||
paSinkModel.preferredSink.volume = volume;
|
||||
PreferredDevice.sink.muted = percent == 0;
|
||||
PreferredDevice.sink.volume = volume;
|
||||
}
|
||||
|
||||
function muteVolume() {
|
||||
if (!paSinkModel.preferredSink || isDummyOutput(paSinkModel.preferredSink)) {
|
||||
if (!PreferredDevice.sink || isDummyOutput(PreferredDevice.sink)) {
|
||||
return;
|
||||
}
|
||||
|
||||
paSinkModel.preferredSink.muted = !paSinkModel.preferredSink.muted;
|
||||
PreferredDevice.sink.muted = !PreferredDevice.sink.muted;
|
||||
}
|
||||
|
||||
function iconName(volume, muted, prefix) {
|
||||
|
|
@ -104,16 +104,16 @@ QtObject {
|
|||
signal volumeChanged()
|
||||
|
||||
property var updateVolume: Connections {
|
||||
target: root.paSinkModel ? (root.paSinkModel.preferredSink ? root.paSinkModel.preferredSink : null) : null
|
||||
target: root.paSinkModel ? (PreferredDevice.sink ? PreferredDevice.sink : null) : null
|
||||
enabled: target !== null
|
||||
|
||||
function onVolumeChanged() {
|
||||
root.volumeValue = root.volumePercent(root.paSinkModel.preferredSink.volume, root.maxVolumeValue);
|
||||
root.volumeValue = root.volumePercent(PreferredDevice.sink.volume, root.maxVolumeValue);
|
||||
root.volumeChanged();
|
||||
}
|
||||
|
||||
function onMutedChanged() {
|
||||
root.volumeValue = root.paSinkModel.preferredSink.muted ? 0 : root.volumePercent(root.paSinkModel.preferredSink.volume, root.maxVolumeValue);
|
||||
root.volumeValue = PreferredDevice.sink.muted ? 0 : root.volumePercent(PreferredDevice.sink.volume, root.maxVolumeValue);
|
||||
root.volumeChanged();
|
||||
}
|
||||
}
|
||||
|
|
@ -123,8 +123,8 @@ QtObject {
|
|||
enabled: target !== null
|
||||
|
||||
function onPreferredSinkChanged() {
|
||||
if (root.paSinkModel.preferredSink) {
|
||||
root.volumeValue = root.volumePercent(root.paSinkModel.preferredSink.volume, root.maxVolumeValue);
|
||||
if (PreferredDevice.sink) {
|
||||
root.volumeValue = root.volumePercent(PreferredDevice.sink.volume, root.maxVolumeValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,8 +100,8 @@ NanoShell.FullScreenOverlay {
|
|||
anchors.rightMargin: Kirigami.Units.smallSpacing
|
||||
|
||||
PlasmaComponents.ToolButton {
|
||||
icon.name: !MobileShell.AudioInfo.paSinkModel.preferredSink || MobileShell.AudioInfo.paSinkModel.preferredSink.muted ? "audio-volume-muted" : "audio-volume-high"
|
||||
text: !MobileShell.AudioInfo.paSinkModel.preferredSink || MobileShell.AudioInfo.paSinkModel.preferredSink.muted ? i18n("Unmute") : i18n("Mute")
|
||||
icon.name: !PreferredDevice.sink || PreferredDevice.sink.muted ? "audio-volume-muted" : "audio-volume-high"
|
||||
text: !PreferredDevice.sink || PreferredDevice.sink.muted ? i18n("Unmute") : i18n("Mute")
|
||||
display: Controls.AbstractButton.IconOnly
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
Layout.preferredWidth: Kirigami.Units.iconSizes.medium
|
||||
|
|
|
|||
Loading…
Reference in a new issue