summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Settings/SoundsTab.qml
blob: a8e9958f212ac4243a88406228a00f201c7d8447 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
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: 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
                    }
                }
            }
        }
    }
}