mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-08-01 19:18:28 -04:00
3c0f2cbc48
- Delete ~160-ish useless terms - Add context to more terms - Add a mechanism to duplicate the same terms with different contexts - sync
221 lines
8.7 KiB
QML
221 lines
8.7 KiB
QML
import QtQuick
|
|
import qs.Common
|
|
import qs.Services
|
|
import qs.Widgets
|
|
import qs.Modules.Settings.Widgets
|
|
|
|
Item {
|
|
id: root
|
|
|
|
readonly property string multimediaPackage: {
|
|
const id = (SystemUpdateService.distribution || "").toLowerCase();
|
|
if (id.includes("suse"))
|
|
return "qt6-multimedia-imports";
|
|
switch (id) {
|
|
case "fedora":
|
|
case "fedora-asahi-remix":
|
|
case "nobara":
|
|
case "bazzite":
|
|
case "bluefin":
|
|
case "ultramarine":
|
|
case "evernight":
|
|
return "qt6-qtmultimedia";
|
|
case "debian":
|
|
case "ubuntu":
|
|
case "linuxmint":
|
|
case "pop":
|
|
case "elementary":
|
|
case "zorin":
|
|
return "qml6-module-qtmultimedia";
|
|
case "arch":
|
|
case "archarm":
|
|
case "archcraft":
|
|
case "cachyos":
|
|
case "catos":
|
|
case "endeavouros":
|
|
case "manjaro":
|
|
case "garuda":
|
|
case "artix":
|
|
case "obarun":
|
|
case "xerolinux":
|
|
return "qt6-multimedia";
|
|
default:
|
|
return I18n.tr("the Qt 6 Multimedia QML module");
|
|
}
|
|
}
|
|
|
|
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")
|
|
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")
|
|
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: Theme.warningHover
|
|
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(root.multimediaPackage)
|
|
wrapMode: Text.WordWrap
|
|
width: parent.width - Theme.iconSizeSmall - Theme.spacingM
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|