From 1e607904c320893fd3bc9b77a7f12f46a4204cbe Mon Sep 17 00:00:00 2001 From: Mill Chen Date: Thu, 25 Feb 2021 15:03:25 +0800 Subject: [PATCH] Update UI for factory reset flow After applying a collapsing toolbar in the Settings app, the factory reset screen is not displayed correctly. This is because 1) the factory reset page should not essentially have a toolbar since it has different UI layout form other pages. 2) this page was launched previously as a SubSettings so it applied a wrong theme. This change is mainly updating the inheritence structure and specifying the right theme for the factory reset page in order to have a correct layout. Bug: 179457252 Test: robotests and visual verified Change-Id: I91aec65a120d5a288507d89ace7c9298acdca42b --- src/com/android/settings/MainClear.java | 17 +++++++------ src/com/android/settings/Settings.java | 25 ++++++++++++++++++- .../core/gateway/SettingsGateway.java | 2 ++ .../FactoryResetPreferenceController.java | 14 +++++++++++ 4 files changed, 50 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/MainClear.java b/src/com/android/settings/MainClear.java index 326aeef61a4..a7aa8eacf92 100644 --- a/src/com/android/settings/MainClear.java +++ b/src/com/android/settings/MainClear.java @@ -59,11 +59,11 @@ import android.widget.TextView; import androidx.annotation.VisibleForTesting; import com.android.settings.core.InstrumentedFragment; -import com.android.settings.core.SubSettingLauncher; import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper; import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settings.password.ConfirmLockPattern; import com.android.settingslib.RestrictedLockUtilsInternal; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.development.DevelopmentSettingsEnabler; import com.google.android.setupcompat.template.FooterBarMixin; @@ -187,12 +187,15 @@ public class MainClear extends InstrumentedFragment implements OnGlobalLayoutLis final Bundle args = new Bundle(); args.putBoolean(ERASE_EXTERNAL_EXTRA, mExternalStorage.isChecked()); args.putBoolean(ERASE_ESIMS_EXTRA, mEsimStorage.isChecked()); - new SubSettingLauncher(getContext()) - .setDestination(MainClearConfirm.class.getName()) - .setArguments(args) - .setTitleRes(R.string.main_clear_confirm_title) - .setSourceMetricsCategory(getMetricsCategory()) - .launch(); + final Intent intent = new Intent(); + intent.setClass(getContext(), + com.android.settings.Settings.FactoryResetConfirmActivity.class); + intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, MainClearConfirm.class.getName()); + intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, args); + intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, + R.string.main_clear_confirm_title); + intent.putExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, getMetricsCategory()); + getContext().startActivity(intent); } @VisibleForTesting diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index 1008888504f..315eb19d3fc 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -123,7 +123,30 @@ public class Settings extends SettingsActivity { public static class ScanningSettingsActivity extends SettingsActivity { /* empty */ } public static class PrivacyDashboardActivity extends SettingsActivity { /* empty */ } public static class PrivacySettingsActivity extends SettingsActivity { /* empty */ } - public static class FactoryResetActivity extends SettingsActivity { /* empty */ } + public static class FactoryResetActivity extends SettingsActivity { + @Override + protected void onCreate(Bundle savedState) { + setTheme(SetupWizardUtils.getTheme(this, getIntent())); + super.onCreate(savedState); + } + + @Override + protected boolean isToolbarEnabled() { + return false; + } + } + public static class FactoryResetConfirmActivity extends SettingsActivity { + @Override + protected void onCreate(Bundle savedState) { + setTheme(SetupWizardUtils.getTheme(this, getIntent())); + super.onCreate(savedState); + } + + @Override + protected boolean isToolbarEnabled() { + return false; + } + } public static class RunningServicesActivity extends SettingsActivity { /* empty */ } public static class BatterySaverSettingsActivity extends SettingsActivity { /* empty */ } public static class BatterySaverScheduleSettingsActivity extends SettingsActivity { /* empty */ } diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java index 245389ea280..83ca2328a05 100644 --- a/src/com/android/settings/core/gateway/SettingsGateway.java +++ b/src/com/android/settings/core/gateway/SettingsGateway.java @@ -20,6 +20,7 @@ import com.android.settings.AllInOneTetherSettings; import com.android.settings.DisplaySettings; import com.android.settings.IccLockSettings; import com.android.settings.MainClear; +import com.android.settings.MainClearConfirm; import com.android.settings.Settings; import com.android.settings.TestingSettings; import com.android.settings.TetherSettings; @@ -282,6 +283,7 @@ public class SettingsGateway { WifiAPITest.class.getName(), WifiInfo.class.getName(), MainClear.class.getName(), + MainClearConfirm.class.getName(), ResetDashboardFragment.class.getName(), NightDisplaySettings.class.getName(), ManageDomainUrls.class.getName(), diff --git a/src/com/android/settings/system/FactoryResetPreferenceController.java b/src/com/android/settings/system/FactoryResetPreferenceController.java index cdeeaef5a3c..a307171d122 100644 --- a/src/com/android/settings/system/FactoryResetPreferenceController.java +++ b/src/com/android/settings/system/FactoryResetPreferenceController.java @@ -16,9 +16,13 @@ package com.android.settings.system; import android.content.Context; +import android.content.Intent; import android.os.UserManager; +import androidx.preference.Preference; + import com.android.settings.R; +import com.android.settings.Settings; import com.android.settings.Utils; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; @@ -45,4 +49,14 @@ public class FactoryResetPreferenceController extends AbstractPreferenceControll public String getPreferenceKey() { return KEY_FACTORY_RESET; } + + @Override + public boolean handlePreferenceTreeClick(Preference preference) { + if (KEY_FACTORY_RESET.equals(preference.getKey())) { + final Intent intent = new Intent(mContext, Settings.FactoryResetActivity.class); + mContext.startActivity(intent); + return true; + } + return false; + } }