2021-06-10 23:00:22 +00:00
|
|
|
package com.lagradost.cloudstream3.ui.settings
|
|
|
|
|
|
|
|
import android.os.Bundle
|
2021-08-15 17:38:41 +00:00
|
|
|
import android.widget.Toast
|
2021-09-07 19:16:12 +00:00
|
|
|
import androidx.appcompat.app.AlertDialog
|
2021-08-07 01:53:45 +00:00
|
|
|
import androidx.preference.Preference
|
2021-06-10 23:00:22 +00:00
|
|
|
import androidx.preference.PreferenceFragmentCompat
|
2021-08-30 21:42:58 +00:00
|
|
|
import androidx.preference.PreferenceManager
|
2021-09-12 14:10:22 +00:00
|
|
|
import com.lagradost.cloudstream3.APIHolder.getApiDubstatusSettings
|
|
|
|
import com.lagradost.cloudstream3.DubStatus
|
2021-09-02 14:06:43 +00:00
|
|
|
import com.lagradost.cloudstream3.MainActivity.Companion.setLocale
|
2021-08-24 22:19:15 +00:00
|
|
|
import com.lagradost.cloudstream3.MainActivity.Companion.showToast
|
2021-06-10 23:00:22 +00:00
|
|
|
import com.lagradost.cloudstream3.R
|
2021-09-02 14:06:43 +00:00
|
|
|
import com.lagradost.cloudstream3.mvvm.logError
|
2021-09-12 14:10:22 +00:00
|
|
|
import com.lagradost.cloudstream3.ui.APIRepository
|
2021-08-07 01:53:45 +00:00
|
|
|
import com.lagradost.cloudstream3.ui.subtitles.SubtitlesFragment
|
2021-08-15 17:38:41 +00:00
|
|
|
import com.lagradost.cloudstream3.utils.InAppUpdater.Companion.runAutoUpdate
|
2021-09-04 11:38:35 +00:00
|
|
|
import com.lagradost.cloudstream3.utils.Qualities
|
|
|
|
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showBottomDialog
|
2021-09-02 14:06:43 +00:00
|
|
|
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showDialog
|
2021-09-12 14:10:22 +00:00
|
|
|
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showMultiDialog
|
2021-08-04 13:30:34 +00:00
|
|
|
import com.lagradost.cloudstream3.utils.UIHelper.hideKeyboard
|
2021-08-15 17:38:41 +00:00
|
|
|
import kotlin.concurrent.thread
|
2021-06-10 23:00:22 +00:00
|
|
|
|
2021-09-02 14:06:43 +00:00
|
|
|
|
2021-06-10 23:00:22 +00:00
|
|
|
class SettingsFragment : PreferenceFragmentCompat() {
|
2021-09-04 11:38:35 +00:00
|
|
|
private var beneneCount = 0
|
|
|
|
|
|
|
|
private val languages = arrayListOf(
|
|
|
|
Triple("\uD83C\uDDEC\uD83C\uDDE7", "English", "en"),
|
2021-09-13 10:36:18 +00:00
|
|
|
Triple("\uD83C\uDDFB\uD83C\uDDF3", "Viet Nam", "vi"),
|
2021-09-04 11:38:35 +00:00
|
|
|
Triple("\uD83C\uDDF3\uD83C\uDDF1", "Dutch", "nl"),
|
|
|
|
Triple("\uD83C\uDDEB\uD83C\uDDF7", "French", "fr"),
|
|
|
|
Triple("\uD83C\uDDEC\uD83C\uDDF7", "Greek", "gr"),
|
|
|
|
Triple("\uD83C\uDDF8\uD83C\uDDEA", "Swedish", "sv"),
|
|
|
|
Triple("\uD83C\uDDF5\uD83C\uDDED", "Tagalog", "tl"),
|
2021-09-12 14:10:22 +00:00
|
|
|
Triple("\uD83C\uDDF5\uD83C\uDDF1", "Polish", "pl"),
|
2021-09-06 10:22:06 +00:00
|
|
|
Triple("\uD83C\uDDEE\uD83C\uDDF3", "Hindi", "hi"),
|
2021-09-06 17:49:52 +00:00
|
|
|
Triple("\uD83C\uDDEE\uD83C\uDDF3", "Malayalam", "ml"),
|
2021-09-04 11:38:35 +00:00
|
|
|
) // idk, if you find a way of automating this it would be great
|
2021-08-30 21:42:58 +00:00
|
|
|
|
2021-06-10 23:00:22 +00:00
|
|
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
2021-08-04 13:30:34 +00:00
|
|
|
hideKeyboard()
|
2021-06-10 23:00:22 +00:00
|
|
|
setPreferencesFromResource(R.xml.settings, rootKey)
|
2021-09-02 14:06:43 +00:00
|
|
|
val updatePreference = findPreference<Preference>(getString(R.string.manual_check_update_key))!!
|
|
|
|
val localePreference = findPreference<Preference>(getString(R.string.locale_key))!!
|
|
|
|
val benenePreference = findPreference<Preference>(getString(R.string.benene_count))!!
|
2021-09-04 11:38:35 +00:00
|
|
|
val watchQualityPreference = findPreference<Preference>(getString(R.string.quality_pref_key))!!
|
2021-09-07 19:16:12 +00:00
|
|
|
val legalPreference = findPreference<Preference>(getString(R.string.legal_notice_key))!!
|
2021-09-12 14:10:22 +00:00
|
|
|
val subdubPreference = findPreference<Preference>(getString(R.string.display_sub_key))!!
|
2021-09-07 19:16:12 +00:00
|
|
|
|
|
|
|
legalPreference.setOnPreferenceClickListener {
|
|
|
|
val builder: AlertDialog.Builder = AlertDialog.Builder(it.context)
|
|
|
|
builder.setTitle(R.string.legal_notice)
|
|
|
|
builder.setMessage(R.string.legal_notice_text)
|
|
|
|
builder.show()
|
|
|
|
return@setOnPreferenceClickListener true
|
|
|
|
}
|
2021-09-04 11:38:35 +00:00
|
|
|
|
2021-09-12 14:10:22 +00:00
|
|
|
subdubPreference.setOnPreferenceClickListener {
|
|
|
|
val settingsManager = PreferenceManager.getDefaultSharedPreferences(context)
|
|
|
|
|
|
|
|
activity?.getApiDubstatusSettings()?.let { current ->
|
|
|
|
val dublist = DubStatus.values()
|
|
|
|
val names = dublist.map { it.name }
|
|
|
|
|
|
|
|
val currentList = ArrayList<Int>()
|
|
|
|
for (i in current) {
|
|
|
|
currentList.add(dublist.indexOf(i))
|
|
|
|
}
|
|
|
|
|
|
|
|
context?.showMultiDialog(
|
|
|
|
names,
|
|
|
|
currentList,
|
|
|
|
getString(R.string.display_subbed_dubbed_settings),
|
|
|
|
{}) { selectedList ->
|
|
|
|
APIRepository.dubStatusActive = selectedList.map { dublist[it] }.toHashSet()
|
|
|
|
|
|
|
|
settingsManager.edit().putStringSet(
|
|
|
|
this.getString(R.string.display_sub_key),
|
|
|
|
selectedList.map { names[it] }.toMutableSet()
|
|
|
|
).apply()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return@setOnPreferenceClickListener true
|
|
|
|
}
|
|
|
|
|
2021-09-04 11:38:35 +00:00
|
|
|
watchQualityPreference.setOnPreferenceClickListener {
|
|
|
|
val prefNames = resources.getStringArray(R.array.quality_pref)
|
|
|
|
val prefValues = resources.getIntArray(R.array.quality_pref_values)
|
|
|
|
val settingsManager = PreferenceManager.getDefaultSharedPreferences(context)
|
|
|
|
|
2021-09-12 14:10:22 +00:00
|
|
|
val currentQuality =
|
|
|
|
settingsManager.getInt(getString(R.string.watch_quality_pref), Qualities.values().last().value)
|
2021-09-04 11:38:35 +00:00
|
|
|
context?.showBottomDialog(
|
|
|
|
prefNames.toList(),
|
|
|
|
prefValues.indexOf(currentQuality),
|
|
|
|
getString(R.string.watch_quality_pref),
|
|
|
|
true,
|
|
|
|
{}) {
|
|
|
|
settingsManager.edit().putInt(getString(R.string.watch_quality_pref), prefValues[it]).apply()
|
|
|
|
}
|
|
|
|
return@setOnPreferenceClickListener true
|
|
|
|
}
|
2021-08-30 21:58:09 +00:00
|
|
|
|
2021-08-30 22:07:39 +00:00
|
|
|
try {
|
|
|
|
val settingsManager = PreferenceManager.getDefaultSharedPreferences(context)
|
|
|
|
|
2021-09-04 11:38:35 +00:00
|
|
|
beneneCount = settingsManager.getInt(getString(R.string.benene_count), 0)
|
2021-09-01 12:02:32 +00:00
|
|
|
|
2021-09-02 14:06:43 +00:00
|
|
|
benenePreference.summary =
|
2021-09-04 11:38:35 +00:00
|
|
|
if (beneneCount <= 0) getString(R.string.benene_count_text_none) else getString(R.string.benene_count_text).format(
|
|
|
|
beneneCount
|
2021-08-30 22:07:39 +00:00
|
|
|
)
|
2021-09-02 14:06:43 +00:00
|
|
|
benenePreference.setOnPreferenceClickListener {
|
2021-08-30 22:07:39 +00:00
|
|
|
try {
|
2021-09-04 11:38:35 +00:00
|
|
|
beneneCount++
|
|
|
|
settingsManager.edit().putInt(getString(R.string.benene_count), beneneCount).apply()
|
|
|
|
it.summary = getString(R.string.benene_count_text).format(beneneCount)
|
2021-08-30 22:07:39 +00:00
|
|
|
} catch (e: Exception) {
|
|
|
|
e.printStackTrace()
|
2021-08-30 21:42:58 +00:00
|
|
|
}
|
2021-08-30 22:07:39 +00:00
|
|
|
|
|
|
|
return@setOnPreferenceClickListener true
|
2021-08-30 21:42:58 +00:00
|
|
|
}
|
2021-08-30 22:07:39 +00:00
|
|
|
} catch (e: Exception) {
|
|
|
|
e.printStackTrace()
|
2021-08-30 21:42:58 +00:00
|
|
|
}
|
|
|
|
|
2021-09-02 14:06:43 +00:00
|
|
|
updatePreference.setOnPreferenceClickListener {
|
2021-08-15 17:38:41 +00:00
|
|
|
thread {
|
|
|
|
if (!requireActivity().runAutoUpdate(false)) {
|
|
|
|
activity?.runOnUiThread {
|
2021-09-02 14:06:43 +00:00
|
|
|
showToast(activity, R.string.no_update_found, Toast.LENGTH_SHORT)
|
2021-08-15 17:38:41 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return@setOnPreferenceClickListener true
|
|
|
|
}
|
2021-09-02 14:06:43 +00:00
|
|
|
|
|
|
|
localePreference.setOnPreferenceClickListener { pref ->
|
2021-09-04 11:38:35 +00:00
|
|
|
val tempLangs = languages
|
|
|
|
if (beneneCount > 100) {
|
|
|
|
tempLangs.add(Triple("\uD83E\uDD8D", "mmmm... monke", "mo"))
|
2021-09-02 22:13:44 +00:00
|
|
|
}
|
2021-09-02 14:06:43 +00:00
|
|
|
val current = getCurrentLocale()
|
2021-09-04 11:38:35 +00:00
|
|
|
val languageCodes = tempLangs.map { it.third }
|
|
|
|
val languageNames = tempLangs.map { "${it.first} ${it.second}" }
|
2021-09-02 14:06:43 +00:00
|
|
|
val index = languageCodes.indexOf(current)
|
|
|
|
pref?.context?.showDialog(
|
|
|
|
languageNames, index, getString(R.string.app_language), true, { }
|
|
|
|
) { languageIndex ->
|
|
|
|
try {
|
|
|
|
val code = languageCodes[languageIndex]
|
|
|
|
setLocale(activity, code)
|
|
|
|
val settingsManager = PreferenceManager.getDefaultSharedPreferences(pref.context)
|
|
|
|
settingsManager.edit().putString(getString(R.string.locale_key), code).apply()
|
|
|
|
activity?.recreate()
|
|
|
|
} catch (e: Exception) {
|
|
|
|
logError(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return@setOnPreferenceClickListener true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun getCurrentLocale(): String {
|
|
|
|
val res = context!!.resources
|
|
|
|
// Change locale settings in the app.
|
|
|
|
// val dm = res.displayMetrics
|
|
|
|
val conf = res.configuration
|
|
|
|
return conf?.locale?.language ?: "en"
|
2021-06-10 23:00:22 +00:00
|
|
|
}
|
2021-08-07 01:53:45 +00:00
|
|
|
|
|
|
|
override fun onPreferenceTreeClick(preference: Preference?): Boolean {
|
|
|
|
if (preference != null) {
|
2021-09-04 11:38:35 +00:00
|
|
|
if (preference.key == getString(R.string.subtitle_settings_key)) {
|
2021-08-07 01:53:45 +00:00
|
|
|
SubtitlesFragment.push(activity, false)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return super.onPreferenceTreeClick(preference)
|
|
|
|
}
|
2021-09-03 17:25:50 +00:00
|
|
|
}
|