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 @@ -153,15 +153,10 @@ checkable: true checked: PulseObject.default visible: (type == "sink" && sinkView.model.count > 1) || (type == "source" && sourceView.model.count > 1) - onClicked: PulseObject.default = true; - } - - SmallToolButton { - id: contextMenuButton - icon: "application-menu" - checkable: true - onClicked: contextMenu.show() - tooltip: i18n("Show additional options for %1", textLabel.text) + onClicked: { + PulseObject.default = true; + PulseObject.switchStreams(); + } } } @@ -184,13 +179,11 @@ // changes trigger volume changes trigger value changes. property int volume: Volume property bool ignoreValueChange: true - property bool forceRaiseMaxVolume: false - readonly property bool raiseMaxVolume: forceRaiseMaxVolume || volume >= PulseAudio.NormalVolume * 1.01 Layout.fillWidth: true minimumValue: PulseAudio.MinimalVolume - maximumValue: raiseMaxVolume ? PulseAudio.MaximalVolume : PulseAudio.NormalVolume - stepSize: maximumValue / (maximumValue / PulseAudio.NormalVolume * 100.0) + maximumValue: main.maxVolumeValue + stepSize: main.volumeStep visible: HasVolume enabled: VolumeWritable opacity: Muted ? 0.5 : 1 @@ -283,96 +276,4 @@ onClicked: Muted = !Muted } } - - PlasmaComponents.ContextMenu { - id: contextMenu - - visualParent: contextMenuButton - placement: PlasmaCore.Types.BottomPosedLeftAlignedPopup - - onStatusChanged: { - if (status == PlasmaComponents.DialogStatus.Closed) { - contextMenuButton.checked = false; - } - } - - function newSeperator() { - return Qt.createQmlObject("import org.kde.plasma.components 2.0 as PlasmaComponents; PlasmaComponents.MenuItem { separator: true }", contextMenu); - } - function newMenuItem() { - return Qt.createQmlObject("import org.kde.plasma.components 2.0 as PlasmaComponents; PlasmaComponents.MenuItem {}", contextMenu); - } - - function loadDynamicActions() { - contextMenu.clearMenuItems(); - - // Raise max volume - menuItem = newMenuItem(); - menuItem.text = i18n("Raise maximum volume"); - menuItem.checkable = true; - menuItem.checked = slider.forceRaiseMaxVolume; - menuItem.clicked.connect(function() { - slider.forceRaiseMaxVolume = !slider.forceRaiseMaxVolume; - if (!slider.forceRaiseMaxVolume && Volume > PulseAudio.NormalVolume) { - Volume = PulseAudio.NormalVolume; - } - }); - contextMenu.addMenuItem(menuItem); - - // Switch all streams of the relevant kind to this device - if (type == "source") { - menuItem = newMenuItem(); - menuItem.text = i18n("Record all audio via this device"); - menuItem.icon = "mic-on" // or "mic-ready" // or "audio-input-microphone-symbolic" - menuItem.clicked.connect(function() { - PulseObject.switchStreams(); - }); - contextMenu.addMenuItem(menuItem); - } else if (type == "sink") { - menuItem = newMenuItem(); - menuItem.text = i18n("Play all audio via this device"); - menuItem.icon = "audio-on" // or "audio-ready" // or "audio-speakers-symbolic" - menuItem.clicked.connect(function() { - PulseObject.switchStreams(); - }); - contextMenu.addMenuItem(menuItem); - } - - // Choose output / input device - // By choice only shown when there are at least two options - if ((type == "sink-input" && sinkView.model.count > 1) || (type == "source-input" && sourceView.model.count > 1)) { - contextMenu.addMenuItem(newSeperator()); - var menuItem = newMenuItem(); - if (type == "sink-input") { - menuItem.text = i18nc("Heading for a list of possible output devices (speakers, headphones, ...) to choose", "Play audio using"); - } else { - menuItem.text = i18nc("Heading for a list of possible input devices (built-in microphone, headset, ...) to choose", "Record audio using"); - } - menuItem.section = true; - contextMenu.addMenuItem(menuItem); - var sModel = type == "sink-input" ? sinkView.model : sourceView.model; - - for (var i = 0; i < sModel.count; ++i) { - var data = sModel.get(i); - var menuItem = newMenuItem(); - menuItem.text = data.Description; - menuItem.enabled = true; - menuItem.checkable = true; - menuItem.checked = data.Index === PulseObject.deviceIndex; - var setActiveSink = function(sinkIndex) { - return function() { - PulseObject.deviceIndex = sinkIndex; - }; - }; - menuItem.clicked.connect(setActiveSink(data.Index)); - contextMenu.addMenuItem(menuItem); - } - } - } - - function show() { - loadDynamicActions(); - openRelative(); - } - } }