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.settings.SettingsFragment.Companion.getFolderSize import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar import com.lagradost.cloudstream3.ui.subtitles.ChromecastSubtitlesFragment import com.lagradost.cloudstream3.ui.subtitles.SubtitlesFragment import com.lagradost.cloudstream3.utils.Qualities import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showBottomDialog import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showDialog import com.lagradost.cloudstream3.utils.UIHelper.hideKeyboard class SettingsPlayer : PreferenceFragmentCompat() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setUpToolbar(R.string.category_player) } override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { hideKeyboard() setPreferencesFromResource(R.xml.settings_player, rootKey) val settingsManager = PreferenceManager.getDefaultSharedPreferences(requireContext()) getPref(R.string.video_buffer_length_key)?.setOnPreferenceClickListener { val prefNames = resources.getStringArray(R.array.video_buffer_length_names) val prefValues = resources.getIntArray(R.array.video_buffer_length_values) val currentPrefSize = settingsManager.getInt(getString(R.string.video_buffer_length_key), 0) activity?.showDialog( prefNames.toList(), prefValues.indexOf(currentPrefSize), getString(R.string.video_buffer_length_settings), true, {}) { settingsManager.edit() .putInt(getString(R.string.video_buffer_length_key), prefValues[it]) .apply() } return@setOnPreferenceClickListener true } getPref(R.string.prefer_limit_title_key)?.setOnPreferenceClickListener { val prefNames = resources.getStringArray(R.array.limit_title_pref_names) val prefValues = resources.getIntArray(R.array.limit_title_pref_values) val current = settingsManager.getInt(getString(R.string.prefer_limit_title_key), 0) activity?.showBottomDialog( prefNames.toList(), prefValues.indexOf(current), getString(R.string.limit_title), true, {}) { settingsManager.edit() .putInt(getString(R.string.prefer_limit_title_key), prefValues[it]) .apply() } return@setOnPreferenceClickListener true } /*(getPref(R.string.double_tap_seek_time_key) as? SeekBarPreference?)?.let { }*/ getPref(R.string.prefer_limit_title_rez_key)?.setOnPreferenceClickListener { val prefNames = resources.getStringArray(R.array.limit_title_rez_pref_names) val prefValues = resources.getIntArray(R.array.limit_title_rez_pref_values) val current = settingsManager.getInt(getString(R.string.prefer_limit_title_rez_key), 3) activity?.showBottomDialog( prefNames.toList(), prefValues.indexOf(current), getString(R.string.limit_title_rez), true, {}) { settingsManager.edit() .putInt(getString(R.string.prefer_limit_title_rez_key), prefValues[it]) .apply() } return@setOnPreferenceClickListener true } getPref(R.string.quality_pref_key)?.setOnPreferenceClickListener { val prefValues = Qualities.values().map { it.value }.reversed().toMutableList() prefValues.remove(Qualities.Unknown.value) val prefNames = prefValues.map { Qualities.getStringByInt(it) } val currentQuality = settingsManager.getInt( getString(R.string.quality_pref_key), Qualities.values().last().value ) activity?.showBottomDialog( prefNames.toList(), prefValues.indexOf(currentQuality), getString(R.string.watch_quality_pref), true, {}) { settingsManager.edit().putInt(getString(R.string.quality_pref_key), prefValues[it]) .apply() } return@setOnPreferenceClickListener true } getPref(R.string.subtitle_settings_key)?.setOnPreferenceClickListener { SubtitlesFragment.push(activity, false) return@setOnPreferenceClickListener true } getPref(R.string.subtitle_settings_chromecast_key)?.setOnPreferenceClickListener { ChromecastSubtitlesFragment.push(activity, false) return@setOnPreferenceClickListener true } getPref(R.string.video_buffer_disk_key)?.setOnPreferenceClickListener { val prefNames = resources.getStringArray(R.array.video_buffer_size_names) val prefValues = resources.getIntArray(R.array.video_buffer_size_values) val currentPrefSize = settingsManager.getInt(getString(R.string.video_buffer_disk_key), 0) activity?.showDialog( prefNames.toList(), prefValues.indexOf(currentPrefSize), getString(R.string.video_buffer_disk_settings), true, {}) { settingsManager.edit() .putInt(getString(R.string.video_buffer_disk_key), prefValues[it]) .apply() } return@setOnPreferenceClickListener true } getPref(R.string.video_buffer_size_key)?.setOnPreferenceClickListener { val prefNames = resources.getStringArray(R.array.video_buffer_size_names) val prefValues = resources.getIntArray(R.array.video_buffer_size_values) val currentPrefSize = settingsManager.getInt(getString(R.string.video_buffer_size_key), 0) activity?.showDialog( prefNames.toList(), prefValues.indexOf(currentPrefSize), getString(R.string.video_buffer_size_settings), true, {}) { settingsManager.edit() .putInt(getString(R.string.video_buffer_size_key), prefValues[it]) .apply() } return@setOnPreferenceClickListener true } getPref(R.string.video_buffer_clear_key)?.let { pref -> val cacheDir = context?.cacheDir ?: return@let fun updateSummery() { try { pref.summary = getString(R.string.mb_format).format(getFolderSize(cacheDir) / (1024L * 1024L)) } catch (e: Exception) { logError(e) } } updateSummery() pref.setOnPreferenceClickListener { try { cacheDir.deleteRecursively() updateSummery() } catch (e: Exception) { logError(e) } return@setOnPreferenceClickListener true } } } }