3
3
Fork 1
mirror of https://github.com/recloudstream/cloudstream.git synced 2024-08-15 01:53:11 +00:00

Add back pressed handling

This commit is contained in:
Luna712 2024-07-08 18:46:37 -06:00 committed by GitHub
parent b5bfc3460b
commit 4bc62f133c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 54 additions and 0 deletions
app/src/main/java/com/lagradost/cloudstream3/ui/download

View file

@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.OnBackPressedCallback
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
@ -157,6 +158,7 @@ class DownloadChildFragment : Fragment() {
val adapter = binding?.downloadChildList?.adapter as? DownloadAdapter
if (selected.isNotEmpty()) {
binding?.downloadDeleteAppbar?.isVisible = true
attachBackPressedCallback()
binding?.btnDelete?.setOnClickListener {
context?.let { ctx -> downloadsViewModel.handleMultiDelete(ctx) }
@ -176,6 +178,7 @@ class DownloadChildFragment : Fragment() {
} else {
binding?.downloadDeleteAppbar?.isVisible = false
detachBackPressedCallback()
adapter?.setIsMultiDeleteState(false)
downloadsViewModel.clearSelectedItems()
}
@ -192,4 +195,28 @@ class DownloadChildFragment : Fragment() {
}
downloadDeleteEventListener?.let { VideoDownloadManager.downloadDeleteEvent += it }
}
private var backPressedCallback: OnBackPressedCallback? = null
private fun attachBackPressedCallback() {
if (backPressedCallback == null) {
backPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
(binding?.downloadChildList?.adapter as? DownloadAdapter)?.setIsMultiDeleteState(false)
downloadsViewModel.clearSelectedItems()
}
}
}
backPressedCallback?.isEnabled = true
activity?.onBackPressedDispatcher?.addCallback(
activity ?: return,
backPressedCallback ?: return
)
}
private fun detachBackPressedCallback() {
backPressedCallback?.isEnabled = false
}
}

View file

@ -15,6 +15,7 @@ import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.TextView
import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.StringRes
import androidx.appcompat.app.AppCompatActivity
@ -192,6 +193,7 @@ class DownloadFragment : Fragment() {
if (selected.isNotEmpty()) {
binding?.downloadDeleteAppbar?.isVisible = true
binding?.downloadStorageAppbar?.isVisible = false
attachBackPressedCallback()
binding?.btnDelete?.setOnClickListener {
context?.let { ctx -> downloadsViewModel.handleMultiDelete(ctx) }
@ -215,6 +217,7 @@ class DownloadFragment : Fragment() {
binding?.downloadStorageAppbar?.isVisible = true
}
detachBackPressedCallback()
adapter?.setIsMultiDeleteState(false)
downloadsViewModel.clearSelectedItems()
}
@ -324,4 +327,28 @@ class DownloadFragment : Fragment() {
val selectedVideoUri = result?.data?.data ?: return@registerForActivityResult
playUri(activity ?: return@registerForActivityResult, selectedVideoUri)
}
private var backPressedCallback: OnBackPressedCallback? = null
private fun attachBackPressedCallback() {
if (backPressedCallback == null) {
backPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
(binding?.downloadList?.adapter as? DownloadAdapter)?.setIsMultiDeleteState(false)
downloadsViewModel.clearSelectedItems()
}
}
}
backPressedCallback?.isEnabled = true
activity?.onBackPressedDispatcher?.addCallback(
activity ?: return,
backPressedCallback ?: return
)
}
private fun detachBackPressedCallback() {
backPressedCallback?.isEnabled = false
}
}