package com.github.libretube.preferences import android.content.ActivityNotFoundException import android.content.Intent import android.os.Bundle import android.provider.Settings import android.widget.Toast import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.SwitchPreferenceCompat import com.github.libretube.R import com.github.libretube.activities.SettingsActivity import com.github.libretube.dialogs.RequireRestartDialog import com.github.libretube.util.ThemeHelper import com.github.libretube.views.MaterialPreferenceFragment import com.google.android.material.color.DynamicColors class AppearanceSettings : MaterialPreferenceFragment() { private val TAG = "AppearanceSettings" override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.appearance_settings, rootKey) val settingsActivity = activity as SettingsActivity settingsActivity.changeTopBarText(getString(R.string.appearance)) val themeToggle = findPreference(PreferenceKeys.THEME_MODE) themeToggle?.setOnPreferenceChangeListener { _, _ -> val restartDialog = RequireRestartDialog() restartDialog.show(childFragmentManager, RequireRestartDialog::class.java.name) true } val pureTheme = findPreference(PreferenceKeys.PURE_THEME) pureTheme?.setOnPreferenceChangeListener { _, _ -> val restartDialog = RequireRestartDialog() restartDialog.show(childFragmentManager, RequireRestartDialog::class.java.name) true } val accentColor = findPreference(PreferenceKeys.ACCENT_COLOR) updateAccentColorValues(accentColor!!) accentColor.setOnPreferenceChangeListener { _, _ -> val restartDialog = RequireRestartDialog() restartDialog.show(childFragmentManager, RequireRestartDialog::class.java.name) true } val iconChange = findPreference(PreferenceKeys.APP_ICON) iconChange?.setOnPreferenceChangeListener { _, newValue -> ThemeHelper.changeIcon(requireContext(), newValue.toString()) true } val labelVisibilityMode = findPreference(PreferenceKeys.LABEL_VISIBILITY) labelVisibilityMode?.setOnPreferenceChangeListener { _, _ -> val restartDialog = RequireRestartDialog() restartDialog.show(childFragmentManager, RequireRestartDialog::class.java.name) true } val systemCaptionStyle = findPreference(PreferenceKeys.SYSTEM_CAPTION_STYLE) val captionSettings = findPreference(PreferenceKeys.CAPTION_SETTINGS) captionSettings?.isVisible = PreferenceHelper.getBoolean(PreferenceKeys.SYSTEM_CAPTION_STYLE, true) systemCaptionStyle?.setOnPreferenceChangeListener { _, newValue -> captionSettings?.isVisible = newValue as Boolean true } captionSettings?.setOnPreferenceClickListener { try { val captionSettingsIntent = Intent(Settings.ACTION_CAPTIONING_SETTINGS) startActivity(captionSettingsIntent) } catch (e: ActivityNotFoundException) { Toast.makeText(activity, R.string.error, Toast.LENGTH_SHORT).show() } true } } // remove material you from accent color option if not available private fun updateAccentColorValues(pref: ListPreference) { val dynamicColorsAvailable = DynamicColors.isDynamicColorAvailable() if (!dynamicColorsAvailable) { val entries = pref.entries.toMutableList() entries -= entries[0] pref.entries = entries.toTypedArray() val values = pref.entryValues.toMutableList() values -= values[0] pref.entryValues = values.toTypedArray() } } }