diff --git a/app/src/main/java/com/hippo/ehviewer/ui/legacy/SelectableGalleryInfoRecyclerView.kt b/app/src/main/java/com/hippo/ehviewer/ui/legacy/SelectableGalleryInfoRecyclerView.kt index 5f36598aa..c115f45bb 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/legacy/SelectableGalleryInfoRecyclerView.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/legacy/SelectableGalleryInfoRecyclerView.kt @@ -21,6 +21,7 @@ class SelectableGalleryInfoRecyclerView @JvmOverloads constructor( val checkedItemCount get() = checkedGid.size lateinit var gidGetter: (Int) -> Long? + lateinit var allGid: () -> List private var checkedGid = mutableSetOf() private fun checkChild(child: View) { @@ -61,8 +62,7 @@ class SelectableGalleryInfoRecyclerView @JvmOverloads constructor( fun checkAll() { check(isInCustomChoice) { "Call intoCheckMode first" } - // Foreach checked - // Notify customChoiceListener!!.onItemCheckedStateChanged(this) + checkedGid.addAll(allGid()) updateOnScreenCheckedViews() } @@ -74,7 +74,7 @@ class SelectableGalleryInfoRecyclerView @JvmOverloads constructor( } else { checkedGid.add(gid) } - customChoiceListener?.onItemCheckedStateChanged(this) + if (checkedGid.isEmpty()) outOfCustomChoiceMode() updateOnScreenCheckedViews() } @@ -105,7 +105,6 @@ class SelectableGalleryInfoRecyclerView @JvmOverloads constructor( interface CustomChoiceListener { fun onIntoCustomChoice(view: SelectableGalleryInfoRecyclerView) fun onOutOfCustomChoice(view: SelectableGalleryInfoRecyclerView) - fun onItemCheckedStateChanged(view: SelectableGalleryInfoRecyclerView) } @Parcelize diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt index ec86afea8..c72a88f9e 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt @@ -278,6 +278,7 @@ class DownloadsScene : recyclerView.clipToPadding = false recyclerView.clipChildren = false recyclerView.gidGetter = { mList?.get(it)?.gid } + recyclerView.allGid = { mList?.map { it.gid }.orEmpty() } recyclerView.setCustomCheckedListener(DownloadChoiceListener()) // Cancel change animation val itemAnimator = recyclerView.itemAnimator @@ -1059,12 +1060,6 @@ class DownloadsScene : setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START) setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END) } - - override fun onItemCheckedStateChanged(view: SelectableGalleryInfoRecyclerView) { - if (view.checkedItemCount == 0) { - view.outOfCustomChoiceMode() - } - } } private inner class RenameLabelDialogHelper( diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt index 8ee039db7..719cce7ed 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt @@ -354,6 +354,7 @@ class FavoritesScene : SearchBarScene() { } } gidGetter = { adapter.peek(it)?.gid } + allGid = { adapter.snapshot().items.map { it.gid } } } switchFav(Settings.recentFavCat) setCustomCheckedListener(object : CustomChoiceListener { @@ -377,12 +378,6 @@ class FavoritesScene : SearchBarScene() { setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START) setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END) } - - override fun onItemCheckedStateChanged(view: SelectableGalleryInfoRecyclerView) { - if (view.checkedItemCount == 0) { - view.outOfCustomChoiceMode() - } - } }) } setAllowEmptySearch(false)