Migrate About/Reset/Legal to SettingsFragment/PreferenceController<T>
Also move LanguageSettingsEntryPreferenceController to language package.
Bug: 120942613
Test: Manual, Build, Robolectric
Change-Id: Ic532aa813561f06e97646d48f768b173c6bd98cf
diff --git a/src/com/android/car/settings/system/LanguageSettingsEntryPreferenceController.java b/src/com/android/car/settings/language/LanguageSettingsEntryPreferenceController.java
similarity index 96%
rename from src/com/android/car/settings/system/LanguageSettingsEntryPreferenceController.java
rename to src/com/android/car/settings/language/LanguageSettingsEntryPreferenceController.java
index e161b85..3e31c11 100644
--- a/src/com/android/car/settings/system/LanguageSettingsEntryPreferenceController.java
+++ b/src/com/android/car/settings/language/LanguageSettingsEntryPreferenceController.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.car.settings.system;
+package com.android.car.settings.language;
import android.content.Context;
diff --git a/src/com/android/car/settings/system/AboutSettingsFragment.java b/src/com/android/car/settings/system/AboutSettingsFragment.java
index 8969dcd..4171542 100644
--- a/src/com/android/car/settings/system/AboutSettingsFragment.java
+++ b/src/com/android/car/settings/system/AboutSettingsFragment.java
@@ -19,12 +19,12 @@
import androidx.annotation.XmlRes;
import com.android.car.settings.R;
-import com.android.car.settings.common.BasePreferenceFragment;
+import com.android.car.settings.common.SettingsFragment;
/**
* Shows basic info about the system and provide some actions like update, reset etc.
*/
-public class AboutSettingsFragment extends BasePreferenceFragment {
+public class AboutSettingsFragment extends SettingsFragment {
@Override
@XmlRes
diff --git a/src/com/android/car/settings/system/BuildNumberPreferenceController.java b/src/com/android/car/settings/system/BuildNumberPreferenceController.java
index 47c70eb..c9187e4 100644
--- a/src/com/android/car/settings/system/BuildNumberPreferenceController.java
+++ b/src/com/android/car/settings/system/BuildNumberPreferenceController.java
@@ -16,10 +16,10 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.car.userlib.CarUserManagerHelper;
import android.content.Context;
import android.os.Build;
-import android.text.TextUtils;
import android.widget.Toast;
import androidx.lifecycle.Lifecycle;
@@ -29,22 +29,26 @@
import com.android.car.settings.R;
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
import com.android.car.settings.development.DevelopmentSettingsUtil;
/** Updates the build number entry summary with the build number. */
-public class BuildNumberPreferenceController extends NoSetupPreferenceController implements
+public class BuildNumberPreferenceController extends PreferenceController<Preference> implements
LifecycleObserver {
private final CarUserManagerHelper mCarUserManagerHelper;
private Toast mDevHitToast;
private int mDevHitCountdown;
- public BuildNumberPreferenceController(Context context,
- String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
- mCarUserManagerHelper = new CarUserManagerHelper(mContext);
+ public BuildNumberPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
+ mCarUserManagerHelper = new CarUserManagerHelper(context);
+ }
+
+ @Override
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
}
/**
@@ -54,41 +58,38 @@
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void onResume() {
mDevHitToast = null;
- mDevHitCountdown = DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext,
+ mDevHitCountdown = DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(getContext(),
mCarUserManagerHelper) ? -1 : getTapsToBecomeDeveloper();
}
@Override
- public CharSequence getSummary() {
- return Build.DISPLAY;
+ protected void updateState(Preference preference) {
+ preference.setSummary(Build.DISPLAY);
}
@Override
- public boolean handlePreferenceTreeClick(Preference preference) {
- if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
- return false;
- }
-
+ protected boolean handlePreferenceClicked(Preference preference) {
if (!mCarUserManagerHelper.isCurrentProcessAdminUser()
&& !mCarUserManagerHelper.isCurrentProcessDemoUser()) {
return false;
}
- if (!DevelopmentSettingsUtil.isDeviceProvisioned(mContext)) {
+ if (!DevelopmentSettingsUtil.isDeviceProvisioned(getContext())) {
return false;
}
if (mDevHitCountdown > 0) {
mDevHitCountdown--;
if (mDevHitCountdown == 0) {
- DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(mContext, true);
- showToast(mContext.getString(R.string.show_dev_on), Toast.LENGTH_LONG);
+ DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(getContext(), true);
+ showToast(getContext().getString(R.string.show_dev_on), Toast.LENGTH_LONG);
} else if (mDevHitCountdown <= getTapsToBecomeDeveloper() - getTapsToShowToast()) {
- showToast(mContext.getResources().getQuantityString(R.plurals.show_dev_countdown,
- mDevHitCountdown, mDevHitCountdown), Toast.LENGTH_SHORT);
+ showToast(getContext().getResources().getQuantityString(
+ R.plurals.show_dev_countdown, mDevHitCountdown, mDevHitCountdown),
+ Toast.LENGTH_SHORT);
}
} else if (mDevHitCountdown < 0) {
- showToast(mContext.getString(R.string.show_dev_already), Toast.LENGTH_LONG);
+ showToast(getContext().getString(R.string.show_dev_already), Toast.LENGTH_LONG);
}
return true;
}
@@ -97,16 +98,17 @@
if (mDevHitToast != null) {
mDevHitToast.cancel();
}
- mDevHitToast = Toast.makeText(mContext, text, duration);
+ mDevHitToast = Toast.makeText(getContext(), text, duration);
mDevHitToast.show();
}
private int getTapsToBecomeDeveloper() {
- return mContext.getResources().getInteger(R.integer.enable_developer_settings_click_count);
+ return getContext().getResources().getInteger(
+ R.integer.enable_developer_settings_click_count);
}
private int getTapsToShowToast() {
- return mContext.getResources().getInteger(
+ return getContext().getResources().getInteger(
R.integer.enable_developer_settings_clicks_to_show_toast_count);
}
}
diff --git a/src/com/android/car/settings/system/FirmwareVersionPreferenceController.java b/src/com/android/car/settings/system/FirmwareVersionPreferenceController.java
index 090fa94..0d24dec 100644
--- a/src/com/android/car/settings/system/FirmwareVersionPreferenceController.java
+++ b/src/com/android/car/settings/system/FirmwareVersionPreferenceController.java
@@ -16,24 +16,32 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
import android.os.Build;
+import androidx.preference.Preference;
+
import com.android.car.settings.R;
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
/** Updates the firmware version entry summary with the firmware version. */
-public class FirmwareVersionPreferenceController extends NoSetupPreferenceController {
+public class FirmwareVersionPreferenceController extends PreferenceController<Preference> {
- public FirmwareVersionPreferenceController(Context context,
- String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ public FirmwareVersionPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
}
@Override
- public CharSequence getSummary() {
- return mContext.getString(R.string.about_summary, Build.VERSION.RELEASE);
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected void updateState(Preference preference) {
+ preference.setSummary(
+ getContext().getString(R.string.about_summary, Build.VERSION.RELEASE));
}
}
diff --git a/src/com/android/car/settings/system/KernelVersionPreferenceController.java b/src/com/android/car/settings/system/KernelVersionPreferenceController.java
index d6a1bfc..1d18523 100644
--- a/src/com/android/car/settings/system/KernelVersionPreferenceController.java
+++ b/src/com/android/car/settings/system/KernelVersionPreferenceController.java
@@ -16,23 +16,30 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
+import androidx.preference.Preference;
+
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
import com.android.settingslib.DeviceInfoUtils;
/** Updates the kernel version entry summary with the kernel version. */
-public class KernelVersionPreferenceController extends NoSetupPreferenceController {
+public class KernelVersionPreferenceController extends PreferenceController<Preference> {
- public KernelVersionPreferenceController(Context context,
- String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ public KernelVersionPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
}
@Override
- public CharSequence getSummary() {
- return DeviceInfoUtils.getFormattedKernelVersion(mContext);
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected void updateState(Preference preference) {
+ preference.setSummary(DeviceInfoUtils.getFormattedKernelVersion(getContext()));
}
}
diff --git a/src/com/android/car/settings/system/LegalInformationFragment.java b/src/com/android/car/settings/system/LegalInformationFragment.java
index 21c07f0..69b9bc6 100644
--- a/src/com/android/car/settings/system/LegalInformationFragment.java
+++ b/src/com/android/car/settings/system/LegalInformationFragment.java
@@ -19,12 +19,12 @@
import androidx.annotation.XmlRes;
import com.android.car.settings.R;
-import com.android.car.settings.common.BasePreferenceFragment;
+import com.android.car.settings.common.SettingsFragment;
/**
* Fragment showing legal information.
*/
-public class LegalInformationFragment extends BasePreferenceFragment {
+public class LegalInformationFragment extends SettingsFragment {
@Override
@XmlRes
diff --git a/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java b/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java
index ea2c1b9..b48920f 100644
--- a/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java
+++ b/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java
@@ -16,35 +16,43 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.car.userlib.CarUserManagerHelper;
import android.content.Context;
import android.os.UserManager;
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.RestrictedPreference;
/**
* Controller which determines if master clear (aka "factory reset") should be displayed based on
* user status.
*/
-public class MasterClearEntryPreferenceController extends NoSetupPreferenceController {
+public class MasterClearEntryPreferenceController extends
+ PreferenceController<RestrictedPreference> {
private final CarUserManagerHelper mCarUserManagerHelper;
public MasterClearEntryPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
mCarUserManagerHelper = new CarUserManagerHelper(context);
}
@Override
+ protected Class<RestrictedPreference> getPreferenceType() {
+ return RestrictedPreference.class;
+ }
+
+ @Override
public int getAvailabilityStatus() {
return (mCarUserManagerHelper.isCurrentProcessAdminUser() || isDemoUser()) ? AVAILABLE
: DISABLED_FOR_USER;
}
private boolean isDemoUser() {
- return UserManager.isDeviceInDemoMode(mContext)
+ return UserManager.isDeviceInDemoMode(getContext())
&& mCarUserManagerHelper.isCurrentProcessDemoUser();
}
}
diff --git a/src/com/android/car/settings/system/ModelInfoPreferenceController.java b/src/com/android/car/settings/system/ModelInfoPreferenceController.java
index f23ec65..4fd8b53 100644
--- a/src/com/android/car/settings/system/ModelInfoPreferenceController.java
+++ b/src/com/android/car/settings/system/ModelInfoPreferenceController.java
@@ -16,24 +16,31 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
import android.os.Build;
+import androidx.preference.Preference;
+
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
import com.android.settingslib.DeviceInfoUtils;
/** Updates the model info entry summary with the model info. */
-public class ModelInfoPreferenceController extends NoSetupPreferenceController {
+public class ModelInfoPreferenceController extends PreferenceController<Preference> {
- public ModelInfoPreferenceController(Context context,
- String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ public ModelInfoPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
}
@Override
- public CharSequence getSummary() {
- return Build.MODEL + DeviceInfoUtils.getMsvSuffix();
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected void updateState(Preference preference) {
+ preference.setSummary(Build.MODEL + DeviceInfoUtils.getMsvSuffix());
}
}
diff --git a/src/com/android/car/settings/system/ResetAppPrefFragment.java b/src/com/android/car/settings/system/ResetAppPrefFragment.java
index 2f50e05..70725e9 100644
--- a/src/com/android/car/settings/system/ResetAppPrefFragment.java
+++ b/src/com/android/car/settings/system/ResetAppPrefFragment.java
@@ -38,8 +38,8 @@
import androidx.annotation.XmlRes;
import com.android.car.settings.R;
-import com.android.car.settings.common.BasePreferenceFragment;
import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.SettingsFragment;
import java.lang.ref.WeakReference;
import java.util.List;
@@ -47,7 +47,7 @@
/**
* Presents the user with information about resetting app preferences.
*/
-public class ResetAppPrefFragment extends BasePreferenceFragment {
+public class ResetAppPrefFragment extends SettingsFragment {
private static final Logger LOG = new Logger(ResetAppPrefFragment.class);
diff --git a/src/com/android/car/settings/system/ResetEsimPreferenceController.java b/src/com/android/car/settings/system/ResetEsimPreferenceController.java
index 6b11408..863d819 100644
--- a/src/com/android/car/settings/system/ResetEsimPreferenceController.java
+++ b/src/com/android/car/settings/system/ResetEsimPreferenceController.java
@@ -16,23 +16,31 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
import android.telephony.euicc.EuiccManager;
+import androidx.preference.TwoStatePreference;
+
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
/**
* Controller which determines if a checkbox to reset the device's eSIMs is shown. Not all
* devices support eSIMs.
*/
-public class ResetEsimPreferenceController extends NoSetupPreferenceController {
+public class ResetEsimPreferenceController extends PreferenceController<TwoStatePreference> {
public ResetEsimPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
+ }
+
+ @Override
+ protected Class<TwoStatePreference> getPreferenceType() {
+ return TwoStatePreference.class;
}
@Override
@@ -41,11 +49,12 @@
}
private boolean showEuiccSettings() {
- EuiccManager euiccManager = (EuiccManager) mContext.getSystemService(Context.EUICC_SERVICE);
+ EuiccManager euiccManager = (EuiccManager) getContext().getSystemService(
+ Context.EUICC_SERVICE);
if (!euiccManager.isEnabled()) {
return false;
}
- ContentResolver resolver = mContext.getContentResolver();
+ ContentResolver resolver = getContext().getContentResolver();
return Settings.Global.getInt(resolver, Settings.Global.EUICC_PROVISIONED, 0) != 0
|| Settings.Global.getInt(resolver, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0)
!= 0;
diff --git a/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java b/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java
index 9759498..29c2453 100644
--- a/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java
+++ b/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java
@@ -45,14 +45,14 @@
import androidx.preference.PreferenceManager;
import com.android.car.settings.R;
-import com.android.car.settings.common.BasePreferenceFragment;
import com.android.car.settings.common.ErrorDialog;
+import com.android.car.settings.common.SettingsFragment;
/**
* Final warning presented to user to confirm restoring network settings to the factory default.
* If a user confirms, all settings are reset for connectivity, Wi-Fi, and Bluetooth.
*/
-public class ResetNetworkConfirmFragment extends BasePreferenceFragment {
+public class ResetNetworkConfirmFragment extends SettingsFragment {
// Copied from com.android.settings.network.ApnSettings.
@VisibleForTesting
diff --git a/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java b/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java
index d2e3e27..10632d7 100644
--- a/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java
+++ b/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java
@@ -16,24 +16,32 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.car.userlib.CarUserManagerHelper;
import android.content.Context;
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.RestrictedPreference;
/** Controller which determines if network reset should be displayed based on user status. */
-public class ResetNetworkEntryPreferenceController extends NoSetupPreferenceController {
+public class ResetNetworkEntryPreferenceController extends
+ PreferenceController<RestrictedPreference> {
private final CarUserManagerHelper mCarUserManagerHelper;
public ResetNetworkEntryPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
mCarUserManagerHelper = new CarUserManagerHelper(context);
}
@Override
+ protected Class<RestrictedPreference> getPreferenceType() {
+ return RestrictedPreference.class;
+ }
+
+ @Override
public int getAvailabilityStatus() {
return mCarUserManagerHelper.isCurrentProcessAdminUser() ? AVAILABLE : DISABLED_FOR_USER;
}
diff --git a/src/com/android/car/settings/system/ResetNetworkFragment.java b/src/com/android/car/settings/system/ResetNetworkFragment.java
index 956a8d6..ef81b8b 100644
--- a/src/com/android/car/settings/system/ResetNetworkFragment.java
+++ b/src/com/android/car/settings/system/ResetNetworkFragment.java
@@ -28,8 +28,8 @@
import androidx.annotation.XmlRes;
import com.android.car.settings.R;
-import com.android.car.settings.common.BasePreferenceFragment;
import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.SettingsFragment;
import com.android.car.settings.security.CheckLockActivity;
/**
@@ -37,7 +37,7 @@
* values. If a user confirms, they will first be required to authenticate then presented with a
* secondary confirmation: {@link ResetNetworkConfirmFragment}.
*/
-public class ResetNetworkFragment extends BasePreferenceFragment {
+public class ResetNetworkFragment extends SettingsFragment {
// Arbitrary request code for starting CheckLockActivity when the reset button is clicked.
private static final int REQUEST_CODE = 123;
diff --git a/src/com/android/car/settings/system/ResetNetworkItemsPreferenceController.java b/src/com/android/car/settings/system/ResetNetworkItemsPreferenceController.java
index 4375e2d..d018c3c 100644
--- a/src/com/android/car/settings/system/ResetNetworkItemsPreferenceController.java
+++ b/src/com/android/car/settings/system/ResetNetworkItemsPreferenceController.java
@@ -16,39 +16,51 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
import android.content.pm.PackageManager;
+import androidx.preference.Preference;
+
import com.android.car.settings.R;
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
import java.util.StringJoiner;
/** Controller to determine which items appear as resetable within the reset network description. */
-public class ResetNetworkItemsPreferenceController extends NoSetupPreferenceController {
+public class ResetNetworkItemsPreferenceController extends PreferenceController<Preference> {
public ResetNetworkItemsPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
}
@Override
- public CharSequence getSummary() {
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected void updateState(Preference preference) {
+ preference.setSummary(getSummary());
+ }
+
+ private CharSequence getSummary() {
StringJoiner joiner = new StringJoiner(System.lineSeparator());
if (hasFeature(PackageManager.FEATURE_WIFI)) {
- joiner.add(mContext.getString(R.string.reset_network_item_wifi));
+ joiner.add(getContext().getString(R.string.reset_network_item_wifi));
}
if (hasFeature(PackageManager.FEATURE_TELEPHONY)) {
- joiner.add(mContext.getString(R.string.reset_network_item_mobile));
+ joiner.add(getContext().getString(R.string.reset_network_item_mobile));
}
if (hasFeature(PackageManager.FEATURE_BLUETOOTH)) {
- joiner.add(mContext.getString(R.string.reset_network_item_bluetooth));
+ joiner.add(getContext().getString(R.string.reset_network_item_bluetooth));
}
return joiner.toString();
}
private boolean hasFeature(String feature) {
- return mContext.getPackageManager().hasSystemFeature(feature);
+ return getContext().getPackageManager().hasSystemFeature(feature);
}
}
diff --git a/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java b/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java
index 9ebd355..fab9b03 100644
--- a/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java
+++ b/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java
@@ -16,6 +16,7 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
import android.content.pm.PackageManager;
import android.telephony.SubscriptionInfo;
@@ -23,12 +24,10 @@
import android.text.TextUtils;
import androidx.preference.ListPreference;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
import com.android.car.settings.R;
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
import java.util.ArrayList;
import java.util.List;
@@ -38,40 +37,41 @@
* network subscriptions, a user may select the network to reset.
*/
public class ResetNetworkSubscriptionPreferenceController extends
- NoSetupPreferenceController implements Preference.OnPreferenceChangeListener {
+ PreferenceController<ListPreference> {
private final SubscriptionManager mSubscriptionManager;
- private ListPreference mListPreference;
public ResetNetworkSubscriptionPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
mSubscriptionManager = (SubscriptionManager) context.getSystemService(
Context.TELEPHONY_SUBSCRIPTION_SERVICE);
}
@Override
+ protected Class<ListPreference> getPreferenceType() {
+ return ListPreference.class;
+ }
+
+ @Override
public int getAvailabilityStatus() {
- return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+ return getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
- public void displayPreference(PreferenceScreen screen) {
- super.displayPreference(screen);
- mListPreference = (ListPreference) screen.findPreference(getPreferenceKey());
-
+ protected void updateState(ListPreference preference) {
List<SubscriptionInfo> subscriptions = mSubscriptionManager.getActiveSubscriptionInfoList();
if (subscriptions == null || subscriptions.isEmpty()) {
// No subscriptions to reset.
- mListPreference.setValue(String.valueOf(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
- mListPreference.setVisible(false);
+ preference.setValue(String.valueOf(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
+ preference.setVisible(false);
return;
}
if (subscriptions.size() == 1) {
// Only one subscription, so nothing else to select. Use it and hide the preference.
- mListPreference.setValue(String.valueOf(subscriptions.get(0).getSubscriptionId()));
- mListPreference.setVisible(false);
+ preference.setValue(String.valueOf(subscriptions.get(0).getSubscriptionId()));
+ preference.setVisible(false);
return;
}
@@ -91,10 +91,19 @@
subscriptionIds.add(String.valueOf(subscriptionId));
}
- mListPreference.setEntries(toCharSequenceArray(subscriptionNames));
- mListPreference.setEntryValues(toCharSequenceArray(subscriptionIds));
- mListPreference.setTitle(subscriptionNames.get(selectedIndex));
- mListPreference.setValueIndex(selectedIndex);
+ preference.setEntries(toCharSequenceArray(subscriptionNames));
+ preference.setEntryValues(toCharSequenceArray(subscriptionIds));
+ preference.setTitle(subscriptionNames.get(selectedIndex));
+ preference.setValueIndex(selectedIndex);
+ }
+
+ @Override
+ protected boolean handlePreferenceChanged(ListPreference preference, Object newValue) {
+ String subscriptionIdStr = (String) newValue;
+ int index = preference.findIndexOfValue(subscriptionIdStr);
+ CharSequence subscriptionName = preference.getEntries()[index];
+ preference.setTitle(subscriptionName);
+ return true;
}
/**
@@ -127,7 +136,7 @@
name = subscription.getCarrierName().toString();
}
if (TextUtils.isEmpty(name)) {
- name = mContext.getString(R.string.reset_network_fallback_subscription_name,
+ name = getContext().getString(R.string.reset_network_fallback_subscription_name,
subscription.getMcc(), subscription.getMnc(), subscription.getSimSlotIndex(),
subscription.getSubscriptionId());
}
@@ -139,13 +148,4 @@
list.toArray(array);
return array;
}
-
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- String subscriptionIdStr = (String) newValue;
- int index = mListPreference.findIndexOfValue(subscriptionIdStr);
- CharSequence subscriptionName = mListPreference.getEntries()[index];
- mListPreference.setTitle(subscriptionName);
- return true;
- }
}
diff --git a/src/com/android/car/settings/system/ResetOptionsFragment.java b/src/com/android/car/settings/system/ResetOptionsFragment.java
index 8af0e38..a0643cf 100644
--- a/src/com/android/car/settings/system/ResetOptionsFragment.java
+++ b/src/com/android/car/settings/system/ResetOptionsFragment.java
@@ -17,12 +17,12 @@
package com.android.car.settings.system;
import com.android.car.settings.R;
-import com.android.car.settings.common.BasePreferenceFragment;
+import com.android.car.settings.common.SettingsFragment;
/**
* Shows options to reset network settings, reset app preferences, and factory reset the device.
*/
-public class ResetOptionsFragment extends BasePreferenceFragment {
+public class ResetOptionsFragment extends SettingsFragment {
@Override
protected int getPreferenceScreenResId() {
diff --git a/src/com/android/car/settings/system/SecurityPatchPreferenceController.java b/src/com/android/car/settings/system/SecurityPatchPreferenceController.java
index 54e68cc..f48357c 100644
--- a/src/com/android/car/settings/system/SecurityPatchPreferenceController.java
+++ b/src/com/android/car/settings/system/SecurityPatchPreferenceController.java
@@ -16,23 +16,30 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
+import androidx.preference.Preference;
+
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
import com.android.settingslib.DeviceInfoUtils;
/** Updates the security patch entry summary with the security patch. */
-public class SecurityPatchPreferenceController extends NoSetupPreferenceController {
+public class SecurityPatchPreferenceController extends PreferenceController<Preference> {
- public SecurityPatchPreferenceController(Context context,
- String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ public SecurityPatchPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
}
@Override
- public CharSequence getSummary() {
- return DeviceInfoUtils.getSecurityPatch();
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected void updateState(Preference preference) {
+ preference.setSummary(DeviceInfoUtils.getSecurityPatch());
}
}