diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentLanguage.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentLanguage.kt index e96a662c370..42a62ed52dd 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentLanguage.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentLanguage.kt @@ -50,18 +50,18 @@ class SetupFragmentLanguage : BaseFragment( appIconImage.setImageDrawable(ContextCompat.getDrawable(ctx, drawable)) } - val current = getCurrentLocale(ctx) - val languageTagsIETF = appLanguages.map { it.second } - val languageNames = appLanguages.map { it.nameNextToFlagEmoji() } - val currentIndex = languageTagsIETF.indexOf(current) + val tags = appLanguages.map { it.second } + val current = getCurrentLocale(ctx).replace('_', '-') + val currentIndex = tags.indexOf(current).takeIf { it >= 0 } + ?: tags.indexOf(current.substringBefore('-')) - arrayAdapter.addAll(languageNames) + arrayAdapter.addAll(appLanguages.map { it.nameNextToFlagEmoji() }) listview1.adapter = arrayAdapter listview1.choiceMode = AbsListView.CHOICE_MODE_SINGLE - listview1.setItemChecked(currentIndex, true) + if (currentIndex >= 0) listview1.setItemChecked(currentIndex, true) listview1.setOnItemClickListener { _, _, selectedLangIndex, _ -> - val langTagIETF = languageTagsIETF[selectedLangIndex] + val langTagIETF = tags[selectedLangIndex] CommonActivity.setLocale(activity, langTagIETF) settingsManager.edit { putString(getString(R.string.locale_key), langTagIETF) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentMedia.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentMedia.kt index 8da121daa98..45755b94735 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentMedia.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentMedia.kt @@ -4,7 +4,6 @@ import android.view.View import android.widget.AbsListView import android.widget.ArrayAdapter import androidx.core.content.edit -import androidx.core.util.forEach import androidx.navigation.fragment.findNavController import androidx.preference.PreferenceManager import com.lagradost.cloudstream3.R @@ -27,40 +26,41 @@ class SetupFragmentMedia : BaseFragment( safe { val ctx = context ?: return@safe val settingsManager = PreferenceManager.getDefaultSharedPreferences(ctx) + val prefKey = getString(R.string.prefer_media_type_key) val arrayAdapter = ArrayAdapter(ctx, R.layout.sort_bottom_single_choice) - val names = enumValues().sorted().map { it.name } - val selected = mutableListOf() + val sortedTypes = enumValues().sorted() - arrayAdapter.addAll(names) + arrayAdapter.addAll(sortedTypes.map { it.name }) binding.apply { listview1.let { it.adapter = arrayAdapter it.choiceMode = AbsListView.CHOICE_MODE_MULTIPLE - it.setOnItemClickListener { _, _, _, _ -> - it.checkedItemPositions?.forEach { key, value -> - if (value) { - selected.add(key) - } else { - selected.remove(key) - } - } - val prefValues = selected.mapNotNull { pos -> - val item = - it.getItemAtPosition(pos)?.toString() ?: return@mapNotNull null - val itemVal = TvType.valueOf(item) - itemVal.ordinal.toString() - }.toSet() - settingsManager.edit { - putStringSet(getString(R.string.prefer_media_type_key), prefValues) - } + val stored = settingsManager.getStringSet(prefKey, null) + sortedTypes.forEachIndexed { index, type -> + // All media types except NSFW are checked by default + val isChecked = stored?.contains(type.ordinal.toString()) + ?: (type != TvType.NSFW) + it.setItemChecked(index, isChecked) + } + + val saveSelection = { + val values = sortedTypes + .filterIndexed { index, _ -> it.isItemChecked(index) } + .map { type -> type.ordinal.toString() } + .toSet() + settingsManager.edit { putStringSet(prefKey, values) } // Regenerate set homepage DataStoreHelper.currentHomePage = null } + + if (stored == null) saveSelection() + + it.setOnItemClickListener { _, _, _, _ -> saveSelection() } } nextBtt.setOnClickListener {