Allow hiding "All" section in extensions list (closes #6081)

This commit is contained in:
arkon 2021-10-11 10:29:08 -04:00
parent 151193c4c3
commit 42026b49bf
2 changed files with 13 additions and 19 deletions

View file

@ -2,28 +2,27 @@ package eu.kanade.tachiyomi.ui.browse.extension
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.minusAssign
import eu.kanade.tachiyomi.data.preference.plusAssign
import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.ui.setting.SettingsController import eu.kanade.tachiyomi.ui.setting.SettingsController
import eu.kanade.tachiyomi.util.preference.onChange import eu.kanade.tachiyomi.util.preference.onChange
import eu.kanade.tachiyomi.util.preference.switchPreference import eu.kanade.tachiyomi.util.preference.switchPreference
import eu.kanade.tachiyomi.util.preference.titleRes import eu.kanade.tachiyomi.util.preference.titleRes
import eu.kanade.tachiyomi.util.system.LocaleHelper import eu.kanade.tachiyomi.util.system.LocaleHelper
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.injectLazy
import uy.kohesive.injekt.api.get
class ExtensionFilterController : SettingsController() { class ExtensionFilterController : SettingsController() {
private val extensionManager: ExtensionManager by injectLazy()
override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply { override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply {
titleRes = R.string.label_extensions titleRes = R.string.label_extensions
val activeLangs = preferences.enabledLanguages().get() val activeLangs = preferences.enabledLanguages().get()
val availableLangs = val availableLangs = extensionManager.availableExtensions.groupBy { it.lang }.keys
Injekt.get<ExtensionManager>().availableExtensions.groupBy { .sortedWith(compareBy({ it !in activeLangs }, { LocaleHelper.getSourceDisplayName(it, context) }))
it.lang
}.keys
.minus("all")
.sortedWith(compareBy({ it !in activeLangs }, { LocaleHelper.getSourceDisplayName(it, context) }))
availableLangs.forEach { availableLangs.forEach {
switchPreference { switchPreference {
@ -33,16 +32,11 @@ class ExtensionFilterController : SettingsController() {
isChecked = it in activeLangs isChecked = it in activeLangs
onChange { newValue -> onChange { newValue ->
val checked = newValue as Boolean if (newValue as Boolean) {
val currentActiveLangs = preferences.enabledLanguages().get() preferences.enabledLanguages() += it
} else {
preferences.enabledLanguages().set( preferences.enabledLanguages() -= it
if (checked) { }
currentActiveLangs + it
} else {
currentActiveLangs - it
}
)
true true
} }
} }

View file

@ -69,7 +69,7 @@ open class ExtensionPresenter(
.filter { avail -> .filter { avail ->
installed.none { it.pkgName == avail.pkgName } && installed.none { it.pkgName == avail.pkgName } &&
untrusted.none { it.pkgName == avail.pkgName } && untrusted.none { it.pkgName == avail.pkgName } &&
(avail.lang in activeLangs || avail.lang == "all") && avail.lang in activeLangs &&
(showNsfwSources || !avail.isNsfw) (showNsfwSources || !avail.isNsfw)
} }
.sortedBy { it.name } .sortedBy { it.name }