mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-14 04:58:56 +01:00
Add option to hide library category tabs
This commit is contained in:
@@ -135,8 +135,26 @@ class LibraryController(
|
||||
retainViewMode = RetainViewMode.RETAIN_DETACH
|
||||
}
|
||||
|
||||
private var title: String? = null
|
||||
set(value) {
|
||||
if (field != value) {
|
||||
field = value
|
||||
setTitle()
|
||||
}
|
||||
}
|
||||
|
||||
override fun getTitle(): String? {
|
||||
return resources?.getString(R.string.label_library)
|
||||
return title ?: resources?.getString(R.string.label_library)
|
||||
}
|
||||
|
||||
private fun updateTitle() {
|
||||
if (preferences.categoryTabs().get()) {
|
||||
title = resources?.getString(R.string.label_library)
|
||||
} else {
|
||||
adapter?.categories?.get(binding.libraryPager.currentItem)?.let {
|
||||
title = it.name
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun createPresenter(): LibraryPresenter {
|
||||
@@ -157,6 +175,7 @@ class LibraryController(
|
||||
.onEach {
|
||||
preferences.lastUsedCategory().set(it)
|
||||
activeCategory = it
|
||||
updateTitle()
|
||||
}
|
||||
.launchIn(scope)
|
||||
|
||||
@@ -175,7 +194,8 @@ class LibraryController(
|
||||
is LibrarySettingsSheet.Filter.FilterGroup -> onFilterChanged()
|
||||
is LibrarySettingsSheet.Sort.SortGroup -> onSortChanged()
|
||||
is LibrarySettingsSheet.Display.DisplayGroup -> reattachAdapter()
|
||||
is LibrarySettingsSheet.Display.BadgeGroup -> onBadgeChanged()
|
||||
is LibrarySettingsSheet.Display.BadgeGroup -> onBadgeSettingChanged()
|
||||
is LibrarySettingsSheet.Display.TabsGroup -> onTabsSettingsChanged()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,7 +274,8 @@ class LibraryController(
|
||||
// Restore active category.
|
||||
binding.libraryPager.setCurrentItem(activeCat, false)
|
||||
|
||||
tabsVisibilityRelay.call(categories.size > 1)
|
||||
// Trigger display of tabs
|
||||
onTabsSettingsChanged()
|
||||
|
||||
// Delay the scroll position to allow the view to be properly measured.
|
||||
view.post {
|
||||
@@ -280,18 +301,20 @@ class LibraryController(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when a filter is changed.
|
||||
*/
|
||||
private fun onFilterChanged() {
|
||||
presenter.requestFilterUpdate()
|
||||
activity?.invalidateOptionsMenu()
|
||||
}
|
||||
|
||||
private fun onBadgeChanged() {
|
||||
private fun onBadgeSettingChanged() {
|
||||
presenter.requestBadgesUpdate()
|
||||
}
|
||||
|
||||
private fun onTabsSettingsChanged() {
|
||||
tabsVisibilityRelay.call(preferences.categoryTabs().get() && adapter?.categories?.size ?: 0 > 1)
|
||||
updateTitle()
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the sorting mode is changed.
|
||||
*/
|
||||
|
||||
@@ -12,7 +12,7 @@ import eu.kanade.tachiyomi.widget.TabbedBottomSheetDialog
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
class LibrarySettingsSheet(
|
||||
private val activity: Activity,
|
||||
activity: Activity,
|
||||
onGroupClickListener: (ExtendedNavigationView.Group) -> Unit
|
||||
) : TabbedBottomSheetDialog(activity) {
|
||||
|
||||
@@ -178,7 +178,7 @@ class LibrarySettingsSheet(
|
||||
Settings(context, attrs) {
|
||||
|
||||
init {
|
||||
setGroups(listOf(DisplayGroup(), BadgeGroup()))
|
||||
setGroups(listOf(DisplayGroup(), BadgeGroup(), TabsGroup()))
|
||||
}
|
||||
|
||||
inner class DisplayGroup : Group {
|
||||
@@ -187,7 +187,7 @@ class LibrarySettingsSheet(
|
||||
private val comfortableGrid = Item.Radio(R.string.action_display_comfortable_grid, this)
|
||||
private val list = Item.Radio(R.string.action_display_list, this)
|
||||
|
||||
override val header = null
|
||||
override val header = Item.Header(R.string.action_display_mode)
|
||||
override val items = listOf(compactGrid, comfortableGrid, list)
|
||||
override val footer = null
|
||||
|
||||
@@ -222,7 +222,7 @@ class LibrarySettingsSheet(
|
||||
private val downloadBadge = Item.CheckboxGroup(R.string.action_display_download_badge, this)
|
||||
private val unreadBadge = Item.CheckboxGroup(R.string.action_display_unread_badge, this)
|
||||
|
||||
override val header = null
|
||||
override val header = Item.Header(R.string.badges_header)
|
||||
override val items = listOf(downloadBadge, unreadBadge)
|
||||
override val footer = null
|
||||
|
||||
@@ -241,6 +241,27 @@ class LibrarySettingsSheet(
|
||||
adapter.notifyItemChanged(item)
|
||||
}
|
||||
}
|
||||
|
||||
inner class TabsGroup : Group {
|
||||
private val showTabs = Item.CheckboxGroup(R.string.action_display_show_tabs, this)
|
||||
|
||||
override val header = Item.Header(R.string.tabs_header)
|
||||
override val items = listOf(showTabs)
|
||||
override val footer = null
|
||||
|
||||
override fun initModels() {
|
||||
showTabs.checked = preferences.categoryTabs().get()
|
||||
}
|
||||
|
||||
override fun onItemClicked(item: Item) {
|
||||
item as Item.CheckboxGroup
|
||||
item.checked = !item.checked
|
||||
when (item) {
|
||||
showTabs -> preferences.categoryTabs().set((item.checked))
|
||||
}
|
||||
adapter.notifyItemChanged(item)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open inner class Settings(context: Context, attrs: AttributeSet?) :
|
||||
|
||||
Reference in New Issue
Block a user