mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-26 14:23:09 +00:00
quicksettings/audio: Fix displayed volume fetching
Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/422 This commit simplifies the AudioInfo data provider to fetch the volume directly, rather than relying on a series of complicated connections. It also does some cleanup of AudioInfo, removing unused functions.
This commit is contained in:
parent
0e09a434ef
commit
082323baa8
2 changed files with 7 additions and 70 deletions
|
|
@ -32,57 +32,13 @@ QtObject {
|
|||
// the maximum volume amount
|
||||
readonly property int maxVolumeValue: maxVolumePercent * PulseAudio.NormalVolume / 100
|
||||
|
||||
// step that increments when adjusting the volume
|
||||
readonly property int volumeStep: Math.round(5 * PulseAudio.NormalVolume / 100.0)
|
||||
|
||||
// The current audio volume (updated by connecting to sinks)
|
||||
property int volumeValue
|
||||
readonly property int volumeValue: PreferredDevice.sink ? (PreferredDevice.sink.volume / PulseAudio.NormalVolume) * 100 : 0
|
||||
|
||||
function isDummyOutput(output) {
|
||||
return output && output.name === dummyOutputName;
|
||||
}
|
||||
|
||||
function boundVolume(volume) {
|
||||
return Math.max(PulseAudio.MinimalVolume, Math.min(volume, maxVolumeValue));
|
||||
}
|
||||
|
||||
function volumePercent(volume, max){
|
||||
if (!max) {
|
||||
max = PulseAudio.NormalVolume;
|
||||
}
|
||||
return Math.round(volume / max * maxVolumePercent);
|
||||
}
|
||||
|
||||
function increaseVolume() {
|
||||
if (!PreferredDevice.sink || isDummyOutput(PreferredDevice.sink)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var volume = boundVolume(PreferredDevice.sink.volume + volumeStep);
|
||||
var percent = volumePercent(volume, maxVolumeValue);
|
||||
PreferredDevice.sink.muted = percent == 0;
|
||||
PreferredDevice.sink.volume = volume;
|
||||
}
|
||||
|
||||
function decreaseVolume() {
|
||||
if (!PreferredDevice.sink || isDummyOutput(PreferredDevice.sink)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var volume = boundVolume(PreferredDevice.sink.volume - volumeStep);
|
||||
var percent = volumePercent(volume, maxVolumeValue);
|
||||
PreferredDevice.sink.muted = percent == 0;
|
||||
PreferredDevice.sink.volume = volume;
|
||||
}
|
||||
|
||||
function muteVolume() {
|
||||
if (!PreferredDevice.sink || isDummyOutput(PreferredDevice.sink)) {
|
||||
return;
|
||||
}
|
||||
|
||||
PreferredDevice.sink.muted = !PreferredDevice.sink.muted;
|
||||
}
|
||||
|
||||
function iconName(volume, muted, prefix) {
|
||||
if (!prefix) {
|
||||
prefix = "audio-volume";
|
||||
|
|
@ -100,28 +56,4 @@ QtObject {
|
|||
}
|
||||
return icon;
|
||||
}
|
||||
|
||||
property var updateVolume: Connections {
|
||||
target: root.paSinkModel ? (PreferredDevice.sink ? PreferredDevice.sink : null) : null
|
||||
enabled: target !== null
|
||||
|
||||
function onVolumeChanged() {
|
||||
root.volumeValue = root.volumePercent(PreferredDevice.sink.volume, root.maxVolumeValue);
|
||||
}
|
||||
|
||||
function onMutedChanged() {
|
||||
root.volumeValue = PreferredDevice.sink.muted ? 0 : root.volumePercent(PreferredDevice.sink.volume, root.maxVolumeValue);
|
||||
}
|
||||
}
|
||||
|
||||
property var updateVolumeOnSinkChange: Connections {
|
||||
target: root.paSinkModel ? root.paSinkModel : null
|
||||
enabled: target !== null
|
||||
|
||||
function onPreferredSinkChanged() {
|
||||
if (PreferredDevice.sink) {
|
||||
root.volumeValue = root.volumePercent(PreferredDevice.sink.volume, root.maxVolumeValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,12 @@ import org.kde.plasma.private.mobileshell.quicksettingsplugin as QS
|
|||
QS.QuickSetting {
|
||||
text: i18n("Sound")
|
||||
icon: MobileShell.AudioInfo.icon
|
||||
status: i18n("%1%", MobileShell.AudioInfo.volumeValue)
|
||||
status: {
|
||||
if (!MobileShell.AudioInfo.isVisible) {
|
||||
return i18n("No audio devices");
|
||||
}
|
||||
return i18n("%1%", MobileShell.AudioInfo.volumeValue);
|
||||
}
|
||||
enabled: false
|
||||
settingsCommand: "plasma-open-settings kcm_pulseaudio"
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue