feat: Add DeleteRecordingsImmediately to settings

This commit is contained in:
Myzel394 2023-10-26 18:50:15 +02:00
parent d6b9f56a60
commit 6b6a19ead3
No known key found for this signature in database
GPG Key ID: 79CC92F37B3E1A2B
5 changed files with 63 additions and 0 deletions

View File

@ -88,6 +88,7 @@ data class AudioRecorderSettings(
val outputFormat: Int? = null,
val encoder: Int? = null,
val showAllMicrophones: Boolean = false,
val deleteRecordingsImmediately: Boolean = false,
) {
fun getOutputFormat(): Int {
if (outputFormat != null) {
@ -219,6 +220,10 @@ data class AudioRecorderSettings(
return copy(showAllMicrophones = showAllMicrophones)
}
fun setDeleteRecordingsImmediately(deleteRecordingsImmediately: Boolean): AudioRecorderSettings {
return copy(deleteRecordingsImmediately = deleteRecordingsImmediately)
}
fun isEncoderCompatible(encoder: Int): Boolean {
if (outputFormat == null || outputFormat == MediaRecorder.OutputFormat.DEFAULT) {
return true

View File

@ -26,6 +26,7 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import app.myzel394.alibi.dataStore
import app.myzel394.alibi.db.AppSettings
import app.myzel394.alibi.helpers.AudioRecorderExporter
import app.myzel394.alibi.ui.components.AudioRecorder.atoms.DeleteButton
import app.myzel394.alibi.ui.components.AudioRecorder.atoms.MicrophoneDisconnectedDialog
import app.myzel394.alibi.ui.components.AudioRecorder.atoms.MicrophoneReconnectedDialog
@ -106,6 +107,7 @@ fun RecordingStatus(
DeleteButton(
onDelete = {
audioRecorder.stopRecording(context, saveAsLastRecording = false)
AudioRecorderExporter.clearAllRecordings(context)
}
)
}

View File

@ -0,0 +1,52 @@
package app.myzel394.alibi.ui.components.SettingsScreen.atoms
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.DeleteSweep
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
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 kotlinx.coroutines.launch
@Composable
fun DeleteRecordingsImmediatelyTile() {
val scope = rememberCoroutineScope()
val dataStore = LocalContext.current.dataStore
val settings = dataStore
.data
.collectAsState(initial = AppSettings.getDefaultInstance())
.value
SettingsTile(
title = stringResource(R.string.ui_settings_option_deleteRecordingsImmediately_title),
description = stringResource(R.string.ui_settings_option_deleteRecordingsImmediately_description),
leading = {
Icon(
Icons.Default.DeleteSweep,
contentDescription = null,
)
},
trailing = {
Switch(
checked = settings.audioRecorderSettings.deleteRecordingsImmediately,
onCheckedChange = {
scope.launch {
dataStore.updateData {
it.setAudioRecorderSettings(
it.audioRecorderSettings.setDeleteRecordingsImmediately(it.audioRecorderSettings.deleteRecordingsImmediately.not())
)
}
}
}
)
}
)
}

View File

@ -42,6 +42,7 @@ 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.ForceExactMaxDurationTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.ImportExport
@ -148,6 +149,7 @@ fun SettingsScreen(
IntervalDurationTile()
ForceExactMaxDurationTile()
InAppLanguagePicker()
DeleteRecordingsImmediatelyTile()
CustomNotificationTile(navController = navController)
AboutTile(navController = navController)
AnimatedVisibility(visible = settings.showAdvancedSettings) {

View File

@ -107,4 +107,6 @@
<string name="ui_about_gpg_key_hint">You can copy my GPG key here. This key only exists once and I can use it to prove to you that I\'m really who I am. Please save it now so that you can verify my signature later.</string>
<string name="ui_about_gpg_key_copy">Copy GPG Key</string>
<string name="ui_about_contribute_donation_githubSponsors">Become a GitHub Sponsor</string>
<string name="ui_settings_option_deleteRecordingsImmediately_title">Delete Recordings Immediately</string>
<string name="ui_settings_option_deleteRecordingsImmediately_description">If enabled, Alibi will immediately delete recordings after you have saved the file.</string>
</resources>