diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index b612503497..9852e1063d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -412,6 +412,7 @@ class LibraryController( FilterBottomSheet.ACTION_FILTER -> onFilterChanged() FilterBottomSheet.ACTION_HIDE_FILTER_TIP -> showFilterTip() FilterBottomSheet.ACTION_DISPLAY -> DisplayBottomSheet(this).show() + FilterBottomSheet.ACTION_EXPAND_COLLAPSE_ALL -> presenter.toggleAllCategoryVisibility() } } @@ -638,6 +639,7 @@ class LibraryController( category_hopper_frame.visibleIf(!singleCategory) adapter.isLongPressDragEnabled = canDrag() category_recycler.setCategories(presenter.categories) + filter_bottom_sheet.setExpandText(preferences.collapsedCategories().getOrDefault().isNotEmpty()) setActiveCategory() if (onRoot) { activity?.toolbar?.setOnClickListener { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index 64fd97b5cf..0818cd4d48 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -789,6 +789,15 @@ class LibraryPresenter( getLibrary() } + fun toggleAllCategoryVisibility() { + if (preferences.collapsedCategories().getOrDefault().isEmpty()) { + preferences.collapsedCategories().set(categories.map { it.id.toString() }.toMutableSet()) + } else { + preferences.collapsedCategories().set(mutableSetOf()) + } + getLibrary() + } + companion object { private var lastLibraryItems: List? = null private var lastCategories: List? = null diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/filter/FilterBottomSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/filter/FilterBottomSheet.kt index cf679b1c61..14d32cc091 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/filter/FilterBottomSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/filter/FilterBottomSheet.kt @@ -98,11 +98,8 @@ class FilterBottomSheet @JvmOverloads constructor(context: Context, attrs: Attri if (preferences.hideFiltersAtStart().getOrDefault()) { sheetBehavior?.hide() } - hide_filters.isChecked = preferences.hideFiltersAtStart().getOrDefault() - hide_filters.setOnCheckedChangeListener { _, isChecked -> - preferences.hideFiltersAtStart().set(isChecked) - if (isChecked) - onGroupClicked(ACTION_HIDE_FILTER_TIP) + expand_categories.setOnClickListener { + onGroupClicked(ACTION_EXPAND_COLLAPSE_ALL) } view_options.setOnClickListener { onGroupClicked(ACTION_DISPLAY) @@ -127,6 +124,23 @@ class FilterBottomSheet @JvmOverloads constructor(context: Context, attrs: Attri clearButton.setOnClickListener { clearFilters() } } + fun setExpandText(expand: Boolean) { + expand_categories.setText( + if (expand) { + R.string.expand_all_categories + } else { + R.string.collapse_all_categories + } + ) + expand_categories.setIconResource( + if (expand) { + R.drawable.ic_expand_less_24dp + } else { + R.drawable.ic_expand_more_24dp + } + ) + } + private fun stateChanged(state: Int) { val shadow = ((pager?.parent as? ViewGroup)?.findViewById(R.id.shadow) as? View) if (state == BottomSheetBehavior.STATE_COLLAPSED) { @@ -379,6 +393,7 @@ class FilterBottomSheet @JvmOverloads constructor(context: Context, attrs: Attri const val ACTION_FILTER = 1 const val ACTION_HIDE_FILTER_TIP = 2 const val ACTION_DISPLAY = 3 + const val ACTION_EXPAND_COLLAPSE_ALL = 4 const val STATE_IGNORE = 0 const val STATE_INCLUDE = 1 diff --git a/app/src/main/res/layout/filter_bottom_sheet.xml b/app/src/main/res/layout/filter_bottom_sheet.xml index 4dda02d0e1..edb86606a8 100644 --- a/app/src/main/res/layout/filter_bottom_sheet.xml +++ b/app/src/main/res/layout/filter_bottom_sheet.xml @@ -6,9 +6,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/bottom_sheet_rounded_background" + android:elevation="12dp" android:orientation="vertical" app:behavior_peekHeight="60dp" - android:elevation="12dp" app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"> + - - + + No matches found for your current filters Show all categories + Expand all categories + Collapse all categories Sort by: %1$s