From 687352920cbdfbb90b2abe7da06ca9b026119290 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Thu, 1 Sep 2022 22:42:30 -0700 Subject: [PATCH] set status and nav bar background to black --- .../app/omnivore/omnivore/MainActivity.kt | 16 +++--- .../omnivore/ui/auth/WelcomeScreen.kt | 1 - .../app/omnivore/omnivore/ui/home/HomeView.kt | 53 +++++++++---------- .../omnivore/ui/reader/WebAppReader.kt | 1 + .../app/omnivore/omnivore/ui/root/RootView.kt | 50 ++++++++++++----- .../omnivore/ui/settings/SettingsContent.kt | 2 +- .../app/omnivore/omnivore/ui/theme/Theme.kt | 2 +- 7 files changed, 75 insertions(+), 50 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index 07a207e2e..e4bc977bc 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -5,8 +5,11 @@ import android.view.View import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.viewModels -import androidx.compose.foundation.layout.systemBarsPadding +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import app.omnivore.omnivore.ui.theme.OmnivoreTheme import androidx.core.view.ViewCompat import androidx.core.view.WindowCompat @@ -26,12 +29,13 @@ class MainActivity : ComponentActivity() { setContent { OmnivoreTheme { - RootView( - loginViewModel, - homeViewModel, + Box( modifier = Modifier - .systemBarsPadding() - ) + .fillMaxSize() + .background(color = Color.Black) + ) { + RootView(loginViewModel, homeViewModel) + } } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/WelcomeScreen.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/WelcomeScreen.kt index f839361cf..8f9c5fe8a 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/WelcomeScreen.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/WelcomeScreen.kt @@ -50,7 +50,6 @@ fun WelcomeScreenContent(viewModel: LoginViewModel) { horizontalAlignment = Alignment.Start, modifier = Modifier .fillMaxSize() - .navigationBarsPadding() .padding(horizontal = 16.dp) .clickable { focusManager.clearFocus() } ) { diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeView.kt index ef7159cf2..849615447 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeView.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeView.kt @@ -15,6 +15,7 @@ import androidx.compose.runtime.* import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController import app.omnivore.omnivore.Routes @@ -25,36 +26,34 @@ import kotlinx.coroutines.flow.distinctUntilChanged @Composable fun HomeView( homeViewModel: HomeViewModel, - navController: NavHostController, - modifier: Modifier + navController: NavHostController ) { - Scaffold( - topBar = { - TopAppBar( - title = { Text("Home") }, - backgroundColor = MaterialTheme.colorScheme.surfaceVariant, - actions = { - IconButton(onClick = { navController.navigate(Routes.Settings.route) }) { - Icon( - imageVector = Icons.Default.Menu, - contentDescription = null - ) + Scaffold( + topBar = { + TopAppBar( + title = { Text("Home") }, + backgroundColor = MaterialTheme.colorScheme.surfaceVariant, + actions = { + IconButton(onClick = { navController.navigate(Routes.Settings.route) }) { + Icon( + imageVector = Icons.Default.Menu, + contentDescription = null + ) + } } - } - ) - }, - modifier = modifier - ) { paddingValues -> - HomeViewContent( - homeViewModel, - navController, - modifier = Modifier - .padding( - top = paddingValues.calculateTopPadding(), - bottom = paddingValues.calculateBottomPadding() ) - ) - } + } + ) { paddingValues -> + HomeViewContent( + homeViewModel, + navController, + modifier = Modifier + .padding( + top = paddingValues.calculateTopPadding(), + bottom = paddingValues.calculateBottomPadding() + ) + ) + } } @Composable diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebAppReader.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebAppReader.kt index 1b1091bbe..b09157fd0 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebAppReader.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/reader/WebAppReader.kt @@ -6,6 +6,7 @@ import android.webkit.CookieManager import android.webkit.WebView import android.webkit.WebViewClient import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier import androidx.compose.ui.viewinterop.AndroidView @SuppressLint("SetJavaScriptEnabled") diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/root/RootView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/root/RootView.kt index 6c8bb7ae0..6f3c8e376 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/root/RootView.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/root/RootView.kt @@ -1,10 +1,15 @@ package app.omnivore.omnivore.ui.root import SettingsView +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController @@ -14,31 +19,50 @@ import app.omnivore.omnivore.ui.auth.WelcomeScreen import app.omnivore.omnivore.ui.home.HomeView import app.omnivore.omnivore.ui.home.HomeViewModel import app.omnivore.omnivore.ui.reader.ArticleWebView +import com.google.accompanist.systemuicontroller.rememberSystemUiController @Composable fun RootView( loginViewModel: LoginViewModel, - homeViewModel: HomeViewModel, - modifier: Modifier + homeViewModel: HomeViewModel ) { val hasAuthToken: Boolean by loginViewModel.hasAuthTokenLiveData.observeAsState(false) + // Remember a SystemUiController + val systemUiController = rememberSystemUiController() + val useDarkIcons = !isSystemInDarkTheme() - if (hasAuthToken) { - PrimaryNavigator( - loginViewModel = loginViewModel, - homeViewModel = homeViewModel, - modifier = modifier + DisposableEffect(systemUiController, useDarkIcons) { + // Update all of the system bar colors to be transparent, and use + // dark icons if we're in light theme + systemUiController.setSystemBarsColor( + color = Color.Black, + darkIcons = false ) - } else { - WelcomeScreen(viewModel = loginViewModel) + + // setStatusBarColor() and setNavigationBarColor() also exist + + onDispose {} + } + + Box( + modifier = Modifier + .systemBarsPadding() + ) { + if (hasAuthToken) { + PrimaryNavigator( + loginViewModel = loginViewModel, + homeViewModel = homeViewModel + ) + } else { + WelcomeScreen(viewModel = loginViewModel) + } } } @Composable fun PrimaryNavigator( loginViewModel: LoginViewModel, - homeViewModel: HomeViewModel, - modifier: Modifier + homeViewModel: HomeViewModel ) { val navController = rememberNavController() @@ -46,12 +70,10 @@ fun PrimaryNavigator( composable(Routes.Home.route) { HomeView( homeViewModel = homeViewModel, - navController = navController, - modifier = modifier + navController = navController ) } - // TODO: add modifiers composable("WebReader/{slug}") { ArticleWebView( it.arguments?.getString("slug") ?: "", diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/settings/SettingsContent.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/settings/SettingsContent.kt index 64d0b4bf8..6cd329ed5 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/settings/SettingsContent.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/settings/SettingsContent.kt @@ -23,7 +23,7 @@ import com.google.android.gms.auth.api.signin.GoogleSignInOptions @Composable fun SettingsView( loginViewModel: LoginViewModel, - navController: NavHostController + navController: NavHostController, ) { Scaffold( topBar = { diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Theme.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Theme.kt index 38c6bc295..dd10f6c73 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Theme.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/theme/Theme.kt @@ -77,7 +77,7 @@ fun OmnivoreTheme( val context = LocalContext.current if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) } else { - if (darkTheme) DarkColors else LightColors + if (darkTheme) darkColorScheme() else lightColorScheme() } MaterialTheme(