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:
parent
b5bfc3460b
commit
4bc62f133c
2 changed files with 54 additions and 0 deletions
app/src/main/java/com/lagradost/cloudstream3/ui/download
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue