diff --git a/app/src/main/java/app/myzel394/alibi/ui/Navigation.kt b/app/src/main/java/app/myzel394/alibi/ui/Navigation.kt index a2d5b36..30f119d 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/Navigation.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/Navigation.kt @@ -57,7 +57,7 @@ fun Navigation( modifier = Modifier .background(MaterialTheme.colorScheme.background), navController = navController, - startDestination = if (settings.hasSeenOnboarding) Screen.AudioRecorder.route else Screen.Welcome.route, + startDestination = Screen.Welcome.route, ) { composable(Screen.Welcome.route) { WelcomeScreen(onNavigateToAudioRecorderScreen = { navController.navigate(Screen.AudioRecorder.route) }) diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/WelcomeScreen/pages/SaveFolderPage.kt b/app/src/main/java/app/myzel394/alibi/ui/components/WelcomeScreen/pages/SaveFolderPage.kt new file mode 100644 index 0000000..73ebbf5 --- /dev/null +++ b/app/src/main/java/app/myzel394/alibi/ui/components/WelcomeScreen/pages/SaveFolderPage.kt @@ -0,0 +1,102 @@ +package app.myzel394.alibi.ui.components.WelcomeScreen.pages + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.InsertDriveFile +import androidx.compose.material.icons.filled.ChevronLeft +import androidx.compose.material.icons.filled.ChevronRight +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import app.myzel394.alibi.R +import app.myzel394.alibi.ui.BIG_PRIMARY_BUTTON_SIZE +import app.myzel394.alibi.ui.components.WelcomeScreen.atoms.SaveFolderSelection + +@Composable +fun SaveFolderPage( + onBack: () -> Unit, + onContinue: () -> Unit, +) { + Column( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.SpaceBetween, + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Spacer(modifier = Modifier.weight(1f)) + Column( + modifier = Modifier + .padding(horizontal = 32.dp), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Icon( + Icons.AutoMirrored.Filled.InsertDriveFile, + contentDescription = null, + tint = MaterialTheme.colorScheme.tertiary, + modifier = Modifier.size(128.dp), + ) + Spacer(modifier = Modifier.height(32.dp)) + Text( + stringResource(R.string.ui_welcome_saveFolder_title), + style = MaterialTheme.typography.titleLarge, + ) + Spacer(modifier = Modifier.height(16.dp)) + Text( + stringResource(R.string.ui_welcome_saveFolder_message), + ) + } + Spacer(modifier = Modifier.weight(1f)) + SaveFolderSelection() + Spacer(modifier = Modifier.weight(1f)) + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + .padding(16.dp), + horizontalArrangement = Arrangement.spacedBy(16.dp), + ) { + IconButton( + onClick = onBack, + modifier = Modifier + .size(BIG_PRIMARY_BUTTON_SIZE), + ) { + Icon( + Icons.Default.ChevronLeft, + contentDescription = null, + ) + } + Button( + onClick = onContinue, + modifier = Modifier + .fillMaxWidth() + .height(BIG_PRIMARY_BUTTON_SIZE), + contentPadding = ButtonDefaults.ButtonWithIconContentPadding, + ) { + Icon( + Icons.Default.ChevronRight, + contentDescription = null, + modifier = Modifier.size(ButtonDefaults.IconSize) + ) + Spacer(modifier = Modifier.width(ButtonDefaults.IconSpacing)) + Text(stringResource(R.string.continue_label)) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/app/myzel394/alibi/ui/screens/WelcomeScreen.kt b/app/src/main/java/app/myzel394/alibi/ui/screens/WelcomeScreen.kt index 084a8f2..eebd65c 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/screens/WelcomeScreen.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/screens/WelcomeScreen.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.platform.LocalContext import app.myzel394.alibi.dataStore import app.myzel394.alibi.ui.components.WelcomeScreen.pages.ExplanationPage import app.myzel394.alibi.ui.components.WelcomeScreen.pages.ResponsibilityPage +import app.myzel394.alibi.ui.components.WelcomeScreen.pages.SaveFolderPage import app.myzel394.alibi.ui.components.WelcomeScreen.pages.TimeSettingsPage import kotlinx.coroutines.launch @@ -74,6 +75,17 @@ fun WelcomeScreen( pagerState.animateScrollToPage(3) } } + + 3 -> SaveFolderPage( + onBack = { + scope.launch { + pagerState.animateScrollToPage(2) + } + }, + onContinue = { + finishTutorial() + } + ) } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2436d62..68add45 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -203,4 +203,6 @@ 1 hour Select %s You can change this anytime + Where should Alibi store the batches? + By default, Alibi stores the batches into its own private, encrypted storage. You can change this and specify an external, unencrypted folder. If you want to let Alibi remember more than 15 minutes, you should choose an external folder, as the internal folder is very small. \ No newline at end of file