Add a settings screen.

This commit is contained in:
Andres Gomez, Thomas (ITDV RL) 2024-06-10 09:23:48 +02:00
parent 90bf11909f
commit a6124cbe79
28 changed files with 668 additions and 63 deletions

View file

@ -6,7 +6,6 @@ import androidx.activity.ComponentActivity
import androidx.activity.compose.BackHandler
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.navigationBarsPadding
@ -57,6 +56,7 @@ val LocalRollOverlay = compositionLocalOf<BlurredRollOverlayHostState> {
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
private val themeViewModel: ThemeViewModel by viewModels()
private val launcherViewModel: LauncherViewModel by viewModels()
private val rollViewModel: RollOverlayViewModel by viewModels()
@ -72,16 +72,18 @@ class MainActivity : ComponentActivity() {
}
setContent {
LexiconTheme {
val snack = remember { SnackbarHostState() }
val overlay = rememberBlurredRollOverlayHostState(
viewModel = rollViewModel,
)
val snack = remember { SnackbarHostState() }
val overlay = rememberBlurredRollOverlayHostState(
viewModel = rollViewModel,
)
CompositionLocalProvider(
LocalActivity provides this,
LocalSnack provides snack,
LocalRollOverlay provides overlay,
CompositionLocalProvider(
LocalActivity provides this,
LocalSnack provides snack,
LocalRollOverlay provides overlay,
) {
LexiconTheme(
isDarkTheme = themeViewModel.useDarkTheme.value
) {
Scaffold(
contentWindowInsets = NO_WINDOW_INSETS,
@ -106,7 +108,7 @@ class MainActivity : ComponentActivity() {
}
},
snackbarHost = {
val isDarkTheme = isSystemInDarkTheme()
val isDarkTheme = themeViewModel.useDarkTheme.value
val elevation = remember {
derivedStateOf { if (isDarkTheme) 2.dp else 0.dp }
}
@ -145,15 +147,17 @@ class MainActivity : ComponentActivity() {
}
}
)
BackHandler(enabled = overlay.isOverlayVisible) {
overlay.hideOverlay()
}
}
HandleFetchError(
snack = snack,
errors = launcherViewModel.error,
)
BackHandler(
enabled = overlay.isOverlayVisible,
onBack = { overlay.hideOverlay() },
)
HandleFetchError(
snack = snack,
errors = launcherViewModel.error,
)
}
}
}
}