Replace nullable findPreference

fennec/production
Tiger Oakes 4 years ago committed by Emily Kager
parent 45ef88f6b9
commit 596c579bbb

@ -9,7 +9,6 @@ import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreference import androidx.preference.SwitchPreference
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.getPreferenceKey
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.ext.showToolbar
@ -24,11 +23,11 @@ class AccessibilityFragment : PreferenceFragmentCompat() {
super.onResume() super.onResume()
showToolbar(getString(R.string.preferences_accessibility)) showToolbar(getString(R.string.preferences_accessibility))
val forceZoomPreference = findPreference<SwitchPreference>( val forceZoomPreference = requirePreference<SwitchPreference>(
getPreferenceKey(R.string.pref_key_accessibility_force_enable_zoom) R.string.pref_key_accessibility_force_enable_zoom
) )
forceZoomPreference?.setOnPreferenceChangeListener<Boolean> { preference, shouldForce -> forceZoomPreference.setOnPreferenceChangeListener<Boolean> { preference, shouldForce ->
val settings = preference.context.settings() val settings = preference.context.settings()
val components = preference.context.components val components = preference.context.components
@ -38,10 +37,10 @@ class AccessibilityFragment : PreferenceFragmentCompat() {
true true
} }
val textSizePreference = findPreference<TextPercentageSeekBarPreference>( val textSizePreference = requirePreference<TextPercentageSeekBarPreference>(
getPreferenceKey(R.string.pref_key_accessibility_font_scale) R.string.pref_key_accessibility_font_scale
) )
textSizePreference?.setOnPreferenceChangeListener<Int> { preference, newTextSize -> textSizePreference.setOnPreferenceChangeListener<Int> { preference, newTextSize ->
val settings = preference.context.settings() val settings = preference.context.settings()
val components = preference.context.components val components = preference.context.components
@ -56,11 +55,11 @@ class AccessibilityFragment : PreferenceFragmentCompat() {
components.useCases.sessionUseCases.reload() components.useCases.sessionUseCases.reload()
true true
} }
textSizePreference?.isVisible = !requireContext().settings().shouldUseAutoSize textSizePreference.isVisible = !requireContext().settings().shouldUseAutoSize
val useAutoSizePreference = val useAutoSizePreference =
findPreference<SwitchPreference>(getPreferenceKey(R.string.pref_key_accessibility_auto_size)) requirePreference<SwitchPreference>(R.string.pref_key_accessibility_auto_size)
useAutoSizePreference?.setOnPreferenceChangeListener<Boolean> { preference, useAutoSize -> useAutoSizePreference.setOnPreferenceChangeListener<Boolean> { preference, useAutoSize ->
val settings = preference.context.settings() val settings = preference.context.settings()
val components = preference.context.components val components = preference.context.components
@ -74,7 +73,7 @@ class AccessibilityFragment : PreferenceFragmentCompat() {
components.core.engine.settings.fontSizeFactor = settings.fontSizeFactor components.core.engine.settings.fontSizeFactor = settings.fontSizeFactor
} }
// Show the manual sizing controls if automatic sizing is turned off. // Show the manual sizing controls if automatic sizing is turned off.
textSizePreference?.isVisible = !useAutoSize textSizePreference.isVisible = !useAutoSize
// Reload the current session to reflect the new text scale // Reload the current session to reflect the new text scale
components.useCases.sessionUseCases.reload() components.useCases.sessionUseCases.reload()

@ -50,7 +50,7 @@ class DataChoicesFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.data_choices_preferences, rootKey) setPreferencesFromResource(R.xml.data_choices_preferences, rootKey)
findPreference<SwitchPreference>(getPreferenceKey(R.string.pref_key_telemetry))?.apply { requirePreference<SwitchPreference>(R.string.pref_key_telemetry).apply {
isChecked = context.settings().isTelemetryEnabled isChecked = context.settings().isTelemetryEnabled
val appName = context.getString(R.string.app_name) val appName = context.getString(R.string.app_name)
@ -59,7 +59,7 @@ class DataChoicesFragment : PreferenceFragmentCompat() {
onPreferenceChangeListener = SharedPreferenceUpdater() onPreferenceChangeListener = SharedPreferenceUpdater()
} }
findPreference<SwitchPreference>(getPreferenceKey(R.string.pref_key_marketing_telemetry))?.apply { requirePreference<SwitchPreference>(R.string.pref_key_marketing_telemetry).apply {
isChecked = context.settings().isMarketingTelemetryEnabled isChecked = context.settings().isMarketingTelemetryEnabled
val appName = context.getString(R.string.app_name) val appName = context.getString(R.string.app_name)
@ -68,7 +68,7 @@ class DataChoicesFragment : PreferenceFragmentCompat() {
onPreferenceChangeListener = SharedPreferenceUpdater() onPreferenceChangeListener = SharedPreferenceUpdater()
} }
findPreference<SwitchPreference>(getPreferenceKey(R.string.pref_key_experimentation))?.apply { requirePreference<SwitchPreference>(R.string.pref_key_experimentation).apply {
isChecked = context.settings().isExperimentationEnabled isChecked = context.settings().isExperimentationEnabled
isVisible = Config.channel.isReleaseOrBeta isVisible = Config.channel.isReleaseOrBeta
onPreferenceChangeListener = SharedPreferenceUpdater() onPreferenceChangeListener = SharedPreferenceUpdater()

@ -12,7 +12,6 @@ import org.mozilla.fenix.R
import org.mozilla.fenix.components.PrivateShortcutCreateManager import org.mozilla.fenix.components.PrivateShortcutCreateManager
import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.checkAndUpdateScreenshotPermission import org.mozilla.fenix.ext.checkAndUpdateScreenshotPermission
import org.mozilla.fenix.ext.getPreferenceKey
import org.mozilla.fenix.ext.metrics import org.mozilla.fenix.ext.metrics
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.ext.showToolbar
@ -32,7 +31,7 @@ class PrivateBrowsingFragment : PreferenceFragmentCompat() {
} }
private fun updatePreferences() { private fun updatePreferences() {
findPreference<Preference>(getPreferenceKey(R.string.pref_key_add_private_browsing_shortcut))?.apply { requirePreference<Preference>(R.string.pref_key_add_private_browsing_shortcut).apply {
setOnPreferenceClickListener { setOnPreferenceClickListener {
requireContext().metrics.track(Event.PrivateBrowsingCreateShortcut) requireContext().metrics.track(Event.PrivateBrowsingCreateShortcut)
PrivateShortcutCreateManager.createPrivateShortcut(requireContext()) PrivateShortcutCreateManager.createPrivateShortcut(requireContext())
@ -40,13 +39,12 @@ class PrivateBrowsingFragment : PreferenceFragmentCompat() {
} }
} }
findPreference<SwitchPreference>(getPreferenceKey(R.string.pref_key_open_links_in_a_private_tab))?.apply { requirePreference<SwitchPreference>(R.string.pref_key_open_links_in_a_private_tab).apply {
onPreferenceChangeListener = SharedPreferenceUpdater() onPreferenceChangeListener = SharedPreferenceUpdater()
isChecked = context.settings().openLinksInAPrivateTab isChecked = context.settings().openLinksInAPrivateTab
} }
findPreference<SwitchPreference>(getPreferenceKey requirePreference<SwitchPreference>(R.string.pref_key_allow_screenshots_in_private_mode).apply {
(R.string.pref_key_allow_screenshots_in_private_mode))?.apply {
onPreferenceChangeListener = object : SharedPreferenceUpdater() { onPreferenceChangeListener = object : SharedPreferenceUpdater() {
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
return super.onPreferenceChange(preference, newValue).also { return super.onPreferenceChange(preference, newValue).also {

@ -17,7 +17,6 @@ import androidx.appcompat.content.res.AppCompatResources
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavDirections import androidx.navigation.NavDirections
import androidx.navigation.findNavController import androidx.navigation.findNavController
import androidx.navigation.fragment.findNavController
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceCategory import androidx.preference.PreferenceCategory
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
@ -137,8 +136,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
private fun update(shouldUpdateAccountUIState: Boolean) { private fun update(shouldUpdateAccountUIState: Boolean) {
val trackingProtectionPreference = val trackingProtectionPreference =
findPreference<Preference>(getPreferenceKey(R.string.pref_key_tracking_protection_settings)) requirePreference<Preference>(R.string.pref_key_tracking_protection_settings)
trackingProtectionPreference?.summary = context?.let { trackingProtectionPreference.summary = context?.let {
if (it.settings().shouldUseTrackingProtection) { if (it.settings().shouldUseTrackingProtection) {
getString(R.string.tracking_protection_on) getString(R.string.tracking_protection_on)
} else { } else {
@ -146,21 +145,13 @@ class SettingsFragment : PreferenceFragmentCompat() {
} }
} }
val toolbarPreference = val aboutPreference = requirePreference<Preference>(R.string.pref_key_about)
findPreference<Preference>(getPreferenceKey(R.string.pref_key_toolbar))
toolbarPreference?.summary = context?.settings()?.toolbarSettingString
val aboutPreference = findPreference<Preference>(getPreferenceKey(R.string.pref_key_about))
val appName = getString(R.string.app_name) val appName = getString(R.string.app_name)
aboutPreference?.title = getString(R.string.preferences_about, appName) aboutPreference.title = getString(R.string.preferences_about, appName)
val deleteBrowsingDataPreference = val deleteBrowsingDataPreference =
findPreference<Preference>( requirePreference<Preference>(R.string.pref_key_delete_browsing_data_on_quit_preference)
getPreferenceKey( deleteBrowsingDataPreference.summary = context?.let {
R.string.pref_key_delete_browsing_data_on_quit_preference
)
)
deleteBrowsingDataPreference?.summary = context?.let {
if (it.settings().shouldDeleteBrowsingDataOnQuit) { if (it.settings().shouldDeleteBrowsingDataOnQuit) {
getString(R.string.delete_browsing_data_quit_on) getString(R.string.delete_browsing_data_quit_on)
} else { } else {
@ -291,11 +282,10 @@ class SettingsFragment : PreferenceFragmentCompat() {
private fun setupPreferences() { private fun setupPreferences() {
val leakKey = getPreferenceKey(R.string.pref_key_leakcanary) val leakKey = getPreferenceKey(R.string.pref_key_leakcanary)
val debuggingKey = getPreferenceKey(R.string.pref_key_remote_debugging) val debuggingKey = getPreferenceKey(R.string.pref_key_remote_debugging)
val makeDefaultBrowserKey = getPreferenceKey(R.string.pref_key_make_default_browser)
val preferenceLeakCanary = findPreference<Preference>(leakKey) val preferenceLeakCanary = findPreference<Preference>(leakKey)
val preferenceRemoteDebugging = findPreference<Preference>(debuggingKey) val preferenceRemoteDebugging = findPreference<Preference>(debuggingKey)
val preferenceMakeDefaultBrowser = findPreference<Preference>(makeDefaultBrowserKey) val preferenceMakeDefaultBrowser = requirePreference<Preference>(R.string.pref_key_make_default_browser)
if (!Config.channel.isReleased) { if (!Config.channel.isReleased) {
preferenceLeakCanary?.setOnPreferenceChangeListener { _, newValue -> preferenceLeakCanary?.setOnPreferenceChangeListener { _, newValue ->
@ -312,7 +302,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
true true
} }
preferenceMakeDefaultBrowser?.onPreferenceClickListener = preferenceMakeDefaultBrowser.onPreferenceClickListener =
getClickListenerForMakeDefaultBrowser() getClickListenerForMakeDefaultBrowser()
val preferenceFxAOverride = val preferenceFxAOverride =
@ -365,8 +355,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
} }
private fun updateMakeDefaultBrowserPreference() { private fun updateMakeDefaultBrowserPreference() {
findPreference<DefaultBrowserPreference>(getPreferenceKey(R.string.pref_key_make_default_browser)) requirePreference<DefaultBrowserPreference>(R.string.pref_key_make_default_browser).updateSwitch()
?.updateSwitch()
} }
private fun navigateFromSettings(directions: NavDirections) { private fun navigateFromSettings(directions: NavDirections) {
@ -395,17 +384,13 @@ class SettingsFragment : PreferenceFragmentCompat() {
*/ */
private fun updateAccountUIState(context: Context, profile: Profile?) { private fun updateAccountUIState(context: Context, profile: Profile?) {
val preferenceSignIn = val preferenceSignIn =
findPreference<Preference>(context.getPreferenceKey(R.string.pref_key_sign_in)) requirePreference<Preference>(R.string.pref_key_sign_in)
val preferenceFirefoxAccount = val preferenceFirefoxAccount =
findPreference<AccountPreference>(context.getPreferenceKey(R.string.pref_key_account)) requirePreference<AccountPreference>(R.string.pref_key_account)
val preferenceFirefoxAccountAuthError = val preferenceFirefoxAccountAuthError =
findPreference<AccountAuthErrorPreference>( requirePreference<AccountAuthErrorPreference>(R.string.pref_key_account_auth_error)
context.getPreferenceKey(
R.string.pref_key_account_auth_error
)
)
val accountPreferenceCategory = val accountPreferenceCategory =
findPreference<PreferenceCategory>(context.getPreferenceKey(R.string.pref_key_account_category)) requirePreference<PreferenceCategory>(R.string.pref_key_account_category)
val accountManager = requireComponents.backgroundServices.accountManager val accountManager = requireComponents.backgroundServices.accountManager
val account = accountManager.authenticatedAccount() val account = accountManager.authenticatedAccount()
@ -414,44 +399,44 @@ class SettingsFragment : PreferenceFragmentCompat() {
// Signed-in, no problems. // Signed-in, no problems.
if (account != null && !accountManager.accountNeedsReauth()) { if (account != null && !accountManager.accountNeedsReauth()) {
preferenceSignIn?.isVisible = false preferenceSignIn.isVisible = false
profile?.avatar?.url?.let { avatarUrl -> profile?.avatar?.url?.let { avatarUrl ->
lifecycleScope.launch(Main) { lifecycleScope.launch(Main) {
val roundedDrawable = val roundedDrawable =
avatarUrl.toRoundedDrawable(context, requireComponents.core.client) avatarUrl.toRoundedDrawable(context, requireComponents.core.client)
preferenceFirefoxAccount?.icon = preferenceFirefoxAccount.icon =
roundedDrawable ?: AppCompatResources.getDrawable( roundedDrawable ?: AppCompatResources.getDrawable(
context, context,
R.drawable.ic_account R.drawable.ic_account
) )
} }
} }
preferenceSignIn?.onPreferenceClickListener = null preferenceSignIn.onPreferenceClickListener = null
preferenceFirefoxAccountAuthError?.isVisible = false preferenceFirefoxAccountAuthError.isVisible = false
preferenceFirefoxAccount?.isVisible = true preferenceFirefoxAccount.isVisible = true
accountPreferenceCategory?.isVisible = true accountPreferenceCategory.isVisible = true
preferenceFirefoxAccount?.displayName = profile?.displayName preferenceFirefoxAccount.displayName = profile?.displayName
preferenceFirefoxAccount?.email = profile?.email preferenceFirefoxAccount.email = profile?.email
// Signed-in, need to re-authenticate. // Signed-in, need to re-authenticate.
} else if (account != null && accountManager.accountNeedsReauth()) { } else if (account != null && accountManager.accountNeedsReauth()) {
preferenceFirefoxAccount?.isVisible = false preferenceFirefoxAccount.isVisible = false
preferenceFirefoxAccountAuthError?.isVisible = true preferenceFirefoxAccountAuthError.isVisible = true
accountPreferenceCategory?.isVisible = true accountPreferenceCategory.isVisible = true
preferenceSignIn?.isVisible = false preferenceSignIn.isVisible = false
preferenceSignIn?.onPreferenceClickListener = null preferenceSignIn.onPreferenceClickListener = null
preferenceFirefoxAccountAuthError?.email = profile?.email preferenceFirefoxAccountAuthError.email = profile?.email
// Signed-out. // Signed-out.
} else { } else {
preferenceSignIn?.isVisible = true preferenceSignIn.isVisible = true
preferenceFirefoxAccount?.isVisible = false preferenceFirefoxAccount.isVisible = false
preferenceFirefoxAccountAuthError?.isVisible = false preferenceFirefoxAccountAuthError.isVisible = false
accountPreferenceCategory?.isVisible = false accountPreferenceCategory.isVisible = false
} }
} }

@ -46,6 +46,7 @@ import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.secure import org.mozilla.fenix.ext.secure
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.settings.requirePreference
@SuppressWarnings("TooManyFunctions", "LargeClass") @SuppressWarnings("TooManyFunctions", "LargeClass")
class AccountSettingsFragment : PreferenceFragmentCompat() { class AccountSettingsFragment : PreferenceFragmentCompat() {
@ -129,29 +130,26 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
accountManager.register(accountStateObserver, this, true) accountManager.register(accountStateObserver, this, true)
// Sign out // Sign out
val signOut = getPreferenceKey(R.string.pref_key_sign_out) val preferenceSignOut = requirePreference<Preference>(R.string.pref_key_sign_out)
val preferenceSignOut = findPreference<Preference>(signOut) preferenceSignOut.onPreferenceClickListener = getClickListenerForSignOut()
preferenceSignOut?.onPreferenceClickListener = getClickListenerForSignOut()
// Sync now // Sync now
val syncNow = getPreferenceKey(R.string.pref_key_sync_now) val preferenceSyncNow = requirePreference<Preference>(R.string.pref_key_sync_now)
val preferenceSyncNow = findPreference<Preference>(syncNow) preferenceSyncNow.apply {
preferenceSyncNow?.let { onPreferenceClickListener = getClickListenerForSyncNow()
it.onPreferenceClickListener = getClickListenerForSyncNow()
// Current sync state // Current sync state
if (requireComponents.backgroundServices.accountManager.isSyncActive()) { if (requireComponents.backgroundServices.accountManager.isSyncActive()) {
it.title = getString(R.string.sync_syncing_in_progress) title = getString(R.string.sync_syncing_in_progress)
it.isEnabled = false isEnabled = false
} else { } else {
it.isEnabled = true isEnabled = true
} }
} }
// Device Name // Device Name
val deviceConstellation = accountManager.authenticatedAccount()?.deviceConstellation() val deviceConstellation = accountManager.authenticatedAccount()?.deviceConstellation()
val deviceNameKey = getPreferenceKey(R.string.pref_key_sync_device_name) requirePreference<EditTextPreference>(R.string.pref_key_sync_device_name).apply {
findPreference<EditTextPreference>(deviceNameKey)?.apply {
onPreferenceChangeListener = getChangeListenerForDeviceName() onPreferenceChangeListener = getChangeListenerForDeviceName()
deviceConstellation?.state()?.currentDevice?.let { device -> deviceConstellation?.state()?.currentDevice?.let { device ->
summary = device.displayName summary = device.displayName
@ -168,8 +166,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
updateSyncEngineStates() updateSyncEngineStates()
setDisabledWhileSyncing(accountManager.isSyncActive()) setDisabledWhileSyncing(accountManager.isSyncActive())
val historyNameKey = getPreferenceKey(R.string.pref_key_sync_history) requirePreference<CheckBoxPreference>(R.string.pref_key_sync_history).apply {
findPreference<CheckBoxPreference>(historyNameKey)?.apply {
setOnPreferenceChangeListener { _, newValue -> setOnPreferenceChangeListener { _, newValue ->
SyncEnginesStorage(context).setStatus(SyncEngine.History, newValue as Boolean) SyncEnginesStorage(context).setStatus(SyncEngine.History, newValue as Boolean)
@Suppress("DeferredResultUnused") @Suppress("DeferredResultUnused")
@ -178,8 +175,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
} }
} }
val bookmarksNameKey = getPreferenceKey(R.string.pref_key_sync_bookmarks) requirePreference<CheckBoxPreference>(R.string.pref_key_sync_bookmarks).apply {
findPreference<CheckBoxPreference>(bookmarksNameKey)?.apply {
setOnPreferenceChangeListener { _, newValue -> setOnPreferenceChangeListener { _, newValue ->
SyncEnginesStorage(context).setStatus(SyncEngine.Bookmarks, newValue as Boolean) SyncEnginesStorage(context).setStatus(SyncEngine.Bookmarks, newValue as Boolean)
@Suppress("DeferredResultUnused") @Suppress("DeferredResultUnused")
@ -188,8 +184,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
} }
} }
val loginsNameKey = getPreferenceKey(R.string.pref_key_sync_logins) requirePreference<CheckBoxPreference>(R.string.pref_key_sync_logins).apply {
findPreference<CheckBoxPreference>(loginsNameKey)?.apply {
setOnPreferenceChangeListener { _, newValue -> setOnPreferenceChangeListener { _, newValue ->
val manager = val manager =
activity?.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager activity?.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
@ -207,8 +202,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
} }
} }
val tabsNameKey = getPreferenceKey(R.string.pref_key_sync_tabs) requirePreference<CheckBoxPreference>(R.string.pref_key_sync_tabs).apply {
findPreference<CheckBoxPreference>(tabsNameKey)?.apply {
setOnPreferenceChangeListener { _, newValue -> setOnPreferenceChangeListener { _, newValue ->
SyncEnginesStorage(context).setStatus(SyncEngine.Tabs, newValue as Boolean) SyncEnginesStorage(context).setStatus(SyncEngine.Tabs, newValue as Boolean)
@Suppress("DeferredResultUnused") @Suppress("DeferredResultUnused")
@ -259,23 +253,19 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
private fun updateSyncEngineStates() { private fun updateSyncEngineStates() {
val syncEnginesStatus = SyncEnginesStorage(requireContext()).getStatus() val syncEnginesStatus = SyncEnginesStorage(requireContext()).getStatus()
val bookmarksNameKey = getPreferenceKey(R.string.pref_key_sync_bookmarks) requirePreference<CheckBoxPreference>(R.string.pref_key_sync_bookmarks).apply {
findPreference<CheckBoxPreference>(bookmarksNameKey)?.apply {
isEnabled = syncEnginesStatus.containsKey(SyncEngine.Bookmarks) isEnabled = syncEnginesStatus.containsKey(SyncEngine.Bookmarks)
isChecked = syncEnginesStatus.getOrElse(SyncEngine.Bookmarks) { true } isChecked = syncEnginesStatus.getOrElse(SyncEngine.Bookmarks) { true }
} }
val historyNameKey = getPreferenceKey(R.string.pref_key_sync_history) requirePreference<CheckBoxPreference>(R.string.pref_key_sync_history).apply {
findPreference<CheckBoxPreference>(historyNameKey)?.apply {
isEnabled = syncEnginesStatus.containsKey(SyncEngine.History) isEnabled = syncEnginesStatus.containsKey(SyncEngine.History)
isChecked = syncEnginesStatus.getOrElse(SyncEngine.History) { true } isChecked = syncEnginesStatus.getOrElse(SyncEngine.History) { true }
} }
val loginsNameKey = getPreferenceKey(R.string.pref_key_sync_logins) requirePreference<CheckBoxPreference>(R.string.pref_key_sync_logins).apply {
findPreference<CheckBoxPreference>(loginsNameKey)?.apply {
isEnabled = syncEnginesStatus.containsKey(SyncEngine.Passwords) isEnabled = syncEnginesStatus.containsKey(SyncEngine.Passwords)
isChecked = syncEnginesStatus.getOrElse(SyncEngine.Passwords) { true } isChecked = syncEnginesStatus.getOrElse(SyncEngine.Passwords) { true }
} }
val tabsNameKey = getPreferenceKey(R.string.pref_key_sync_tabs) requirePreference<CheckBoxPreference>(R.string.pref_key_sync_tabs).apply {
findPreference<CheckBoxPreference>(tabsNameKey)?.apply {
isVisible = FeatureFlags.syncedTabs isVisible = FeatureFlags.syncedTabs
isEnabled = syncEnginesStatus.containsKey(SyncEngine.Tabs) isEnabled = syncEnginesStatus.containsKey(SyncEngine.Tabs)
isChecked = syncEnginesStatus.getOrElse(SyncEngine.Tabs) { FeatureFlags.syncedTabs } isChecked = syncEnginesStatus.getOrElse(SyncEngine.Tabs) { FeatureFlags.syncedTabs }
@ -342,22 +332,18 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
} }
private fun setDisabledWhileSyncing(isSyncing: Boolean) { private fun setDisabledWhileSyncing(isSyncing: Boolean) {
findPreference<PreferenceCategory>( requirePreference<PreferenceCategory>(R.string.preferences_sync_category).isEnabled = !isSyncing
getPreferenceKey(R.string.preferences_sync_category) requirePreference<EditTextPreference>(R.string.pref_key_sync_device_name).isEnabled = !isSyncing
)?.isEnabled = !isSyncing
findPreference<EditTextPreference>(
getPreferenceKey(R.string.pref_key_sync_device_name)
)?.isEnabled = !isSyncing
} }
private val syncStatusObserver = object : SyncStatusObserver { private val syncStatusObserver = object : SyncStatusObserver {
private val pref by lazy { requirePreference<Preference>(R.string.pref_key_sync_now) }
override fun onStarted() { override fun onStarted() {
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
val pref = findPreference<Preference>(getPreferenceKey(R.string.pref_key_sync_now))
view?.announceForAccessibility(getString(R.string.sync_syncing_in_progress)) view?.announceForAccessibility(getString(R.string.sync_syncing_in_progress))
pref?.title = getString(R.string.sync_syncing_in_progress) pref.title = getString(R.string.sync_syncing_in_progress)
pref?.isEnabled = false pref.isEnabled = false
setDisabledWhileSyncing(true) setDisabledWhileSyncing(true)
} }
} }
@ -365,14 +351,11 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
// Sync stopped successfully. // Sync stopped successfully.
override fun onIdle() { override fun onIdle() {
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
val pref = findPreference<Preference>(getPreferenceKey(R.string.pref_key_sync_now)) pref.title = getString(R.string.preferences_sync_now)
pref?.let { pref.isEnabled = true
pref.title = getString(R.string.preferences_sync_now)
pref.isEnabled = true
val time = getLastSynced(requireContext()) val time = getLastSynced(requireContext())
accountSettingsStore.dispatch(AccountSettingsFragmentAction.SyncEnded(time)) accountSettingsStore.dispatch(AccountSettingsFragmentAction.SyncEnded(time))
}
// Make sure out sync engine checkboxes are up-to-date. // Make sure out sync engine checkboxes are up-to-date.
updateSyncEngineStates() updateSyncEngineStates()
setDisabledWhileSyncing(false) setDisabledWhileSyncing(false)
@ -382,19 +365,16 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
// Sync stopped after encountering a problem. // Sync stopped after encountering a problem.
override fun onError(error: Exception?) { override fun onError(error: Exception?) {
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
val pref = findPreference<Preference>(getPreferenceKey(R.string.pref_key_sync_now)) pref.title = getString(R.string.preferences_sync_now)
pref?.let { // We want to only enable the sync button, and not the checkboxes here
pref.title = getString(R.string.preferences_sync_now) pref.isEnabled = true
// We want to only enable the sync button, and not the checkboxes here
pref.isEnabled = true val failedTime = getLastSynced(requireContext())
accountSettingsStore.dispatch(
val failedTime = getLastSynced(requireContext()) AccountSettingsFragmentAction.SyncFailed(
accountSettingsStore.dispatch( failedTime
AccountSettingsFragmentAction.SyncFailed(
failedTime
)
) )
} )
} }
} }
} }
@ -408,9 +388,8 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
} }
private fun updateDeviceName(state: AccountSettingsFragmentState) { private fun updateDeviceName(state: AccountSettingsFragmentState) {
val deviceNameKey = getPreferenceKey(R.string.pref_key_sync_device_name) val preferenceDeviceName = requirePreference<Preference>(R.string.pref_key_sync_device_name)
val preferenceDeviceName = findPreference<Preference>(deviceNameKey) preferenceDeviceName.summary = state.deviceName
preferenceDeviceName?.summary = state.deviceName
} }
private fun updateLastSyncTimePref(state: AccountSettingsFragmentState) { private fun updateLastSyncTimePref(state: AccountSettingsFragmentState) {
@ -432,8 +411,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
) )
} }
val syncNow = getPreferenceKey(R.string.pref_key_sync_now) requirePreference<Preference>(R.string.pref_key_sync_now).summary = value
findPreference<Preference>(syncNow)?.summary = value
} }
companion object { companion object {

@ -10,10 +10,10 @@ import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreference import androidx.preference.SwitchPreference
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.getPreferenceKey
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.settings.SharedPreferenceUpdater import org.mozilla.fenix.settings.SharedPreferenceUpdater
import org.mozilla.fenix.settings.requirePreference
class DeleteBrowsingDataOnQuitFragment : PreferenceFragmentCompat() { class DeleteBrowsingDataOnQuitFragment : PreferenceFragmentCompat() {
@ -39,10 +39,10 @@ class DeleteBrowsingDataOnQuitFragment : PreferenceFragmentCompat() {
showToolbar(getString(R.string.preferences_delete_browsing_data_on_quit)) showToolbar(getString(R.string.preferences_delete_browsing_data_on_quit))
// Delete Browsing Data on Quit Switch // Delete Browsing Data on Quit Switch
val deleteOnQuitPref = findPreference<SwitchPreference>( val deleteOnQuitPref = requirePreference<SwitchPreference>(
getPreferenceKey(R.string.pref_key_delete_browsing_data_on_quit) R.string.pref_key_delete_browsing_data_on_quit
) )
deleteOnQuitPref?.apply { deleteOnQuitPref.apply {
onPreferenceChangeListener = object : SharedPreferenceUpdater() { onPreferenceChangeListener = object : SharedPreferenceUpdater() {
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
setAllCheckboxes(newValue as Boolean) setAllCheckboxes(newValue as Boolean)
@ -58,7 +58,7 @@ class DeleteBrowsingDataOnQuitFragment : PreferenceFragmentCompat() {
val settings = preference.context.settings() val settings = preference.context.settings()
if (!settings.shouldDeleteAnyDataOnQuit()) { if (!settings.shouldDeleteAnyDataOnQuit()) {
deleteOnQuitPref?.isChecked = false deleteOnQuitPref.isChecked = false
settings.shouldDeleteBrowsingDataOnQuit = false settings.shouldDeleteBrowsingDataOnQuit = false
} }
return true return true

@ -34,12 +34,12 @@ import org.mozilla.fenix.Config
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.getPreferenceKey
import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.secure import org.mozilla.fenix.ext.secure
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.settings.SharedPreferenceUpdater import org.mozilla.fenix.settings.SharedPreferenceUpdater
import org.mozilla.fenix.settings.requirePreference
import java.util.concurrent.Executors import java.util.concurrent.Executors
@Suppress("TooManyFunctions", "LargeClass") @Suppress("TooManyFunctions", "LargeClass")
@ -98,8 +98,7 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver {
super.onResume() super.onResume()
showToolbar(getString(R.string.preferences_passwords_logins_and_passwords)) showToolbar(getString(R.string.preferences_passwords_logins_and_passwords))
val saveLoginsSettingKey = getPreferenceKey(R.string.pref_key_save_logins_settings) requirePreference<Preference>(R.string.pref_key_save_logins_settings).apply {
findPreference<Preference>(saveLoginsSettingKey)?.apply {
summary = getString( summary = getString(
if (context.settings().shouldPromptToSaveLogins) if (context.settings().shouldPromptToSaveLogins)
R.string.preferences_passwords_save_logins_ask_to_save else R.string.preferences_passwords_save_logins_ask_to_save else
@ -111,8 +110,7 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver {
} }
} }
val autofillPreferenceKey = getPreferenceKey(R.string.pref_key_autofill_logins) requirePreference<SwitchPreference>(R.string.pref_key_autofill_logins).apply {
findPreference<SwitchPreference>(autofillPreferenceKey)?.apply {
// The ability to toggle autofill on the engine is only available in Nightly currently // The ability to toggle autofill on the engine is only available in Nightly currently
// See https://github.com/mozilla-mobile/fenix/issues/11320 // See https://github.com/mozilla-mobile/fenix/issues/11320
isVisible = Config.channel.isNightlyOrDebug isVisible = Config.channel.isNightlyOrDebug
@ -126,8 +124,7 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver {
} }
} }
val savedLoginsKey = getPreferenceKey(R.string.pref_key_saved_logins) requirePreference<Preference>(R.string.pref_key_saved_logins).setOnPreferenceClickListener {
findPreference<Preference>(savedLoginsKey)?.setOnPreferenceClickListener {
if (Build.VERSION.SDK_INT >= M && isHardwareAvailable && hasBiometricEnrolled) { if (Build.VERSION.SDK_INT >= M && isHardwareAvailable && hasBiometricEnrolled) {
biometricPrompt.authenticate(promptInfo) biometricPrompt.authenticate(promptInfo)
} else { } else {
@ -181,8 +178,7 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver {
} }
private fun updateSyncPreferenceStatus() { private fun updateSyncPreferenceStatus() {
val syncLogins = getPreferenceKey(R.string.pref_key_password_sync_logins) requirePreference<Preference>(R.string.pref_key_password_sync_logins).apply {
findPreference<Preference>(syncLogins)?.apply {
val syncEnginesStatus = SyncEnginesStorage(requireContext()).getStatus() val syncEnginesStatus = SyncEnginesStorage(requireContext()).getStatus()
val loginsSyncStatus = syncEnginesStatus.getOrElse(SyncEngine.Passwords) { false } val loginsSyncStatus = syncEnginesStatus.getOrElse(SyncEngine.Passwords) { false }
summary = getString( summary = getString(
@ -197,8 +193,7 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver {
} }
private fun updateSyncPreferenceNeedsLogin() { private fun updateSyncPreferenceNeedsLogin() {
val syncLogins = getPreferenceKey(R.string.pref_key_password_sync_logins) requirePreference<Preference>(R.string.pref_key_password_sync_logins).apply {
findPreference<Preference>(syncLogins)?.apply {
summary = getString(R.string.preferences_passwords_sync_logins_sign_in) summary = getString(R.string.preferences_passwords_sync_logins_sign_in)
setOnPreferenceClickListener { setOnPreferenceClickListener {
navigateToTurnOnSyncFragment() navigateToTurnOnSyncFragment()
@ -208,8 +203,7 @@ class SavedLoginsAuthFragment : PreferenceFragmentCompat(), AccountObserver {
} }
private fun updateSyncPreferenceNeedsReauth() { private fun updateSyncPreferenceNeedsReauth() {
val syncLogins = getPreferenceKey(R.string.pref_key_password_sync_logins) requirePreference<Preference>(R.string.pref_key_password_sync_logins).apply {
findPreference<Preference>(syncLogins)?.apply {
summary = getString(R.string.preferences_passwords_sync_logins_reconnect) summary = getString(R.string.preferences_passwords_sync_logins_reconnect)
setOnPreferenceClickListener { setOnPreferenceClickListener {
navigateToAccountProblemFragment() navigateToAccountProblemFragment()

@ -15,6 +15,7 @@ import org.mozilla.fenix.ext.getPreferenceKey
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.settings.SharedPreferenceUpdater import org.mozilla.fenix.settings.SharedPreferenceUpdater
import org.mozilla.fenix.settings.requirePreference
class SearchEngineFragment : PreferenceFragmentCompat() { class SearchEngineFragment : PreferenceFragmentCompat() {
@ -27,57 +28,56 @@ class SearchEngineFragment : PreferenceFragmentCompat() {
showToolbar(getString(R.string.preferences_search)) showToolbar(getString(R.string.preferences_search))
val searchSuggestionsPreference = val searchSuggestionsPreference =
findPreference<SwitchPreference>(getPreferenceKey(R.string.pref_key_show_search_suggestions))?.apply { requirePreference<SwitchPreference>(R.string.pref_key_show_search_suggestions).apply {
isChecked = context.settings().shouldShowSearchSuggestions isChecked = context.settings().shouldShowSearchSuggestions
} }
val searchSuggestionsInPrivatePreference = val searchSuggestionsInPrivatePreference =
findPreference<CheckBoxPreference>(getPreferenceKey(R.string.pref_key_show_search_suggestions_in_private)) requirePreference<CheckBoxPreference>(R.string.pref_key_show_search_suggestions_in_private).apply {
?.apply {
isChecked = context.settings().shouldShowSearchSuggestionsInPrivate isChecked = context.settings().shouldShowSearchSuggestionsInPrivate
} }
val showSearchShortcuts = val showSearchShortcuts =
findPreference<SwitchPreference>(getPreferenceKey(R.string.pref_key_show_search_shortcuts))?.apply { requirePreference<SwitchPreference>(R.string.pref_key_show_search_shortcuts).apply {
isChecked = context.settings().shouldShowSearchShortcuts isChecked = context.settings().shouldShowSearchShortcuts
} }
val showHistorySuggestions = val showHistorySuggestions =
findPreference<SwitchPreference>(getPreferenceKey(R.string.pref_key_search_browsing_history))?.apply { requirePreference<SwitchPreference>(R.string.pref_key_search_browsing_history).apply {
isChecked = context.settings().shouldShowHistorySuggestions isChecked = context.settings().shouldShowHistorySuggestions
} }
val showBookmarkSuggestions = val showBookmarkSuggestions =
findPreference<SwitchPreference>(getPreferenceKey(R.string.pref_key_search_bookmarks))?.apply { requirePreference<SwitchPreference>(R.string.pref_key_search_bookmarks).apply {
isChecked = context.settings().shouldShowBookmarkSuggestions isChecked = context.settings().shouldShowBookmarkSuggestions
} }
val showClipboardSuggestions = val showClipboardSuggestions =
findPreference<SwitchPreference>(getPreferenceKey(R.string.pref_key_show_clipboard_suggestions))?.apply { requirePreference<SwitchPreference>(R.string.pref_key_show_clipboard_suggestions).apply {
isChecked = context.settings().shouldShowClipboardSuggestions isChecked = context.settings().shouldShowClipboardSuggestions
} }
val searchEngineListPreference = val searchEngineListPreference =
findPreference<SearchEngineListPreference>(getPreferenceKey(R.string.pref_key_search_engine_list)) requirePreference<SearchEngineListPreference>(R.string.pref_key_search_engine_list)
val showVoiceSearchPreference = val showVoiceSearchPreference =
findPreference<SwitchPreference>(getPreferenceKey(R.string.pref_key_show_voice_search))?.apply { requirePreference<SwitchPreference>(R.string.pref_key_show_voice_search).apply {
isChecked = context.settings().shouldShowVoiceSearch isChecked = context.settings().shouldShowVoiceSearch
} }
searchEngineListPreference?.reload(requireContext()) searchEngineListPreference.reload(requireContext())
searchSuggestionsPreference?.onPreferenceChangeListener = SharedPreferenceUpdater() searchSuggestionsPreference.onPreferenceChangeListener = SharedPreferenceUpdater()
showSearchShortcuts?.onPreferenceChangeListener = SharedPreferenceUpdater() showSearchShortcuts.onPreferenceChangeListener = SharedPreferenceUpdater()
showHistorySuggestions?.onPreferenceChangeListener = SharedPreferenceUpdater() showHistorySuggestions.onPreferenceChangeListener = SharedPreferenceUpdater()
showBookmarkSuggestions?.onPreferenceChangeListener = SharedPreferenceUpdater() showBookmarkSuggestions.onPreferenceChangeListener = SharedPreferenceUpdater()
showClipboardSuggestions?.onPreferenceChangeListener = SharedPreferenceUpdater() showClipboardSuggestions.onPreferenceChangeListener = SharedPreferenceUpdater()
searchSuggestionsInPrivatePreference?.onPreferenceChangeListener = SharedPreferenceUpdater() searchSuggestionsInPrivatePreference.onPreferenceChangeListener = SharedPreferenceUpdater()
showVoiceSearchPreference?.onPreferenceChangeListener = SharedPreferenceUpdater() showVoiceSearchPreference.onPreferenceChangeListener = SharedPreferenceUpdater()
searchSuggestionsPreference?.setOnPreferenceClickListener { searchSuggestionsPreference.setOnPreferenceClickListener {
if (!searchSuggestionsPreference.isChecked) { if (!searchSuggestionsPreference.isChecked) {
searchSuggestionsInPrivatePreference?.isChecked = false searchSuggestionsInPrivatePreference.isChecked = false
searchSuggestionsInPrivatePreference?.callChangeListener(false) searchSuggestionsInPrivatePreference.callChangeListener(false)
} }
true true
} }

Loading…
Cancel
Save