chore(ui): Improve structure for settings

This commit is contained in:
Myzel394 2023-12-02 16:47:11 +01:00
parent b98718214c
commit d4a5612b77
No known key found for this signature in database
GPG Key ID: 79CC92F37B3E1A2B
18 changed files with 70 additions and 86 deletions

View File

@ -9,6 +9,7 @@ import android.media.MediaRecorder.OnErrorListener
import android.os.Build import android.os.Build
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import app.myzel394.alibi.db.AppSettings
import app.myzel394.alibi.db.AudioRecorderSettings import app.myzel394.alibi.db.AudioRecorderSettings
import app.myzel394.alibi.db.RecordingInformation import app.myzel394.alibi.db.RecordingInformation
import app.myzel394.alibi.enums.RecorderState import app.myzel394.alibi.enums.RecorderState
@ -296,14 +297,14 @@ class AudioRecorderService :
} }
companion object { companion object {
fun from(audioRecorderSettings: AudioRecorderSettings): Settings { fun from(appSettings: AppSettings): Settings {
return Settings( return Settings(
intervalDuration = audioRecorderSettings.intervalDuration, intervalDuration = appSettings.intervalDuration,
bitRate = audioRecorderSettings.bitRate, maxDuration = appSettings.maxDuration,
samplingRate = audioRecorderSettings.getSamplingRate(), bitRate = appSettings.audioRecorderSettings.bitRate,
outputFormat = audioRecorderSettings.getOutputFormat(), samplingRate = appSettings.audioRecorderSettings.getSamplingRate(),
encoder = audioRecorderSettings.getEncoder(), outputFormat = appSettings.audioRecorderSettings.getOutputFormat(),
maxDuration = audioRecorderSettings.maxDuration, encoder = appSettings.audioRecorderSettings.getEncoder(),
) )
} }
} }

View File

@ -226,10 +226,9 @@ class VideoRecorderService :
companion object { companion object {
fun from(appSettings: AppSettings) = Settings( fun from(appSettings: AppSettings) = Settings(
// TODO: Migrate audioSettings maxDuration = appSettings.maxDuration,
maxDuration = appSettings.audioRecorderSettings.maxDuration, intervalDuration = appSettings.intervalDuration,
intervalDuration = appSettings.audioRecorderSettings.intervalDuration, folder = appSettings.saveFolder,
folder = appSettings.audioRecorderSettings.saveFolder,
targetVideoBitRate = appSettings.videoRecorderSettings.targetedVideoBitRate, targetVideoBitRate = appSettings.videoRecorderSettings.targetedVideoBitRate,
targetFrameRate = appSettings.videoRecorderSettings.targetFrameRate, targetFrameRate = appSettings.videoRecorderSettings.targetFrameRate,
quality = appSettings.videoRecorderSettings.getQualitySelector() quality = appSettings.videoRecorderSettings.getQualitySelector()

View File

@ -120,7 +120,7 @@ fun StartRecording(
Text( Text(
stringResource( stringResource(
R.string.ui_audioRecorder_action_start_description, R.string.ui_audioRecorder_action_start_description,
settings.audioRecorderSettings.maxDuration / 1000 / 60 settings.maxDuration / 1000 / 60
), ),
style = MaterialTheme.typography.bodySmall.copy( style = MaterialTheme.typography.bodySmall.copy(
color = MaterialTheme.colorScheme.onSurfaceVariant, color = MaterialTheme.colorScheme.onSurfaceVariant,

View File

@ -1,4 +1,4 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms package app.myzel394.alibi.ui.components.SettingsScreen.Tiles
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable

View File

@ -1,8 +1,7 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms package app.myzel394.alibi.ui.components.SettingsScreen.Tiles
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Mic
import androidx.compose.material.icons.filled.Tune import androidx.compose.material.icons.filled.Tune
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
@ -11,7 +10,6 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@ -36,7 +34,7 @@ import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun BitrateTile( fun AudioRecorderBitrateTile(
settings: AppSettings, settings: AppSettings,
) { ) {
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()

View File

@ -1,4 +1,4 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms package app.myzel394.alibi.ui.components.SettingsScreen.Tiles
import android.media.MediaRecorder import android.media.MediaRecorder
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
@ -12,7 +12,6 @@ import androidx.compose.material3.SnackbarDuration
import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@ -33,7 +32,7 @@ import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun EncoderTile( fun AudioRecorderEncoderTile(
snackbarHostState: SnackbarHostState, snackbarHostState: SnackbarHostState,
settings: AppSettings, settings: AppSettings,
) { ) {

View File

@ -1,4 +1,4 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms package app.myzel394.alibi.ui.components.SettingsScreen.Tiles
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AudioFile import androidx.compose.material.icons.filled.AudioFile
@ -29,7 +29,7 @@ import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun OutputFormatTile( fun AudioRecorderOutputFormatTile(
settings: AppSettings, settings: AppSettings,
) { ) {
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()

View File

@ -1,9 +1,8 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms package app.myzel394.alibi.ui.components.SettingsScreen.Tiles
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.RadioButtonChecked import androidx.compose.material.icons.filled.RadioButtonChecked
import androidx.compose.material.icons.filled.Tune
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
@ -11,7 +10,6 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@ -36,7 +34,7 @@ import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun SamplingRateTile( fun AudioRecorderSamplingRateTile(
settings: AppSettings, settings: AppSettings,
) { ) {
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()

View File

@ -1,12 +1,10 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms package app.myzel394.alibi.ui.components.SettingsScreen.Tiles
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.GraphicEq
import androidx.compose.material.icons.filled.MicExternalOn import androidx.compose.material.icons.filled.MicExternalOn
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.Switch import androidx.compose.material3.Switch
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@ -14,12 +12,11 @@ import app.myzel394.alibi.R
import app.myzel394.alibi.dataStore import app.myzel394.alibi.dataStore
import app.myzel394.alibi.db.AppSettings import app.myzel394.alibi.db.AppSettings
import app.myzel394.alibi.ui.components.atoms.SettingsTile import app.myzel394.alibi.ui.components.atoms.SettingsTile
import com.maxkeppeker.sheets.core.models.base.rememberUseCaseState
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@Composable @Composable
fun ShowAllMicrophonesTile( fun AudioRecorderShowAllMicrophonesTile(
settings: AppSettings, settings: AppSettings,
) { ) {
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()

View File

@ -1,4 +1,4 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms package app.myzel394.alibi.ui.components.SettingsScreen.Tiles
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons

View File

@ -1,4 +1,4 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms package app.myzel394.alibi.ui.components.SettingsScreen.Tiles
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.DeleteSweep import androidx.compose.material.icons.filled.DeleteSweep
@ -34,13 +34,11 @@ fun DeleteRecordingsImmediatelyTile(
}, },
trailing = { trailing = {
Switch( Switch(
checked = settings.audioRecorderSettings.deleteRecordingsImmediately, checked = settings.deleteRecordingsImmediately,
onCheckedChange = { onCheckedChange = {
scope.launch { scope.launch {
dataStore.updateData { dataStore.updateData {
it.setAudioRecorderSettings( it.setDeleteRecordingsImmediately(it.deleteRecordingsImmediately.not())
it.audioRecorderSettings.setDeleteRecordingsImmediately(it.audioRecorderSettings.deleteRecordingsImmediately.not())
)
} }
} }
} }

View File

@ -1,4 +1,4 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms package app.myzel394.alibi.ui.components.SettingsScreen.Tiles
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.CheckCircle import androidx.compose.material.icons.filled.CheckCircle
import androidx.compose.material.icons.filled.Download import androidx.compose.material.icons.filled.Download
import androidx.compose.material.icons.filled.Upload import androidx.compose.material.icons.filled.Upload
@ -16,7 +15,6 @@ import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.SnackbarDuration import androidx.compose.material3.SnackbarDuration
import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.SnackbarVisuals
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState

View File

@ -1,4 +1,4 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms package app.myzel394.alibi.ui.components.SettingsScreen.Tiles
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Mic import androidx.compose.material.icons.filled.Mic
@ -44,9 +44,7 @@ fun IntervalDurationTile(
fun updateValue(intervalDuration: Long) { fun updateValue(intervalDuration: Long) {
scope.launch { scope.launch {
dataStore.updateData { dataStore.updateData {
it.setAudioRecorderSettings( it.setIntervalDuration(intervalDuration)
it.audioRecorderSettings.setIntervalDuration(intervalDuration)
)
} }
} }
} }
@ -65,7 +63,7 @@ fun IntervalDurationTile(
}, },
config = DurationConfig( config = DurationConfig(
timeFormat = DurationFormat.MM_SS, timeFormat = DurationFormat.MM_SS,
currentTime = settings.audioRecorderSettings.intervalDuration / 1000, currentTime = settings.intervalDuration / 1000,
minTime = 10, minTime = 10,
maxTime = 60 * 60, maxTime = 60 * 60,
) )
@ -88,7 +86,7 @@ fun IntervalDurationTile(
shape = MaterialTheme.shapes.medium, shape = MaterialTheme.shapes.medium,
) { ) {
Text( Text(
text = formatDuration(settings.audioRecorderSettings.intervalDuration), text = formatDuration(settings.intervalDuration),
) )
} }
}, },

View File

@ -1,4 +1,4 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms package app.myzel394.alibi.ui.components.SettingsScreen.Tiles
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Memory import androidx.compose.material.icons.filled.Memory
@ -43,9 +43,7 @@ fun MaxDurationTile(
fun updateValue(maxDuration: Long) { fun updateValue(maxDuration: Long) {
scope.launch { scope.launch {
dataStore.updateData { dataStore.updateData {
it.setAudioRecorderSettings( it.setMaxDuration(maxDuration)
it.audioRecorderSettings.setMaxDuration(maxDuration)
)
} }
} }
} }
@ -64,7 +62,7 @@ fun MaxDurationTile(
}, },
config = DurationConfig( config = DurationConfig(
timeFormat = DurationFormat.HH_MM, timeFormat = DurationFormat.HH_MM,
currentTime = settings.audioRecorderSettings.maxDuration / 1000, currentTime = settings.maxDuration / 1000,
minTime = 60, minTime = 60,
maxTime = 10 * 24 * 60 * 60, maxTime = 10 * 24 * 60 * 60,
) )
@ -86,7 +84,7 @@ fun MaxDurationTile(
), ),
shape = MaterialTheme.shapes.medium, shape = MaterialTheme.shapes.medium,
) { ) {
Text(formatDuration(settings.audioRecorderSettings.maxDuration)) Text(formatDuration(settings.maxDuration))
} }
}, },
extra = { extra = {

View File

@ -1,8 +1,7 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms package app.myzel394.alibi.ui.components.SettingsScreen.Tiles
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.text.TextUtils.split
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
@ -50,10 +49,10 @@ fun SaveFolderTile(
val dataStore = context.dataStore val dataStore = context.dataStore
fun updateValue(path: String?) { fun updateValue(path: String?) {
if (settings.audioRecorderSettings.saveFolder != null) { if (settings.saveFolder != null) {
runCatching { runCatching {
context.contentResolver.releasePersistableUriPermission( context.contentResolver.releasePersistableUriPermission(
Uri.parse(settings.audioRecorderSettings.saveFolder), Uri.parse(settings.saveFolder),
Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
) )
} }
@ -61,9 +60,7 @@ fun SaveFolderTile(
scope.launch { scope.launch {
dataStore.updateData { dataStore.updateData {
it.setAudioRecorderSettings( it.setSaveFolder(path)
it.audioRecorderSettings.setSaveFolder(path)
)
} }
} }
} }
@ -172,11 +169,11 @@ fun SaveFolderTile(
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(8.dp), verticalArrangement = Arrangement.spacedBy(8.dp),
) { ) {
if (settings.audioRecorderSettings.saveFolder != null) { if (settings.saveFolder != null) {
Text( Text(
text = stringResource( text = stringResource(
R.string.form_value_selected, R.string.form_value_selected,
splitPath(settings.audioRecorderSettings.saveFolder).joinToString(" > ") splitPath(settings.saveFolder).joinToString(" > ")
), ),
style = MaterialTheme.typography.bodySmall, style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurfaceVariant, color = MaterialTheme.colorScheme.onSurfaceVariant,

View File

@ -43,7 +43,7 @@ class AudioRecorderModel :
microphoneStatus = MicrophoneConnectivityStatus.CONNECTED microphoneStatus = MicrophoneConnectivityStatus.CONNECTED
} }
service.settings = service.settings =
AudioRecorderService.Settings.from(settings.audioRecorderSettings) AudioRecorderService.Settings.from(settings)
service.clearAllRecordings() service.clearAllRecordings()
service.startRecording() service.startRecording()
@ -55,14 +55,14 @@ class AudioRecorderModel :
} }
override fun startRecording(context: Context, settings: AppSettings) { override fun startRecording(context: Context, settings: AppSettings) {
batchesFolder = if (settings.audioRecorderSettings.saveFolder == null) batchesFolder = if (settings.saveFolder == null)
AudioBatchesFolder.viaInternalFolder(context) AudioBatchesFolder.viaInternalFolder(context)
else else
AudioBatchesFolder.viaCustomFolder( AudioBatchesFolder.viaCustomFolder(
context, context,
DocumentFile.fromTreeUri( DocumentFile.fromTreeUri(
context, context,
Uri.parse(settings.audioRecorderSettings.saveFolder) Uri.parse(settings.saveFolder)
)!! )!!
) )

View File

@ -67,7 +67,7 @@ fun AudioRecorderScreen(
val saveFile = rememberFileSaverDialog( val saveFile = rememberFileSaverDialog(
settings.audioRecorderSettings.getMimeType() settings.audioRecorderSettings.getMimeType()
) { ) {
if (settings.audioRecorderSettings.deleteRecordingsImmediately) { if (settings.deleteRecordingsImmediately) {
audioRecorder.batchesFolder!!.deleteRecordings() audioRecorder.batchesFolder!!.deleteRecordings()
} }
@ -84,7 +84,7 @@ fun AudioRecorderScreen(
var showRecorderError by remember { mutableStateOf(false) } var showRecorderError by remember { mutableStateOf(false) }
fun saveAsLastRecording() { fun saveAsLastRecording() {
if (!settings.audioRecorderSettings.deleteRecordingsImmediately) { if (!settings.deleteRecordingsImmediately) {
scope.launch { scope.launch {
dataStore.updateData { dataStore.updateData {
it.setLastRecording( it.setLastRecording(
@ -156,7 +156,7 @@ fun AudioRecorderScreen(
BatchesFolder.BatchType.CUSTOM -> { BatchesFolder.BatchType.CUSTOM -> {
showSnackbar(batchesFolder.customFolder!!.uri) showSnackbar(batchesFolder.customFolder!!.uri)
if (settings.audioRecorderSettings.deleteRecordingsImmediately) { if (settings.deleteRecordingsImmediately) {
batchesFolder.deleteRecordings() batchesFolder.deleteRecordings()
} }
} }

View File

@ -25,7 +25,6 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberTopAppBarState import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@ -38,19 +37,20 @@ import androidx.navigation.NavController
import app.myzel394.alibi.R import app.myzel394.alibi.R
import app.myzel394.alibi.dataStore import app.myzel394.alibi.dataStore
import app.myzel394.alibi.ui.SUPPORTS_DARK_MODE_NATIVELY import app.myzel394.alibi.ui.SUPPORTS_DARK_MODE_NATIVELY
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.AboutTile import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.AboutTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.BitrateTile import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.AudioRecorderBitrateTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.CustomNotificationTile import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.CustomNotificationTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.DeleteRecordingsImmediatelyTile import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.DeleteRecordingsImmediatelyTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.EncoderTile import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.DividerTitle
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.ImportExport import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.AudioRecorderEncoderTile
import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.ImportExport
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.InAppLanguagePicker import app.myzel394.alibi.ui.components.SettingsScreen.atoms.InAppLanguagePicker
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.IntervalDurationTile import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.IntervalDurationTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.MaxDurationTile import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.MaxDurationTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.OutputFormatTile import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.AudioRecorderOutputFormatTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.SamplingRateTile import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.AudioRecorderSamplingRateTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.SaveFolderTile import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.SaveFolderTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.ShowAllMicrophonesTile import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.AudioRecorderShowAllMicrophonesTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.ThemeSelector import app.myzel394.alibi.ui.components.SettingsScreen.atoms.ThemeSelector
import app.myzel394.alibi.ui.components.atoms.GlobalSwitch import app.myzel394.alibi.ui.components.atoms.GlobalSwitch
import app.myzel394.alibi.ui.components.atoms.MessageBox import app.myzel394.alibi.ui.components.atoms.MessageBox
@ -160,11 +160,14 @@ fun SettingsScreen(
.padding(horizontal = 16.dp, vertical = 32.dp) .padding(horizontal = 16.dp, vertical = 32.dp)
) )
SaveFolderTile(settings = settings) SaveFolderTile(settings = settings)
ShowAllMicrophonesTile(settings = settings) AudioRecorderShowAllMicrophonesTile(settings = settings)
BitrateTile(settings = settings) AudioRecorderBitrateTile(settings = settings)
SamplingRateTile(settings = settings) AudioRecorderSamplingRateTile(settings = settings)
EncoderTile(snackbarHostState = snackbarHostState, settings = settings) AudioRecorderEncoderTile(
OutputFormatTile(settings = settings) snackbarHostState = snackbarHostState,
settings = settings
)
AudioRecorderOutputFormatTile(settings = settings)
} }
Divider( Divider(
modifier = Modifier modifier = Modifier