@ -30,23 +30,25 @@ import eu.kanade.presentation.browse.components.GlobalSearchResultItem
import eu.kanade.presentation.browse.components.GlobalSearchToolbar
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchFilter
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchState
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchScreenModel
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SearchItemResult
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SourceFilter
import eu.kanade.tachiyomi.util.system.LocaleHelper
import tachiyomi.domain.manga.model.Manga
import tachiyomi.presentation.core.components.material.Divider
import tachiyomi.presentation.core.components.material.Scaffold
import tachiyomi.presentation.core.components.material.VerticalDivider
import tachiyomi.presentation.core.components.material.padding
@Composable
fun GlobalSearchScreen (
state : GlobalSearch State,
state : GlobalSearchScreenModel . State,
items : Map < CatalogueSource , SearchItemResult > ,
navigateUp : ( ) -> Unit ,
onChangeSearchQuery : ( String ? ) -> Unit ,
onSearch : ( String ) -> Unit ,
onChangeFilter : ( GlobalSearchFilter ) -> Unit ,
onChangeSearchFilter : ( SourceFilter ) -> Unit ,
onToggleResults : ( ) -> Unit ,
getManga : @Composable ( Manga ) -> State < Manga > ,
onClickSource : ( CatalogueSource ) -> Unit ,
onClickItem : ( Manga ) -> Unit ,
@ -71,45 +73,47 @@ fun GlobalSearchScreen(
. padding ( horizontal = MaterialTheme . padding . small ) ,
horizontalArrangement = Arrangement . spacedBy ( MaterialTheme . padding . small ) ,
) {
// TODO: make this UX better; it only applies when triggering a new search
FilterChip (
selected = state . s earchFilter == GlobalSearchFilter . All ,
onClick = { onChange Filter( GlobalSearchFilter . All ) } ,
selected = state . s ourceFilter == SourceFilter . PinnedOnly ,
onClick = { onChange SearchFilter( SourceFilter . PinnedOnly ) } ,
leadingIcon = {
Icon (
imageVector = Icons . Outlined . DoneAll ,
contentDescription = " " ,
imageVector = Icons . Outlined . PushPin ,
contentDescription = null ,
modifier = Modifier
. size ( FilterChipDefaults . IconSize ) ,
)
} ,
label = {
Text ( text = stringResource ( id = R . string . all ) )
Text ( text = stringResource ( id = R . string . pinned_sources ) )
} ,
)
FilterChip (
selected = state . s earchFilter == GlobalSearchFilter . PinnedOnly ,
onClick = { onChange Filter( GlobalSearchFilter . PinnedOnly ) } ,
selected = state . s ourceFilter == SourceFilter . All ,
onClick = { onChange SearchFilter( SourceFilter . All ) } ,
leadingIcon = {
Icon (
imageVector = Icons . Outlined . PushPin ,
contentDescription = " " ,
imageVector = Icons . Outlined . DoneAll ,
contentDescription = null ,
modifier = Modifier
. size ( FilterChipDefaults . IconSize ) ,
)
} ,
label = {
Text ( text = stringResource ( id = R . string . pinned_sources ) )
Text ( text = stringResource ( id = R . string . all ) )
} ,
)
VerticalDivider ( )
FilterChip (
selected = state . searchFilter == GlobalSearchFilter . AvailableOnly ,
onClick = { on ChangeFilter( GlobalSearchFilter . AvailableOnly ) } ,
selected = state . onlyShowHasResults ,
onClick = { on ToggleResults( ) } ,
leadingIcon = {
Icon (
imageVector = Icons . Outlined . FilterList ,
contentDescription = " " ,
contentDescription = null ,
modifier = Modifier
. size ( FilterChipDefaults . IconSize ) ,
)