@@ -14,20 +14,23 @@ import androidx.preference.PreferenceFragmentCompat
1414import androidx.preference.SwitchPreferenceCompat
1515import com.wstxda.gsl.R
1616import com.wstxda.gsl.activity.SettingsActivity
17- import com.wstxda.gsl.fragments.view.DigitalAssistantPreference
17+ import com.wstxda.gsl.fragments.preferences.DigitalAssistantPreference
18+ import com.wstxda.gsl.fragments.preferences.ThemePreferences
1819import com.wstxda.gsl.shortcuts.*
1920import com.wstxda.gsl.ui.DigitalAssistantSetupDialog
2021import com.wstxda.gsl.ui.ThemeManager
2122import com.wstxda.gsl.ui.TileManager
2223import com.wstxda.gsl.utils.Constants
24+ import kotlinx.coroutines.flow.first
2325import kotlinx.coroutines.launch
2426
2527class SettingsFragment : PreferenceFragmentCompat () {
28+ private lateinit var themePreferences: ThemePreferences
2629
2730 private val digitalAssistantPreference by lazy { DigitalAssistantPreference (this ) }
2831
2932 private val digitalAssistantLauncher =
30- registerForActivityResult(ActivityResultContracts .StartActivityForResult ()) { _ ->
33+ registerForActivityResult(ActivityResultContracts .StartActivityForResult ()) {
3134 viewLifecycleOwner.lifecycleScope.launch {
3235 val isAssistSetupDone = digitalAssistantPreference.checkDigitalAssistSetupStatus()
3336 digitalAssistantPreference.updateDigitalAssistantPreferences(isAssistSetupDone)
@@ -54,6 +57,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
5457
5558 override fun onCreatePreferences (savedInstanceState : Bundle ? , rootKey : String? ) {
5659 setPreferencesFromResource(R .xml.preferences, rootKey)
60+ themePreferences = ThemePreferences (requireContext())
61+
5762 setupInitialVisibility()
5863 setupPreferences()
5964 }
@@ -66,7 +71,6 @@ class SettingsFragment : PreferenceFragmentCompat() {
6671 private fun setupInitialVisibility () {
6772 if (Build .VERSION .SDK_INT < Build .VERSION_CODES .TIRAMISU ) {
6873 findPreference<Preference >(Constants .MUSIC_SEARCH_TILE_KEY )?.isVisible = false
69- findPreference<Preference >(Constants .DIGITAL_ASSISTANT_SETUP_KEY )?.isVisible = false
7074 }
7175 }
7276
@@ -80,7 +84,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
8084
8185 private fun setupShortcutsActivityPreferences () {
8286 shortcuts.forEach { (key, activityClass) ->
83- findPreference<SwitchPreferenceCompat >(key)?.setOnPreferenceChangeListener { _, newValue ->
87+ ( findPreference<SwitchPreferenceCompat >(key) )?.setOnPreferenceChangeListener { _, newValue ->
8488 toggleActivityVisibility(activityClass, newValue as Boolean )
8589 true
8690 }
@@ -106,6 +110,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
106110 private fun setupDigitalAssistantPreferences () {
107111 val isAssistSetupDone = digitalAssistantPreference.checkDigitalAssistSetupStatus()
108112 digitalAssistantPreference.updateDigitalAssistantPreferences(isAssistSetupDone)
113+
109114 if (! isAssistSetupDone) {
110115 findPreference<Preference >(Constants .DIGITAL_ASSISTANT_SETUP_KEY )?.setOnPreferenceClickListener {
111116 DigitalAssistantSetupDialog .show(childFragmentManager, digitalAssistantLauncher)
@@ -115,8 +120,18 @@ class SettingsFragment : PreferenceFragmentCompat() {
115120 }
116121
117122 private fun setupThemePreference () {
118- findPreference<ListPreference >(Constants .SELECT_THEME_KEY )?.setOnPreferenceChangeListener { _, newValue ->
119- ThemeManager .setupTheme(newValue as String )
123+ val themePreference = findPreference<ListPreference >(" select_theme" )
124+ lifecycleScope.launch {
125+ val currentTheme = themePreferences.themeFlow.first()
126+ themePreference?.value = currentTheme
127+ }
128+
129+ themePreference?.setOnPreferenceChangeListener { _, newValue ->
130+ val selectedTheme = newValue as String
131+ lifecycleScope.launch {
132+ themePreferences.saveTheme(selectedTheme)
133+ ThemeManager .applyTheme(selectedTheme)
134+ }
120135 true
121136 }
122137 }
0 commit comments