diff --git a/app/src/main/java/app/myzel394/alibi/services/AudioRecorderService.kt b/app/src/main/java/app/myzel394/alibi/services/AudioRecorderService.kt index a1cb859..170ab53 100644 --- a/app/src/main/java/app/myzel394/alibi/services/AudioRecorderService.kt +++ b/app/src/main/java/app/myzel394/alibi/services/AudioRecorderService.kt @@ -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(), ) } } diff --git a/app/src/main/java/app/myzel394/alibi/services/VideoRecorderService.kt b/app/src/main/java/app/myzel394/alibi/services/VideoRecorderService.kt index da58476..67aa801 100644 --- a/app/src/main/java/app/myzel394/alibi/services/VideoRecorderService.kt +++ b/app/src/main/java/app/myzel394/alibi/services/VideoRecorderService.kt @@ -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() diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/AudioRecorder/molecules/StartRecording.kt b/app/src/main/java/app/myzel394/alibi/ui/components/AudioRecorder/molecules/StartRecording.kt index f1bb889..7289b2f 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/AudioRecorder/molecules/StartRecording.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/AudioRecorder/molecules/StartRecording.kt @@ -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, diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/AboutTile.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AboutTile.kt similarity index 97% rename from app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/AboutTile.kt rename to app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AboutTile.kt index 857584d..834b2b1 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/AboutTile.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AboutTile.kt @@ -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 diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/BitrateTile.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderBitrateTile.kt similarity index 96% rename from app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/BitrateTile.kt rename to app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderBitrateTile.kt index 5472dd5..4956b7e 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/BitrateTile.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderBitrateTile.kt @@ -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() diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/EncoderTile.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderEncoderTile.kt similarity index 97% rename from app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/EncoderTile.kt rename to app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderEncoderTile.kt index c8ad06e..5e9219f 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/EncoderTile.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderEncoderTile.kt @@ -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, ) { diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/OutputFormatTile.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderOutputFormatTile.kt similarity index 97% rename from app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/OutputFormatTile.kt rename to app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderOutputFormatTile.kt index 2d52c9f..5f8e5d0 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/OutputFormatTile.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderOutputFormatTile.kt @@ -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() diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/SamplingRateTile.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderSamplingRateTile.kt similarity index 96% rename from app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/SamplingRateTile.kt rename to app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderSamplingRateTile.kt index 53eb43c..4b4f87a 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/SamplingRateTile.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderSamplingRateTile.kt @@ -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() diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/ShowAllMicrophonesTile.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderShowAllMicrophonesTile.kt similarity index 85% rename from app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/ShowAllMicrophonesTile.kt rename to app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderShowAllMicrophonesTile.kt index 001b4cb..0d71f51 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/ShowAllMicrophonesTile.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/AudioRecorderShowAllMicrophonesTile.kt @@ -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() diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/CustomNotificationTile.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/CustomNotificationTile.kt similarity index 96% rename from app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/CustomNotificationTile.kt rename to app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/CustomNotificationTile.kt index d32bde4..5dc50a4 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/CustomNotificationTile.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/CustomNotificationTile.kt @@ -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 diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/DeleteRecordingsImmediatelyTile.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/DeleteRecordingsImmediatelyTile.kt similarity index 78% rename from app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/DeleteRecordingsImmediatelyTile.kt rename to app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/DeleteRecordingsImmediatelyTile.kt index 5dfafeb..4300884 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/DeleteRecordingsImmediatelyTile.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/DeleteRecordingsImmediatelyTile.kt @@ -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()) } } } diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/ImportExport.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/ImportExport.kt similarity index 97% rename from app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/ImportExport.kt rename to app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/ImportExport.kt index 830d550..f0d7803 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/ImportExport.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/ImportExport.kt @@ -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 diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/IntervalDurationTile.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/IntervalDurationTile.kt similarity index 89% rename from app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/IntervalDurationTile.kt rename to app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/IntervalDurationTile.kt index c8dc328..09bc86e 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/IntervalDurationTile.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/IntervalDurationTile.kt @@ -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), ) diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/MaxDurationTile.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/MaxDurationTile.kt similarity index 90% rename from app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/MaxDurationTile.kt rename to app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/MaxDurationTile.kt index aacd9f0..6319cb6 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/MaxDurationTile.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/MaxDurationTile.kt @@ -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 = { diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/SaveFolderTile.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/SaveFolderTile.kt similarity index 93% rename from app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/SaveFolderTile.kt rename to app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/SaveFolderTile.kt index 4f2fd7f..c62db5c 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/SaveFolderTile.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/SaveFolderTile.kt @@ -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, diff --git a/app/src/main/java/app/myzel394/alibi/ui/models/AudioRecorderModel.kt b/app/src/main/java/app/myzel394/alibi/ui/models/AudioRecorderModel.kt index 0395f8c..1306dbe 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/models/AudioRecorderModel.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/models/AudioRecorderModel.kt @@ -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) )!! ) diff --git a/app/src/main/java/app/myzel394/alibi/ui/screens/AudioRecorderScreen.kt b/app/src/main/java/app/myzel394/alibi/ui/screens/AudioRecorderScreen.kt index ed6f354..677e4fc 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/screens/AudioRecorderScreen.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/screens/AudioRecorderScreen.kt @@ -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() } } diff --git a/app/src/main/java/app/myzel394/alibi/ui/screens/SettingsScreen.kt b/app/src/main/java/app/myzel394/alibi/ui/screens/SettingsScreen.kt index cdad664..62a4ed5 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/screens/SettingsScreen.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/screens/SettingsScreen.kt @@ -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