mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-06-17 08:35:21 -04:00
90f8ce5035
Commit e3dbaed started skipping all system sounds (notifications, volume,
power, login) whenever an MPRIS player is playing, with no way to opt out.
Users who rely on notification sounds while listening to music lost them
entirely.
Add a 'Mute During Playback' toggle (SettingsData.muteSoundsWhenMediaPlaying,
default true) so the current behaviour is preserved, but users can disable
it to restore audible sounds while media is playing. The media check is
wrapped in shouldMuteForMedia(), which gates on the new setting before
querying the active player.
Closes #2616
186 lines
7.9 KiB
QML
186 lines
7.9 KiB
QML
import QtQuick
|
|
import qs.Common
|
|
import qs.Services
|
|
import qs.Widgets
|
|
import qs.Modules.Settings.Widgets
|
|
|
|
Item {
|
|
id: root
|
|
|
|
DankFlickable {
|
|
anchors.fill: parent
|
|
clip: true
|
|
contentHeight: mainColumn.height + Theme.spacingXL
|
|
contentWidth: width
|
|
|
|
Column {
|
|
id: mainColumn
|
|
topPadding: 4
|
|
|
|
width: Math.min(550, parent.width - Theme.spacingL * 2)
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
spacing: Theme.spacingXL
|
|
|
|
SettingsCard {
|
|
tab: "sounds"
|
|
tags: ["sound", "audio", "notification", "volume"]
|
|
title: I18n.tr("System Sounds")
|
|
settingKey: "systemSounds"
|
|
iconName: SettingsData.soundsEnabled ? "volume_up" : "volume_off"
|
|
visible: AudioService.soundsAvailable
|
|
|
|
SettingsToggleRow {
|
|
tab: "sounds"
|
|
tags: ["sound", "enable", "system"]
|
|
settingKey: "soundsEnabled"
|
|
text: I18n.tr("Enable System Sounds")
|
|
description: I18n.tr("Play sounds for system events")
|
|
checked: SettingsData.soundsEnabled
|
|
onToggled: checked => SettingsData.set("soundsEnabled", checked)
|
|
}
|
|
|
|
Column {
|
|
width: parent.width
|
|
spacing: Theme.spacingM
|
|
visible: SettingsData.soundsEnabled
|
|
|
|
Rectangle {
|
|
width: parent.width
|
|
height: 1
|
|
color: Theme.outline
|
|
opacity: 0.2
|
|
}
|
|
|
|
SettingsToggleRow {
|
|
tab: "sounds"
|
|
tags: ["sound", "theme", "system"]
|
|
settingKey: "useSystemSoundTheme"
|
|
visible: AudioService.gsettingsAvailable
|
|
text: I18n.tr("Use System Theme")
|
|
description: I18n.tr("Use sound theme from system settings")
|
|
checked: SettingsData.useSystemSoundTheme
|
|
onToggled: checked => SettingsData.set("useSystemSoundTheme", checked)
|
|
}
|
|
|
|
SettingsDropdownRow {
|
|
tab: "sounds"
|
|
tags: ["sound", "theme", "select"]
|
|
settingKey: "soundTheme"
|
|
visible: SettingsData.useSystemSoundTheme && AudioService.availableSoundThemes.length > 0
|
|
enabled: SettingsData.useSystemSoundTheme && AudioService.availableSoundThemes.length > 0
|
|
text: I18n.tr("Sound Theme")
|
|
description: I18n.tr("Select system sound theme")
|
|
options: AudioService.availableSoundThemes
|
|
currentValue: {
|
|
const theme = AudioService.currentSoundTheme;
|
|
if (theme && AudioService.availableSoundThemes.includes(theme))
|
|
return theme;
|
|
return AudioService.availableSoundThemes.length > 0 ? AudioService.availableSoundThemes[0] : "";
|
|
}
|
|
onValueChanged: value => {
|
|
if (value && value !== AudioService.currentSoundTheme)
|
|
AudioService.setSoundTheme(value);
|
|
}
|
|
}
|
|
|
|
Rectangle {
|
|
width: parent.width
|
|
height: 1
|
|
color: Theme.outline
|
|
opacity: 0.2
|
|
visible: AudioService.gsettingsAvailable
|
|
}
|
|
|
|
SettingsToggleRow {
|
|
tab: "sounds"
|
|
tags: ["sound", "login", "startup", "boot"]
|
|
settingKey: "soundLogin"
|
|
text: I18n.tr("Login")
|
|
description: I18n.tr("Play sound after logging in")
|
|
checked: SettingsData.soundLogin
|
|
onToggled: checked => SettingsData.set("soundLogin", checked)
|
|
}
|
|
|
|
SettingsToggleRow {
|
|
tab: "sounds"
|
|
tags: ["sound", "notification", "new"]
|
|
settingKey: "soundNewNotification"
|
|
text: I18n.tr("New Notification")
|
|
description: I18n.tr("Play sound when new notification arrives")
|
|
checked: SettingsData.soundNewNotification
|
|
onToggled: checked => SettingsData.set("soundNewNotification", checked)
|
|
}
|
|
|
|
SettingsToggleRow {
|
|
tab: "sounds"
|
|
tags: ["sound", "volume", "changed"]
|
|
settingKey: "soundVolumeChanged"
|
|
text: I18n.tr("Volume Changed")
|
|
description: I18n.tr("Play sound when volume is adjusted")
|
|
checked: SettingsData.soundVolumeChanged
|
|
onToggled: checked => SettingsData.set("soundVolumeChanged", checked)
|
|
}
|
|
|
|
SettingsToggleRow {
|
|
tab: "sounds"
|
|
tags: ["sound", "power", "plugged"]
|
|
settingKey: "soundPluggedIn"
|
|
visible: BatteryService.batteryAvailable
|
|
text: I18n.tr("Plugged In")
|
|
description: I18n.tr("Play sound when power cable is connected")
|
|
checked: SettingsData.soundPluggedIn
|
|
onToggled: checked => SettingsData.set("soundPluggedIn", checked)
|
|
}
|
|
|
|
Rectangle {
|
|
width: parent.width
|
|
height: 1
|
|
color: Theme.outline
|
|
opacity: 0.2
|
|
}
|
|
|
|
SettingsToggleRow {
|
|
tab: "sounds"
|
|
tags: ["sound", "media", "playback", "mute", "mpris", "music"]
|
|
settingKey: "muteSoundsWhenMediaPlaying"
|
|
text: I18n.tr("Mute During Playback")
|
|
description: I18n.tr("Silence system sounds while media is playing")
|
|
checked: SettingsData.muteSoundsWhenMediaPlaying
|
|
onToggled: checked => SettingsData.set("muteSoundsWhenMediaPlaying", checked)
|
|
}
|
|
}
|
|
}
|
|
|
|
Rectangle {
|
|
width: parent.width
|
|
height: notAvailableText.implicitHeight + Theme.spacingM * 2
|
|
radius: Theme.cornerRadius
|
|
color: Qt.rgba(Theme.warning.r, Theme.warning.g, Theme.warning.b, 0.12)
|
|
visible: !AudioService.soundsAvailable
|
|
|
|
Row {
|
|
anchors.fill: parent
|
|
anchors.margins: Theme.spacingM
|
|
spacing: Theme.spacingM
|
|
|
|
DankIcon {
|
|
name: "info"
|
|
size: Theme.iconSizeSmall
|
|
color: Theme.warning
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
}
|
|
|
|
StyledText {
|
|
id: notAvailableText
|
|
font.pixelSize: Theme.fontSizeSmall
|
|
text: I18n.tr("System sounds are not available. Install %1 for sound support.").arg("qt6-multimedia")
|
|
wrapMode: Text.WordWrap
|
|
width: parent.width - Theme.iconSizeSmall - Theme.spacingM
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|