diff --git a/app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt index 530d19a36..19fcd310c 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt @@ -1,11 +1,13 @@ package eu.kanade.presentation.browse +import androidx.compose.foundation.background import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.navigationBarsPadding +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.rememberScrollState @@ -16,6 +18,7 @@ import androidx.compose.material.icons.outlined.NewReleases import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChipDefaults import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SnackbarDuration import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState @@ -44,6 +47,7 @@ import eu.kanade.presentation.browse.components.BrowseSourceEHentaiList import eu.kanade.presentation.browse.components.BrowseSourceList import eu.kanade.presentation.browse.components.BrowseSourceToolbar import eu.kanade.presentation.components.AppStateBanners +import eu.kanade.presentation.components.Divider import eu.kanade.presentation.components.EmptyScreen import eu.kanade.presentation.components.ExtendedFloatingActionButton import eu.kanade.presentation.components.LoadingScreen @@ -60,7 +64,7 @@ import exh.source.isEhBasedSource fun BrowseSourceScreen( presenter: BrowseSourcePresenter, navigateUp: () -> Unit, - onFabClick: () -> Unit, + openFilterSheet: () -> Unit, onMangaClick: (Manga) -> Unit, onMangaLongClick: (Manga) -> Unit, onWebViewClick: () -> Unit, @@ -83,8 +87,8 @@ fun BrowseSourceScreen( } Scaffold( - topBar = { scrollBehavior -> - Column { + topBar = { + Column(modifier = Modifier.background(MaterialTheme.colorScheme.surface)) { BrowseSourceToolbar( state = presenter, source = presenter.source!!, @@ -97,47 +101,13 @@ fun BrowseSourceScreen( // SY --> onSettingsClick = onSettingsClick, // SY <-- - scrollBehavior = scrollBehavior, ) - AppStateBanners(downloadedOnlyMode, incognitoMode) - } - }, - floatingActionButton = { - BrowseSourceFloatingActionButton( - isVisible = presenter.filters.isNotEmpty()/* SY --> && presenter.currentFilter is BrowseSourcePresenter.Filter.UserInput <-- SY */, - onFabClick = onFabClick, - ) - }, - snackbarHost = { - SnackbarHost(hostState = snackbarHostState) - }, - ) { paddingValues -> - BrowseSourceContent( - state = presenter, - mangaList = mangaList, - getMangaState = { presenter.getManga(it) }, - // SY --> - getMetadataState = { manga, metadata -> - presenter.getRaisedSearchMetadata(manga, metadata) - }, - // SY <-- - columns = columns, - // SY --> - ehentaiBrowseDisplayMode = presenter.ehentaiBrowseDisplayMode, - // SY <-- - displayMode = presenter.displayMode, - snackbarHostState = snackbarHostState, - contentPadding = paddingValues, - onWebViewClick = onWebViewClick, - onHelpClick = { uriHandler.openUri(MoreController.URL_HELP) }, - onLocalSourceHelpClick = onHelpClick, - onMangaClick = onMangaClick, - onMangaLongClick = onMangaLongClick, - header = { Row( + modifier = Modifier + .horizontalScroll(rememberScrollState()) + .padding(horizontal = 8.dp), horizontalArrangement = Arrangement.spacedBy(8.dp), - modifier = Modifier.horizontalScroll(rememberScrollState()), ) { FilterChip( selected = presenter.currentFilter == BrowseSourcePresenter.Filter.Popular, @@ -180,7 +150,7 @@ fun BrowseSourceScreen( /* SY --> if (presenter.filters.isNotEmpty())*/ run /* SY <-- */ { FilterChip( selected = presenter.currentFilter is BrowseSourcePresenter.Filter.UserInput, - onClick = onFabClick, + onClick = openFilterSheet, leadingIcon = { Icon( imageVector = Icons.Outlined.FilterList, @@ -203,7 +173,37 @@ fun BrowseSourceScreen( ) } } + + Divider() + + AppStateBanners(downloadedOnlyMode, incognitoMode) + } + }, + snackbarHost = { + SnackbarHost(hostState = snackbarHostState) + }, + ) { paddingValues -> + BrowseSourceContent( + state = presenter, + mangaList = mangaList, + getMangaState = { presenter.getManga(it) }, + // SY --> + getMetadataState = { manga, metadata -> + presenter.getRaisedSearchMetadata(manga, metadata) }, + // SY <-- + columns = columns, + // SY --> + ehentaiBrowseDisplayMode = presenter.ehentaiBrowseDisplayMode, + // SY <-- + displayMode = presenter.displayMode, + snackbarHostState = snackbarHostState, + contentPadding = paddingValues, + onWebViewClick = onWebViewClick, + onHelpClick = { uriHandler.openUri(MoreController.URL_HELP) }, + onLocalSourceHelpClick = onHelpClick, + onMangaClick = onMangaClick, + onMangaLongClick = onMangaLongClick, ) } } @@ -240,7 +240,6 @@ fun BrowseSourceContent( // SY --> getMetadataState: @Composable ((Manga, RaisedSearchMetadata?) -> State), // SY <-- - header: (@Composable () -> Unit)? = null, columns: GridCells, ehentaiBrowseDisplayMode: Boolean, displayMode: LibraryDisplayMode, @@ -317,7 +316,6 @@ fun BrowseSourceContent( contentPadding = contentPadding, onMangaClick = onMangaClick, onMangaLongClick = onMangaLongClick, - header = header, ) return } @@ -335,7 +333,6 @@ fun BrowseSourceContent( contentPadding = contentPadding, onMangaClick = onMangaClick, onMangaLongClick = onMangaLongClick, - header = header, ) } LibraryDisplayMode.List -> { @@ -348,7 +345,6 @@ fun BrowseSourceContent( contentPadding = contentPadding, onMangaClick = onMangaClick, onMangaLongClick = onMangaLongClick, - header = header, ) } else -> { @@ -362,7 +358,6 @@ fun BrowseSourceContent( contentPadding = contentPadding, onMangaClick = onMangaClick, onMangaLongClick = onMangaLongClick, - header = header, ) } } diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt index de1039dd7..011154154 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt @@ -37,7 +37,6 @@ fun BrowseSourceComfortableGrid( // SY --> getMetadataState: @Composable ((Manga, RaisedSearchMetadata?) -> State), // SY <-- - header: (@Composable () -> Unit)? = null, columns: GridCells, contentPadding: PaddingValues, onMangaClick: (Manga) -> Unit, @@ -49,12 +48,6 @@ fun BrowseSourceComfortableGrid( horizontalArrangement = Arrangement.spacedBy(8.dp), verticalArrangement = Arrangement.spacedBy(8.dp), ) { - if (header != null) { - item(span = { GridItemSpan(maxLineSpan) }) { - header() - } - } - if (mangaList.loadState.prepend is LoadState.Loading) { item(span = { GridItemSpan(maxLineSpan) }) { BrowseSourceLoadingItem() diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceCompactGrid.kt b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceCompactGrid.kt index 6fd5ea782..715e0d2d8 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceCompactGrid.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceCompactGrid.kt @@ -48,7 +48,6 @@ fun BrowseSourceCompactGrid( contentPadding: PaddingValues, onMangaClick: (Manga) -> Unit, onMangaLongClick: (Manga) -> Unit, - header: (@Composable () -> Unit)? = null, ) { LazyVerticalGrid( columns = columns, @@ -56,12 +55,6 @@ fun BrowseSourceCompactGrid( horizontalArrangement = Arrangement.spacedBy(8.dp), verticalArrangement = Arrangement.spacedBy(8.dp), ) { - if (header != null) { - item(span = { GridItemSpan(maxLineSpan) }) { - header() - } - } - item(span = { GridItemSpan(maxLineSpan) }) { if (mangaList.loadState.prepend is LoadState.Loading) { BrowseSourceLoadingItem() diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceEHentaiList.kt b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceEHentaiList.kt index 2a47babd9..29326a074 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceEHentaiList.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceEHentaiList.kt @@ -58,17 +58,10 @@ fun BrowseSourceEHentaiList( contentPadding: PaddingValues, onMangaClick: (Manga) -> Unit, onMangaLongClick: (Manga) -> Unit, - header: (@Composable () -> Unit)? = null, ) { LazyColumn( contentPadding = contentPadding, ) { - if (header != null) { - item { - header() - } - } - item { if (mangaList.loadState.prepend is LoadState.Loading) { BrowseSourceLoadingItem() diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt index 388d106ae..995846104 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt @@ -36,17 +36,10 @@ fun BrowseSourceList( contentPadding: PaddingValues, onMangaClick: (Manga) -> Unit, onMangaLongClick: (Manga) -> Unit, - header: (@Composable () -> Unit)? = null, ) { LazyColumn( contentPadding = contentPadding, ) { - if (header != null) { - item { - header() - } - } - item { if (mangaList.loadState.prepend is LoadState.Loading) { BrowseSourceLoadingItem() diff --git a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceToolbar.kt b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceToolbar.kt index 8de4b1f65..7e984c30d 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceToolbar.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceToolbar.kt @@ -45,7 +45,7 @@ fun BrowseSourceToolbar( // SY --> onSettingsClick: () -> Unit, // SY <-- - scrollBehavior: TopAppBarScrollBehavior, + scrollBehavior: TopAppBarScrollBehavior? = null, ) { if (state.searchQuery == null) { BrowseSourceRegularToolbar( @@ -91,7 +91,7 @@ fun BrowseSourceRegularToolbar( // SY --> onSettingsClick: () -> Unit, // SY <-- - scrollBehavior: TopAppBarScrollBehavior, + scrollBehavior: TopAppBarScrollBehavior?, ) { AppBar( navigateUp = navigateUp, @@ -191,7 +191,7 @@ fun BrowseSourceSearchToolbar( navigateUp: () -> Unit, onResetClick: () -> Unit, onSearchClick: () -> Unit, - scrollBehavior: TopAppBarScrollBehavior, + scrollBehavior: TopAppBarScrollBehavior?, ) { SearchToolbar( searchQuery = searchQuery, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt index f425255b8..c73b8bda4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt @@ -127,7 +127,7 @@ open class BrowseSourceController(bundle: Bundle) : router.popCurrentController() } }, - onFabClick = { filterSheet?.show() }, + openFilterSheet = { filterSheet?.show() }, onMangaClick = { router.pushController(MangaController(it.id, true)) }, onMangaLongClick = { manga -> scope.launchIO {