Clean up settings fragments
This commit is contained in:
parent
43354489a1
commit
b85673acac
|
@ -4,7 +4,6 @@
|
|||
|
||||
package org.mozilla.fenix.settings
|
||||
|
||||
import android.content.SharedPreferences
|
||||
import android.os.Bundle
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.preference.SwitchPreference
|
||||
|
@ -20,23 +19,18 @@ import org.mozilla.fenix.ext.showToolbar
|
|||
*/
|
||||
class DataChoicesFragment : PreferenceFragmentCompat() {
|
||||
|
||||
private val preferenceChangeListener =
|
||||
SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
|
||||
when (key) {
|
||||
getPreferenceKey(R.string.pref_key_telemetry) -> {
|
||||
if (sharedPreferences.getBoolean(key, requireContext().settings().isTelemetryEnabled)) {
|
||||
context?.components?.analytics?.metrics?.start()
|
||||
} else {
|
||||
context?.components?.analytics?.metrics?.stop()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
context?.let {
|
||||
preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(preferenceChangeListener)
|
||||
|
||||
val context = requireContext()
|
||||
preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(this) { sharedPreferences, key ->
|
||||
if (key == getPreferenceKey(R.string.pref_key_telemetry)) {
|
||||
if (sharedPreferences.getBoolean(key, context.settings().isTelemetryEnabled)) {
|
||||
context.components.analytics.metrics.start()
|
||||
} else {
|
||||
context.components.analytics.metrics.stop()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -45,13 +39,6 @@ class DataChoicesFragment : PreferenceFragmentCompat() {
|
|||
showToolbar(getString(R.string.preferences_data_collection))
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
context?.let {
|
||||
preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(preferenceChangeListener)
|
||||
}
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.data_choices_preferences, rootKey)
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
package org.mozilla.fenix.settings
|
||||
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.os.Build
|
||||
import android.os.Build.VERSION.SDK_INT
|
||||
import android.os.Bundle
|
||||
|
@ -17,7 +16,6 @@ import mozilla.components.support.utils.Browsers
|
|||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
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
|
||||
|
@ -27,30 +25,8 @@ import org.mozilla.fenix.ext.showToolbar
|
|||
*/
|
||||
class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
|
||||
|
||||
private val preferenceChangeListener =
|
||||
SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
|
||||
when (key) {
|
||||
getPreferenceKey(R.string.pref_key_telemetry) -> {
|
||||
if (sharedPreferences.getBoolean(
|
||||
key,
|
||||
requireContext().settings().isTelemetryEnabled
|
||||
)
|
||||
) {
|
||||
context?.components?.analytics?.metrics?.start()
|
||||
} else {
|
||||
context?.components?.analytics?.metrics?.stop()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
context?.let {
|
||||
preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(
|
||||
preferenceChangeListener
|
||||
)
|
||||
}
|
||||
|
||||
val makeDefaultBrowserKey = getPreferenceKey(R.string.pref_key_make_default_browser)
|
||||
val preferenceMakeDefaultBrowser = findPreference<Preference>(makeDefaultBrowserKey)
|
||||
|
@ -66,15 +42,6 @@ class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
|
|||
updatePreferences()
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
context?.let {
|
||||
preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(
|
||||
preferenceChangeListener
|
||||
)
|
||||
}
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.default_browser_preferences, rootKey)
|
||||
updatePreferences()
|
||||
|
@ -94,9 +61,7 @@ class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
|
|||
private fun getClickListenerForMakeDefaultBrowser(): Preference.OnPreferenceClickListener {
|
||||
return if (SDK_INT >= Build.VERSION_CODES.N) {
|
||||
Preference.OnPreferenceClickListener {
|
||||
val intent = Intent(
|
||||
ACTION_MANAGE_DEFAULT_APPS_SETTINGS
|
||||
)
|
||||
val intent = Intent(ACTION_MANAGE_DEFAULT_APPS_SETTINGS)
|
||||
startActivity(intent)
|
||||
true
|
||||
}
|
||||
|
@ -104,7 +69,7 @@ class DefaultBrowserSettingsFragment : PreferenceFragmentCompat() {
|
|||
Preference.OnPreferenceClickListener {
|
||||
(activity as HomeActivity).openToBrowserAndLoad(
|
||||
searchTermOrURL = SupportUtils.getSumoURLForTopic(
|
||||
context!!,
|
||||
requireContext(),
|
||||
SupportUtils.SumoTopic.SET_AS_DEFAULT_BROWSER
|
||||
),
|
||||
newTab = true,
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
/* 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
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.fenix.settings
|
||||
|
||||
import android.content.SharedPreferences
|
||||
import androidx.lifecycle.Lifecycle.Event.ON_CREATE
|
||||
import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
|
||||
import androidx.lifecycle.LifecycleObserver
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.lifecycle.OnLifecycleEvent
|
||||
|
||||
class OnSharedPreferenceChangeListener(
|
||||
private val sharedPreferences: SharedPreferences,
|
||||
private val listener: (SharedPreferences, String) -> Unit
|
||||
) : SharedPreferences.OnSharedPreferenceChangeListener, LifecycleObserver {
|
||||
|
||||
@OnLifecycleEvent(ON_CREATE)
|
||||
fun onCreate() {
|
||||
sharedPreferences.registerOnSharedPreferenceChangeListener(this)
|
||||
}
|
||||
|
||||
@OnLifecycleEvent(ON_DESTROY)
|
||||
fun onDestroy() {
|
||||
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this)
|
||||
}
|
||||
|
||||
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {
|
||||
listener(sharedPreferences, key)
|
||||
}
|
||||
}
|
||||
|
||||
fun SharedPreferences.registerOnSharedPreferenceChangeListener(
|
||||
owner: LifecycleOwner,
|
||||
listener: (SharedPreferences, String) -> Unit
|
||||
) {
|
||||
owner.lifecycle.addObserver(OnSharedPreferenceChangeListener(this, listener))
|
||||
}
|
|
@ -7,12 +7,11 @@ package org.mozilla.fenix.settings
|
|||
import android.content.ActivityNotFoundException
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.NavDirections
|
||||
import androidx.navigation.Navigation
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.Preference.OnPreferenceClickListener
|
||||
|
@ -65,30 +64,32 @@ import org.mozilla.fenix.settings.account.AccountAuthErrorPreference
|
|||
import org.mozilla.fenix.settings.account.AccountPreference
|
||||
import org.mozilla.fenix.utils.ItsNotBrokenSnack
|
||||
|
||||
@SuppressWarnings("TooManyFunctions", "LargeClass")
|
||||
class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
|
||||
private val preferenceChangeListener =
|
||||
SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
|
||||
try {
|
||||
context?.let {
|
||||
it.components.analytics.metrics.track(
|
||||
Event.PreferenceToggled
|
||||
(key, sharedPreferences.getBoolean(key, false), it)
|
||||
)
|
||||
}
|
||||
} catch (e: IllegalArgumentException) {
|
||||
// The event is not tracked
|
||||
} catch (e: ClassCastException) {
|
||||
// The setting is not a boolean, not tracked
|
||||
@Suppress("LargeClass")
|
||||
class SettingsFragment : PreferenceFragmentCompat() {
|
||||
|
||||
private val accountObserver = object : AccountObserver {
|
||||
private fun updateAccountUi(profile: Profile? = null) {
|
||||
val context = context ?: return
|
||||
lifecycleScope.launch {
|
||||
updateAccountUIState(
|
||||
context = context,
|
||||
profile = profile ?: context.components.backgroundServices.accountManager.accountProfile()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAuthenticated(account: OAuthAccount, authType: AuthType) = updateAccountUi()
|
||||
override fun onLoggedOut() = updateAccountUi()
|
||||
override fun onProfileUpdated(profile: Profile) = updateAccountUi(profile)
|
||||
override fun onAuthenticationProblems() = updateAccountUi()
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
// Observe account changes to keep the UI up-to-date.
|
||||
requireComponents.backgroundServices.accountManager.register(
|
||||
this,
|
||||
accountObserver,
|
||||
owner = this,
|
||||
autoPause = true
|
||||
)
|
||||
|
@ -102,9 +103,20 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
|
|||
requireComponents.backgroundServices.accountManager.accountProfile()
|
||||
)
|
||||
|
||||
preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(
|
||||
preferenceChangeListener
|
||||
)
|
||||
preferenceManager.sharedPreferences
|
||||
.registerOnSharedPreferenceChangeListener(this) { sharedPreferences, key ->
|
||||
try {
|
||||
context?.let { context ->
|
||||
context.components.analytics.metrics.track(
|
||||
Event.PreferenceToggled(key, sharedPreferences.getBoolean(key, false), context)
|
||||
)
|
||||
}
|
||||
} catch (e: IllegalArgumentException) {
|
||||
// The event is not tracked
|
||||
} catch (e: ClassCastException) {
|
||||
// The setting is not a boolean, not tracked
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
|
@ -178,33 +190,35 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
|
|||
|
||||
@Suppress("ComplexMethod", "LongMethod")
|
||||
override fun onPreferenceTreeClick(preference: Preference): Boolean {
|
||||
when (preference.key) {
|
||||
val directions: NavDirections? = when (preference.key) {
|
||||
resources.getString(pref_key_search_settings) -> {
|
||||
navigateToSearchEngineSettings()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToSearchEngineFragment()
|
||||
}
|
||||
resources.getString(pref_key_tracking_protection_settings) -> {
|
||||
requireContext().metrics.track(Event.TrackingProtectionSettings)
|
||||
navigateToTrackingProtectionSettings()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToTrackingProtectionFragment()
|
||||
}
|
||||
resources.getString(pref_key_site_permissions) -> {
|
||||
navigateToSitePermissions()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToSitePermissionsFragment()
|
||||
}
|
||||
resources.getString(pref_key_add_private_browsing_shortcut) -> {
|
||||
requireContext().metrics.track(Event.PrivateBrowsingCreateShortcut)
|
||||
PrivateShortcutCreateManager.createPrivateShortcut(requireContext())
|
||||
null
|
||||
}
|
||||
resources.getString(pref_key_accessibility) -> {
|
||||
navigateToAccessibility()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToAccessibilityFragment()
|
||||
}
|
||||
resources.getString(pref_key_language) -> {
|
||||
// TODO #220
|
||||
ItsNotBrokenSnack(context!!).showSnackbar(issueNumber = "220")
|
||||
ItsNotBrokenSnack(requireContext()).showSnackbar(issueNumber = "220")
|
||||
null
|
||||
}
|
||||
resources.getString(pref_key_make_default_browser) -> {
|
||||
navigateToDefaultBrowserSettingsFragment()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToDefaultBrowserSettingsFragment()
|
||||
}
|
||||
resources.getString(pref_key_data_choices) -> {
|
||||
navigateToDataChoices()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToDataChoicesFragment()
|
||||
}
|
||||
resources.getString(pref_key_help) -> {
|
||||
(activity as HomeActivity).openToBrowserAndLoad(
|
||||
|
@ -215,6 +229,7 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
|
|||
newTab = true,
|
||||
from = BrowserDirection.FromSettings
|
||||
)
|
||||
null
|
||||
}
|
||||
resources.getString(pref_key_rate) -> {
|
||||
try {
|
||||
|
@ -228,60 +243,55 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
|
|||
from = BrowserDirection.FromSettings
|
||||
)
|
||||
}
|
||||
null
|
||||
}
|
||||
resources.getString(pref_key_passwords) -> {
|
||||
navigateToLoginsSettingsFragment()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToLoginsFragment()
|
||||
}
|
||||
resources.getString(pref_key_about) -> {
|
||||
navigateToAbout()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToAboutFragment()
|
||||
}
|
||||
resources.getString(pref_key_account) -> {
|
||||
navigateToAccountSettings()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToAccountSettingsFragment()
|
||||
}
|
||||
resources.getString(pref_key_account_auth_error) -> {
|
||||
navigateToAccountProblem()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToAccountProblemFragment()
|
||||
}
|
||||
resources.getString(pref_key_delete_browsing_data) -> {
|
||||
navigateToDeleteBrowsingData()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToDeleteBrowsingDataFragment()
|
||||
}
|
||||
resources.getString(pref_key_delete_browsing_data_on_quit_preference) -> {
|
||||
navigateToDeleteBrowsingDataOnQuit()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToDeleteBrowsingDataOnQuitFragment()
|
||||
}
|
||||
resources.getString(pref_key_theme) -> {
|
||||
navigateToThemeSettings()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToThemeFragment()
|
||||
}
|
||||
resources.getString(pref_key_toolbar) -> {
|
||||
navigateToToolbarSettings()
|
||||
SettingsFragmentDirections.actionSettingsFragmentToToolbarSettingsFragment()
|
||||
}
|
||||
resources.getString(pref_key_privacy_link) -> {
|
||||
requireContext().let { context ->
|
||||
val intent = SupportUtils.createCustomTabIntent(
|
||||
context,
|
||||
SupportUtils.getPrivacyNoticeUrl()
|
||||
)
|
||||
startActivity(intent)
|
||||
}
|
||||
val intent = SupportUtils.createCustomTabIntent(
|
||||
requireContext(),
|
||||
SupportUtils.getPrivacyNoticeUrl()
|
||||
)
|
||||
startActivity(intent)
|
||||
null
|
||||
}
|
||||
resources.getString(pref_key_your_rights) -> {
|
||||
requireContext().let { context ->
|
||||
val intent = SupportUtils.createCustomTabIntent(
|
||||
context,
|
||||
SupportUtils.getSumoURLForTopic(context, SupportUtils.SumoTopic.YOUR_RIGHTS)
|
||||
)
|
||||
startActivity(intent)
|
||||
}
|
||||
val context = requireContext()
|
||||
val intent = SupportUtils.createCustomTabIntent(
|
||||
context,
|
||||
SupportUtils.getSumoURLForTopic(context, SupportUtils.SumoTopic.YOUR_RIGHTS)
|
||||
)
|
||||
startActivity(intent)
|
||||
null
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
directions?.let { navigateFromSettings(directions) }
|
||||
return super.onPreferenceTreeClick(preference)
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(
|
||||
preferenceChangeListener
|
||||
)
|
||||
}
|
||||
|
||||
private fun getClickListenerForSignIn(): OnPreferenceClickListener {
|
||||
return OnPreferenceClickListener {
|
||||
context!!.components.services.launchPairingSignIn(context!!, findNavController())
|
||||
|
@ -313,132 +323,13 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver {
|
|||
}
|
||||
|
||||
private fun navigateFromSettings(directions: NavDirections) {
|
||||
view?.let {
|
||||
val navController = Navigation.findNavController(it)
|
||||
view?.findNavController()?.let { navController ->
|
||||
if (navController.currentDestination?.id == R.id.settingsFragment) {
|
||||
navController.navigate(directions)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun navigateToLoginsSettingsFragment() {
|
||||
val directions = SettingsFragmentDirections.actionSettingsFragmentToLoginsFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
private fun navigateToSearchEngineSettings() {
|
||||
val directions = SettingsFragmentDirections.actionSettingsFragmentToSearchEngineFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
private fun navigateToTrackingProtectionSettings() {
|
||||
val directions =
|
||||
SettingsFragmentDirections.actionSettingsFragmentToTrackingProtectionFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
private fun navigateToThemeSettings() {
|
||||
val directions = SettingsFragmentDirections.actionSettingsFragmentToThemeFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
private fun navigateToToolbarSettings() {
|
||||
val directions =
|
||||
SettingsFragmentDirections.actionSettingsFragmentToToolbarSettingsFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
private fun navigateToSitePermissions() {
|
||||
val directions =
|
||||
SettingsFragmentDirections.actionSettingsFragmentToSitePermissionsFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
private fun navigateToAccessibility() {
|
||||
val directions = SettingsFragmentDirections.actionSettingsFragmentToAccessibilityFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
private fun navigateToDefaultBrowserSettingsFragment() {
|
||||
val directions =
|
||||
SettingsFragmentDirections.actionSettingsFragmentToDefaultBrowserSettingsFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
private fun navigateToDataChoices() {
|
||||
val directions = SettingsFragmentDirections.actionSettingsFragmentToDataChoicesFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
private fun navigateToAbout() {
|
||||
val directions = SettingsFragmentDirections.actionSettingsFragmentToAboutFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
private fun navigateToAccountProblem() {
|
||||
val directions = SettingsFragmentDirections.actionSettingsFragmentToAccountProblemFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
private fun navigateToAccountSettings() {
|
||||
val directions =
|
||||
SettingsFragmentDirections.actionSettingsFragmentToAccountSettingsFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
private fun navigateToDeleteBrowsingData() {
|
||||
val directions =
|
||||
SettingsFragmentDirections.actionSettingsFragmentToDeleteBrowsingDataFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
private fun navigateToDeleteBrowsingDataOnQuit() {
|
||||
val directions =
|
||||
SettingsFragmentDirections.actionSettingsFragmentToDeleteBrowsingDataOnQuitFragment()
|
||||
navigateFromSettings(directions)
|
||||
}
|
||||
|
||||
override fun onAuthenticated(account: OAuthAccount, authType: AuthType) {
|
||||
lifecycleScope.launch {
|
||||
context?.let {
|
||||
updateAccountUIState(
|
||||
it,
|
||||
it.components.backgroundServices.accountManager.accountProfile()
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLoggedOut() {
|
||||
lifecycleScope.launch {
|
||||
context?.let {
|
||||
updateAccountUIState(
|
||||
it,
|
||||
it.components.backgroundServices.accountManager.accountProfile()
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onProfileUpdated(profile: Profile) {
|
||||
lifecycleScope.launch {
|
||||
context?.let {
|
||||
updateAccountUIState(it, profile)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAuthenticationProblems() {
|
||||
lifecycleScope.launch {
|
||||
context?.let {
|
||||
updateAccountUIState(
|
||||
it,
|
||||
it.components.backgroundServices.accountManager.accountProfile()
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the UI to reflect current account state.
|
||||
* Possible conditions are logged-in without problems, logged-out, and logged-in but needs to re-authenticate.
|
||||
|
|
|
@ -5,16 +5,17 @@
|
|||
package org.mozilla.fenix.settings
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
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.showToolbar
|
||||
|
||||
/**
|
||||
* Settings to adjust the position of the browser toolbar.
|
||||
*/
|
||||
class ToolbarSettingsFragment : PreferenceFragmentCompat() {
|
||||
private lateinit var topPreference: RadioButtonPreference
|
||||
private lateinit var bottomPreference: RadioButtonPreference
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.toolbar_preferences, rootKey)
|
||||
|
@ -22,16 +23,14 @@ class ToolbarSettingsFragment : PreferenceFragmentCompat() {
|
|||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
(activity as AppCompatActivity).title = getString(R.string.preferences_toolbar)
|
||||
(activity as AppCompatActivity).supportActionBar?.show()
|
||||
showToolbar(getString(R.string.preferences_toolbar))
|
||||
|
||||
setupClickListeners()
|
||||
setupRadioGroups()
|
||||
setupPreferences()
|
||||
}
|
||||
|
||||
private fun setupClickListeners() {
|
||||
private fun setupPreferences() {
|
||||
val keyToolbarTop = getPreferenceKey(R.string.pref_key_toolbar_top)
|
||||
topPreference = requireNotNull(findPreference(keyToolbarTop))
|
||||
val topPreference = requireNotNull(findPreference<RadioButtonPreference>(keyToolbarTop))
|
||||
topPreference.onClickListener {
|
||||
requireContext().components.analytics.metrics.track(Event.ToolbarPositionChanged(
|
||||
Event.ToolbarPositionChanged.Position.TOP
|
||||
|
@ -39,15 +38,13 @@ class ToolbarSettingsFragment : PreferenceFragmentCompat() {
|
|||
}
|
||||
|
||||
val keyToolbarBottom = getPreferenceKey(R.string.pref_key_toolbar_bottom)
|
||||
bottomPreference = requireNotNull(findPreference(keyToolbarBottom))
|
||||
val bottomPreference = requireNotNull(findPreference<RadioButtonPreference>(keyToolbarBottom))
|
||||
bottomPreference.onClickListener {
|
||||
requireContext().components.analytics.metrics.track(Event.ToolbarPositionChanged(
|
||||
Event.ToolbarPositionChanged.Position.BOTTOM
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupRadioGroups() {
|
||||
topPreference.addToRadioGroup(bottomPreference)
|
||||
bottomPreference.addToRadioGroup(topPreference)
|
||||
}
|
||||
|
|
|
@ -6,15 +6,13 @@ package org.mozilla.fenix.settings.search
|
|||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.Menu
|
||||
import android.view.MenuInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import kotlinx.android.synthetic.main.custom_search_engine.*
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.Dispatchers.Main
|
||||
|
@ -26,12 +24,13 @@ import org.mozilla.fenix.components.FenixSnackbar
|
|||
import org.mozilla.fenix.components.searchengine.CustomSearchEngineStore
|
||||
import org.mozilla.fenix.ext.increaseTapArea
|
||||
import org.mozilla.fenix.ext.requireComponents
|
||||
import org.mozilla.fenix.ext.showToolbar
|
||||
import org.mozilla.fenix.settings.SupportUtils
|
||||
import java.util.Locale
|
||||
|
||||
class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_engine) {
|
||||
private val engineIdentifier: String by lazy {
|
||||
navArgs<EditCustomSearchEngineFragmentArgs>().value.searchEngineIdentifier
|
||||
EditCustomSearchEngineFragmentArgs.fromBundle(requireArguments()).searchEngineIdentifier
|
||||
}
|
||||
|
||||
private lateinit var searchEngine: SearchEngine
|
||||
|
@ -68,8 +67,7 @@ class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_eng
|
|||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
(activity as AppCompatActivity).title = getString(R.string.search_engine_edit_custom_search_engine_title)
|
||||
(activity as AppCompatActivity).supportActionBar?.show()
|
||||
showToolbar(getString(R.string.search_engine_edit_custom_search_engine_title))
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
|
|
|
@ -8,12 +8,13 @@ import android.content.DialogInterface
|
|||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.Navigation
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.Dispatchers.Main
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import mozilla.components.feature.sitepermissions.SitePermissions
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.components
|
||||
|
@ -47,28 +48,22 @@ class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() {
|
|||
val context = requireContext()
|
||||
sitePermissions =
|
||||
requireNotNull(context.components.core.permissionStorage.findSitePermissionsBy(sitePermissions.origin))
|
||||
launch(Main) {
|
||||
withContext(Main) {
|
||||
bindCategoryPhoneFeatures()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun bindCategoryPhoneFeatures() {
|
||||
val context = requireContext()
|
||||
|
||||
val cameraAction = CAMERA.getActionLabel(context, sitePermissions)
|
||||
val locationAction = LOCATION.getActionLabel(context, sitePermissions)
|
||||
val microphoneAction = MICROPHONE.getActionLabel(context, sitePermissions)
|
||||
val notificationAction = NOTIFICATION.getActionLabel(context, sitePermissions)
|
||||
|
||||
initPhoneFeature(CAMERA, cameraAction)
|
||||
initPhoneFeature(LOCATION, locationAction)
|
||||
initPhoneFeature(MICROPHONE, microphoneAction)
|
||||
initPhoneFeature(NOTIFICATION, notificationAction)
|
||||
initPhoneFeature(CAMERA)
|
||||
initPhoneFeature(LOCATION)
|
||||
initPhoneFeature(MICROPHONE)
|
||||
initPhoneFeature(NOTIFICATION)
|
||||
bindClearPermissionsButton()
|
||||
}
|
||||
|
||||
private fun initPhoneFeature(phoneFeature: PhoneFeature, summary: String) {
|
||||
private fun initPhoneFeature(phoneFeature: PhoneFeature) {
|
||||
val summary = phoneFeature.getActionLabel(requireContext(), sitePermissions)
|
||||
val keyPreference = phoneFeature.getPreferenceKey(requireContext())
|
||||
val cameraPhoneFeatures: Preference = requireNotNull(findPreference(keyPreference))
|
||||
cameraPhoneFeatures.summary = summary
|
||||
|
@ -103,8 +98,8 @@ class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() {
|
|||
private fun clearSitePermissions() {
|
||||
lifecycleScope.launch(IO) {
|
||||
requireContext().components.core.permissionStorage.deleteSitePermissions(sitePermissions)
|
||||
launch(Main) {
|
||||
Navigation.findNavController(requireNotNull(view)).popBackStack()
|
||||
withContext(Main) {
|
||||
requireView().findNavController().popBackStack()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -115,6 +110,6 @@ class SitePermissionsDetailsExceptionsFragment : PreferenceFragmentCompat() {
|
|||
phoneFeatureId = phoneFeature.id,
|
||||
sitePermissions = sitePermissions
|
||||
)
|
||||
Navigation.findNavController(view!!).navigate(directions)
|
||||
requireView().findNavController().navigate(directions)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue