Skip to content

Commit

Permalink
fixed some sizing issues
Browse files Browse the repository at this point in the history
  • Loading branch information
DatL4g committed Mar 17, 2024
1 parent 686f7d8 commit bbaeb4f
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 30 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package dev.datlag.burningseries.shared.common.lifecycle

import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
import androidx.compose.material3.windowsizeclass.WindowHeightSizeClass
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
import androidx.compose.runtime.Composable

@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
@Composable
fun calculateWindowWidthSize(): WindowSize {
val sizeClass = calculateWindowSizeClass()

return when (sizeClass.widthSizeClass) {
WindowWidthSizeClass.Medium -> WindowSize.Medium
WindowWidthSizeClass.Expanded -> when (sizeClass.heightSizeClass) {
WindowHeightSizeClass.Compact -> WindowSize.Medium
else -> WindowSize.Expanded
}
else -> WindowSize.Compact
}
}

sealed interface WindowSize {
data object Compact : WindowSize
data object Medium : WindowSize
data object Expanded : WindowSize
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.*
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.getValue
Expand All @@ -24,10 +22,13 @@ import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
import dev.chrisbanes.haze.materials.HazeMaterials
import dev.datlag.burningseries.shared.LocalHaze
import dev.datlag.burningseries.shared.LocalPaddingValues
import dev.datlag.burningseries.shared.common.lifecycle.WindowSize
import dev.datlag.burningseries.shared.common.lifecycle.calculateWindowWidthSize
import dev.datlag.burningseries.shared.common.lifecycle.collectAsStateWithLifecycle
import dev.datlag.burningseries.shared.rememberIsTv
import dev.datlag.burningseries.shared.ui.custom.ExpandedPages
import dev.icerock.moko.resources.compose.stringResource
import io.realm.kotlin.internal.platform.isWindows

@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
@Composable
Expand All @@ -40,10 +41,10 @@ fun InitialScreen(component: InitialComponent) {
Box(
modifier = Modifier.fillMaxSize()
) {
when (calculateWindowSizeClass().widthSizeClass) {
WindowWidthSizeClass.Compact -> CompactScreen(component)
WindowWidthSizeClass.Medium -> MediumScreen(component)
WindowWidthSizeClass.Expanded -> {
when (calculateWindowWidthSize()) {
is WindowSize.Compact -> CompactScreen(component)
is WindowSize.Medium -> MediumScreen(component)
is WindowSize.Expanded -> {
if (rememberIsTv()) {
MediumScreen(component)
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Clear
import androidx.compose.material.icons.filled.Search
import androidx.compose.material3.*
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
Expand All @@ -30,6 +27,8 @@ import dev.chrisbanes.haze.haze
import dev.datlag.burningseries.shared.LocalHaze
import dev.datlag.burningseries.shared.SharedRes
import dev.datlag.burningseries.shared.common.*
import dev.datlag.burningseries.shared.common.lifecycle.WindowSize
import dev.datlag.burningseries.shared.common.lifecycle.calculateWindowWidthSize
import dev.datlag.burningseries.shared.common.lifecycle.collectAsStateWithLifecycle
import dev.datlag.burningseries.shared.rememberIsTv
import dev.datlag.burningseries.shared.ui.custom.FloatingSearchButton
Expand All @@ -39,11 +38,10 @@ import dev.datlag.burningseries.shared.ui.screen.initial.favorite.component.Seri
import dev.datlag.burningseries.shared.ui.screen.initial.home.component.SeriesItem
import dev.icerock.moko.resources.compose.stringResource

@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
@Composable
fun FavoriteScreen(component: FavoriteComponent) {
when (calculateWindowSizeClass().widthSizeClass) {
WindowWidthSizeClass.Expanded -> {
when (calculateWindowWidthSize()) {
is WindowSize.Expanded -> {
if (rememberIsTv()) {
DefaultView(component)
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,6 @@ import androidx.compose.material.icons.filled.Search
import androidx.compose.material.icons.filled.SearchOff
import androidx.compose.material.icons.filled.YoutubeSearchedFor
import androidx.compose.material3.*
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
import androidx.compose.material3.windowsizeclass.WindowHeightSizeClass
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
Expand All @@ -30,6 +26,8 @@ import dev.datlag.burningseries.shared.LocalHaze
import dev.datlag.burningseries.shared.SharedRes
import dev.datlag.burningseries.shared.common.LocalPadding
import dev.datlag.burningseries.shared.common.header
import dev.datlag.burningseries.shared.common.lifecycle.WindowSize
import dev.datlag.burningseries.shared.common.lifecycle.calculateWindowWidthSize
import dev.datlag.burningseries.shared.common.lifecycle.collectAsStateWithLifecycle
import dev.datlag.burningseries.shared.common.mergedLocalPadding
import dev.datlag.burningseries.shared.other.StateSaver
Expand All @@ -43,7 +41,6 @@ import dev.datlag.burningseries.shared.ui.screen.initial.home.component.*
import dev.datlag.burningseries.shared.ui.theme.MaterialSymbols
import dev.icerock.moko.resources.compose.stringResource

@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
@Composable
fun HomeScreen(component: HomeComponent) {
val homeState by component.homeState.collectAsStateWithLifecycle()
Expand Down Expand Up @@ -91,15 +88,12 @@ fun HomeScreen(component: HomeComponent) {
}
}
is HomeState.Success -> {
when (calculateWindowSizeClass().widthSizeClass) {
WindowWidthSizeClass.Expanded -> {
when (calculateWindowWidthSize()) {
is WindowSize.Expanded -> {
if (rememberIsTv()) {
DefaultView(currentState.home, component)
} else {
when (calculateWindowSizeClass().heightSizeClass) {
WindowHeightSizeClass.Compact -> DefaultView(currentState.home, component)
else -> ExpandedView(currentState.home, component)
}
ExpandedView(currentState.home, component)
}
}
else -> DefaultView(currentState.home, component)
Expand All @@ -121,19 +115,16 @@ private fun DefaultView(home: Home, component: HomeComponent) {
@Composable
private fun ExpandedView(home: Home, component: HomeComponent) {
val childState by component.child.subscribeAsState()
var rowWidth by remember { mutableIntStateOf(-1) }

Row(
modifier = Modifier.onSizeChanged {
rowWidth = it.width
},
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.spacedBy(16.dp)
) {
MainView(home, component, Modifier.weight(1F))
MainView(home, component, Modifier.weight(1.5F))

childState.child?.also { (_, instance) ->
Box(
modifier = Modifier.defaultMinSize(minWidth = 400.dp)
modifier = Modifier.weight(2F)
) {
instance.render()
}
Expand All @@ -145,7 +136,7 @@ private fun ExpandedView(home: Home, component: HomeComponent) {
private fun MainView(home: Home, component: HomeComponent, modifier: Modifier = Modifier) {
Box(modifier = modifier) {
Row(
modifier = Modifier.fillMaxSize().padding(horizontal = 16.dp),
modifier = Modifier.padding(horizontal = 16.dp),
horizontalArrangement = Arrangement.spacedBy(2.dp)
) {
val searchItems by component.searchItems.collectAsStateWithLifecycle()
Expand Down

0 comments on commit bbaeb4f

Please sign in to comment.