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"