From 7e95a0bfe12d215f9f2111e2c28cc438adfd7653 Mon Sep 17 00:00:00 2001 From: Michatec Date: Sat, 28 Mar 2026 22:21:38 +0100 Subject: [PATCH] refactor(ui): unify theme selection by removing TV-specific handling --- .../com/michatec/radio/SettingsFragment.kt | 65 +------------------ 1 file changed, 2 insertions(+), 63 deletions(-) diff --git a/app/src/main/java/com/michatec/radio/SettingsFragment.kt b/app/src/main/java/com/michatec/radio/SettingsFragment.kt index 0d488eb..91a5ac8 100644 --- a/app/src/main/java/com/michatec/radio/SettingsFragment.kt +++ b/app/src/main/java/com/michatec/radio/SettingsFragment.kt @@ -5,7 +5,6 @@ import android.content.ClipData import android.content.ClipboardManager import android.content.Context import android.content.Intent -import android.content.pm.PackageManager import android.net.Uri import android.os.Build import android.os.Bundle @@ -17,7 +16,6 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.net.toUri import androidx.navigation.fragment.findNavController import androidx.preference.* -import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar import com.michatec.radio.dialogs.ErrorDialog import com.michatec.radio.dialogs.ThemeSelectionDialog @@ -66,15 +64,8 @@ class SettingsFragment : PreferenceFragmentCompat(), YesNoDialog.YesNoDialogList AppThemeHelper.getCurrentTheme(activity as Context) }" preferenceThemeSelection.setOnPreferenceClickListener { - // check if device is a TV - val isTv = requireContext().packageManager.hasSystemFeature(android.content.pm.PackageManager.FEATURE_LEANBACK) - if (isTv) { - // show TV-specific theme selection dialog - ThemeSelectionDialog(this).show(activity as Context) - } else { - // show standard theme selection dialog for non-TV devices - showThemeSelectionDialog() - } + // show theme selection dialog + ThemeSelectionDialog(this).show(activity as Context) return@setOnPreferenceClickListener true } @@ -297,58 +288,6 @@ class SettingsFragment : PreferenceFragmentCompat(), YesNoDialog.YesNoDialogList preferenceScreen = screen } - - /* Shows theme selection dialog for non-TV devices */ - private fun showThemeSelectionDialog() { - val themes = arrayOf( - getString(R.string.pref_theme_selection_mode_device_default), - getString(R.string.pref_theme_selection_mode_light), - getString(R.string.pref_theme_selection_mode_dark) - ) - val themeValues = arrayOf( - Keys.STATE_THEME_FOLLOW_SYSTEM, - Keys.STATE_THEME_LIGHT_MODE, - Keys.STATE_THEME_DARK_MODE - ) - val currentTheme = AppThemeHelper.getCurrentTheme(activity as Context) - val currentIndex = themes.indexOf(currentTheme) - - val builder = MaterialAlertDialogBuilder(activity as Context) - builder.setTitle(getString(R.string.pref_theme_selection_title)) - builder.setSingleChoiceItems(themes, currentIndex) { dialog, which -> - val selectedTheme = themeValues[which] - AppThemeHelper.setTheme(selectedTheme) - // update summary - val preferenceThemeSelection = findPreference(Keys.PREF_THEME_SELECTION) - preferenceThemeSelection?.summary = "${getString(R.string.pref_theme_selection_summary)} ${themes[which]}" - dialog.dismiss() - } - builder.setNegativeButton(R.string.dialog_generic_button_cancel, null) - builder.show() - } - - - /* Overrides onThemeSelectionDialog from ThemeSelectionDialogListener */ - override fun onThemeSelectionDialog(dialogResult: Boolean, selectedTheme: String) { - if (dialogResult) { - // update summary - val themes = arrayOf( - getString(R.string.pref_theme_selection_mode_device_default), - getString(R.string.pref_theme_selection_mode_light), - getString(R.string.pref_theme_selection_mode_dark) - ) - val themeValues = arrayOf( - Keys.STATE_THEME_FOLLOW_SYSTEM, - Keys.STATE_THEME_LIGHT_MODE, - Keys.STATE_THEME_DARK_MODE - ) - val index = themeValues.indexOf(selectedTheme) - val preferenceThemeSelection = findPreference(Keys.PREF_THEME_SELECTION) - preferenceThemeSelection?.summary = "${getString(R.string.pref_theme_selection_summary)} ${themes[index]}" - } - } - - /* Overrides onYesNoDialog from YesNoDialogListener */ override fun onYesNoDialog( type: Int,