Apply to poster as well

This commit is contained in:
Luna712 2024-07-07 13:24:21 -06:00 committed by GitHub
parent 028cc46123
commit ab7235f43b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.text.format.Formatter.formatShortFileSize import android.text.format.Formatter.formatShortFileSize
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.CheckBox
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.DiffUtil
@ -116,8 +117,19 @@ class DownloadAdapter(
binding.apply { binding.apply {
downloadHeaderPoster.apply { downloadHeaderPoster.apply {
setImage(data.poster) setImage(data.poster)
setOnClickListener { if (isMultiDeleteState) {
headerClickCallback.invoke(DownloadHeaderClickEvent(DOWNLOAD_ACTION_LOAD_RESULT, data)) setOnClickListener {
toggleIsChecked(deleteCheckbox, data.id, data.name)
}
} else {
setOnClickListener {
headerClickCallback.invoke(DownloadHeaderClickEvent(DOWNLOAD_ACTION_LOAD_RESULT, data))
}
}
setOnLongClickListener {
headerClickCallback.invoke(DownloadHeaderClickEvent(DOWNLOAD_ACTION_LONG_CLICK, data))
true
} }
} }
downloadHeaderTitle.text = data.name downloadHeaderTitle.text = data.name
@ -136,7 +148,7 @@ class DownloadAdapter(
deleteCheckbox.apply { deleteCheckbox.apply {
isVisible = isMultiDeleteState isVisible = isMultiDeleteState
isChecked = selectedIds[card.data.id] == true isChecked = selectedIds[data.id] == true
} }
} }
} }
@ -174,10 +186,7 @@ class DownloadAdapter(
episodeHolder.apply { episodeHolder.apply {
if (isMultiDeleteState) { if (isMultiDeleteState) {
setOnClickListener { setOnClickListener {
val isChecked = !deleteCheckbox.isChecked toggleIsChecked(deleteCheckbox, card.data.id, card.data.name)
deleteCheckbox.isChecked = isChecked
selectedIds[card.data.id] = isChecked
selectedChangedCallback.invoke(card.data.id, card.data.name, isChecked)
} }
} else { } else {
setOnClickListener { setOnClickListener {
@ -214,10 +223,7 @@ class DownloadAdapter(
episodeHolder.apply { episodeHolder.apply {
if (isMultiDeleteState) { if (isMultiDeleteState) {
setOnClickListener { setOnClickListener {
val isChecked = !deleteCheckbox.isChecked toggleIsChecked(deleteCheckbox, card.data.id, card.data.name)
deleteCheckbox.isChecked = isChecked
selectedIds[card.data.id] = isChecked
selectedChangedCallback.invoke(card.data.id, card.data.name, isChecked)
} }
} else { } else {
setOnClickListener { setOnClickListener {
@ -324,6 +330,13 @@ class DownloadAdapter(
} }
} }
private fun toggleIsChecked(checkbox: CheckBox, id: Int, name: String) {
val isChecked = !checkbox.isChecked
checkbox.isChecked = isChecked
selectedIds[id] = isChecked
selectedChangedCallback.invoke(id, name, isChecked)
}
class DiffCallback : DiffUtil.ItemCallback<VisualDownloadCached>() { class DiffCallback : DiffUtil.ItemCallback<VisualDownloadCached>() {
override fun areItemsTheSame(oldItem: VisualDownloadCached, newItem: VisualDownloadCached): Boolean { override fun areItemsTheSame(oldItem: VisualDownloadCached, newItem: VisualDownloadCached): Boolean {
return oldItem.data.id == newItem.data.id return oldItem.data.id == newItem.data.id