mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-18 23:05:26 +02:00
chore(ui): Improve structure for settings
This commit is contained in:
parent
b98718214c
commit
d4a5612b77
@ -9,6 +9,7 @@ import android.media.MediaRecorder.OnErrorListener
|
||||
import android.os.Build
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import app.myzel394.alibi.db.AppSettings
|
||||
import app.myzel394.alibi.db.AudioRecorderSettings
|
||||
import app.myzel394.alibi.db.RecordingInformation
|
||||
import app.myzel394.alibi.enums.RecorderState
|
||||
@ -296,14 +297,14 @@ class AudioRecorderService :
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun from(audioRecorderSettings: AudioRecorderSettings): Settings {
|
||||
fun from(appSettings: AppSettings): Settings {
|
||||
return Settings(
|
||||
intervalDuration = audioRecorderSettings.intervalDuration,
|
||||
bitRate = audioRecorderSettings.bitRate,
|
||||
samplingRate = audioRecorderSettings.getSamplingRate(),
|
||||
outputFormat = audioRecorderSettings.getOutputFormat(),
|
||||
encoder = audioRecorderSettings.getEncoder(),
|
||||
maxDuration = audioRecorderSettings.maxDuration,
|
||||
intervalDuration = appSettings.intervalDuration,
|
||||
maxDuration = appSettings.maxDuration,
|
||||
bitRate = appSettings.audioRecorderSettings.bitRate,
|
||||
samplingRate = appSettings.audioRecorderSettings.getSamplingRate(),
|
||||
outputFormat = appSettings.audioRecorderSettings.getOutputFormat(),
|
||||
encoder = appSettings.audioRecorderSettings.getEncoder(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -226,10 +226,9 @@ class VideoRecorderService :
|
||||
|
||||
companion object {
|
||||
fun from(appSettings: AppSettings) = Settings(
|
||||
// TODO: Migrate audioSettings
|
||||
maxDuration = appSettings.audioRecorderSettings.maxDuration,
|
||||
intervalDuration = appSettings.audioRecorderSettings.intervalDuration,
|
||||
folder = appSettings.audioRecorderSettings.saveFolder,
|
||||
maxDuration = appSettings.maxDuration,
|
||||
intervalDuration = appSettings.intervalDuration,
|
||||
folder = appSettings.saveFolder,
|
||||
targetVideoBitRate = appSettings.videoRecorderSettings.targetedVideoBitRate,
|
||||
targetFrameRate = appSettings.videoRecorderSettings.targetFrameRate,
|
||||
quality = appSettings.videoRecorderSettings.getQualitySelector()
|
||||
|
@ -120,7 +120,7 @@ fun StartRecording(
|
||||
Text(
|
||||
stringResource(
|
||||
R.string.ui_audioRecorder_action_start_description,
|
||||
settings.audioRecorderSettings.maxDuration / 1000 / 60
|
||||
settings.maxDuration / 1000 / 60
|
||||
),
|
||||
style = MaterialTheme.typography.bodySmall.copy(
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
|
@ -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.clickable
|
@ -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.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Mic
|
||||
import androidx.compose.material.icons.filled.Tune
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ButtonDefaults
|
||||
@ -11,7 +10,6 @@ import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
@ -36,7 +34,7 @@ import kotlinx.coroutines.launch
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun BitrateTile(
|
||||
fun AudioRecorderBitrateTile(
|
||||
settings: AppSettings,
|
||||
) {
|
||||
val scope = rememberCoroutineScope()
|
@ -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 androidx.compose.material.icons.Icons
|
||||
@ -12,7 +12,6 @@ import androidx.compose.material3.SnackbarDuration
|
||||
import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
@ -33,7 +32,7 @@ import kotlinx.coroutines.launch
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun EncoderTile(
|
||||
fun AudioRecorderEncoderTile(
|
||||
snackbarHostState: SnackbarHostState,
|
||||
settings: AppSettings,
|
||||
) {
|
@ -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.filled.AudioFile
|
||||
@ -29,7 +29,7 @@ import kotlinx.coroutines.launch
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun OutputFormatTile(
|
||||
fun AudioRecorderOutputFormatTile(
|
||||
settings: AppSettings,
|
||||
) {
|
||||
val scope = rememberCoroutineScope()
|
@ -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.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.RadioButtonChecked
|
||||
import androidx.compose.material.icons.filled.Tune
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ButtonDefaults
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
@ -11,7 +10,6 @@ import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
@ -36,7 +34,7 @@ import kotlinx.coroutines.launch
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun SamplingRateTile(
|
||||
fun AudioRecorderSamplingRateTile(
|
||||
settings: AppSettings,
|
||||
) {
|
||||
val scope = rememberCoroutineScope()
|
@ -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.filled.GraphicEq
|
||||
import androidx.compose.material.icons.filled.MicExternalOn
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.Switch
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
@ -14,12 +12,11 @@ import app.myzel394.alibi.R
|
||||
import app.myzel394.alibi.dataStore
|
||||
import app.myzel394.alibi.db.AppSettings
|
||||
import app.myzel394.alibi.ui.components.atoms.SettingsTile
|
||||
import com.maxkeppeker.sheets.core.models.base.rememberUseCaseState
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
||||
@Composable
|
||||
fun ShowAllMicrophonesTile(
|
||||
fun AudioRecorderShowAllMicrophonesTile(
|
||||
settings: AppSettings,
|
||||
) {
|
||||
val scope = rememberCoroutineScope()
|
@ -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.material.icons.Icons
|
@ -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.filled.DeleteSweep
|
||||
@ -34,13 +34,11 @@ fun DeleteRecordingsImmediatelyTile(
|
||||
},
|
||||
trailing = {
|
||||
Switch(
|
||||
checked = settings.audioRecorderSettings.deleteRecordingsImmediately,
|
||||
checked = settings.deleteRecordingsImmediately,
|
||||
onCheckedChange = {
|
||||
scope.launch {
|
||||
dataStore.updateData {
|
||||
it.setAudioRecorderSettings(
|
||||
it.audioRecorderSettings.setDeleteRecordingsImmediately(it.audioRecorderSettings.deleteRecordingsImmediately.not())
|
||||
)
|
||||
it.setDeleteRecordingsImmediately(it.deleteRecordingsImmediately.not())
|
||||
}
|
||||
}
|
||||
}
|
@ -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.Row
|
||||
@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.size
|
||||
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.Download
|
||||
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.SnackbarDuration
|
||||
import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.SnackbarVisuals
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
@ -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.filled.Mic
|
||||
@ -44,9 +44,7 @@ fun IntervalDurationTile(
|
||||
fun updateValue(intervalDuration: Long) {
|
||||
scope.launch {
|
||||
dataStore.updateData {
|
||||
it.setAudioRecorderSettings(
|
||||
it.audioRecorderSettings.setIntervalDuration(intervalDuration)
|
||||
)
|
||||
it.setIntervalDuration(intervalDuration)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -65,7 +63,7 @@ fun IntervalDurationTile(
|
||||
},
|
||||
config = DurationConfig(
|
||||
timeFormat = DurationFormat.MM_SS,
|
||||
currentTime = settings.audioRecorderSettings.intervalDuration / 1000,
|
||||
currentTime = settings.intervalDuration / 1000,
|
||||
minTime = 10,
|
||||
maxTime = 60 * 60,
|
||||
)
|
||||
@ -88,7 +86,7 @@ fun IntervalDurationTile(
|
||||
shape = MaterialTheme.shapes.medium,
|
||||
) {
|
||||
Text(
|
||||
text = formatDuration(settings.audioRecorderSettings.intervalDuration),
|
||||
text = formatDuration(settings.intervalDuration),
|
||||
)
|
||||
}
|
||||
},
|
||||
@ -96,7 +94,7 @@ fun IntervalDurationTile(
|
||||
ExampleListRoulette(
|
||||
items = AudioRecorderSettings.EXAMPLE_DURATION_TIMES,
|
||||
onItemSelected = ::updateValue,
|
||||
) {duration ->
|
||||
) { duration ->
|
||||
Text(
|
||||
text = formatDuration(duration),
|
||||
)
|
@ -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.filled.Memory
|
||||
@ -43,9 +43,7 @@ fun MaxDurationTile(
|
||||
fun updateValue(maxDuration: Long) {
|
||||
scope.launch {
|
||||
dataStore.updateData {
|
||||
it.setAudioRecorderSettings(
|
||||
it.audioRecorderSettings.setMaxDuration(maxDuration)
|
||||
)
|
||||
it.setMaxDuration(maxDuration)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -64,7 +62,7 @@ fun MaxDurationTile(
|
||||
},
|
||||
config = DurationConfig(
|
||||
timeFormat = DurationFormat.HH_MM,
|
||||
currentTime = settings.audioRecorderSettings.maxDuration / 1000,
|
||||
currentTime = settings.maxDuration / 1000,
|
||||
minTime = 60,
|
||||
maxTime = 10 * 24 * 60 * 60,
|
||||
)
|
||||
@ -86,7 +84,7 @@ fun MaxDurationTile(
|
||||
),
|
||||
shape = MaterialTheme.shapes.medium,
|
||||
) {
|
||||
Text(formatDuration(settings.audioRecorderSettings.maxDuration))
|
||||
Text(formatDuration(settings.maxDuration))
|
||||
}
|
||||
},
|
||||
extra = {
|
@ -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.net.Uri
|
||||
import android.text.TextUtils.split
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
@ -50,10 +49,10 @@ fun SaveFolderTile(
|
||||
val dataStore = context.dataStore
|
||||
|
||||
fun updateValue(path: String?) {
|
||||
if (settings.audioRecorderSettings.saveFolder != null) {
|
||||
if (settings.saveFolder != null) {
|
||||
runCatching {
|
||||
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
|
||||
)
|
||||
}
|
||||
@ -61,9 +60,7 @@ fun SaveFolderTile(
|
||||
|
||||
scope.launch {
|
||||
dataStore.updateData {
|
||||
it.setAudioRecorderSettings(
|
||||
it.audioRecorderSettings.setSaveFolder(path)
|
||||
)
|
||||
it.setSaveFolder(path)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -172,11 +169,11 @@ fun SaveFolderTile(
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp),
|
||||
) {
|
||||
if (settings.audioRecorderSettings.saveFolder != null) {
|
||||
if (settings.saveFolder != null) {
|
||||
Text(
|
||||
text = stringResource(
|
||||
R.string.form_value_selected,
|
||||
splitPath(settings.audioRecorderSettings.saveFolder).joinToString(" > ")
|
||||
splitPath(settings.saveFolder).joinToString(" > ")
|
||||
),
|
||||
style = MaterialTheme.typography.bodySmall,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
@ -43,7 +43,7 @@ class AudioRecorderModel :
|
||||
microphoneStatus = MicrophoneConnectivityStatus.CONNECTED
|
||||
}
|
||||
service.settings =
|
||||
AudioRecorderService.Settings.from(settings.audioRecorderSettings)
|
||||
AudioRecorderService.Settings.from(settings)
|
||||
|
||||
service.clearAllRecordings()
|
||||
service.startRecording()
|
||||
@ -55,14 +55,14 @@ class AudioRecorderModel :
|
||||
}
|
||||
|
||||
override fun startRecording(context: Context, settings: AppSettings) {
|
||||
batchesFolder = if (settings.audioRecorderSettings.saveFolder == null)
|
||||
batchesFolder = if (settings.saveFolder == null)
|
||||
AudioBatchesFolder.viaInternalFolder(context)
|
||||
else
|
||||
AudioBatchesFolder.viaCustomFolder(
|
||||
context,
|
||||
DocumentFile.fromTreeUri(
|
||||
context,
|
||||
Uri.parse(settings.audioRecorderSettings.saveFolder)
|
||||
Uri.parse(settings.saveFolder)
|
||||
)!!
|
||||
)
|
||||
|
||||
|
@ -67,7 +67,7 @@ fun AudioRecorderScreen(
|
||||
val saveFile = rememberFileSaverDialog(
|
||||
settings.audioRecorderSettings.getMimeType()
|
||||
) {
|
||||
if (settings.audioRecorderSettings.deleteRecordingsImmediately) {
|
||||
if (settings.deleteRecordingsImmediately) {
|
||||
audioRecorder.batchesFolder!!.deleteRecordings()
|
||||
}
|
||||
|
||||
@ -84,7 +84,7 @@ fun AudioRecorderScreen(
|
||||
var showRecorderError by remember { mutableStateOf(false) }
|
||||
|
||||
fun saveAsLastRecording() {
|
||||
if (!settings.audioRecorderSettings.deleteRecordingsImmediately) {
|
||||
if (!settings.deleteRecordingsImmediately) {
|
||||
scope.launch {
|
||||
dataStore.updateData {
|
||||
it.setLastRecording(
|
||||
@ -156,7 +156,7 @@ fun AudioRecorderScreen(
|
||||
BatchesFolder.BatchType.CUSTOM -> {
|
||||
showSnackbar(batchesFolder.customFolder!!.uri)
|
||||
|
||||
if (settings.audioRecorderSettings.deleteRecordingsImmediately) {
|
||||
if (settings.deleteRecordingsImmediately) {
|
||||
batchesFolder.deleteRecordings()
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,6 @@ import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Alignment
|
||||
@ -38,19 +37,20 @@ import androidx.navigation.NavController
|
||||
import app.myzel394.alibi.R
|
||||
import app.myzel394.alibi.dataStore
|
||||
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.atoms.BitrateTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.CustomNotificationTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.DeleteRecordingsImmediatelyTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.EncoderTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.ImportExport
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.AboutTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.AudioRecorderBitrateTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.CustomNotificationTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.DeleteRecordingsImmediatelyTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.DividerTitle
|
||||
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.IntervalDurationTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.MaxDurationTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.OutputFormatTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.SamplingRateTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.SaveFolderTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.ShowAllMicrophonesTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.IntervalDurationTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.MaxDurationTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.AudioRecorderOutputFormatTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.AudioRecorderSamplingRateTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.SaveFolderTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.Tiles.AudioRecorderShowAllMicrophonesTile
|
||||
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.ThemeSelector
|
||||
import app.myzel394.alibi.ui.components.atoms.GlobalSwitch
|
||||
import app.myzel394.alibi.ui.components.atoms.MessageBox
|
||||
@ -160,11 +160,14 @@ fun SettingsScreen(
|
||||
.padding(horizontal = 16.dp, vertical = 32.dp)
|
||||
)
|
||||
SaveFolderTile(settings = settings)
|
||||
ShowAllMicrophonesTile(settings = settings)
|
||||
BitrateTile(settings = settings)
|
||||
SamplingRateTile(settings = settings)
|
||||
EncoderTile(snackbarHostState = snackbarHostState, settings = settings)
|
||||
OutputFormatTile(settings = settings)
|
||||
AudioRecorderShowAllMicrophonesTile(settings = settings)
|
||||
AudioRecorderBitrateTile(settings = settings)
|
||||
AudioRecorderSamplingRateTile(settings = settings)
|
||||
AudioRecorderEncoderTile(
|
||||
snackbarHostState = snackbarHostState,
|
||||
settings = settings
|
||||
)
|
||||
AudioRecorderOutputFormatTile(settings = settings)
|
||||
}
|
||||
Divider(
|
||||
modifier = Modifier
|
||||
|
Loading…
x
Reference in New Issue
Block a user