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
|
@ -4,6 +4,7 @@ import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.activity.OnBackPressedCallback
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
@ -157,6 +158,7 @@ class DownloadChildFragment : Fragment() {
|
||||||
val adapter = binding?.downloadChildList?.adapter as? DownloadAdapter
|
val adapter = binding?.downloadChildList?.adapter as? DownloadAdapter
|
||||||
if (selected.isNotEmpty()) {
|
if (selected.isNotEmpty()) {
|
||||||
binding?.downloadDeleteAppbar?.isVisible = true
|
binding?.downloadDeleteAppbar?.isVisible = true
|
||||||
|
attachBackPressedCallback()
|
||||||
|
|
||||||
binding?.btnDelete?.setOnClickListener {
|
binding?.btnDelete?.setOnClickListener {
|
||||||
context?.let { ctx -> downloadsViewModel.handleMultiDelete(ctx) }
|
context?.let { ctx -> downloadsViewModel.handleMultiDelete(ctx) }
|
||||||
|
@ -176,6 +178,7 @@ class DownloadChildFragment : Fragment() {
|
||||||
} else {
|
} else {
|
||||||
binding?.downloadDeleteAppbar?.isVisible = false
|
binding?.downloadDeleteAppbar?.isVisible = false
|
||||||
|
|
||||||
|
detachBackPressedCallback()
|
||||||
adapter?.setIsMultiDeleteState(false)
|
adapter?.setIsMultiDeleteState(false)
|
||||||
downloadsViewModel.clearSelectedItems()
|
downloadsViewModel.clearSelectedItems()
|
||||||
}
|
}
|
||||||
|
@ -192,4 +195,28 @@ class DownloadChildFragment : Fragment() {
|
||||||
}
|
}
|
||||||
downloadDeleteEventListener?.let { VideoDownloadManager.downloadDeleteEvent += it }
|
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.LinearLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import androidx.activity.OnBackPressedCallback
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
@ -192,6 +193,7 @@ class DownloadFragment : Fragment() {
|
||||||
if (selected.isNotEmpty()) {
|
if (selected.isNotEmpty()) {
|
||||||
binding?.downloadDeleteAppbar?.isVisible = true
|
binding?.downloadDeleteAppbar?.isVisible = true
|
||||||
binding?.downloadStorageAppbar?.isVisible = false
|
binding?.downloadStorageAppbar?.isVisible = false
|
||||||
|
attachBackPressedCallback()
|
||||||
|
|
||||||
binding?.btnDelete?.setOnClickListener {
|
binding?.btnDelete?.setOnClickListener {
|
||||||
context?.let { ctx -> downloadsViewModel.handleMultiDelete(ctx) }
|
context?.let { ctx -> downloadsViewModel.handleMultiDelete(ctx) }
|
||||||
|
@ -215,6 +217,7 @@ class DownloadFragment : Fragment() {
|
||||||
binding?.downloadStorageAppbar?.isVisible = true
|
binding?.downloadStorageAppbar?.isVisible = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
detachBackPressedCallback()
|
||||||
adapter?.setIsMultiDeleteState(false)
|
adapter?.setIsMultiDeleteState(false)
|
||||||
downloadsViewModel.clearSelectedItems()
|
downloadsViewModel.clearSelectedItems()
|
||||||
}
|
}
|
||||||
|
@ -324,4 +327,28 @@ class DownloadFragment : Fragment() {
|
||||||
val selectedVideoUri = result?.data?.data ?: return@registerForActivityResult
|
val selectedVideoUri = result?.data?.data ?: return@registerForActivityResult
|
||||||
playUri(activity ?: return@registerForActivityResult, selectedVideoUri)
|
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…
Add table
Add a link
Reference in a new issue