diff --git a/applet/contents/config/main.xml b/applet/contents/config/main.xml --- a/applet/contents/config/main.xml +++ b/applet/contents/config/main.xml @@ -19,6 +19,9 @@ true + + + diff --git a/applet/contents/ui/DeviceListItem.qml b/applet/contents/ui/DeviceListItem.qml --- a/applet/contents/ui/DeviceListItem.qml +++ b/applet/contents/ui/DeviceListItem.qml @@ -25,6 +25,7 @@ ListItemBase { readonly property var currentPort: Ports[ActivePortIndex] property bool onlyOne: false + readonly property string maxVolumeTarget: currentPort ? currentPort.description + " (" + Description + ")" : Description draggable: false label: { diff --git a/applet/contents/ui/ListItemBase.qml b/applet/contents/ui/ListItemBase.qml --- a/applet/contents/ui/ListItemBase.qml +++ b/applet/contents/ui/ListItemBase.qml @@ -184,7 +184,7 @@ // changes trigger volume changes trigger value changes. property int volume: Volume property bool ignoreValueChange: true - property bool forceRaiseMaxVolume: false + property bool forceRaiseMaxVolume: maxVolumeList.indexOf(maxVolumeTarget) != -1 readonly property bool raiseMaxVolume: forceRaiseMaxVolume || volume >= PulseAudio.NormalVolume * 1.01 Layout.fillWidth: true @@ -312,7 +312,15 @@ menuItem.checkable = true; menuItem.checked = slider.forceRaiseMaxVolume; menuItem.clicked.connect(function() { - slider.forceRaiseMaxVolume = !slider.forceRaiseMaxVolume; + if (maxVolumeTarget) { + var idx = maxVolumeList.indexOf(maxVolumeTarget); + if (idx === -1) { + maxVolumeList.push(maxVolumeTarget); + } else { + maxVolumeList.splice(idx, 1); + } + plasmoid.configuration.maxVolumeList = maxVolumeList; + } if (!slider.forceRaiseMaxVolume && Volume > PulseAudio.NormalVolume) { Volume = PulseAudio.NormalVolume; } diff --git a/applet/contents/ui/StreamListItem.qml b/applet/contents/ui/StreamListItem.qml --- a/applet/contents/ui/StreamListItem.qml +++ b/applet/contents/ui/StreamListItem.qml @@ -26,6 +26,7 @@ ListItemBase { property bool onlyOne: false + readonly property string maxVolumeTarget: if (Client) {return Client.name} label: { if (! Client) { diff --git a/applet/contents/ui/main.qml b/applet/contents/ui/main.qml --- a/applet/contents/ui/main.qml +++ b/applet/contents/ui/main.qml @@ -38,6 +38,7 @@ property int volumeStep: Math.round(Plasmoid.configuration.volumeStep * PulseAudio.NormalVolume / 100.0) property string displayName: i18n("Audio Volume") property QtObject draggedStream: null + property var maxVolumeList: Plasmoid.configuration.maxVolumeList // DEFAULT_SINK_NAME in module-always-sink.c readonly property string dummyOutputName: "auto_null"