1
0
Fork 0

Replace nullable findPreference

master
Tiger Oakes 2020-06-15 11:24:14 -07:00 committed by Emily Kager
parent 45ef88f6b9
commit 596c579bbb
8 changed files with 118 additions and 164 deletions

View File

@ -9,7 +9,6 @@ import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreference
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.getPreferenceKey
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar
@ -24,11 +23,11 @@ class AccessibilityFragment : PreferenceFragmentCompat() {
super.onResume()
showToolbar(getString(R.string.preferences_accessibility))
val forceZoomPreference = findPreference<SwitchPreference>(
getPreferenceKey(R.string.pref_key_accessibility_force_enable_zoom)
val forceZoomPreference = requirePreference<SwitchPreference>(
R.string.pref_key_accessibility_force_enable_zoom
)
forceZoomPreference?.setOnPreferenceChangeListener<Boolean> { preference, shouldForce ->
forceZoomPreference.setOnPreferenceChangeListener<Boolean> { preference, shouldForce ->
val settings = preference.context.settings()
val components = preference.context.components
@ -38,10 +37,10 @@ class AccessibilityFragment : PreferenceFragmentCompat() {
true
}
val textSizePreference = findPreference<TextPercentageSeekBarPreference>(
getPreferenceKey(R.string.pref_key_accessibility_font_scale)
val textSizePreference = requirePreference<TextPercentageSeekBarPreference>(
R.string.pref_key_accessibility_font_scale
)
textSizePreference?.setOnPreferenceChangeListener<Int> { preference, newTextSize ->
textSizePreference.setOnPreferenceChangeListener<Int> { preference, newTextSize ->
val settings = preference.context.settings()
val components = preference.context.components
@ -56,11 +55,11 @@ class AccessibilityFragment : PreferenceFragmentCompat() {
components.useCases.sessionUseCases.reload()
true
}
textSizePreference?.isVisible = !requireContext().settings().shouldUseAutoSize
textSizePreference.isVisible = !requireContext().settings().shouldUseAutoSize
val useAutoSizePreference =
findPreference<SwitchPreference>(getPreferenceKey(R.string.pref_key_accessibility_auto_size))
useAutoSizePreference?.setOnPreferenceChangeListener<Boolean> { preference, useAutoSize ->
requirePreference<SwitchPreference>(R.string.pref_key_accessibility_auto_size)
useAutoSizePreference.setOnPreferenceChangeListener<Boolean> { preference, useAutoSize ->
val settings = preference.context.settings()
val components = preference.context.components
@ -74,7 +73,7 @@ class AccessibilityFragment : PreferenceFragmentCompat() {
components.core.engine.settings.fontSizeFactor = settings.fontSizeFactor
}
// 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
components.useCases.sessionUseCases.reload()

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -15,6 +15,7 @@ import org.mozilla.fenix.ext.getPreferenceKey
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.settings.SharedPreferenceUpdater
import org.mozilla.fenix.settings.requirePreference
class SearchEngineFragment : PreferenceFragmentCompat() {
@ -27,57 +28,56 @@ class SearchEngineFragment : PreferenceFragmentCompat() {
showToolbar(getString(R.string.preferences_search))
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
}
val searchSuggestionsInPrivatePreference =
findPreference<CheckBoxPreference>(getPreferenceKey(R.string.pref_key_show_search_suggestions_in_private))
?.apply {
requirePreference<CheckBoxPreference>(R.string.pref_key_show_search_suggestions_in_private).apply {
isChecked = context.settings().shouldShowSearchSuggestionsInPrivate
}
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
}
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
}
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
}
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
}
val searchEngineListPreference =
findPreference<SearchEngineListPreference>(getPreferenceKey(R.string.pref_key_search_engine_list))
requirePreference<SearchEngineListPreference>(R.string.pref_key_search_engine_list)
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
}
searchEngineListPreference?.reload(requireContext())
searchSuggestionsPreference?.onPreferenceChangeListener = SharedPreferenceUpdater()
showSearchShortcuts?.onPreferenceChangeListener = SharedPreferenceUpdater()
showHistorySuggestions?.onPreferenceChangeListener = SharedPreferenceUpdater()
showBookmarkSuggestions?.onPreferenceChangeListener = SharedPreferenceUpdater()
showClipboardSuggestions?.onPreferenceChangeListener = SharedPreferenceUpdater()
searchSuggestionsInPrivatePreference?.onPreferenceChangeListener = SharedPreferenceUpdater()
showVoiceSearchPreference?.onPreferenceChangeListener = SharedPreferenceUpdater()
searchEngineListPreference.reload(requireContext())
searchSuggestionsPreference.onPreferenceChangeListener = SharedPreferenceUpdater()
showSearchShortcuts.onPreferenceChangeListener = SharedPreferenceUpdater()
showHistorySuggestions.onPreferenceChangeListener = SharedPreferenceUpdater()
showBookmarkSuggestions.onPreferenceChangeListener = SharedPreferenceUpdater()
showClipboardSuggestions.onPreferenceChangeListener = SharedPreferenceUpdater()
searchSuggestionsInPrivatePreference.onPreferenceChangeListener = SharedPreferenceUpdater()
showVoiceSearchPreference.onPreferenceChangeListener = SharedPreferenceUpdater()
searchSuggestionsPreference?.setOnPreferenceClickListener {
searchSuggestionsPreference.setOnPreferenceClickListener {
if (!searchSuggestionsPreference.isChecked) {
searchSuggestionsInPrivatePreference?.isChecked = false
searchSuggestionsInPrivatePreference?.callChangeListener(false)
searchSuggestionsInPrivatePreference.isChecked = false
searchSuggestionsInPrivatePreference.callChangeListener(false)
}
true
}