From 3cb05b1442590362d130e37d885d78b36fa4b38a Mon Sep 17 00:00:00 2001 From: Soitora Date: Sat, 4 Sep 2021 21:04:40 +0200 Subject: [PATCH] Hide language tag when only one language is used (#5834) * Hide lang tag when only one lang used * Comment the code Can't be too useless and do nothing, Ghostbear practically wrote the entire PR for me * Exclude 'all' from counting as a language Co-Authored-By: Andreas <6576096+ghostbear@users.noreply.github.com> * Use existing Preferences directly from Presenter * Replace regex with an existing value Co-authored-by: Andreas <6576096+ghostbear@users.noreply.github.com> (cherry picked from commit 763bd54707ce48ef67a0d5062cfbe014675ef522) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoHeaderAdapter.kt --- .../ui/manga/info/MangaInfoHeaderAdapter.kt | 54 ++++++++++++++++--- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoHeaderAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoHeaderAdapter.kt index 66771757d..28f7ac05e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoHeaderAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoHeaderAdapter.kt @@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.online.MetadataSource +import eu.kanade.tachiyomi.source.online.all.MergedSource import eu.kanade.tachiyomi.ui.base.controller.getMainAppBarHeight import eu.kanade.tachiyomi.ui.manga.MangaController import eu.kanade.tachiyomi.util.lang.launchUI @@ -334,13 +335,35 @@ class MangaInfoHeaderAdapter( // If manga source is known update source TextView. val mangaSource = source?.toString() with(binding.mangaSource) { - // SY --> - if (source?.id == MERGED_SOURCE_ID) { - text = mergedMangaReferences.map { - sourceManager.getOrStub(it.mangaSourceId).toString() - }.distinct().joinToString() - } else /* SY <-- */ if (mangaSource != null) { - text = mangaSource + if (mangaSource != null) { + val preferences = controller.presenter.preferences + val enabledLanguages = preferences.enabledLanguages().get() + .filterNot { it == "all" } + + val isMergedSource = source is MergedSource + + text = if (enabledLanguages.size == 1) { + // SY --> + if (isMergedSource) { + getMergedSourcesString(enabledLanguages, true) + } + + // For edge cases where user disables a source they got manga of in their library. + else /* SY <-- */ if (source.lang !in enabledLanguages) { + source.toString() + } else { + // Hide the language tag when only one language is used. + source.name + } + } else { + // Display the language tag when multiple languages are used. + if (isMergedSource) { + getMergedSourcesString(enabledLanguages, false) + } else { + source.toString() + } + } + setOnClickListener { controller.performSearch(sourceManager.getOrStub(source.id).name) } @@ -486,6 +509,23 @@ class MangaInfoHeaderAdapter( } // SY --> + private fun getMergedSourcesString(enabledLangs: List, onlyName: Boolean = false): String { + return if (onlyName) { + mergedMangaReferences.map { + val source = sourceManager.getOrStub(it.mangaSourceId) + if (source.lang !in enabledLangs) { + source.toString() + } else { + source.name + } + }.distinct().joinToString() + } else { + mergedMangaReferences.map { + sourceManager.getOrStub(it.mangaSourceId).toString() + }.distinct().joinToString() + } + } + private fun setChipsWithNamespace(genre: List?, meta: RaisedSearchMetadata?) { val namespaceTags = when { meta != null -> {