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,21 +430,24 @@ fun ChatRouterScreen(
if (useTabletAwareUI) { if (useTabletAwareUI) {
Row { Row {
Sidebar( DismissibleDrawerSheet(
viewModel = viewModel, drawerContainerColor = Color.Transparent,
navController = navController, ) {
onShowStatusSheet = { Sidebar(
showStatusSheet = true viewModel = viewModel,
}, navController = navController,
onShowServerContextSheet = { onShowStatusSheet = {
serverContextSheetTarget = it showStatusSheet = true
showServerContextSheet = true },
}, onShowServerContextSheet = {
onShowAddServerSheet = { serverContextSheetTarget = it
showAddServerSheet = true showServerContextSheet = true
}, },
useDrawer = false, onShowAddServerSheet = {
) showAddServerSheet = true
},
)
}
ChannelNavigator( ChannelNavigator(
navController = navController, navController = navController,
topNav = topNav, topNav = topNav,
@ -465,24 +469,21 @@ fun ChatRouterScreen(
DismissibleDrawerSheet( DismissibleDrawerSheet(
drawerContainerColor = Color.Transparent, drawerContainerColor = Color.Transparent,
) { ) {
Row(Modifier.fillMaxWidth()) { Sidebar(
Sidebar( viewModel = viewModel,
viewModel = viewModel, navController = navController,
navController = navController, onShowStatusSheet = {
onShowStatusSheet = { showStatusSheet = true
showStatusSheet = true },
}, onShowServerContextSheet = {
onShowServerContextSheet = { serverContextSheetTarget = it
serverContextSheetTarget = it showServerContextSheet = true
showServerContextSheet = true },
}, onShowAddServerSheet = {
onShowAddServerSheet = { showAddServerSheet = true
showAddServerSheet = true },
}, drawerState = drawerState,
drawerState = drawerState, )
useDrawer = true,
)
}
} }
}, },
content = { content = {
@ -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) {