Revision control
Copy as Markdown
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
package org.mozilla.focus.autocomplete
import android.content.SharedPreferences
import android.os.Bundle
import androidx.preference.Preference
import org.mozilla.focus.GleanMetrics.Autocomplete
import org.mozilla.focus.R
import org.mozilla.focus.ext.requireComponents
import org.mozilla.focus.ext.requirePreference
import org.mozilla.focus.ext.showToolbar
import org.mozilla.focus.settings.BaseSettingsFragment
import org.mozilla.focus.state.AppAction
import org.mozilla.focus.state.Screen
/**
* Settings UI for configuring autocomplete.
*/
class AutocompleteSettingsFragment : BaseSettingsFragment(), SharedPreferences.OnSharedPreferenceChangeListener {
private lateinit var topSitesAutocomplete: AutocompleteDefaultDomainsPreference
private lateinit var favoriteSitesAutocomplete: AutocompleteCustomDomainsPreference
override fun onCreatePreferences(p0: Bundle?, p1: String?) {
addPreferencesFromResource(R.xml.autocomplete)
val appName = requireContext().getString(R.string.app_name)
topSitesAutocomplete =
requirePreference<AutocompleteDefaultDomainsPreference>(R.string.pref_key_autocomplete_preinstalled).apply {
summary =
context.getString(R.string.preference_autocomplete_topsite_summary2, appName)
}
favoriteSitesAutocomplete =
requirePreference<AutocompleteCustomDomainsPreference>(R.string.pref_key_autocomplete_custom).apply {
summary =
context.getString(R.string.preference_autocomplete_user_list_summary2, appName)
}
}
override fun onResume() {
super.onResume()
showToolbar(getString(R.string.preference_subitem_autocomplete))
preferenceManager.sharedPreferences?.registerOnSharedPreferenceChangeListener(this)
}
override fun onPause() {
super.onPause()
preferenceManager.sharedPreferences?.unregisterOnSharedPreferenceChangeListener(this)
}
override fun onPreferenceTreeClick(preference: Preference): Boolean {
if (preference.key == getString(R.string.pref_key_screen_custom_domains)) {
requireComponents.appStore.dispatch(
AppAction.OpenSettings(page = Screen.Settings.Page.SearchAutocompleteList),
)
}
return super.onPreferenceTreeClick(preference)
}
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
if (key == null || sharedPreferences == null) {
return
}
when (key) {
topSitesAutocomplete.key ->
Autocomplete.topSitesSettingChanged.record(
Autocomplete.TopSitesSettingChangedExtra(sharedPreferences.all[key] as Boolean),
)
favoriteSitesAutocomplete.key ->
Autocomplete.favoriteSitesSettingChanged.record(
Autocomplete.FavoriteSitesSettingChangedExtra(sharedPreferences.all[key] as Boolean),
)
}
}
}