Skip to content

Commit

Permalink
Merge pull request #158 from oxters168/padding-fixes
Browse files Browse the repository at this point in the history
Padding fixes
  • Loading branch information
oxters168 authored Feb 19, 2025
2 parents 0460e99 + 1c71418 commit 186d4d2
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,15 @@ import com.OxGames.Pluvia.ui.theme.PluviaTheme
import `in`.dragonbra.javasteam.enums.EPersonaState

@Composable
fun StickyHeaderItem(isCollapsed: Boolean, header: String, count: Int, onHeaderAction: () -> Unit) {
fun StickyHeaderItem(
modifier: Modifier = Modifier,
isCollapsed: Boolean,
header: String,
count: Int,
onHeaderAction: () -> Unit,
) {
ListItem(
modifier = Modifier.clickable(onClick = onHeaderAction),
modifier = modifier.clickable(onClick = onHeaderAction),
headlineContent = { Text(text = "$header ($count)") },
trailingContent = {
val button = when (isCollapsed) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -256,10 +256,13 @@ private fun FriendsListPane(
) { paddingValues ->
LazyColumn(
modifier = Modifier
.padding(paddingValues)
.padding(
top = paddingValues.calculateTopPadding(),
bottom = paddingValues.calculateBottomPadding(),
)
.fillMaxSize(),
state = listState,
contentPadding = PaddingValues(bottom = 72.dp), // Extra space for fab
contentPadding = PaddingValues(bottom = 72.dp),
) {
state.friendsList.forEach { (key, value) ->
stickyHeader {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,11 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.OxGames.Pluvia.PrefManager
import com.OxGames.Pluvia.data.LibraryItem
import com.OxGames.Pluvia.service.SteamService
import com.OxGames.Pluvia.ui.data.LibraryState
Expand Down Expand Up @@ -137,6 +139,8 @@ private fun LibraryScreenContent(
@Composable
private fun Preview_LibraryScreenContent() {
val sheetState = rememberModalBottomSheetState()
val context = LocalContext.current
PrefManager.init(context)
var state by remember {
mutableStateOf(
LibraryState(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,15 @@ import com.OxGames.Pluvia.data.LibraryItem

@Composable
internal fun LibraryList(
modifier: Modifier = Modifier,
contentPaddingValues: PaddingValues,
listState: LazyListState,
list: List<LibraryItem>,
onItemClick: (Int) -> Unit,
) {
if (list.isEmpty()) {
Box(
modifier = Modifier.fillMaxSize(),
modifier = modifier.fillMaxSize(),
contentAlignment = Alignment.Center,
) {
Surface(
Expand All @@ -44,7 +45,7 @@ internal fun LibraryList(
}
} else {
LazyColumn(
modifier = Modifier.fillMaxSize(),
modifier = modifier.fillMaxSize(),
state = listState,
contentPadding = contentPaddingValues,
) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
package com.OxGames.Pluvia.ui.screen.library.components

import android.content.res.Configuration
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.animation.scaleIn
import androidx.compose.animation.scaleOut
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.calculateEndPadding
import androidx.compose.foundation.layout.calculateStartPadding
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBars
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
Expand All @@ -36,9 +32,11 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import com.OxGames.Pluvia.PrefManager
import com.OxGames.Pluvia.data.LibraryItem
import com.OxGames.Pluvia.ui.data.LibraryState
import com.OxGames.Pluvia.ui.enums.AppFilter
Expand All @@ -62,7 +60,14 @@ internal fun LibraryListPane(
val expandedFab by remember { derivedStateOf { listState.firstVisibleItemIndex == 0 } }
val snackBarHost = remember { SnackbarHostState() }

// Determine the orientation to add additional scaffold padding.
val configuration = LocalConfiguration.current
val isPortrait = remember(configuration) {
configuration.orientation == Configuration.ORIENTATION_PORTRAIT
}

Scaffold(
modifier = if (isPortrait) Modifier else Modifier.statusBarsPadding(),
snackbarHost = { SnackbarHost(snackBarHost) },
topBar = {
val searchListState = rememberLazyListState()
Expand Down Expand Up @@ -91,25 +96,14 @@ internal fun LibraryListPane(
}
},
) { paddingValues ->
val statusBarPadding = WindowInsets.statusBars.asPaddingValues().calculateTopPadding()
Box(
modifier = Modifier
.fillMaxSize()
.padding(
PaddingValues(
start = paddingValues.calculateStartPadding(LayoutDirection.Ltr),
end = paddingValues.calculateEndPadding(LayoutDirection.Ltr),
top = statusBarPadding,
bottom = paddingValues.calculateBottomPadding(),
),
),
modifier = Modifier.fillMaxSize(),
) {
LibraryList(
list = state.appInfoList,
listState = listState,
contentPaddingValues = PaddingValues(
// TODO this fixes a `Top padding must be non-negative` crash on P9PXL, but I don't fully know why.
top = maxOf(0.dp, paddingValues.calculateTopPadding().minus(statusBarPadding)),
top = paddingValues.calculateTopPadding(),
bottom = 72.dp,
),
onItemClick = onNavigate,
Expand All @@ -135,15 +129,17 @@ internal fun LibraryListPane(
***********/

@OptIn(ExperimentalMaterial3Api::class)
@Preview(uiMode = android.content.res.Configuration.UI_MODE_NIGHT_YES or android.content.res.Configuration.UI_MODE_TYPE_NORMAL)
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES or Configuration.UI_MODE_TYPE_NORMAL)
@Preview
@Composable
private fun Preview_LibraryListPane() {
val context = LocalContext.current
PrefManager.init(context)
val sheetState = rememberModalBottomSheetState()
var state by remember {
mutableStateOf(
LibraryState(
appInfoList = List(15) { idx ->
appInfoList = List(20) { idx ->
val item = fakeAppInfo(idx)
LibraryItem(
index = idx,
Expand All @@ -158,7 +154,7 @@ private fun Preview_LibraryListPane() {
PluviaTheme {
Surface {
LibraryListPane(
listState = rememberLazyListState(),
listState = LazyListState(2, 64),
state = state,
sheetState = sheetState,
onFilterChanged = { },
Expand Down

0 comments on commit 186d4d2

Please sign in to comment.