feat: tablet layout improvements

Signed-off-by: Infi <wingit@geist.ga>
This commit is contained in:
Infi 2023-08-09 04:23:46 +02:00
parent 7e13d64586
commit 0e67637ddf
1 changed files with 39 additions and 39 deletions

View File

@ -5,7 +5,6 @@ import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.Crossfade import androidx.compose.animation.Crossfade
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
@ -29,6 +28,7 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TextButton import androidx.compose.material3.TextButton
import androidx.compose.material3.rememberDrawerState import androidx.compose.material3.rememberDrawerState
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.material3.windowsizeclass.WindowHeightSizeClass
import androidx.compose.material3.windowsizeclass.WindowSizeClass import androidx.compose.material3.windowsizeclass.WindowSizeClass
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@ -286,6 +286,7 @@ fun ChatRouterScreen(
.distinctUntilChanged() .distinctUntilChanged()
.collect { sizeClass -> .collect { sizeClass ->
useTabletAwareUI = sizeClass.widthSizeClass == WindowWidthSizeClass.Expanded useTabletAwareUI = sizeClass.widthSizeClass == WindowWidthSizeClass.Expanded
&& sizeClass.heightSizeClass != WindowHeightSizeClass.Compact
} }
} }
@ -429,6 +430,9 @@ fun ChatRouterScreen(
if (useTabletAwareUI) { if (useTabletAwareUI) {
Row { Row {
DismissibleDrawerSheet(
drawerContainerColor = Color.Transparent,
) {
Sidebar( Sidebar(
viewModel = viewModel, viewModel = viewModel,
navController = navController, navController = navController,
@ -442,8 +446,8 @@ fun ChatRouterScreen(
onShowAddServerSheet = { onShowAddServerSheet = {
showAddServerSheet = true showAddServerSheet = true
}, },
useDrawer = false,
) )
}
ChannelNavigator( ChannelNavigator(
navController = navController, navController = navController,
topNav = topNav, topNav = topNav,
@ -465,7 +469,6 @@ fun ChatRouterScreen(
DismissibleDrawerSheet( DismissibleDrawerSheet(
drawerContainerColor = Color.Transparent, drawerContainerColor = Color.Transparent,
) { ) {
Row(Modifier.fillMaxWidth()) {
Sidebar( Sidebar(
viewModel = viewModel, viewModel = viewModel,
navController = navController, navController = navController,
@ -480,10 +483,8 @@ fun ChatRouterScreen(
showAddServerSheet = true showAddServerSheet = true
}, },
drawerState = drawerState, drawerState = drawerState,
useDrawer = true,
) )
} }
}
}, },
content = { content = {
Row(Modifier.fillMaxSize()) { Row(Modifier.fillMaxSize()) {
@ -508,18 +509,17 @@ fun ChatRouterScreen(
} }
@Composable @Composable
fun RowScope.Sidebar( fun Sidebar(
viewModel: ChatRouterViewModel, viewModel: ChatRouterViewModel,
navController: NavHostController, navController: NavHostController,
drawerState: DrawerState? = null, drawerState: DrawerState? = null,
onShowStatusSheet: () -> Unit, onShowStatusSheet: () -> Unit,
onShowServerContextSheet: (String) -> Unit, onShowServerContextSheet: (String) -> Unit,
onShowAddServerSheet: () -> Unit, onShowAddServerSheet: () -> Unit,
useDrawer: Boolean = false,
) { ) {
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()
Column(Modifier.then(if (useDrawer) Modifier.fillMaxWidth() else Modifier.weight(0.3f))) { Column(Modifier.fillMaxWidth()) {
Row { Row {
Column( Column(
modifier = Modifier modifier = Modifier
@ -690,7 +690,7 @@ fun RowScope.Sidebar(
} }
@Composable @Composable
fun RowScope.ChannelNavigator( fun ChannelNavigator(
navController: NavHostController, navController: NavHostController,
topNav: NavController, topNav: NavController,
useDrawer: Boolean, useDrawer: Boolean,
@ -700,7 +700,7 @@ fun RowScope.ChannelNavigator(
) { ) {
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()
Column(Modifier.then(if (useDrawer) Modifier.fillMaxSize() else Modifier.weight(0.7f))) { Column(Modifier.fillMaxSize()) {
NavHost(navController = navController, startDestination = "home") { NavHost(navController = navController, startDestination = "home") {
composable("home") { composable("home") {
BackHandler(enabled = useDrawer) { BackHandler(enabled = useDrawer) {