From 79c497e24c78679da23c25aa047df2d66e578136 Mon Sep 17 00:00:00 2001 From: Anthony Date: Thu, 4 Apr 2024 00:45:07 +0200 Subject: [PATCH] feat(connector): add loading screen --- .../desktopMain/kotlin/tab/LoadingScreen.kt | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 connector/composeApp/src/desktopMain/kotlin/tab/LoadingScreen.kt diff --git a/connector/composeApp/src/desktopMain/kotlin/tab/LoadingScreen.kt b/connector/composeApp/src/desktopMain/kotlin/tab/LoadingScreen.kt new file mode 100644 index 0000000..14e354b --- /dev/null +++ b/connector/composeApp/src/desktopMain/kotlin/tab/LoadingScreen.kt @@ -0,0 +1,42 @@ +package tab + +import androidx.compose.foundation.layout.* +import androidx.compose.material3.CircularProgressIndicator +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.unit.dp +import cafe.adriel.voyager.core.screen.Screen + +/** + * Loading screen for use when using a ScreenModel in a loading state. + * Includes a CircularProgressIndicator with text below: "Loading *loadingTitle*" + * + * @param loadingTitle `String` of the page that is being loaded. + */ +class LoadingScreen (private val loadingTitle: String) : Screen { + + @Composable + override fun Content() { + Column ( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + ) { + CircularProgressIndicator( + modifier = Modifier.width(64.dp), + color = MaterialTheme.colorScheme.onSurface, + trackColor = MaterialTheme.colorScheme.surfaceVariant + ) + + Spacer(Modifier.size(64.dp)) + + Text("Loading $loadingTitle", style = MaterialTheme.typography.displaySmall ) + } + } + +}