1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-24 21:42:51 -05:00

cleanup audio services

This commit is contained in:
bbedward
2025-08-24 23:46:53 -04:00
parent d4598d7738
commit 3d4a394ba9
3 changed files with 27 additions and 69 deletions

View File

@@ -56,21 +56,9 @@ Column {
}
Repeater {
model: {
if (!Pipewire.ready || !Pipewire.nodes || !Pipewire.nodes.values)
return []
let sinks = []
for (var i = 0; i < Pipewire.nodes.values.length; i++) {
let node = Pipewire.nodes.values[i]
if (!node || node.isStream)
continue
if ((node.type & PwNodeType.AudioSink) === PwNodeType.AudioSink)
sinks.push(node)
}
return sinks
}
model: Pipewire.nodes.values.filter(node => {
return node.audio && node.isSink && !node.isStream
})
Rectangle {
width: parent.width

View File

@@ -56,22 +56,9 @@ Column {
}
Repeater {
model: {
if (!Pipewire.ready || !Pipewire.nodes || !Pipewire.nodes.values)
return []
let sources = []
for (var i = 0; i < Pipewire.nodes.values.length; i++) {
let node = Pipewire.nodes.values[i]
if (!node || node.isStream)
continue
if ((node.type & PwNodeType.AudioSource) === PwNodeType.AudioSource
&& !node.name.includes(".monitor"))
sources.push(node)
}
return sources
}
model: Pipewire.nodes.values.filter(node => {
return node.audio && !node.isSink && !node.isStream
})
Rectangle {
width: parent.width

View File

@@ -6,14 +6,6 @@ import qs.Widgets
Column {
id: root
property real volumeLevel: Math.min(
100,
(AudioService.sink && AudioService.sink.audio
&& AudioService.sink.audio.volume * 100)
|| 0)
property bool volumeMuted: (AudioService.sink && AudioService.sink.audio
&& AudioService.sink.audio.muted) || false
width: parent.width
spacing: Theme.spacingM
@@ -30,40 +22,31 @@ Column {
width: parent.width
minimum: 0
maximum: 100
leftIcon: root.volumeMuted ? "volume_off" : "volume_down"
value: AudioService.sink?.ready && AudioService.sink.audio ? Math.round(AudioService.sink.audio.volume * 100) : 0
leftIcon: (AudioService.sink?.ready && AudioService.sink.audio && AudioService.sink.audio.muted) ? "volume_off" : "volume_down"
rightIcon: "volume_up"
enabled: !root.volumeMuted
enabled: !(AudioService.sink?.ready && AudioService.sink.audio && AudioService.sink.audio.muted)
showValue: true
unit: "%"
Connections {
target: AudioService.sink
&& AudioService.sink.audio ? AudioService.sink.audio : null
function onVolumeChanged() {
volumeSlider.value = Math.round(
AudioService.sink.audio.volume * 100)
}
}
Component.onCompleted: {
if (AudioService.sink && AudioService.sink.audio) {
value = Math.round(AudioService.sink.audio.volume * 100)
}
let leftIconItem = volumeSlider.children[0].children[0]
if (leftIconItem) {
let mouseArea = Qt.createQmlObject(
'import QtQuick; import qs.Services; MouseArea { anchors.fill: parent; hoverEnabled: true; cursorShape: Qt.PointingHandCursor; onClicked: { if (AudioService.sink && AudioService.sink.audio) AudioService.sink.audio.muted = !AudioService.sink.audio.muted; } }',
leftIconItem, "dynamicMouseArea")
}
}
onSliderValueChanged: newValue => {
if (AudioService.sink
&& AudioService.sink.audio) {
AudioService.sink.audio.muted = false
AudioService.sink.audio.volume = newValue / 100
}
}
if (AudioService.sink?.ready && AudioService.sink.audio) {
AudioService.sink.audio.volume = newValue / 100
}
}
MouseArea {
x: 0
y: 0
width: Theme.iconSize
height: parent.height
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: {
if (AudioService.sink?.ready && AudioService.sink.audio) {
AudioService.sink.audio.muted = !AudioService.sink.audio.muted
}
}
}
}
}