mirror of
https://github.com/tachiyomiorg/tachiyomi.git
synced 2024-12-23 05:01:52 +01:00
logic and a bit of cleanup
This commit is contained in:
parent
50f959e5f4
commit
1bee855766
@ -70,6 +70,7 @@ fun LibraryScreen(
|
||||
onChangeCurrentPage = { presenter.activeCategory = it },
|
||||
onMangaClicked = onMangaClicked,
|
||||
onToggleSelection = { presenter.toggleSelection(it) },
|
||||
onToggleMultiSelection = { presenter.toggleMultiSelection(it) },
|
||||
onRefresh = onClickRefresh,
|
||||
onGlobalSearchClicked = onGlobalSearchClicked,
|
||||
getNumberOfMangaForCategory = { presenter.getMangaCountForCategory(it) },
|
||||
|
@ -45,6 +45,7 @@ fun LibraryContent(
|
||||
onChangeCurrentPage: (Int) -> Unit,
|
||||
onMangaClicked: (Long) -> Unit,
|
||||
onToggleSelection: (LibraryManga) -> Unit,
|
||||
onToggleMultiSelection: (LibraryManga) -> Unit,
|
||||
onRefresh: (Category?) -> Boolean,
|
||||
onGlobalSearchClicked: () -> Unit,
|
||||
getNumberOfMangaForCategory: @Composable (Long) -> State<Int?>,
|
||||
@ -85,7 +86,7 @@ fun LibraryContent(
|
||||
}
|
||||
}
|
||||
val onLongClickManga = { manga: LibraryManga ->
|
||||
onToggleSelection(manga)
|
||||
onToggleMultiSelection(manga)
|
||||
}
|
||||
|
||||
SwipeRefresh(
|
||||
|
@ -667,11 +667,38 @@ class LibraryPresenter(
|
||||
val mutableList = state.selection.toMutableList()
|
||||
if (selection.fastAny { it.manga.id == manga.manga.id }) {
|
||||
mutableList.remove(manga)
|
||||
state.selection = mutableList
|
||||
} else {
|
||||
mutableList.add(manga)
|
||||
}
|
||||
state.selection = mutableList
|
||||
}
|
||||
}
|
||||
|
||||
fun toggleMultiSelection(manga: LibraryManga) {
|
||||
val mutableList = state.selection.toMutableList()
|
||||
if (selection.fastAny { it.manga.id == manga.manga.id }) {
|
||||
mutableList.remove(manga)
|
||||
state.selection = mutableList
|
||||
} else if (mutableList.fastAny{ it.category == manga.category }) {
|
||||
val items = (loadedManga[manga.category] ?: emptyList()).map { it.libraryManga }
|
||||
|
||||
val lastMangaIndex =
|
||||
items.indexOf(mutableList.findLast { it.category == manga.category })
|
||||
val curMangaIndex = items.indexOf(manga)
|
||||
|
||||
val newList = when (lastMangaIndex >= curMangaIndex + 1) {
|
||||
true -> items.subList(curMangaIndex, lastMangaIndex)
|
||||
false -> items.subList(lastMangaIndex, curMangaIndex + 1)
|
||||
}
|
||||
|
||||
state.selection = state.selection.toMutableList().apply {
|
||||
addAll(newList.filterNot { it in selection }.map { it })
|
||||
}
|
||||
} else {
|
||||
mutableList.add(manga)
|
||||
state.selection = mutableList
|
||||
}
|
||||
}
|
||||
|
||||
fun selectAll(index: Int) {
|
||||
val category = categories[index]
|
||||
|
Loading…
Reference in New Issue
Block a user