From ac6cc7a5c0947353a00baef0f4ecc1e307a0059d Mon Sep 17 00:00:00 2001
From: Myzel394 <50424412+Myzel394@users.noreply.github.com>
Date: Fri, 22 Mar 2024 19:40:36 +0100
Subject: [PATCH] feat: Add ReadyPage
Signed-off-by: Myzel394 <50424412+Myzel394@users.noreply.github.com>
---
.../java/app/myzel394/alibi/ui/Navigation.kt | 13 +++-
.../WelcomeScreen/pages/ReadyPage.kt | 78 +++++++++++++++++++
.../alibi/ui/screens/WelcomeScreen.kt | 9 ++-
app/src/main/res/values/strings.xml | 3 +
4 files changed, 99 insertions(+), 4 deletions(-)
create mode 100644 app/src/main/java/app/myzel394/alibi/ui/components/WelcomeScreen/pages/ReadyPage.kt
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 30f119d..52d498b 100644
--- a/app/src/main/java/app/myzel394/alibi/ui/Navigation.kt
+++ b/app/src/main/java/app/myzel394/alibi/ui/Navigation.kt
@@ -14,6 +14,7 @@ import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
+import androidx.core.content.ContextCompat
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
@@ -57,10 +58,18 @@ fun Navigation(
modifier = Modifier
.background(MaterialTheme.colorScheme.background),
navController = navController,
- startDestination = Screen.Welcome.route,
+ startDestination = if (settings.hasSeenOnboarding) Screen.AudioRecorder.route else Screen.Welcome.route,
) {
composable(Screen.Welcome.route) {
- WelcomeScreen(onNavigateToAudioRecorderScreen = { navController.navigate(Screen.AudioRecorder.route) })
+ WelcomeScreen(
+ onNavigateToAudioRecorderScreen = {
+ val mainHandler = ContextCompat.getMainExecutor(context)
+
+ mainHandler.execute {
+ navController.navigate(Screen.AudioRecorder.route)
+ }
+ },
+ )
}
composable(
Screen.AudioRecorder.route,
diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/WelcomeScreen/pages/ReadyPage.kt b/app/src/main/java/app/myzel394/alibi/ui/components/WelcomeScreen/pages/ReadyPage.kt
new file mode 100644
index 0000000..cdee3cb
--- /dev/null
+++ b/app/src/main/java/app/myzel394/alibi/ui/components/WelcomeScreen/pages/ReadyPage.kt
@@ -0,0 +1,78 @@
+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.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.filled.Celebration
+import androidx.compose.material.icons.filled.Check
+import androidx.compose.material3.Button
+import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.Icon
+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
+
+@Composable
+fun ReadyPage(
+ 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.Default.Celebration,
+ contentDescription = null,
+ tint = MaterialTheme.colorScheme.tertiary,
+ modifier = Modifier.size(128.dp),
+ )
+ Spacer(modifier = Modifier.height(32.dp))
+ Text(
+ stringResource(R.string.ui_welcome_ready_title),
+ style = MaterialTheme.typography.titleLarge,
+ )
+ Spacer(modifier = Modifier.height(16.dp))
+ Text(
+ stringResource(R.string.ui_welcome_ready_message),
+ )
+ }
+ Spacer(modifier = Modifier.weight(1f))
+ Button(
+ onClick = onContinue,
+ modifier = Modifier
+ .padding(16.dp)
+ .fillMaxWidth()
+ .height(BIG_PRIMARY_BUTTON_SIZE),
+ contentPadding = ButtonDefaults.ButtonWithIconContentPadding,
+ ) {
+ Icon(
+ Icons.Default.Check,
+ contentDescription = null,
+ modifier = Modifier.size(ButtonDefaults.IconSize)
+ )
+ Spacer(modifier = Modifier.width(ButtonDefaults.IconSpacing))
+ Text(stringResource(R.string.ui_welcome_ready_start))
+ }
+ }
+}
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 c1c461c..adcd27f 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
@@ -14,6 +14,7 @@ import androidx.compose.ui.Modifier
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.ReadyPage
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
@@ -32,7 +33,7 @@ fun WelcomeScreen(
val pagerState = rememberPagerState(
initialPage = 0,
initialPageOffsetFraction = 0f,
- pageCount = { 4 }
+ pageCount = { 5 }
)
fun finishTutorial() {
@@ -85,11 +86,15 @@ fun WelcomeScreen(
},
onContinue = {
scope.launch {
- pagerState.animateScrollToPage(3)
+ pagerState.animateScrollToPage(4)
}
},
appSettings = settings
)
+
+ 4 -> ReadyPage {
+ finishTutorial()
+ }
}
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4c2a370..37615a8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -216,4 +216,7 @@
%s minutes
%s hour, %s minutes
1 hour, %s minutes
+ You are ready!
+ You are ready to start using Alibi! Go ahead and try it out!
+ Start Alibi
\ No newline at end of file