set status and nav bar background to black

This commit is contained in:
Satindar Dhillon
2022-09-01 22:42:30 -07:00
parent 6fa0ecb10a
commit 687352920c
7 changed files with 75 additions and 50 deletions

View File

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

View File

@ -50,7 +50,6 @@ fun WelcomeScreenContent(viewModel: LoginViewModel) {
horizontalAlignment = Alignment.Start,
modifier = Modifier
.fillMaxSize()
.navigationBarsPadding()
.padding(horizontal = 16.dp)
.clickable { focusManager.clearFocus() }
) {

View File

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

View File

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

View File

@ -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") ?: "",

View File

@ -23,7 +23,7 @@ import com.google.android.gms.auth.api.signin.GoogleSignInOptions
@Composable
fun SettingsView(
loginViewModel: LoginViewModel,
navController: NavHostController
navController: NavHostController,
) {
Scaffold(
topBar = {

View File

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