refactor: Use modifier instead of contentPadding for ScrollbarLazyColumn to support stickerHeader
This commit is contained in:
parent
b491ad4c5f
commit
1d5f906a06
4 changed files with 124 additions and 106 deletions
|
|
@ -1,7 +1,6 @@
|
||||||
package eu.kanade.presentation.browse
|
package eu.kanade.presentation.browse
|
||||||
|
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.layout.Column
|
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.items
|
import androidx.compose.foundation.lazy.items
|
||||||
|
|
@ -11,7 +10,6 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.unit.Dp
|
|
||||||
import eu.kanade.presentation.browse.components.BaseSourceItem
|
import eu.kanade.presentation.browse.components.BaseSourceItem
|
||||||
import eu.kanade.presentation.components.AppBar
|
import eu.kanade.presentation.components.AppBar
|
||||||
import eu.kanade.presentation.more.settings.widget.SwitchPreferenceWidget
|
import eu.kanade.presentation.more.settings.widget.SwitchPreferenceWidget
|
||||||
|
|
@ -53,14 +51,8 @@ fun SourcesFilterScreen(
|
||||||
)
|
)
|
||||||
return@Scaffold
|
return@Scaffold
|
||||||
}
|
}
|
||||||
// KMK -->
|
|
||||||
// Wrap around so we can use sticky header
|
|
||||||
Column(
|
|
||||||
modifier = Modifier.padding(contentPadding)
|
|
||||||
) {
|
|
||||||
// KMK <--
|
|
||||||
SourcesFilterContent(
|
SourcesFilterContent(
|
||||||
contentPadding = PaddingValues(Dp.Hairline),
|
contentPadding = contentPadding,
|
||||||
state = state,
|
state = state,
|
||||||
onClickLanguage = onClickLanguage,
|
onClickLanguage = onClickLanguage,
|
||||||
onClickSource = onClickSource,
|
onClickSource = onClickSource,
|
||||||
|
|
@ -70,7 +62,6 @@ fun SourcesFilterScreen(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun SourcesFilterContent(
|
private fun SourcesFilterContent(
|
||||||
|
|
@ -83,7 +74,10 @@ private fun SourcesFilterContent(
|
||||||
// SY <--
|
// SY <--
|
||||||
) {
|
) {
|
||||||
FastScrollLazyColumn(
|
FastScrollLazyColumn(
|
||||||
contentPadding = contentPadding,
|
// KMK -->
|
||||||
|
// Using modifier instead of contentPdding so we can use stickyHeader
|
||||||
|
modifier = Modifier.padding(contentPadding),
|
||||||
|
// KMK <--
|
||||||
) {
|
) {
|
||||||
state.items.forEach { (language, sources) ->
|
state.items.forEach { (language, sources) ->
|
||||||
val enabled = language in state.enabledLanguages
|
val enabled = language in state.enabledLanguages
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,7 @@ fun SourcesScreen(
|
||||||
)
|
)
|
||||||
// KMK -->
|
// KMK -->
|
||||||
else -> Column(
|
else -> Column(
|
||||||
|
// Wrap around so we can use stickyHeader
|
||||||
modifier = Modifier.padding(contentPadding),
|
modifier = Modifier.padding(contentPadding),
|
||||||
) {
|
) {
|
||||||
AnimatedFloatingSearchBox(
|
AnimatedFloatingSearchBox(
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.WindowInsets
|
import androidx.compose.foundation.layout.WindowInsets
|
||||||
import androidx.compose.foundation.layout.WindowInsetsSides
|
import androidx.compose.foundation.layout.WindowInsetsSides
|
||||||
import androidx.compose.foundation.layout.only
|
import androidx.compose.foundation.layout.only
|
||||||
import androidx.compose.foundation.layout.padding
|
|
||||||
import androidx.compose.foundation.layout.systemBars
|
import androidx.compose.foundation.layout.systemBars
|
||||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||||
import androidx.compose.material.icons.Icons
|
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.automirrored.outlined.PlaylistAdd
|
||||||
import androidx.compose.material.icons.outlined.CloudOff
|
import androidx.compose.material.icons.outlined.CloudOff
|
||||||
import androidx.compose.material.icons.outlined.GetApp
|
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.History
|
||||||
import androidx.compose.material.icons.outlined.Info
|
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.NewReleases
|
||||||
import androidx.compose.material.icons.outlined.PlaylistAdd
|
|
||||||
import androidx.compose.material.icons.outlined.QueryStats
|
import androidx.compose.material.icons.outlined.QueryStats
|
||||||
import androidx.compose.material.icons.outlined.Settings
|
import androidx.compose.material.icons.outlined.Settings
|
||||||
import androidx.compose.material.icons.outlined.Storage
|
import androidx.compose.material.icons.outlined.Storage
|
||||||
|
|
@ -87,7 +83,8 @@ fun MoreScreen(
|
||||||
},
|
},
|
||||||
) { contentPadding ->
|
) { contentPadding ->
|
||||||
ScrollbarLazyColumn(
|
ScrollbarLazyColumn(
|
||||||
modifier = Modifier.padding(contentPadding),
|
// KMK: use contentPadding as preferable padding for ScrollbarLazyColumn when not using stickyHeader
|
||||||
|
contentPadding = contentPadding,
|
||||||
) {
|
) {
|
||||||
item {
|
item {
|
||||||
LogoHeader()
|
LogoHeader()
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.ui.manga
|
||||||
|
|
||||||
import androidx.annotation.ColorInt
|
import androidx.annotation.ColorInt
|
||||||
import androidx.compose.foundation.isSystemInDarkTheme
|
import androidx.compose.foundation.isSystemInDarkTheme
|
||||||
import androidx.compose.foundation.layout.Column
|
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
|
|
@ -19,6 +18,7 @@ import com.materialkolor.DynamicMaterialTheme
|
||||||
import eu.kanade.domain.ui.UiPreferences
|
import eu.kanade.domain.ui.UiPreferences
|
||||||
import eu.kanade.presentation.components.AppBar
|
import eu.kanade.presentation.components.AppBar
|
||||||
import eu.kanade.presentation.util.Screen
|
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.Button
|
||||||
import tachiyomi.presentation.core.components.material.ButtonDefaults
|
import tachiyomi.presentation.core.components.material.ButtonDefaults
|
||||||
import tachiyomi.presentation.core.components.material.Scaffold
|
import tachiyomi.presentation.core.components.material.Scaffold
|
||||||
|
|
@ -68,9 +68,11 @@ class PaletteScreen(
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
) { contentPadding ->
|
) { contentPadding ->
|
||||||
Column(
|
ScrollbarLazyColumn(
|
||||||
|
// Using modifier instead of contentPdding so we can use stickyHeader
|
||||||
modifier = Modifier.padding(contentPadding),
|
modifier = Modifier.padding(contentPadding),
|
||||||
) {
|
) {
|
||||||
|
item {
|
||||||
ButtonsColor(
|
ButtonsColor(
|
||||||
"seedColor & onPrimary",
|
"seedColor & onPrimary",
|
||||||
seedColor,
|
seedColor,
|
||||||
|
|
@ -78,73 +80,96 @@ class PaletteScreen(
|
||||||
seedColor,
|
seedColor,
|
||||||
MaterialTheme.colorScheme.onPrimary,
|
MaterialTheme.colorScheme.onPrimary,
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
item {
|
||||||
ButtonsColor(
|
ButtonsColor(
|
||||||
"primary",
|
"primary",
|
||||||
MaterialTheme.colorScheme.primary,
|
MaterialTheme.colorScheme.primary,
|
||||||
"primaryContainer",
|
"primaryContainer",
|
||||||
MaterialTheme.colorScheme.primaryContainer
|
MaterialTheme.colorScheme.primaryContainer
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
item {
|
||||||
ButtonsColor(
|
ButtonsColor(
|
||||||
"secondary",
|
"secondary",
|
||||||
MaterialTheme.colorScheme.secondary,
|
MaterialTheme.colorScheme.secondary,
|
||||||
"secondaryContainer",
|
"secondaryContainer",
|
||||||
MaterialTheme.colorScheme.secondaryContainer
|
MaterialTheme.colorScheme.secondaryContainer
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
item {
|
||||||
ButtonsColor(
|
ButtonsColor(
|
||||||
"tertiary",
|
"tertiary",
|
||||||
MaterialTheme.colorScheme.tertiary,
|
MaterialTheme.colorScheme.tertiary,
|
||||||
"tertiaryContainer",
|
"tertiaryContainer",
|
||||||
MaterialTheme.colorScheme.tertiaryContainer
|
MaterialTheme.colorScheme.tertiaryContainer
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
item {
|
||||||
ButtonsColor(
|
ButtonsColor(
|
||||||
"surface",
|
"surface",
|
||||||
MaterialTheme.colorScheme.surface,
|
MaterialTheme.colorScheme.surface,
|
||||||
"surfaceVariant",
|
"surfaceVariant",
|
||||||
MaterialTheme.colorScheme.surfaceVariant
|
MaterialTheme.colorScheme.surfaceVariant
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
item {
|
||||||
ButtonsColor(
|
ButtonsColor(
|
||||||
"inverseSurface",
|
"inverseSurface",
|
||||||
MaterialTheme.colorScheme.inverseSurface,
|
MaterialTheme.colorScheme.inverseSurface,
|
||||||
"surfaceTint",
|
"surfaceTint",
|
||||||
MaterialTheme.colorScheme.surfaceTint
|
MaterialTheme.colorScheme.surfaceTint
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
item {
|
||||||
ButtonsColor(
|
ButtonsColor(
|
||||||
"inversePrimary",
|
"inversePrimary",
|
||||||
MaterialTheme.colorScheme.inversePrimary,
|
MaterialTheme.colorScheme.inversePrimary,
|
||||||
"background",
|
"background",
|
||||||
MaterialTheme.colorScheme.background
|
MaterialTheme.colorScheme.background
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
item {
|
||||||
ButtonsColor(
|
ButtonsColor(
|
||||||
"error",
|
"error",
|
||||||
MaterialTheme.colorScheme.error,
|
MaterialTheme.colorScheme.error,
|
||||||
"errorContainer",
|
"errorContainer",
|
||||||
MaterialTheme.colorScheme.errorContainer
|
MaterialTheme.colorScheme.errorContainer
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
item {
|
||||||
ButtonsColor(
|
ButtonsColor(
|
||||||
"outline",
|
"outline",
|
||||||
MaterialTheme.colorScheme.outline,
|
MaterialTheme.colorScheme.outline,
|
||||||
"outlineVariant",
|
"outlineVariant",
|
||||||
MaterialTheme.colorScheme.outlineVariant
|
MaterialTheme.colorScheme.outlineVariant
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
item {
|
||||||
ButtonsColor(
|
ButtonsColor(
|
||||||
"scrim",
|
"scrim",
|
||||||
MaterialTheme.colorScheme.scrim,
|
MaterialTheme.colorScheme.scrim,
|
||||||
"surfaceBright",
|
"surfaceBright",
|
||||||
MaterialTheme.colorScheme.surfaceBright
|
MaterialTheme.colorScheme.surfaceBright
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
item {
|
||||||
ButtonsColor(
|
ButtonsColor(
|
||||||
"surfaceDim",
|
"surfaceDim",
|
||||||
MaterialTheme.colorScheme.surfaceDim,
|
MaterialTheme.colorScheme.surfaceDim,
|
||||||
"surfaceContainer",
|
"surfaceContainer",
|
||||||
MaterialTheme.colorScheme.surfaceContainer
|
MaterialTheme.colorScheme.surfaceContainer
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
item {
|
||||||
ButtonsColor(
|
ButtonsColor(
|
||||||
"surfaceContainerHigh",
|
"surfaceContainerHigh",
|
||||||
MaterialTheme.colorScheme.surfaceContainerHigh,
|
MaterialTheme.colorScheme.surfaceContainerHigh,
|
||||||
"surfaceContainerHighest",
|
"surfaceContainerHighest",
|
||||||
MaterialTheme.colorScheme.surfaceContainerHighest
|
MaterialTheme.colorScheme.surfaceContainerHighest
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
item {
|
||||||
ButtonsColor(
|
ButtonsColor(
|
||||||
"surfaceContainerLow",
|
"surfaceContainerLow",
|
||||||
MaterialTheme.colorScheme.surfaceContainerLow,
|
MaterialTheme.colorScheme.surfaceContainerLow,
|
||||||
|
|
@ -155,6 +180,7 @@ class PaletteScreen(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ButtonsColor(
|
fun ButtonsColor(
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue