diff options
9 files changed, 96 insertions, 60 deletions
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java index 2fceb6399a..0374d0bf28 100644 --- a/src/com/android/settings/SettingsPreferenceFragment.java +++ b/src/com/android/settings/SettingsPreferenceFragment.java @@ -683,22 +683,4 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF } getActivity().setResult(result); } - - public boolean startFragment(Fragment caller, String fragmentClass, int titleRes, - int requestCode, Bundle extras) { - final Activity activity = getActivity(); - if (activity instanceof SettingsActivity) { - SettingsActivity sa = (SettingsActivity) activity; - sa.startPreferencePanel( - caller, fragmentClass, extras, titleRes, null, caller, requestCode); - return true; - } else { - Log.w(TAG, - "Parent isn't SettingsActivity nor PreferenceActivity, thus there's no way to " - + "launch the given Fragment (name: " + fragmentClass - + ", requestCode: " + requestCode + ")"); - return false; - } - } - } diff --git a/src/com/android/settings/applications/ProcessStatsSummary.java b/src/com/android/settings/applications/ProcessStatsSummary.java index 75f8ba663c..53da04c119 100644 --- a/src/com/android/settings/applications/ProcessStatsSummary.java +++ b/src/com/android/settings/applications/ProcessStatsSummary.java @@ -22,11 +22,13 @@ import android.support.v7.preference.Preference; import android.support.v7.preference.Preference.OnPreferenceClickListener; import android.text.format.Formatter; import android.text.format.Formatter.BytesResult; + import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SummaryPreference; import com.android.settings.Utils; import com.android.settings.applications.ProcStatsData.MemInfo; +import com.android.settings.core.SubSettingLauncher; import com.android.settings.dashboard.SummaryLoader; public class ProcessStatsSummary extends ProcessStatsBase implements OnPreferenceClickListener { @@ -110,12 +112,16 @@ public class ProcessStatsSummary extends ProcessStatsBase implements OnPreferenc @Override public boolean onPreferenceClick(Preference preference) { if (preference == mAppListPreference) { - Bundle args = new Bundle(); + final Bundle args = new Bundle(); args.putBoolean(ARG_TRANSFER_STATS, true); args.putInt(ARG_DURATION_INDEX, mDurationIndex); mStatsManager.xferStats(); - startFragment(this, ProcessStatsUi.class.getName(), R.string.memory_usage_apps, 0, - args); + new SubSettingLauncher(getContext()) + .setDestination(ProcessStatsUi.class.getName()) + .setTitle(R.string.memory_usage_apps) + .setArguments(args) + .setSourceMetricsCategory(getMetricsCategory()) + .launch(); return true; } return false; diff --git a/src/com/android/settings/datausage/DataUsageList.java b/src/com/android/settings/datausage/DataUsageList.java index e724d48de6..587e325016 100644 --- a/src/com/android/settings/datausage/DataUsageList.java +++ b/src/com/android/settings/datausage/DataUsageList.java @@ -52,8 +52,10 @@ import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Spinner; + import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; +import com.android.settings.core.SubSettingLauncher; import com.android.settings.datausage.CycleAdapter.SpinnerInterface; import com.android.settings.widget.LoadingViewController; import com.android.settingslib.AppItem; @@ -61,6 +63,7 @@ import com.android.settingslib.net.ChartData; import com.android.settingslib.net.ChartDataLoader; import com.android.settingslib.net.SummaryForAllUidLoader; import com.android.settingslib.net.UidDetailProvider; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -149,8 +152,12 @@ public class DataUsageList extends DataUsageBase { mHeader.findViewById(R.id.filter_settings).setOnClickListener(btn -> { final Bundle args = new Bundle(); args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE, mTemplate); - startFragment(DataUsageList.this, BillingCycleSettings.class.getName(), - R.string.billing_cycle, 0, args); + new SubSettingLauncher(getContext()) + .setDestination(BillingCycleSettings.class.getName()) + .setTitle(R.string.billing_cycle) + .setSourceMetricsCategory(getMetricsCategory()) + .setArguments(args) + .launch(); }); mCycleSpinner = mHeader.findViewById(R.id.filter_spinner); mCycleAdapter = new CycleAdapter(mCycleSpinner.getContext(), new SpinnerInterface() { @@ -404,10 +411,16 @@ public class DataUsageList extends DataUsageBase { } private void startAppDataUsage(AppItem item) { - Bundle args = new Bundle(); + final Bundle args = new Bundle(); args.putParcelable(AppDataUsage.ARG_APP_ITEM, item); args.putParcelable(AppDataUsage.ARG_NETWORK_TEMPLATE, mTemplate); - startFragment(this, AppDataUsage.class.getName(), R.string.app_data_usage, 0, args); + + new SubSettingLauncher(getContext()) + .setDestination(AppDataUsage.class.getName()) + .setTitle(R.string.app_data_usage) + .setArguments(args) + .setSourceMetricsCategory(getMetricsCategory()) + .launch(); } /** diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java index f3ef4c7145..c2a72e693d 100644 --- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java +++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java @@ -57,6 +57,7 @@ import com.android.settings.Settings.StorageUseActivity; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.applications.manageapplications.ManageApplications; +import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.deviceinfo.StorageSettings.MountTask; import com.android.settingslib.deviceinfo.StorageMeasurement; @@ -430,13 +431,21 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { return true; case R.id.storage_unmount: args.putString(VolumeInfo.EXTRA_VOLUME_ID, mVolume.getId()); - startFragment(this, PrivateVolumeUnmount.class.getCanonicalName(), - R.string.storage_menu_unmount, 0, args); + new SubSettingLauncher(context) + .setDestination(PrivateVolumeUnmount.class.getCanonicalName()) + .setTitle(R.string.storage_menu_unmount) + .setSourceMetricsCategory(getMetricsCategory()) + .setArguments(args) + .launch(); return true; case R.id.storage_format: args.putString(VolumeInfo.EXTRA_VOLUME_ID, mVolume.getId()); - startFragment(this, PrivateVolumeFormat.class.getCanonicalName(), - R.string.storage_menu_format, 0, args); + new SubSettingLauncher(context) + .setDestination(PrivateVolumeFormat.class.getCanonicalName()) + .setTitle(R.string.storage_menu_format) + .setSourceMetricsCategory(getMetricsCategory()) + .setArguments(args) + .launch(); return true; case R.id.storage_migrate: final Intent intent = new Intent(context, StorageWizardMigrateConfirm.class); diff --git a/src/com/android/settings/deviceinfo/StorageSettings.java b/src/com/android/settings/deviceinfo/StorageSettings.java index 209346913b..17a06dff09 100644 --- a/src/com/android/settings/deviceinfo/StorageSettings.java +++ b/src/com/android/settings/deviceinfo/StorageSettings.java @@ -48,6 +48,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; +import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.dashboard.SummaryLoader; import com.android.settings.search.BaseSearchIndexProvider; @@ -56,9 +57,7 @@ import com.android.settings.search.SearchIndexableRaw; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.deviceinfo.PrivateStorageInfo; import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider; -import com.android.settingslib.drawer.SettingsDrawerActivity; -import java.io.File; import java.text.NumberFormat; import java.util.ArrayList; import java.util.Collections; @@ -279,15 +278,23 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index args.putString(VolumeInfo.EXTRA_VOLUME_ID, vol.getId()); if (VolumeInfo.ID_PRIVATE_INTERNAL.equals(vol.getId())) { - startFragment(this, StorageDashboardFragment.class.getCanonicalName(), - R.string.storage_settings, 0, args); + new SubSettingLauncher(getContext()) + .setDestination(StorageDashboardFragment.class.getCanonicalName()) + .setTitle(R.string.storage_settings) + .setSourceMetricsCategory(getMetricsCategory()) + .setArguments(args) + .launch(); } else { // TODO: Go to the StorageDashboardFragment once it fully handles all of the // SD card cases and other private internal storage cases. PrivateVolumeSettings.setVolumeSize(args, PrivateStorageInfo.getTotalSize(vol, sTotalInternalStorage)); - startFragment(this, PrivateVolumeSettings.class.getCanonicalName(), - -1, 0, args); + new SubSettingLauncher(getContext()) + .setDestination(PrivateVolumeSettings.class.getCanonicalName()) + .setTitle(-1) + .setSourceMetricsCategory(getMetricsCategory()) + .setArguments(args) + .launch(); } return true; @@ -299,8 +306,12 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index } else { final Bundle args = new Bundle(); args.putString(VolumeInfo.EXTRA_VOLUME_ID, vol.getId()); - startFragment(this, PublicVolumeSettings.class.getCanonicalName(), - -1, 0, args); + new SubSettingLauncher(getContext()) + .setDestination(PublicVolumeSettings.class.getCanonicalName()) + .setTitle(-1) + .setSourceMetricsCategory(getMetricsCategory()) + .setArguments(args) + .launch(); return true; } } @@ -314,8 +325,12 @@ public class StorageSettings extends SettingsPreferenceFragment implements Index // Picked a missing private volume final Bundle args = new Bundle(); args.putString(VolumeRecord.EXTRA_FS_UUID, key); - startFragment(this, PrivateVolumeForget.class.getCanonicalName(), - R.string.storage_menu_forget, 0, args); + new SubSettingLauncher(getContext()) + .setDestination(PrivateVolumeForget.class.getCanonicalName()) + .setTitle(R.string.storage_menu_forget) + .setSourceMetricsCategory(getMetricsCategory()) + .setArguments(args) + .launch(); return true; } diff --git a/src/com/android/settings/security/ChangeProfileScreenLockPreferenceController.java b/src/com/android/settings/security/ChangeProfileScreenLockPreferenceController.java index 91c4410f08..ec41a543fe 100644 --- a/src/com/android/settings/security/ChangeProfileScreenLockPreferenceController.java +++ b/src/com/android/settings/security/ChangeProfileScreenLockPreferenceController.java @@ -16,8 +16,6 @@ package com.android.settings.security; -import static com.android.settings.security.SecuritySettings.SET_OR_CHANGE_LOCK_METHOD_REQUEST_PROFILE; - import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.Intent; @@ -28,6 +26,7 @@ import android.text.TextUtils; import com.android.settings.R; import com.android.settings.Utils; +import com.android.settings.core.SubSettingLauncher; import com.android.settings.password.ChooseLockGeneric; public class ChangeProfileScreenLockPreferenceController extends @@ -76,9 +75,13 @@ public class ChangeProfileScreenLockPreferenceController extends } final Bundle extras = new Bundle(); extras.putInt(Intent.EXTRA_USER_ID, mProfileChallengeUserId); - mHost.startFragment(mHost, ChooseLockGeneric.ChooseLockGenericFragment.class.getName(), - R.string.lock_settings_picker_title_profile, - SET_OR_CHANGE_LOCK_METHOD_REQUEST_PROFILE, extras); + new SubSettingLauncher(mContext) + .setDestination(ChooseLockGeneric.ChooseLockGenericFragment.class.getName()) + .setTitle(R.string.lock_settings_picker_title_profile) + .setSourceMetricsCategory(mHost.getMetricsCategory()) + .setArguments(extras) + .launch(); + return true; } diff --git a/src/com/android/settings/security/ChangeScreenLockPreferenceController.java b/src/com/android/settings/security/ChangeScreenLockPreferenceController.java index 10143d268f..d9e339bb24 100644 --- a/src/com/android/settings/security/ChangeScreenLockPreferenceController.java +++ b/src/com/android/settings/security/ChangeScreenLockPreferenceController.java @@ -16,8 +16,6 @@ package com.android.settings.security; -import static com.android.settings.security.SecuritySettings.SET_OR_CHANGE_LOCK_METHOD_REQUEST; - import android.app.admin.DevicePolicyManager; import android.content.Context; import android.os.UserHandle; @@ -31,6 +29,7 @@ import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.PreferenceControllerMixin; +import com.android.settings.core.SubSettingLauncher; import com.android.settings.overlay.FeatureFactory; import com.android.settings.password.ChooseLockGeneric; import com.android.settings.security.screenlock.ScreenLockSettings; @@ -104,7 +103,10 @@ public class ChangeScreenLockPreferenceController extends AbstractPreferenceCont @Override public void onGearClick(GearPreference p) { if (TextUtils.equals(p.getKey(), getPreferenceKey())) { - mHost.startFragment(mHost, ScreenLockSettings.class.getName(), 0, 0, null); + new SubSettingLauncher(mContext) + .setDestination(ScreenLockSettings.class.getName()) + .setSourceMetricsCategory(mHost.getMetricsCategory()) + .launch(); } } @@ -124,8 +126,12 @@ public class ChangeScreenLockPreferenceController extends AbstractPreferenceCont return false; } } - mHost.startFragment(mHost, ChooseLockGeneric.ChooseLockGenericFragment.class.getName(), - R.string.lock_settings_picker_title, SET_OR_CHANGE_LOCK_METHOD_REQUEST, null); + + new SubSettingLauncher(mContext) + .setDestination(ChooseLockGeneric.ChooseLockGenericFragment.class.getName()) + .setTitle(R.string.lock_settings_picker_title) + .setSourceMetricsCategory(mHost.getMetricsCategory()) + .launch(); return true; } diff --git a/src/com/android/settings/security/LockUnificationPreferenceController.java b/src/com/android/settings/security/LockUnificationPreferenceController.java index abbf2f4c11..d6c66810ba 100644 --- a/src/com/android/settings/security/LockUnificationPreferenceController.java +++ b/src/com/android/settings/security/LockUnificationPreferenceController.java @@ -16,7 +16,6 @@ package com.android.settings.security; -import static com.android.settings.security.SecuritySettings.SET_OR_CHANGE_LOCK_METHOD_REQUEST_PROFILE; import static com.android.settings.security.SecuritySettings.UNIFY_LOCK_CONFIRM_DEVICE_REQUEST; import static com.android.settings.security.SecuritySettings.UNIFY_LOCK_CONFIRM_PROFILE_REQUEST; import static com.android.settings.security.SecuritySettings.UNUNIFY_LOCK_CONFIRM_DEVICE_REQUEST; @@ -35,6 +34,7 @@ import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.PreferenceControllerMixin; +import com.android.settings.core.SubSettingLauncher; import com.android.settings.overlay.FeatureFactory; import com.android.settings.password.ChooseLockGeneric; import com.android.settings.password.ChooseLockSettingsHelper; @@ -153,12 +153,14 @@ public class LockUnificationPreferenceController extends AbstractPreferenceContr } private void ununifyLocks() { - Bundle extras = new Bundle(); + final Bundle extras = new Bundle(); extras.putInt(Intent.EXTRA_USER_ID, mProfileChallengeUserId); - mHost.startFragment(mHost, - ChooseLockGeneric.ChooseLockGenericFragment.class.getName(), - R.string.lock_settings_picker_title_profile, - SET_OR_CHANGE_LOCK_METHOD_REQUEST_PROFILE, extras); + new SubSettingLauncher(mContext) + .setDestination(ChooseLockGeneric.ChooseLockGenericFragment.class.getName()) + .setTitle(R.string.lock_settings_picker_title_profile) + .setSourceMetricsCategory(mHost.getMetricsCategory()) + .setArguments(extras) + .launch(); } void launchConfirmDeviceLockForUnification() { @@ -209,9 +211,11 @@ public class LockUnificationPreferenceController extends AbstractPreferenceContr void unifyUncompliantLocks() { mLockPatternUtils.setSeparateProfileChallengeEnabled(mProfileChallengeUserId, false, mCurrentProfilePassword); - mHost.startFragment(mHost, ChooseLockGeneric.ChooseLockGenericFragment.class.getName(), - R.string.lock_settings_picker_title, - SecuritySettings.SET_OR_CHANGE_LOCK_METHOD_REQUEST, null); + new SubSettingLauncher(mContext) + .setDestination(ChooseLockGeneric.ChooseLockGenericFragment.class.getName()) + .setTitle(R.string.lock_settings_picker_title) + .setSourceMetricsCategory(mHost.getMetricsCategory()) + .launch(); } } diff --git a/src/com/android/settings/security/SecuritySettings.java b/src/com/android/settings/security/SecuritySettings.java index df3b455f0a..7298cd6c44 100644 --- a/src/com/android/settings/security/SecuritySettings.java +++ b/src/com/android/settings/security/SecuritySettings.java @@ -49,9 +49,7 @@ public class SecuritySettings extends DashboardFragment { private static final String TAG = "SecuritySettings"; - public static final int SET_OR_CHANGE_LOCK_METHOD_REQUEST = 123; public static final int CHANGE_TRUST_AGENT_SETTINGS = 126; - public static final int SET_OR_CHANGE_LOCK_METHOD_REQUEST_PROFILE = 127; public static final int UNIFY_LOCK_CONFIRM_DEVICE_REQUEST = 128; public static final int UNIFY_LOCK_CONFIRM_PROFILE_REQUEST = 129; public static final int UNUNIFY_LOCK_CONFIRM_DEVICE_REQUEST = 130; |