From 1d5f906a06a1e53ecbbe857fb22f62634d79db63 Mon Sep 17 00:00:00 2001 From: Cuong-Tran Date: Mon, 24 Jun 2024 14:44:25 +0700 Subject: [PATCH] refactor: Use modifier instead of contentPadding for ScrollbarLazyColumn to support stickerHeader --- .../browse/SourcesFilterScreen.kt | 32 ++- .../presentation/browse/SourcesScreen.kt | 1 + .../eu/kanade/presentation/more/MoreScreen.kt | 7 +- .../tachiyomi/ui/manga/PaletteScreen.kt | 190 ++++++++++-------- 4 files changed, 124 insertions(+), 106 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/browse/SourcesFilterScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/SourcesFilterScreen.kt index c7f69b37c..92ab45815 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/SourcesFilterScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/SourcesFilterScreen.kt @@ -1,7 +1,6 @@ package eu.kanade.presentation.browse import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.items @@ -11,7 +10,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.unit.Dp import eu.kanade.presentation.browse.components.BaseSourceItem import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.more.settings.widget.SwitchPreferenceWidget @@ -53,22 +51,15 @@ fun SourcesFilterScreen( ) return@Scaffold } - // KMK --> - // Wrap around so we can use sticky header - Column( - modifier = Modifier.padding(contentPadding) - ) { - // KMK <-- - SourcesFilterContent( - contentPadding = PaddingValues(Dp.Hairline), - state = state, - onClickLanguage = onClickLanguage, - onClickSource = onClickSource, - // SY --> - onClickSources = onClickSources, - // SY <-- - ) - } + SourcesFilterContent( + contentPadding = contentPadding, + state = state, + onClickLanguage = onClickLanguage, + onClickSource = onClickSource, + // SY --> + onClickSources = onClickSources, + // SY <-- + ) } } @@ -83,7 +74,10 @@ private fun SourcesFilterContent( // SY <-- ) { FastScrollLazyColumn( - contentPadding = contentPadding, + // KMK --> + // Using modifier instead of contentPdding so we can use stickyHeader + modifier = Modifier.padding(contentPadding), + // KMK <-- ) { state.items.forEach { (language, sources) -> val enabled = language in state.enabledLanguages diff --git a/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt index 5fa88c2fa..b0bf852cd 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt @@ -107,6 +107,7 @@ fun SourcesScreen( ) // KMK --> else -> Column( + // Wrap around so we can use stickyHeader modifier = Modifier.padding(contentPadding), ) { AnimatedFloatingSearchBox( diff --git a/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt b/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt index 837ebc609..9886ae610 100644 --- a/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt @@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.WindowInsetsSides import androidx.compose.foundation.layout.only -import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.material.icons.Icons @@ -14,12 +13,9 @@ import androidx.compose.material.icons.automirrored.outlined.Label import androidx.compose.material.icons.automirrored.outlined.PlaylistAdd import androidx.compose.material.icons.outlined.CloudOff import androidx.compose.material.icons.outlined.GetApp -import androidx.compose.material.icons.outlined.HelpOutline import androidx.compose.material.icons.outlined.History import androidx.compose.material.icons.outlined.Info -import androidx.compose.material.icons.outlined.Label import androidx.compose.material.icons.outlined.NewReleases -import androidx.compose.material.icons.outlined.PlaylistAdd import androidx.compose.material.icons.outlined.QueryStats import androidx.compose.material.icons.outlined.Settings import androidx.compose.material.icons.outlined.Storage @@ -87,7 +83,8 @@ fun MoreScreen( }, ) { contentPadding -> ScrollbarLazyColumn( - modifier = Modifier.padding(contentPadding), + // KMK: use contentPadding as preferable padding for ScrollbarLazyColumn when not using stickyHeader + contentPadding = contentPadding, ) { item { LogoHeader() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/PaletteScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/PaletteScreen.kt index 44bee20bb..7ecf363fe 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/PaletteScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/PaletteScreen.kt @@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.ui.manga import androidx.annotation.ColorInt import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding @@ -19,6 +18,7 @@ import com.materialkolor.DynamicMaterialTheme import eu.kanade.domain.ui.UiPreferences import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.util.Screen +import tachiyomi.presentation.core.components.ScrollbarLazyColumn import tachiyomi.presentation.core.components.material.Button import tachiyomi.presentation.core.components.material.ButtonDefaults import tachiyomi.presentation.core.components.material.Scaffold @@ -68,89 +68,115 @@ class PaletteScreen( ) }, ) { contentPadding -> - Column( + ScrollbarLazyColumn( + // Using modifier instead of contentPdding so we can use stickyHeader modifier = Modifier.padding(contentPadding), ) { - ButtonsColor( - "seedColor & onPrimary", - seedColor, - "seedColor & contentColor", - seedColor, - MaterialTheme.colorScheme.onPrimary, - ) - - ButtonsColor( - "primary", - MaterialTheme.colorScheme.primary, - "primaryContainer", - MaterialTheme.colorScheme.primaryContainer - ) - ButtonsColor( - "secondary", - MaterialTheme.colorScheme.secondary, - "secondaryContainer", - MaterialTheme.colorScheme.secondaryContainer - ) - ButtonsColor( - "tertiary", - MaterialTheme.colorScheme.tertiary, - "tertiaryContainer", - MaterialTheme.colorScheme.tertiaryContainer - ) - ButtonsColor( - "surface", - MaterialTheme.colorScheme.surface, - "surfaceVariant", - MaterialTheme.colorScheme.surfaceVariant - ) - ButtonsColor( - "inverseSurface", - MaterialTheme.colorScheme.inverseSurface, - "surfaceTint", - MaterialTheme.colorScheme.surfaceTint - ) - ButtonsColor( - "inversePrimary", - MaterialTheme.colorScheme.inversePrimary, - "background", - MaterialTheme.colorScheme.background - ) - ButtonsColor( - "error", - MaterialTheme.colorScheme.error, - "errorContainer", - MaterialTheme.colorScheme.errorContainer - ) - ButtonsColor( - "outline", - MaterialTheme.colorScheme.outline, - "outlineVariant", - MaterialTheme.colorScheme.outlineVariant - ) - ButtonsColor( - "scrim", - MaterialTheme.colorScheme.scrim, - "surfaceBright", - MaterialTheme.colorScheme.surfaceBright - ) - ButtonsColor( - "surfaceDim", - MaterialTheme.colorScheme.surfaceDim, - "surfaceContainer", - MaterialTheme.colorScheme.surfaceContainer - ) - ButtonsColor( - "surfaceContainerHigh", - MaterialTheme.colorScheme.surfaceContainerHigh, - "surfaceContainerHighest", - MaterialTheme.colorScheme.surfaceContainerHighest - ) - ButtonsColor( - "surfaceContainerLow", - MaterialTheme.colorScheme.surfaceContainerLow, - "surfaceContainerLowest", - MaterialTheme.colorScheme.surfaceContainerLowest - ) + item { + ButtonsColor( + "seedColor & onPrimary", + seedColor, + "seedColor & contentColor", + seedColor, + MaterialTheme.colorScheme.onPrimary, + ) + } + item { + ButtonsColor( + "primary", + MaterialTheme.colorScheme.primary, + "primaryContainer", + MaterialTheme.colorScheme.primaryContainer + ) + } + item { + ButtonsColor( + "secondary", + MaterialTheme.colorScheme.secondary, + "secondaryContainer", + MaterialTheme.colorScheme.secondaryContainer + ) + } + item { + ButtonsColor( + "tertiary", + MaterialTheme.colorScheme.tertiary, + "tertiaryContainer", + MaterialTheme.colorScheme.tertiaryContainer + ) + } + item { + ButtonsColor( + "surface", + MaterialTheme.colorScheme.surface, + "surfaceVariant", + MaterialTheme.colorScheme.surfaceVariant + ) + } + item { + ButtonsColor( + "inverseSurface", + MaterialTheme.colorScheme.inverseSurface, + "surfaceTint", + MaterialTheme.colorScheme.surfaceTint + ) + } + item { + ButtonsColor( + "inversePrimary", + MaterialTheme.colorScheme.inversePrimary, + "background", + MaterialTheme.colorScheme.background + ) + } + item { + ButtonsColor( + "error", + MaterialTheme.colorScheme.error, + "errorContainer", + MaterialTheme.colorScheme.errorContainer + ) + } + item { + ButtonsColor( + "outline", + MaterialTheme.colorScheme.outline, + "outlineVariant", + MaterialTheme.colorScheme.outlineVariant + ) + } + item { + ButtonsColor( + "scrim", + MaterialTheme.colorScheme.scrim, + "surfaceBright", + MaterialTheme.colorScheme.surfaceBright + ) + } + item { + ButtonsColor( + "surfaceDim", + MaterialTheme.colorScheme.surfaceDim, + "surfaceContainer", + MaterialTheme.colorScheme.surfaceContainer + ) + } + item { + ButtonsColor( + "surfaceContainerHigh", + MaterialTheme.colorScheme.surfaceContainerHigh, + "surfaceContainerHighest", + MaterialTheme.colorScheme.surfaceContainerHighest + ) + } + item { + ButtonsColor( + "surfaceContainerLow", + MaterialTheme.colorScheme.surfaceContainerLow, + "surfaceContainerLowest", + MaterialTheme.colorScheme.surfaceContainerLowest + ) + } } } }