From b5afcc80acaf60aaff0cace63069e31d4d189208 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Sat, 5 Aug 2023 21:25:47 +0200 Subject: [PATCH] refactor: Use ConfirmDeletionDialog --- .../atoms/ConfirmDeletionDialog.kt | 81 +++++++++++++++++++ .../{atoms => molecules}/RecordingStatus.kt | 67 +++------------ 2 files changed, 90 insertions(+), 58 deletions(-) create mode 100644 app/src/main/java/app/myzel394/locationtest/ui/components/AudioRecorder/atoms/ConfirmDeletionDialog.kt rename app/src/main/java/app/myzel394/locationtest/ui/components/AudioRecorder/{atoms => molecules}/RecordingStatus.kt (67%) diff --git a/app/src/main/java/app/myzel394/locationtest/ui/components/AudioRecorder/atoms/ConfirmDeletionDialog.kt b/app/src/main/java/app/myzel394/locationtest/ui/components/AudioRecorder/atoms/ConfirmDeletionDialog.kt new file mode 100644 index 0000000..d7f4c1e --- /dev/null +++ b/app/src/main/java/app/myzel394/locationtest/ui/components/AudioRecorder/atoms/ConfirmDeletionDialog.kt @@ -0,0 +1,81 @@ +package app.myzel394.locationtest.ui.components.AudioRecorder.atoms + +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Cancel +import androidx.compose.material.icons.filled.Delete +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.semantics.contentDescription +import androidx.compose.ui.semantics.semantics +import app.myzel394.locationtest.services.RecorderService + +@Composable +fun ConfirmDeletionDialog( + onDismiss: () -> Unit, + onConfirm: () -> Unit, +) { + AlertDialog( + onDismissRequest = { + onDismiss() + }, + title = { + Text("Delete Recording?") + }, + text = { + Text("Are you sure you want to delete this recording?") + }, + icon = { + Icon( + Icons.Default.Delete, + contentDescription = null, + ) + }, + confirmButton = { + Button( + modifier = Modifier + .semantics { + contentDescription = "Confirm Recording Deletion" + }, + onClick = { + onConfirm() + }, + ) { + Icon( + Icons.Default.Delete, + contentDescription = null, + modifier = Modifier.size(ButtonDefaults.IconSize), + ) + Spacer(modifier = Modifier.width(ButtonDefaults.IconSpacing)) + Text("Delete") + } + }, + dismissButton = { + Button( + modifier = Modifier + .semantics { + contentDescription = "Cancel Recording Deletion" + }, + onClick = { + onDismiss() + }, + colors = ButtonDefaults.textButtonColors(), + ) { + Icon( + Icons.Default.Cancel, + contentDescription = null, + modifier = Modifier.size(ButtonDefaults.IconSize), + ) + Spacer(modifier = Modifier.width(ButtonDefaults.IconSpacing)) + Text("Cancel") + } + } + ) +} \ No newline at end of file diff --git a/app/src/main/java/app/myzel394/locationtest/ui/components/AudioRecorder/atoms/RecordingStatus.kt b/app/src/main/java/app/myzel394/locationtest/ui/components/AudioRecorder/molecules/RecordingStatus.kt similarity index 67% rename from app/src/main/java/app/myzel394/locationtest/ui/components/AudioRecorder/atoms/RecordingStatus.kt rename to app/src/main/java/app/myzel394/locationtest/ui/components/AudioRecorder/molecules/RecordingStatus.kt index 36ce0aa..7fda0c8 100644 --- a/app/src/main/java/app/myzel394/locationtest/ui/components/AudioRecorder/atoms/RecordingStatus.kt +++ b/app/src/main/java/app/myzel394/locationtest/ui/components/AudioRecorder/molecules/RecordingStatus.kt @@ -1,4 +1,4 @@ -package app.myzel394.locationtest.ui.components.AudioRecorder.atoms +package app.myzel394.locationtest.ui.components.AudioRecorder.molecules import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -14,10 +14,8 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Cancel import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Save -import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon @@ -40,9 +38,10 @@ import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import app.myzel394.locationtest.services.RecorderService import app.myzel394.locationtest.ui.BIG_PRIMARY_BUTTON_SIZE +import app.myzel394.locationtest.ui.components.AudioRecorder.atoms.ConfirmDeletionDialog +import app.myzel394.locationtest.ui.components.AudioRecorder.atoms.RealtimeAudioVisualizer import app.myzel394.locationtest.ui.components.atoms.Pulsating import app.myzel394.locationtest.ui.utils.formatDuration -import app.myzel394.locationtest.ui.utils.rememberFileSaverDialog import kotlinx.coroutines.delay import java.io.File import java.time.Duration @@ -111,63 +110,15 @@ fun RecordingStatus( var showDeleteDialog by remember { mutableStateOf(false) } if (showDeleteDialog) { - AlertDialog( - onDismissRequest = { + ConfirmDeletionDialog( + onDismiss = { showDeleteDialog = false }, - title = { - Text("Delete Recording?") + onConfirm = { + showDeleteDialog = false + RecorderService.stopService(context) + service.reset() }, - text = { - Text("Are you sure you want to delete this recording?") - }, - icon = { - Icon( - Icons.Default.Delete, - contentDescription = null, - ) - }, - confirmButton = { - Button( - modifier = Modifier - .semantics { - contentDescription = "Confirm Recording Deletion" - }, - onClick = { - showDeleteDialog = false - RecorderService.stopService(context) - service.reset() - }, - ) { - Icon( - Icons.Default.Delete, - contentDescription = null, - modifier = Modifier.size(ButtonDefaults.IconSize), - ) - Spacer(modifier = Modifier.width(ButtonDefaults.IconSpacing)) - Text("Delete") - } - }, - dismissButton = { - Button( - modifier = Modifier - .semantics { - contentDescription = "Cancel Recording Deletion" - }, - onClick = { - showDeleteDialog = false - }, - colors = ButtonDefaults.textButtonColors(), - ) { - Icon( - Icons.Default.Cancel, - contentDescription = null, - modifier = Modifier.size(ButtonDefaults.IconSize), - ) - Spacer(modifier = Modifier.width(ButtonDefaults.IconSpacing)) - Text("Cancel") - } - } ) } Button(