mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-10 19:18:56 +01:00
Range selection in library (#8186)
* logic and a bit of cleanup * cleanup done * grammar fix * fixing format * Auto stash before checking out "HEAD" * Revert "Auto stash before checking out "HEAD"" This reverts commit 202374a36ff444b7da3fcdb2a9859ca71a7c046e. * Update app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt Co-authored-by: arkon <arkon@users.noreply.github.com> * cleanup Co-authored-by: arkon <arkon@users.noreply.github.com>
This commit is contained in:
@@ -662,10 +662,38 @@ class LibraryPresenter(
|
||||
state.selection = emptyList()
|
||||
}
|
||||
|
||||
private fun removeSelected(mutableList: MutableList<LibraryManga>, manga: LibraryManga): Boolean {
|
||||
if (selection.fastAny { it.manga.id == manga.manga.id }) {
|
||||
return mutableList.remove(manga)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
fun toggleSelection(manga: LibraryManga) {
|
||||
val mutableList = state.selection.toMutableList()
|
||||
if (selection.fastAny { it.manga.id == manga.manga.id }) {
|
||||
mutableList.remove(manga)
|
||||
if (!removeSelected(mutableList, manga)) {
|
||||
mutableList.add(manga)
|
||||
}
|
||||
state.selection = mutableList
|
||||
}
|
||||
|
||||
/**
|
||||
* Selects all mangas between and including the given manga and the last pressed manga from the
|
||||
* same category as the given manga
|
||||
*/
|
||||
fun toggleRangeSelection(manga: LibraryManga) {
|
||||
val mutableList = state.selection.toMutableList()
|
||||
if (!removeSelected(mutableList, manga) && 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)
|
||||
}
|
||||
mutableList.addAll(newList.filterNot { it in selection })
|
||||
} else {
|
||||
mutableList.add(manga)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user