feat: Add CustomNotificationTile.kt to SettingsScreen

This commit is contained in:
Myzel394 2023-10-23 18:22:49 +02:00
parent d0d8996227
commit ac4102d5cd
No known key found for this signature in database
GPG Key ID: 79CC92F37B3E1A2B
4 changed files with 60 additions and 1 deletions

View File

@ -16,7 +16,7 @@ import java.time.format.DateTimeFormatter.ISO_DATE_TIME
@Serializable
data class AppSettings(
val audioRecorderSettings: AudioRecorderSettings = AudioRecorderSettings(),
val notificationSettings: NotificationSettings = NotificationSettings.fromPreset(NotificationSettings.Preset.Default),
val notificationSettings: NotificationSettings? = null,
val hasSeenOnboarding: Boolean = false,
val showAdvancedSettings: Boolean = false,
val theme: Theme = Theme.SYSTEM,
@ -433,6 +433,7 @@ data class NotificationSettings(
R.string.ui_audioRecorder_state_recording_description,
true,
)
data object Weather : Preset(
R.string.ui_audioRecorder_state_recording_fake_weather_title,
R.string.ui_audioRecorder_state_recording_fake_weather_description,

View File

@ -0,0 +1,53 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms
import androidx.compose.foundation.clickable
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ChevronRight
import androidx.compose.material.icons.filled.Notifications
import androidx.compose.material3.Icon
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.semantics
import app.myzel394.alibi.R
import app.myzel394.alibi.dataStore
import app.myzel394.alibi.db.AppSettings
import app.myzel394.alibi.ui.components.atoms.SettingsTile
@Composable
fun CustomNotificationTile() {
val dataStore = LocalContext.current.dataStore
val settings = dataStore
.data
.collectAsState(initial = AppSettings.getDefaultInstance())
.value
val label = if (settings.notificationSettings == null)
stringResource(R.string.ui_settings_option_customNotification_description_setup)
else stringResource(
R.string.ui_settings_option_customNotification_description_edit
)
SettingsTile(
firstModifier = Modifier
.clickable { }
.semantics { contentDescription = label },
title = stringResource(R.string.ui_settings_option_customNotification_title),
description = label,
leading = {
Icon(
Icons.Default.Notifications,
contentDescription = null,
)
},
trailing = {
Icon(
Icons.Default.ChevronRight,
contentDescription = null,
)
}
)
}

View File

@ -40,6 +40,7 @@ import app.myzel394.alibi.dataStore
import app.myzel394.alibi.db.AppSettings
import app.myzel394.alibi.ui.SUPPORTS_DARK_MODE_NATIVELY
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.BitrateTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.CustomNotificationTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.EncoderTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.ForceExactMaxDurationTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.ImportExport
@ -145,6 +146,7 @@ fun SettingsScreen(
IntervalDurationTile()
ForceExactMaxDurationTile()
InAppLanguagePicker()
CustomNotificationTile()
AnimatedVisibility(visible = settings.showAdvancedSettings) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,

View File

@ -71,4 +71,7 @@
<string name="ui_settings_option_import_dialog_text">Are you sure you want to import these settings? Your current settings will be overwritten!</string>
<string name="ui_settings_option_import_dialog_confirm">Import settings</string>
<string name="ui_settings_option_import_success">Settings have been imported successfully!</string>
<string name="ui_settings_option_customNotification_title">Custom Notifications</string>
<string name="ui_settings_option_customNotification_description_setup">Setup custom recording notifications now</string>
<string name="ui_settings_option_customNotification_description_edit">Edit recording notifications</string>
</resources>