[fenix] For https://github.com/mozilla-mobile/fenix/issues/25115 - Remove showWallpap...
[gecko.git] / mobile / android / fenix / app / src / main / java / org / mozilla / fenix / settings / HomeSettingsFragment.kt
blobeac5e87136947527bdbd194908446d191a10da27
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 package org.mozilla.fenix.settings
7 import android.os.Bundle
8 import androidx.navigation.findNavController
9 import androidx.preference.CheckBoxPreference
10 import androidx.preference.Preference
11 import androidx.preference.PreferenceFragmentCompat
12 import androidx.preference.SwitchPreference
13 import org.mozilla.fenix.FeatureFlags
14 import org.mozilla.fenix.GleanMetrics.CustomizeHome
15 import org.mozilla.fenix.R
16 import org.mozilla.fenix.ext.settings
17 import org.mozilla.fenix.ext.showToolbar
18 import org.mozilla.fenix.utils.view.addToRadioGroup
20 /**
21  * Lets the user customize the home screen.
22  */
23 class HomeSettingsFragment : PreferenceFragmentCompat() {
25     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
26         setPreferencesFromResource(R.xml.home_preferences, rootKey)
27     }
29     override fun onResume() {
30         super.onResume()
31         showToolbar(getString(R.string.preferences_home_2))
32         setupPreferences()
33     }
35     private fun setupPreferences() {
36         requirePreference<SwitchPreference>(R.string.pref_key_show_top_sites).apply {
37             isChecked = context.settings().showTopSitesFeature
38             onPreferenceChangeListener = object : SharedPreferenceUpdater() {
39                 override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
40                     CustomizeHome.preferenceToggled.record(
41                         CustomizeHome.PreferenceToggledExtra(
42                             newValue as Boolean,
43                             "most_visited_sites"
44                         )
45                     )
47                     return super.onPreferenceChange(preference, newValue)
48                 }
49             }
50         }
52         requirePreference<CheckBoxPreference>(R.string.pref_key_enable_contile).apply {
53             isChecked = context.settings().showContileFeature
54             onPreferenceChangeListener = object : SharedPreferenceUpdater() {
55                 override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
56                     CustomizeHome.preferenceToggled.record(
57                         CustomizeHome.PreferenceToggledExtra(
58                             newValue as Boolean,
59                             "contile"
60                         )
61                     )
63                     return super.onPreferenceChange(preference, newValue)
64                 }
65             }
66         }
68         requirePreference<SwitchPreference>(R.string.pref_key_recent_tabs).apply {
69             isVisible = FeatureFlags.showRecentTabsFeature
70             isChecked = context.settings().showRecentTabsFeature
71             onPreferenceChangeListener = object : SharedPreferenceUpdater() {
72                 override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
73                     CustomizeHome.preferenceToggled.record(
74                         CustomizeHome.PreferenceToggledExtra(
75                             newValue as Boolean,
76                             "jump_back_in"
77                         )
78                     )
80                     return super.onPreferenceChange(preference, newValue)
81                 }
82             }
83         }
85         requirePreference<SwitchPreference>(R.string.pref_key_recent_bookmarks).apply {
86             isVisible = FeatureFlags.recentBookmarksFeature
87             isChecked = context.settings().showRecentBookmarksFeature
88             onPreferenceChangeListener = object : SharedPreferenceUpdater() {
89                 override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
90                     CustomizeHome.preferenceToggled.record(
91                         CustomizeHome.PreferenceToggledExtra(
92                             newValue as Boolean,
93                             "recently_saved"
94                         )
95                     )
97                     return super.onPreferenceChange(preference, newValue)
98                 }
99             }
100         }
102         requirePreference<SwitchPreference>(R.string.pref_key_pocket_homescreen_recommendations).apply {
103             isVisible = FeatureFlags.isPocketRecommendationsFeatureEnabled(context)
104             isChecked = context.settings().showPocketRecommendationsFeature
105             onPreferenceChangeListener = object : SharedPreferenceUpdater() {
106                 override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
107                     CustomizeHome.preferenceToggled.record(
108                         CustomizeHome.PreferenceToggledExtra(
109                             newValue as Boolean,
110                             "pocket"
111                         )
112                     )
114                     return super.onPreferenceChange(preference, newValue)
115                 }
116             }
117         }
119         requirePreference<SwitchPreference>(R.string.pref_key_history_metadata_feature).apply {
120             isVisible = FeatureFlags.historyMetadataUIFeature
121             isChecked = context.settings().historyMetadataUIFeature
122             onPreferenceChangeListener = object : SharedPreferenceUpdater() {
123                 override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
124                     CustomizeHome.preferenceToggled.record(
125                         CustomizeHome.PreferenceToggledExtra(
126                             newValue as Boolean,
127                             "recently_visited"
128                         )
129                     )
131                     return super.onPreferenceChange(preference, newValue)
132                 }
133             }
134         }
136         val openingScreenRadioHomepage =
137             requirePreference<RadioButtonPreference>(R.string.pref_key_start_on_home_always)
138         val openingScreenLastTab =
139             requirePreference<RadioButtonPreference>(R.string.pref_key_start_on_home_never)
140         val openingScreenAfterFourHours =
141             requirePreference<RadioButtonPreference>(R.string.pref_key_start_on_home_after_four_hours)
143         requirePreference<Preference>(R.string.pref_key_wallpapers).apply {
144             setOnPreferenceClickListener {
145                 view?.findNavController()?.navigate(
146                     HomeSettingsFragmentDirections.actionHomeSettingsFragmentToWallpaperSettingsFragment()
147                 )
148                 true
149             }
150         }
152         addToRadioGroup(
153             openingScreenRadioHomepage,
154             openingScreenLastTab,
155             openingScreenAfterFourHours
156         )
157     }