feat: tablet layout improvements
Signed-off-by: Infi <wingit@geist.ga>
This commit is contained in:
parent
7e13d64586
commit
0e67637ddf
|
|
@ -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) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue