diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/FilteredLibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/FilteredLibraryController.kt index e1c36c8d1a..4f0d6e4066 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/FilteredLibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/FilteredLibraryController.kt @@ -7,7 +7,6 @@ import android.view.View import androidx.core.view.isVisible import eu.kanade.tachiyomi.ui.library.filter.FilterBottomSheet import eu.kanade.tachiyomi.util.view.collapse -import uy.kohesive.injekt.api.get class FilteredLibraryController(bundle: Bundle? = null) : LibraryController(bundle) { @@ -28,6 +27,8 @@ class FilteredLibraryController(bundle: Bundle? = null) : LibraryController(bund private set var filterLength: IntRange? = null private set + var filterCategories = emptyArray() + private set private var customTitle: String? = null @@ -42,6 +43,7 @@ class FilteredLibraryController(bundle: Bundle? = null) : LibraryController(bund filterSources: Array = emptyArray(), filterMangaType: Array = emptyArray(), filterLanguages: Array = emptyArray(), + filterCategories: Array = emptyArray(), filterTracked: Int = 0, filterTrackerName: String? = null, filterTrackingScore: Int = 0, @@ -54,6 +56,7 @@ class FilteredLibraryController(bundle: Bundle? = null) : LibraryController(bund this.filterSources = filterSources this.filterTracked = filterTracked this.filterMangaType = filterMangaType + this.filterCategories = filterCategories if (filterTracked != 0 && filterTrackerName != null) { FilterBottomSheet.FILTER_TRACKER = filterTrackerName } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHeaderHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHeaderHolder.kt index 0e3265422e..7e941d9cdc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHeaderHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHeaderHolder.kt @@ -160,8 +160,15 @@ class LibraryHeaderHolder(val view: View, val adapter: LibraryCategoryAdapter) : binding.rearView.updatePadding(top = binding.categoryTitle.marginTop - 6) val category = item.category - binding.categoryTitle.text = - if (category.isAlone && !category.isDynamic) { "" } else { category.name } + + val categoryName = if (category.isAlone && !category.isDynamic || + (adapter.libraryListener as? FilteredLibraryController)?.filterCategories?.size == 1 + ) { + "" + } else { + category.name + } + + binding.categoryTitle.text = categoryName + if (adapter.showNumber) { " (${adapter.itemsPerCategory[item.catId]})" } else { "" } 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 af196f7dea..08312c30e9 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 @@ -431,6 +431,10 @@ class LibraryPresenter( if (mangaLength != null) { if (item.manga.totalChapters !in mangaLength) return false } + val categories = customFilters.filterCategories + if (categories.isNotEmpty()) { + if (item.manga.category !in categories) return false + } return true } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsAdapter.kt index c0e82e7f5d..a142f605ad 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsAdapter.kt @@ -64,7 +64,6 @@ class StatsDetailsAdapter( holder.itemView.setOnClickListener { list[position].let { item -> listener?.onItemClicked(item.id, item.label) } } - holder.itemView.isClickable = stat != Stats.CATEGORY } override fun getItemCount(): Int { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsController.kt index 723a8dad7b..17245c7983 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsController.kt @@ -597,9 +597,10 @@ class StatsDetailsController : val languages = presenter.selectedLanguage.mapNotNull { lang -> presenter.languagesStats.firstNotNullOfOrNull { if (it.value == lang) it.key else null } }.toTypedArray() + val categories = presenter.selectedCategory.mapNotNull { it.id }.toTypedArray() val sources = presenter.selectedSource.map { it.id }.toTypedArray() when (val selectedStat = presenter.selectedStat) { - Stats.SOURCE, Stats.TAG, Stats.STATUS, Stats.SERIES_TYPE, Stats.SCORE, Stats.START_YEAR, Stats.LANGUAGE -> { + Stats.SOURCE, Stats.TAG, Stats.STATUS, Stats.SERIES_TYPE, Stats.SCORE, Stats.START_YEAR, Stats.LANGUAGE, Stats.CATEGORY -> { router.pushController( FilteredLibraryController( if (selectedStat == Stats.SCORE) { @@ -630,6 +631,10 @@ class StatsDetailsController : } else -> languages }, + filterCategories = when (selectedStat) { + Stats.CATEGORY -> arrayOf(id!!.toInt()) + else -> categories + }, filterTrackingScore = if (selectedStat == Stats.SCORE) id?.toInt() ?: -1 else 0, filterStartYear = if (selectedStat == Stats.START_YEAR) id?.toInt() ?: -1 else 0, ).withFadeTransaction(), @@ -648,6 +653,7 @@ class StatsDetailsController : filterStatus = statuses, filterSources = sources, filterLanguages = languages, + filterCategories = categories, filterTracked = if (serviceName == null) { FilterBottomSheet.STATE_EXCLUDE } else { @@ -674,6 +680,7 @@ class StatsDetailsController : filterStatus = statuses, filterSources = sources, filterLanguages = languages, + filterCategories = categories, filterLength = range, ).withFadeTransaction(), ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsPresenter.kt index e91daf5816..71d470f2c3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsPresenter.kt @@ -313,6 +313,7 @@ class StatsDetailsPresenter( totalChapters = mangaList.sumOf { it.totalChapters }, label = label, readDuration = mangaList.getReadDuration(), + id = category.toLong(), ), ) }