2022-11-27 20:56:21 +01:00
|
|
|
package eu.kanade.presentation.browse
|
|
|
|
|
|
|
|
|
|
import androidx.compose.runtime.Composable
|
|
|
|
|
import androidx.compose.runtime.State
|
2024-03-09 11:40:42 +01:00
|
|
|
import androidx.compose.runtime.collectAsState
|
|
|
|
|
import androidx.compose.runtime.getValue
|
2022-11-27 20:56:21 +01:00
|
|
|
import eu.kanade.presentation.browse.components.GlobalSearchToolbar
|
2024-10-10 07:00:00 +02:00
|
|
|
import eu.kanade.presentation.components.BulkSelectionToolbar
|
2022-11-27 20:56:21 +01:00
|
|
|
import eu.kanade.tachiyomi.source.CatalogueSource
|
2024-03-09 05:00:40 +01:00
|
|
|
import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel
|
2024-04-25 20:05:28 +02:00
|
|
|
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SearchItemResult
|
2023-07-17 01:44:32 +02:00
|
|
|
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SearchScreenModel
|
2023-07-16 23:09:59 +02:00
|
|
|
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SourceFilter
|
2023-01-22 16:54:28 +01:00
|
|
|
import tachiyomi.domain.manga.model.Manga
|
2023-02-18 21:52:52 +01:00
|
|
|
import tachiyomi.presentation.core.components.material.Scaffold
|
2022-11-27 20:56:21 +01:00
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
|
fun MigrateSearchScreen(
|
2023-07-17 01:44:32 +02:00
|
|
|
state: SearchScreenModel.State,
|
|
|
|
|
fromSourceId: Long?,
|
2023-07-16 23:09:59 +02:00
|
|
|
navigateUp: () -> Unit,
|
2022-11-27 20:56:21 +01:00
|
|
|
onChangeSearchQuery: (String?) -> Unit,
|
|
|
|
|
onSearch: (String) -> Unit,
|
2023-07-16 23:09:59 +02:00
|
|
|
onChangeSearchFilter: (SourceFilter) -> Unit,
|
|
|
|
|
onToggleResults: () -> Unit,
|
|
|
|
|
getManga: @Composable (Manga) -> State<Manga>,
|
2022-11-27 20:56:21 +01:00
|
|
|
onClickSource: (CatalogueSource) -> Unit,
|
|
|
|
|
onClickItem: (Manga) -> Unit,
|
|
|
|
|
onLongClickItem: (Manga) -> Unit,
|
2024-03-09 05:00:40 +01:00
|
|
|
// KMK -->
|
2024-03-09 11:40:42 +01:00
|
|
|
bulkFavoriteScreenModel: BulkFavoriteScreenModel,
|
2024-10-18 19:23:59 +02:00
|
|
|
hasPinnedSources: Boolean,
|
2024-03-09 05:00:40 +01:00
|
|
|
// KMK <--
|
2022-11-27 20:56:21 +01:00
|
|
|
) {
|
2024-03-09 11:40:42 +01:00
|
|
|
// KMK -->
|
|
|
|
|
val bulkFavoriteState by bulkFavoriteScreenModel.state.collectAsState()
|
|
|
|
|
// KMK <--
|
|
|
|
|
|
2022-11-27 20:56:21 +01:00
|
|
|
Scaffold(
|
2022-11-27 21:16:08 +01:00
|
|
|
topBar = { scrollBehavior ->
|
2024-03-07 05:45:48 +01:00
|
|
|
// KMK -->
|
2024-03-10 01:20:58 +01:00
|
|
|
if (bulkFavoriteState.selectionMode) {
|
2024-10-10 07:00:00 +02:00
|
|
|
BulkSelectionToolbar(
|
2024-03-09 05:00:40 +01:00
|
|
|
selectedCount = bulkFavoriteState.selection.size,
|
2024-10-10 07:00:00 +02:00
|
|
|
isRunning = bulkFavoriteState.isRunning,
|
2024-03-09 11:40:42 +01:00
|
|
|
onClickClearSelection = bulkFavoriteScreenModel::toggleSelectionMode,
|
2024-10-10 07:00:00 +02:00
|
|
|
onChangeCategoryClick = bulkFavoriteScreenModel::addFavorite,
|
2024-04-25 20:05:28 +02:00
|
|
|
onSelectAll = {
|
2025-05-09 20:05:25 +02:00
|
|
|
state.filteredItems.values
|
|
|
|
|
.filterIsInstance<SearchItemResult.Success>()
|
|
|
|
|
.flatMap { it.result }
|
2025-05-31 06:41:20 +02:00
|
|
|
.forEach { bulkFavoriteScreenModel.select(it) }
|
2024-04-25 20:05:28 +02:00
|
|
|
},
|
2024-10-11 20:16:15 +02:00
|
|
|
onReverseSelection = {
|
2025-05-09 20:05:25 +02:00
|
|
|
state.filteredItems.values
|
|
|
|
|
.filterIsInstance<SearchItemResult.Success>()
|
|
|
|
|
.flatMap { it.result }
|
2025-05-31 06:41:20 +02:00
|
|
|
.let { bulkFavoriteScreenModel.reverseSelection(it) }
|
2024-10-11 20:16:15 +02:00
|
|
|
},
|
2024-03-07 05:45:48 +01:00
|
|
|
)
|
2024-03-10 01:20:58 +01:00
|
|
|
} else {
|
|
|
|
|
// KMK <--
|
2024-03-07 05:45:48 +01:00
|
|
|
GlobalSearchToolbar(
|
|
|
|
|
searchQuery = state.searchQuery,
|
|
|
|
|
progress = state.progress,
|
|
|
|
|
total = state.total,
|
|
|
|
|
navigateUp = navigateUp,
|
|
|
|
|
onChangeSearchQuery = onChangeSearchQuery,
|
|
|
|
|
onSearch = onSearch,
|
|
|
|
|
sourceFilter = state.sourceFilter,
|
|
|
|
|
onChangeSearchFilter = onChangeSearchFilter,
|
|
|
|
|
onlyShowHasResults = state.onlyShowHasResults,
|
|
|
|
|
onToggleResults = onToggleResults,
|
|
|
|
|
scrollBehavior = scrollBehavior,
|
|
|
|
|
// KMK -->
|
2024-03-10 01:20:58 +01:00
|
|
|
toggleSelectionMode = bulkFavoriteScreenModel::toggleSelectionMode,
|
2024-10-10 07:00:00 +02:00
|
|
|
isRunning = bulkFavoriteState.isRunning,
|
2024-10-18 19:23:59 +02:00
|
|
|
hasPinnedSources = hasPinnedSources,
|
2024-03-07 05:45:48 +01:00
|
|
|
// KMK <--
|
|
|
|
|
)
|
2024-03-10 01:20:58 +01:00
|
|
|
}
|
2022-11-27 20:56:21 +01:00
|
|
|
},
|
|
|
|
|
) { paddingValues ->
|
2023-07-16 22:37:40 +02:00
|
|
|
GlobalSearchContent(
|
2023-07-17 01:44:32 +02:00
|
|
|
fromSourceId = fromSourceId,
|
2023-07-16 23:09:59 +02:00
|
|
|
items = state.filteredItems,
|
2022-11-27 20:56:21 +01:00
|
|
|
contentPadding = paddingValues,
|
|
|
|
|
getManga = getManga,
|
|
|
|
|
onClickSource = onClickSource,
|
|
|
|
|
onClickItem = onClickItem,
|
|
|
|
|
onLongClickItem = onLongClickItem,
|
2024-03-07 05:45:48 +01:00
|
|
|
// KMK -->
|
2024-03-09 05:00:40 +01:00
|
|
|
selection = bulkFavoriteState.selection,
|
2024-03-07 05:45:48 +01:00
|
|
|
// KMK <--
|
2022-11-27 20:56:21 +01:00
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|