From 1fe99b2aa6e35f5c9eff4ce5b9cb1ccf1c2c022d Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Fri, 23 Feb 2024 21:30:44 +0100 Subject: [PATCH 1/2] feat: Add explanation to internal storage Signed-off-by: Myzel394 <50424412+Myzel394@users.noreply.github.com> --- .../SettingsScreen/Tiles/SaveFolderTile.kt | 79 ++++++++++++++++--- app/src/main/res/values/strings.xml | 1 + 2 files changed, 70 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/SaveFolderTile.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/SaveFolderTile.kt index dd3aed4..f9cbcae 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/SaveFolderTile.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/Tiles/SaveFolderTile.kt @@ -4,8 +4,6 @@ import android.Manifest import android.content.Intent import android.net.Uri import android.os.Build -import android.os.Environment -import android.provider.MediaStore import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -21,10 +19,10 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.InsertDriveFile import androidx.compose.material.icons.filled.CameraAlt import androidx.compose.material.icons.filled.Cancel import androidx.compose.material.icons.filled.Folder -import androidx.compose.material.icons.filled.InsertDriveFile import androidx.compose.material.icons.filled.Lock import androidx.compose.material.icons.filled.Mic import androidx.compose.material.icons.filled.PermMedia @@ -147,19 +145,29 @@ fun SaveFolderTile( var showDCIMFolderHelpSheet by remember { mutableStateOf(false) } if (showDCIMFolderHelpSheet) { - MediaFoldersExplanationDialog( + DCIMFolderExplanationDialog( onDismiss = { showDCIMFolderHelpSheet = false } ) } + var showExplanationDialog by remember { mutableStateOf(false) } + + if (showExplanationDialog) { + InternalFolderExplanationDialog( + onDismiss = { + showExplanationDialog = false + } + ) + } + SettingsTile( title = stringResource(R.string.ui_settings_option_saveFolder_title), description = stringResource(R.string.ui_settings_option_saveFolder_explanation), leading = { Icon( - Icons.Default.InsertDriveFile, + Icons.AutoMirrored.Filled.InsertDriveFile, contentDescription = null, ) }, @@ -205,7 +213,25 @@ fun SaveFolderTile( val openFolder = rememberOpenUri() when (settings.saveFolder) { - null -> {} + null -> { + Button( + onClick = { + showExplanationDialog = true + }, + shape = MaterialTheme.shapes.small, + contentPadding = ButtonDefaults.TextButtonContentPadding, + colors = ButtonDefaults.filledTonalButtonColors( + contentColor = MaterialTheme.colorScheme.onTertiaryContainer, + containerColor = MaterialTheme.colorScheme.tertiaryContainer, + ), + ) { + Text( + stringResource(R.string.ui_settings_option_saveFolder_explainMediaFolder_label), + fontSize = MaterialTheme.typography.bodySmall.fontSize, + ) + } + } + RECORDER_MEDIA_SELECTED_VALUE -> { Button( onClick = { @@ -258,12 +284,9 @@ fun SaveFolderTile( } @Composable -fun MediaFoldersExplanationDialog( +fun DCIMFolderExplanationDialog( onDismiss: () -> Unit, ) { - val context = LocalContext.current - val openFolder = rememberOpenUri() - AlertDialog( onDismissRequest = onDismiss, icon = { @@ -363,6 +386,42 @@ fun MediaFoldersExplanationDialog( ) } +@Composable +fun InternalFolderExplanationDialog( + onDismiss: () -> Unit, +) { + AlertDialog( + onDismissRequest = onDismiss, + icon = { + Icon( + Icons.Default.Lock, + contentDescription = null, + ) + }, + title = { + Text(stringResource(R.string.ui_settings_option_saveFolder_explainMediaFolder_label)) + }, + confirmButton = { + Button(onClick = onDismiss) { + Text(stringResource(R.string.dialog_close_neutral_label)) + } + }, + text = { + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(32.dp), + ) { + Text( + stringResource(R.string.ui_settings_option_saveFolder_explainInternalFolder_explanation), + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurface, + ) + } + } + ) +} + @OptIn(ExperimentalMaterial3Api::class) @Composable fun SelectionSheet( diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 30e14c1..57cff23 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -188,4 +188,5 @@ The final merged recordings will be saved in those folders. Each recording creates a subfolder to store the short batches in (\"%s\" for audio recordings, \"%s\" for video recordings). To view the individual batches, you may need to enable hidden files in the Files app. Tap on a folder to open it in the Files app Unknown + To protect your privacy, Alibi stores its batches into its own private, encrypted storage. This storage is only accessible by Alibi and can\'t be accessed by other apps or by a possible intruder. Once you save the recording, you will be asked where you want to save the recording to. \ No newline at end of file From db58bfc408d2432af1916e807215c2a4908f26f7 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Fri, 23 Feb 2024 21:32:08 +0100 Subject: [PATCH 2/2] fix: Improve wording Signed-off-by: Myzel394 <50424412+Myzel394@users.noreply.github.com> --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 57cff23..f17128b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -182,7 +182,7 @@ File Manager app not found Alibi couldn\'t find a file manager app on your phone. Please install a file manager app and try again. If this message still appears, you can try using a custom batches folder in the advanced settings section. Alibi may not fully work on your device. Recording Video - Open Folder in Files + Open selected folder in file manager Where are my batches stored? To view your batches, open the Files app, go to the internal storage and then you will find your batches in following folders: The final merged recordings will be saved in those folders. Each recording creates a subfolder to store the short batches in (\"%s\" for audio recordings, \"%s\" for video recordings). To view the individual batches, you may need to enable hidden files in the Files app.