mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-13 12:38:58 +01:00
Remove Language class. App's language and hidden languages settings were reset
This commit is contained in:
@@ -6,7 +6,6 @@ import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
||||
import eu.kanade.tachiyomi.data.source.EN
|
||||
import eu.kanade.tachiyomi.data.source.Source
|
||||
import eu.kanade.tachiyomi.data.source.SourceManager
|
||||
import eu.kanade.tachiyomi.data.source.model.MangasPage
|
||||
@@ -333,13 +332,13 @@ open class CataloguePresenter : BasePresenter<CatalogueFragment>() {
|
||||
|
||||
// Ensure at least one language
|
||||
if (languages.isEmpty()) {
|
||||
languages.add(EN.code)
|
||||
languages.add("en")
|
||||
}
|
||||
|
||||
return sourceManager.getOnlineSources()
|
||||
.filter { it.lang.code in languages }
|
||||
.filter { it.lang in languages }
|
||||
.filterNot { it.id.toString() in hiddenCatalogues }
|
||||
.sortedBy { "(${it.lang.code}) ${it.name}" }
|
||||
.sortedBy { "(${it.lang}) ${it.name}" }
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -14,6 +14,7 @@ import eu.kanade.tachiyomi.util.plusAssign
|
||||
import eu.kanade.tachiyomi.widget.preference.IntListPreference
|
||||
import eu.kanade.tachiyomi.widget.preference.LibraryColumnsDialog
|
||||
import eu.kanade.tachiyomi.widget.preference.SimpleDialogPreference
|
||||
import net.xpece.android.support.preference.ListPreference
|
||||
import net.xpece.android.support.preference.MultiSelectListPreference
|
||||
import rx.Observable
|
||||
import rx.android.schedulers.AndroidSchedulers
|
||||
@@ -45,7 +46,7 @@ class SettingsGeneralFragment : SettingsFragment(),
|
||||
|
||||
val categoryUpdate: MultiSelectListPreference by bindPref(R.string.pref_library_update_categories_key)
|
||||
|
||||
val langPreference: IntListPreference by bindPref(R.string.pref_language_key)
|
||||
val langPreference: ListPreference by bindPref(R.string.pref_language_key)
|
||||
|
||||
override fun onViewCreated(view: View, savedState: Bundle?) {
|
||||
super.onViewCreated(view, savedState)
|
||||
@@ -105,9 +106,15 @@ class SettingsGeneralFragment : SettingsFragment(),
|
||||
true
|
||||
}
|
||||
|
||||
val langValues = langPreference.entryValues.map { value ->
|
||||
val locale = LocaleHelper.getLocaleFromString(value.toString())
|
||||
locale?.getDisplayName(locale)?.capitalize() ?: context.getString(R.string.system_default)
|
||||
}
|
||||
|
||||
langPreference.entries = langValues.toTypedArray()
|
||||
langPreference.setOnPreferenceChangeListener { preference, newValue ->
|
||||
(activity as SettingsActivity).parentFlags = SettingsActivity.FLAG_LANG_CHANGED
|
||||
LocaleHelper.changeLocale(newValue.toString().toInt())
|
||||
LocaleHelper.changeLocale(newValue.toString())
|
||||
LocaleHelper.updateCfg(activity.application, activity.baseContext.resources.configuration)
|
||||
activity.recreate()
|
||||
true
|
||||
|
||||
@@ -8,13 +8,14 @@ import android.view.View
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
||||
import eu.kanade.tachiyomi.data.source.SourceManager
|
||||
import eu.kanade.tachiyomi.data.source.getLanguages
|
||||
import eu.kanade.tachiyomi.data.source.online.OnlineSource
|
||||
import eu.kanade.tachiyomi.widget.preference.LoginCheckBoxPreference
|
||||
import eu.kanade.tachiyomi.widget.preference.SourceLoginDialog
|
||||
import eu.kanade.tachiyomi.widget.preference.SwitchPreferenceCategory
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.util.*
|
||||
|
||||
class SettingsSourcesFragment : SettingsFragment() {
|
||||
|
||||
@@ -45,33 +46,35 @@ class SettingsSourcesFragment : SettingsFragment() {
|
||||
// Get the list of active language codes.
|
||||
val activeLangsCodes = preferences.enabledLanguages().getOrDefault()
|
||||
|
||||
// Get the list of languages ordered by name.
|
||||
val langs = getLanguages().sortedBy { it.lang }
|
||||
// Get a map of sources grouped by language.
|
||||
val sourcesByLang = onlineSources.groupByTo(TreeMap(), { it.lang })
|
||||
|
||||
// Order first by active languages, then inactive ones
|
||||
val orderedLangs = langs.filter { it.code in activeLangsCodes } +
|
||||
langs.filterNot { it.code in activeLangsCodes }
|
||||
val orderedLangs = sourcesByLang.keys.filter { it in activeLangsCodes } +
|
||||
sourcesByLang.keys.filterNot { it in activeLangsCodes }
|
||||
|
||||
orderedLangs.forEach { lang ->
|
||||
val sources = sourcesByLang[lang].orEmpty().sortedBy { it.name }
|
||||
|
||||
// Create a preference group and set initial state and change listener
|
||||
SwitchPreferenceCategory(context).apply {
|
||||
preferenceScreen.addPreference(this)
|
||||
title = lang.lang
|
||||
title = Locale(lang).let { it.getDisplayLanguage(it).capitalize() }
|
||||
isPersistent = false
|
||||
if (lang.code in activeLangsCodes) {
|
||||
if (lang in activeLangsCodes) {
|
||||
setChecked(true)
|
||||
addLanguageSources(this)
|
||||
addLanguageSources(this, sources)
|
||||
}
|
||||
|
||||
setOnPreferenceChangeListener { preference, any ->
|
||||
val checked = any as Boolean
|
||||
val current = preferences.enabledLanguages().getOrDefault()
|
||||
if (!checked) {
|
||||
preferences.enabledLanguages().set(current - lang.code)
|
||||
preferences.enabledLanguages().set(current - lang)
|
||||
removeAll()
|
||||
} else {
|
||||
preferences.enabledLanguages().set(current + lang.code)
|
||||
addLanguageSources(this)
|
||||
preferences.enabledLanguages().set(current + lang)
|
||||
addLanguageSources(this, sources)
|
||||
}
|
||||
true
|
||||
}
|
||||
@@ -84,8 +87,7 @@ class SettingsSourcesFragment : SettingsFragment() {
|
||||
*
|
||||
* @param group the language category.
|
||||
*/
|
||||
private fun addLanguageSources(group: SwitchPreferenceCategory) {
|
||||
val sources = onlineSources.filter { it.lang.lang == group.title }.sortedBy { it.name }
|
||||
private fun addLanguageSources(group: SwitchPreferenceCategory, sources: List<OnlineSource>) {
|
||||
val hiddenCatalogues = preferences.hiddenCatalogues().getOrDefault()
|
||||
|
||||
sources.forEach { source ->
|
||||
|
||||
Reference in New Issue
Block a user