Refine SelectableGalleryInfoRecyclerView

This commit is contained in:
tarsin committed 2023-07-16 22:22:29 +08:00
1 parent 44b60185cc
commit e2ac340b6f
3 files changed
+5 -16

No files matched your search

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