mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
Move setting isMultiDeleteState to view model and don't close if no items
This commit is contained in:
parent
64c45d0468
commit
40bfe7210d
3 changed files with 43 additions and 36 deletions
app/src/main/java/com/lagradost/cloudstream3/ui/download
|
@ -113,6 +113,15 @@ class DownloadChildFragment : Fragment() {
|
|||
setAppBarNoScrollFlagsOnTV()
|
||||
}
|
||||
|
||||
observe(downloadsViewModel.isMultiDeleteState) { isMultiDeleteState ->
|
||||
val adapter = binding?.downloadChildList?.adapter as? DownloadAdapter
|
||||
adapter?.setIsMultiDeleteState(isMultiDeleteState)
|
||||
binding?.downloadDeleteAppbar?.isVisible = isMultiDeleteState
|
||||
if (!isMultiDeleteState) {
|
||||
detachBackPressedCallback()
|
||||
downloadsViewModel.clearSelectedItems()
|
||||
}
|
||||
}
|
||||
observe(downloadsViewModel.selectedItems) {
|
||||
handleSelectedChange(it)
|
||||
binding?.btnDelete?.text =
|
||||
|
@ -160,8 +169,7 @@ class DownloadChildFragment : Fragment() {
|
|||
}
|
||||
|
||||
binding?.btnCancel?.setOnClickListener {
|
||||
adapter?.setIsMultiDeleteState(false)
|
||||
downloadsViewModel.clearSelectedItems()
|
||||
downloadsViewModel.setIsMultiDeleteState(false)
|
||||
}
|
||||
|
||||
binding?.btnSelectAll?.setOnClickListener {
|
||||
|
@ -169,23 +177,15 @@ class DownloadChildFragment : Fragment() {
|
|||
downloadsViewModel.selectAllItems()
|
||||
}
|
||||
|
||||
adapter?.setIsMultiDeleteState(true)
|
||||
} else {
|
||||
binding?.downloadDeleteAppbar?.isVisible = false
|
||||
|
||||
detachBackPressedCallback()
|
||||
adapter?.setIsMultiDeleteState(false)
|
||||
downloadsViewModel.clearSelectedItems()
|
||||
downloadsViewModel.setIsMultiDeleteState(true)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setUpDownloadDeleteListener(folder: String) {
|
||||
downloadDeleteEventListener = { id: Int ->
|
||||
val list = (binding?.downloadChildList?.adapter as? DownloadAdapter)?.currentList
|
||||
if (list != null) {
|
||||
if (list.any { it.data.id == id }) {
|
||||
updateList(folder)
|
||||
}
|
||||
if (list?.any { it.data.id == id } == true) {
|
||||
updateList(folder)
|
||||
}
|
||||
}
|
||||
downloadDeleteEventListener?.let { VideoDownloadManager.downloadDeleteEvent += it }
|
||||
|
@ -197,8 +197,7 @@ class DownloadChildFragment : Fragment() {
|
|||
if (backPressedCallback == null) {
|
||||
backPressedCallback = object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
(binding?.downloadChildList?.adapter as? DownloadAdapter)?.setIsMultiDeleteState(false)
|
||||
downloadsViewModel.clearSelectedItems()
|
||||
downloadsViewModel.setIsMultiDeleteState(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -112,6 +112,19 @@ class DownloadFragment : Fragment() {
|
|||
observe(downloadsViewModel.downloadBytes) {
|
||||
updateStorageInfo(view.context, it, R.string.app_storage, binding?.downloadAppTxt, binding?.downloadApp)
|
||||
}
|
||||
observe(downloadsViewModel.isMultiDeleteState) { isMultiDeleteState ->
|
||||
val adapter = binding?.downloadList?.adapter as? DownloadAdapter
|
||||
adapter?.setIsMultiDeleteState(isMultiDeleteState)
|
||||
binding?.downloadDeleteAppbar?.isVisible = isMultiDeleteState
|
||||
if (!isMultiDeleteState) {
|
||||
detachBackPressedCallback()
|
||||
downloadsViewModel.clearSelectedItems()
|
||||
// Make sure we don't display it early
|
||||
if (downloadsViewModel.usedBytes.value?.let { it > 0 } == true) {
|
||||
binding?.downloadStorageAppbar?.isVisible = true
|
||||
}
|
||||
}
|
||||
}
|
||||
observe(downloadsViewModel.selectedItems) {
|
||||
handleSelectedChange(it)
|
||||
binding?.btnDelete?.text =
|
||||
|
@ -195,8 +208,7 @@ class DownloadFragment : Fragment() {
|
|||
}
|
||||
|
||||
binding?.btnCancel?.setOnClickListener {
|
||||
adapter?.setIsMultiDeleteState(false)
|
||||
downloadsViewModel.clearSelectedItems()
|
||||
downloadsViewModel.setIsMultiDeleteState(false)
|
||||
}
|
||||
|
||||
binding?.btnSelectAll?.setOnClickListener {
|
||||
|
@ -204,17 +216,7 @@ class DownloadFragment : Fragment() {
|
|||
downloadsViewModel.selectAllItems()
|
||||
}
|
||||
|
||||
adapter?.setIsMultiDeleteState(true)
|
||||
} else {
|
||||
binding?.downloadDeleteAppbar?.isVisible = false
|
||||
// Make sure we don't display it early
|
||||
if (downloadsViewModel.usedBytes.value?.let { it > 0 } == true) {
|
||||
binding?.downloadStorageAppbar?.isVisible = true
|
||||
}
|
||||
|
||||
detachBackPressedCallback()
|
||||
adapter?.setIsMultiDeleteState(false)
|
||||
downloadsViewModel.clearSelectedItems()
|
||||
downloadsViewModel.setIsMultiDeleteState(true)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -329,8 +331,7 @@ class DownloadFragment : Fragment() {
|
|||
if (backPressedCallback == null) {
|
||||
backPressedCallback = object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
(binding?.downloadList?.adapter as? DownloadAdapter)?.setIsMultiDeleteState(false)
|
||||
downloadsViewModel.clearSelectedItems()
|
||||
downloadsViewModel.setIsMultiDeleteState(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,19 +32,26 @@ class DownloadViewModel : ViewModel() {
|
|||
val headerCards: LiveData<List<VisualDownloadCached.Header>> = _headerCards
|
||||
|
||||
private val _usedBytes = MutableLiveData<Long>()
|
||||
private val _availableBytes = MutableLiveData<Long>()
|
||||
private val _downloadBytes = MutableLiveData<Long>()
|
||||
|
||||
private val _selectedItems = MutableLiveData<MutableList<VisualDownloadCached>>(mutableListOf())
|
||||
|
||||
val usedBytes: LiveData<Long> = _usedBytes
|
||||
|
||||
private val _availableBytes = MutableLiveData<Long>()
|
||||
val availableBytes: LiveData<Long> = _availableBytes
|
||||
|
||||
private val _downloadBytes = MutableLiveData<Long>()
|
||||
val downloadBytes: LiveData<Long> = _downloadBytes
|
||||
|
||||
private val _isMultiDeleteState = MutableLiveData(false)
|
||||
val isMultiDeleteState: LiveData<Boolean> = _isMultiDeleteState
|
||||
|
||||
private val _selectedItems = MutableLiveData<MutableList<VisualDownloadCached>>(mutableListOf())
|
||||
val selectedItems: LiveData<MutableList<VisualDownloadCached>> = _selectedItems
|
||||
|
||||
private var previousVisual: List<VisualDownloadCached.Header>? = null
|
||||
|
||||
fun setIsMultiDeleteState(value: Boolean) {
|
||||
_isMultiDeleteState.postValue(value)
|
||||
}
|
||||
|
||||
fun addSelected(item: VisualDownloadCached) {
|
||||
val currentSelected = selectedItems.value ?: mutableListOf()
|
||||
if (!currentSelected.contains(item)) {
|
||||
|
@ -215,7 +222,7 @@ class DownloadViewModel : ViewModel() {
|
|||
DialogInterface.BUTTON_POSITIVE -> {
|
||||
viewModelScope.launchSafe {
|
||||
deleteFilesAndUpdateSettings(context, ids, this)
|
||||
clearSelectedItems()
|
||||
setIsMultiDeleteState(false)
|
||||
updateList(context)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue