[fenix] For https://github.com/mozilla-mobile/fenix/issues/21437 - Relocated Home-related settings to its dedicated sub screen (https://github.com/mozilla-mobile/fenix/pull/21722)
* For https://github.com/mozilla-mobile/fenix/issues/21437 - Relocated Home-related settings to its dedicated sub screen * For https://github.com/mozilla-mobile/fenix/issues/21437 - Updated show top sites toggle text * PR: Fixed lint warning. Reverted preference keys * PR: added ignore for UI test * PR: Added ignore for UI testpull/600/head
parent
259b2e5d30
commit
b772f6d080
@ -0,0 +1,99 @@
|
||||
/* 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.os.Bundle
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceCategory
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.preference.SwitchPreference
|
||||
import org.mozilla.fenix.FeatureFlags
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.ext.showToolbar
|
||||
import org.mozilla.fenix.utils.view.addToRadioGroup
|
||||
|
||||
/**
|
||||
* Lets the user customize the home screen.
|
||||
*/
|
||||
class HomeSettingsFragment : PreferenceFragmentCompat() {
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.home_preferences, rootKey)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
showToolbar(getString(R.string.preferences_home_2))
|
||||
setupPreferences()
|
||||
}
|
||||
|
||||
private fun setupPreferences() {
|
||||
requirePreference<SwitchPreference>(R.string.pref_key_enable_top_frecent_sites).apply {
|
||||
isChecked = context.settings().showTopFrecentSites
|
||||
onPreferenceChangeListener = CustomizeHomeMetricsUpdater()
|
||||
}
|
||||
|
||||
requirePreference<SwitchPreference>(R.string.pref_key_recent_tabs).apply {
|
||||
isVisible = FeatureFlags.showRecentTabsFeature
|
||||
isChecked = context.settings().showRecentTabsFeature
|
||||
onPreferenceChangeListener = CustomizeHomeMetricsUpdater()
|
||||
}
|
||||
|
||||
requirePreference<SwitchPreference>(R.string.pref_key_recent_bookmarks).apply {
|
||||
isVisible = FeatureFlags.recentBookmarksFeature
|
||||
isChecked = context.settings().showRecentBookmarksFeature
|
||||
onPreferenceChangeListener = CustomizeHomeMetricsUpdater()
|
||||
}
|
||||
|
||||
requirePreference<SwitchPreference>(R.string.pref_key_pocket_homescreen_recommendations).apply {
|
||||
isVisible = FeatureFlags.isPocketRecommendationsFeatureEnabled(context)
|
||||
isChecked = context.settings().showPocketRecommendationsFeature
|
||||
onPreferenceChangeListener = CustomizeHomeMetricsUpdater()
|
||||
}
|
||||
|
||||
requirePreference<SwitchPreference>(R.string.pref_key_history_metadata_feature).apply {
|
||||
isVisible = FeatureFlags.historyMetadataUIFeature
|
||||
isChecked = context.settings().historyMetadataUIFeature
|
||||
onPreferenceChangeListener = CustomizeHomeMetricsUpdater()
|
||||
}
|
||||
|
||||
val openingScreenRadioHomepage =
|
||||
requirePreference<RadioButtonPreference>(R.string.pref_key_start_on_home_always)
|
||||
val openingScreenLastTab =
|
||||
requirePreference<RadioButtonPreference>(R.string.pref_key_start_on_home_never)
|
||||
val openingScreenAfterFourHours =
|
||||
requirePreference<RadioButtonPreference>(R.string.pref_key_start_on_home_after_four_hours)
|
||||
|
||||
requirePreference<PreferenceCategory>(R.string.pref_key_start_on_home_category).isVisible =
|
||||
FeatureFlags.showStartOnHomeSettings
|
||||
|
||||
addToRadioGroup(
|
||||
openingScreenRadioHomepage,
|
||||
openingScreenLastTab,
|
||||
openingScreenAfterFourHours
|
||||
)
|
||||
}
|
||||
|
||||
inner class CustomizeHomeMetricsUpdater : SharedPreferenceUpdater() {
|
||||
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
|
||||
try {
|
||||
val context = preference.context
|
||||
context.components.analytics.metrics.track(
|
||||
Event.CustomizeHomePreferenceToggled(
|
||||
preference.key,
|
||||
newValue as Boolean,
|
||||
context
|
||||
)
|
||||
)
|
||||
} catch (e: IllegalArgumentException) {
|
||||
// The event is not tracked
|
||||
}
|
||||
return super.onPreferenceChange(preference, newValue)
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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/. -->
|
||||
<androidx.preference.PreferenceScreen
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<androidx.preference.SwitchPreference
|
||||
android:key="@string/pref_key_enable_top_frecent_sites"
|
||||
android:title="@string/top_sites_toggle_top_recent_sites_3" />
|
||||
|
||||
<androidx.preference.SwitchPreference
|
||||
android:key="@string/pref_key_recent_tabs"
|
||||
android:title="@string/customize_toggle_jump_back_in"
|
||||
app:isPreferenceVisible="false" />
|
||||
|
||||
<androidx.preference.SwitchPreference
|
||||
android:key="@string/pref_key_recent_bookmarks"
|
||||
android:title="@string/customize_toggle_recent_bookmarks"
|
||||
app:isPreferenceVisible="false" />
|
||||
|
||||
<androidx.preference.SwitchPreference
|
||||
android:key="@string/pref_key_history_metadata_feature"
|
||||
android:title="@string/customize_toggle_recent_searches"
|
||||
app:isPreferenceVisible="false" />
|
||||
|
||||
<androidx.preference.SwitchPreference
|
||||
android:key="@string/pref_key_pocket_homescreen_recommendations"
|
||||
android:title="@string/customize_toggle_pocket"
|
||||
app:isPreferenceVisible="false" />
|
||||
|
||||
<androidx.preference.PreferenceCategory
|
||||
android:layout="@layout/preference_cat_style"
|
||||
android:title="@string/preferences_opening_screen"
|
||||
app:allowDividerAbove="true"
|
||||
app:isPreferenceVisible="false"
|
||||
android:key="pref_key_start_on_home_category"
|
||||
app:iconSpaceReserved="false">
|
||||
|
||||
<org.mozilla.fenix.settings.RadioButtonPreference
|
||||
android:defaultValue="true"
|
||||
android:key="@string/pref_key_start_on_home_always"
|
||||
android:title="@string/opening_screen_homepage" />
|
||||
|
||||
<org.mozilla.fenix.settings.RadioButtonPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/pref_key_start_on_home_never"
|
||||
android:title="@string/opening_screen_last_tab" />
|
||||
|
||||
<org.mozilla.fenix.settings.RadioButtonPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/pref_key_start_on_home_after_four_hours"
|
||||
android:title="@string/opening_screen_after_four_hours_of_inactivity" />
|
||||
|
||||
</androidx.preference.PreferenceCategory>
|
||||
</androidx.preference.PreferenceScreen>
|
Loading…
Reference in New Issue