From b69bc9069dedec524f3ff5ff5089271308a36048 Mon Sep 17 00:00:00 2001 From: Luna712 <142361265+Luna712@users.noreply.github.com> Date: Sat, 13 Jul 2024 15:22:36 -0600 Subject: [PATCH] Fix focus issues on TV --- .../ui/download/DownloadChildFragment.kt | 25 +++++++++++-------- .../ui/download/DownloadFragment.kt | 25 +++++++++++-------- .../ui/download/DownloadViewModel.kt | 4 ++- .../res/layout/fragment_child_downloads.xml | 16 +++--------- .../main/res/layout/fragment_downloads.xml | 16 +++--------- 5 files changed, 40 insertions(+), 46 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadChildFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadChildFragment.kt index ae083a74..71158204 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadChildFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadChildFragment.kt @@ -97,6 +97,8 @@ class DownloadChildFragment : Fragment() { setAppBarNoScrollFlagsOnTV() } + binding?.downloadDeleteAppbar?.setAppBarNoScrollFlagsOnTV() + observe(downloadsViewModel.childCards) { if (it.isEmpty()) { activity?.onBackPressedDispatcher?.onBackPressed() @@ -126,8 +128,9 @@ class DownloadChildFragment : Fragment() { binding?.selectItemsText?.isVisible = it.isEmpty() val allSelected = downloadsViewModel.isAllSelected() - binding?.btnSelectAll?.isVisible = !allSelected - binding?.btnDeselectAll?.isVisible = allSelected + if (allSelected) { + binding?.btnToggleAll?.setText(R.string.deselect_all) + } else binding?.btnToggleAll?.setText(R.string.select_all) } val adapter = DownloadAdapter( @@ -180,14 +183,16 @@ class DownloadChildFragment : Fragment() { downloadsViewModel.setIsMultiDeleteState(false) } - binding?.btnSelectAll?.setOnClickListener { - (binding?.downloadChildList?.adapter as? DownloadAdapter)?.selectAllItems() - downloadsViewModel.selectAllItems() - } - - binding?.btnDeselectAll?.setOnClickListener { - (binding?.downloadChildList?.adapter as? DownloadAdapter)?.clearSelectedItems() - downloadsViewModel.clearSelectedItems() + binding?.btnToggleAll?.setOnClickListener { + val allSelected = downloadsViewModel.isAllSelected() + val binding = binding?.downloadChildList?.adapter as? DownloadAdapter + if (allSelected) { + binding?.clearSelectedItems() + downloadsViewModel.clearSelectedItems() + } else { + binding?.selectAllItems() + downloadsViewModel.selectAllItems() + } } downloadsViewModel.setIsMultiDeleteState(true) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt index 6e23e98b..2083a2ad 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt @@ -94,6 +94,7 @@ class DownloadFragment : Fragment() { super.onViewCreated(view, savedInstanceState) hideKeyboard() binding?.downloadStorageAppbar?.setAppBarNoScrollFlagsOnTV() + binding?.downloadDeleteAppbar?.setAppBarNoScrollFlagsOnTV() /** * We never want to retain multi-delete state @@ -167,8 +168,9 @@ class DownloadFragment : Fragment() { binding?.selectItemsText?.isVisible = it.isEmpty() val allSelected = downloadsViewModel.isAllSelected() - binding?.btnSelectAll?.isVisible = !allSelected - binding?.btnDeselectAll?.isVisible = allSelected + if (allSelected) { + binding?.btnToggleAll?.setText(R.string.deselect_all) + } else binding?.btnToggleAll?.setText(R.string.select_all) } val adapter = DownloadAdapter( @@ -193,7 +195,6 @@ class DownloadFragment : Fragment() { setLinearListLayout( isHorizontal = false, nextRight = FOCUS_SELF, - nextUp = FOCUS_SELF, nextDown = FOCUS_SELF, ) } @@ -257,14 +258,16 @@ class DownloadFragment : Fragment() { downloadsViewModel.setIsMultiDeleteState(false) } - binding?.btnSelectAll?.setOnClickListener { - (binding?.downloadList?.adapter as? DownloadAdapter)?.selectAllItems() - downloadsViewModel.selectAllItems() - } - - binding?.btnDeselectAll?.setOnClickListener { - (binding?.downloadList?.adapter as? DownloadAdapter)?.clearSelectedItems() - downloadsViewModel.clearSelectedItems() + binding?.btnToggleAll?.setOnClickListener { + val allSelected = downloadsViewModel.isAllSelected() + val binding = binding?.downloadList?.adapter as? DownloadAdapter + if (allSelected) { + binding?.clearSelectedItems() + downloadsViewModel.clearSelectedItems() + } else { + binding?.selectAllItems() + downloadsViewModel.selectAllItems() + } } downloadsViewModel.setIsMultiDeleteState(true) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadViewModel.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadViewModel.kt index 9dab76d9..4d1010d2 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadViewModel.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadViewModel.kt @@ -92,7 +92,9 @@ class DownloadViewModel : ViewModel() { } fun clearSelectedItems() { - _selectedItems.postValue(mutableListOf()) + // We need this to be done immediately + // so we can't use postValue + _selectedItems.value = mutableListOf() } fun isAllSelected(): Boolean { diff --git a/app/src/main/res/layout/fragment_child_downloads.xml b/app/src/main/res/layout/fragment_child_downloads.xml index 9275f099..64ed1d70 100644 --- a/app/src/main/res/layout/fragment_child_downloads.xml +++ b/app/src/main/res/layout/fragment_child_downloads.xml @@ -23,7 +23,7 @@ android:padding="8dp" android:visibility="gone"> -