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.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 } } }