150 lines
6.0 KiB
Kotlin
150 lines
6.0 KiB
Kotlin
package com.lagradost.cloudstream3.ui.settings
|
|
|
|
import android.os.Bundle
|
|
import android.view.View
|
|
import androidx.preference.PreferenceFragmentCompat
|
|
import androidx.preference.PreferenceManager
|
|
import com.lagradost.cloudstream3.R
|
|
import com.lagradost.cloudstream3.SearchQuality
|
|
import com.lagradost.cloudstream3.mvvm.logError
|
|
import com.lagradost.cloudstream3.ui.search.SearchResultBuilder
|
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref
|
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar
|
|
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showBottomDialog
|
|
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showDialog
|
|
import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showMultiDialog
|
|
import com.lagradost.cloudstream3.utils.UIHelper.hideKeyboard
|
|
|
|
class SettingsUI : PreferenceFragmentCompat() {
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
super.onViewCreated(view, savedInstanceState)
|
|
setUpToolbar(R.string.category_ui)
|
|
}
|
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
|
hideKeyboard()
|
|
setPreferencesFromResource(R.xml.settins_ui, rootKey)
|
|
val settingsManager = PreferenceManager.getDefaultSharedPreferences(requireContext())
|
|
|
|
getPref(R.string.poster_ui_key)?.setOnPreferenceClickListener {
|
|
val prefNames = resources.getStringArray(R.array.poster_ui_options)
|
|
val keys = resources.getStringArray(R.array.poster_ui_options_values)
|
|
val prefValues = keys.map {
|
|
settingsManager.getBoolean(it, true)
|
|
}.mapIndexedNotNull { index, b ->
|
|
if (b) {
|
|
index
|
|
} else null
|
|
}
|
|
|
|
activity?.showMultiDialog(
|
|
prefNames.toList(),
|
|
prefValues,
|
|
getString(R.string.poster_ui_settings),
|
|
{}) { list ->
|
|
val edit = settingsManager.edit()
|
|
for ((i, key) in keys.withIndex()) {
|
|
edit.putBoolean(key, list.contains(i))
|
|
}
|
|
edit.apply()
|
|
SearchResultBuilder.updateCache(it.context)
|
|
}
|
|
|
|
return@setOnPreferenceClickListener true
|
|
}
|
|
|
|
getPref(R.string.app_layout_key)?.setOnPreferenceClickListener {
|
|
val prefNames = resources.getStringArray(R.array.app_layout)
|
|
val prefValues = resources.getIntArray(R.array.app_layout_values)
|
|
|
|
val currentLayout =
|
|
settingsManager.getInt(getString(R.string.app_layout_key), -1)
|
|
|
|
activity?.showBottomDialog(
|
|
prefNames.toList(),
|
|
prefValues.indexOf(currentLayout),
|
|
getString(R.string.app_layout),
|
|
true,
|
|
{}) {
|
|
try {
|
|
settingsManager.edit()
|
|
.putInt(getString(R.string.app_layout_key), prefValues[it])
|
|
.apply()
|
|
activity?.recreate()
|
|
} catch (e: Exception) {
|
|
logError(e)
|
|
}
|
|
}
|
|
return@setOnPreferenceClickListener true
|
|
}
|
|
|
|
getPref(R.string.app_theme_key)?.setOnPreferenceClickListener {
|
|
val prefNames = resources.getStringArray(R.array.themes_names)
|
|
val prefValues = resources.getStringArray(R.array.themes_names_values)
|
|
|
|
val currentLayout =
|
|
settingsManager.getString(getString(R.string.app_theme_key), prefValues.first())
|
|
|
|
activity?.showBottomDialog(
|
|
prefNames.toList(),
|
|
prefValues.indexOf(currentLayout),
|
|
getString(R.string.app_theme_settings),
|
|
true,
|
|
{}) {
|
|
try {
|
|
settingsManager.edit()
|
|
.putString(getString(R.string.app_theme_key), prefValues[it])
|
|
.apply()
|
|
activity?.recreate()
|
|
} catch (e: Exception) {
|
|
logError(e)
|
|
}
|
|
}
|
|
return@setOnPreferenceClickListener true
|
|
}
|
|
getPref(R.string.primary_color_key)?.setOnPreferenceClickListener {
|
|
val prefNames = resources.getStringArray(R.array.themes_overlay_names)
|
|
val prefValues = resources.getStringArray(R.array.themes_overlay_names_values)
|
|
|
|
val currentLayout =
|
|
settingsManager.getString(getString(R.string.primary_color_key), prefValues.first())
|
|
|
|
activity?.showDialog(
|
|
prefNames.toList(),
|
|
prefValues.indexOf(currentLayout),
|
|
getString(R.string.primary_color_settings),
|
|
true,
|
|
{}) {
|
|
try {
|
|
settingsManager.edit()
|
|
.putString(getString(R.string.primary_color_key), prefValues[it])
|
|
.apply()
|
|
activity?.recreate()
|
|
} catch (e: Exception) {
|
|
logError(e)
|
|
}
|
|
}
|
|
return@setOnPreferenceClickListener true
|
|
}
|
|
|
|
getPref(R.string.pref_filter_search_quality_key)?.setOnPreferenceClickListener {
|
|
val names = enumValues<SearchQuality>().sorted().map { it.name }
|
|
val currentList = settingsManager.getStringSet(getString(R.string.pref_filter_search_quality_key), setOf())?.map {
|
|
it.toInt()
|
|
} ?: listOf()
|
|
|
|
activity?.showMultiDialog(
|
|
names,
|
|
currentList,
|
|
getString(R.string.pref_filter_search_quality),
|
|
{}) { selectedList ->
|
|
settingsManager.edit().putStringSet(
|
|
this.getString(R.string.pref_filter_search_quality_key),
|
|
selectedList.map { it.toString() }.toMutableSet()
|
|
).apply()
|
|
}
|
|
|
|
return@setOnPreferenceClickListener true
|
|
}
|
|
|
|
}
|
|
} |