feat: Add SaveFolderPage

Signed-off-by: Myzel394 <50424412+Myzel394@users.noreply.github.com>
This commit is contained in:
Myzel394 2024-03-21 22:58:35 +01:00
parent 552acdacf0
commit e968e7e589
No known key found for this signature in database
GPG Key ID: DEC4AAB876F73185
4 changed files with 117 additions and 1 deletions

View File

@ -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) })

View File

@ -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))
}
}
}
}

View File

@ -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()
}
)
}
}
}

View File

@ -203,4 +203,6 @@
<string name="ui_welcome_timeSettings_values_1hour">1 hour</string>
<string name="ui_welcome_timeSettings_selectTime">Select %s</string>
<string name="ui_welcome_timeSettings_changeableHint">You can change this anytime</string>
<string name="ui_welcome_saveFolder_title">Where should Alibi store the batches?</string>
<string name="ui_welcome_saveFolder_message">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.</string>
</resources>