Merge "Defers initialization of preferences." into sc-dev
diff --git a/src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java b/src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java
index 855c507..528c94d 100644
--- a/src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java
+++ b/src/com/android/settings/display/AdaptiveSleepBatterySaverPreferenceController.java
@@ -32,23 +32,20 @@
public class AdaptiveSleepBatterySaverPreferenceController {
@VisibleForTesting
- final BannerMessagePreference mPreference;
+ BannerMessagePreference mPreference;
private final PowerManager mPowerManager;
+ private final Context mContext;
public AdaptiveSleepBatterySaverPreferenceController(Context context) {
- mPreference = new BannerMessagePreference(context);
- mPreference.setTitle(R.string.ambient_camera_summary_battery_saver_on);
- mPreference.setPositiveButtonText(R.string.disable_text);
mPowerManager = context.getSystemService(PowerManager.class);
- mPreference.setPositiveButtonOnClickListener(p -> {
- mPowerManager.setPowerSaveModeEnabled(false);
- });
+ mContext = context;
}
/**
* Adds the controlled preference to the provided preference screen.
*/
public void addToScreen(PreferenceScreen screen) {
+ initializePreference();
screen.addPreference(mPreference);
updateVisibility();
}
@@ -66,6 +63,17 @@
* Refreshes the visibility of the preference.
*/
public void updateVisibility() {
+ initializePreference();
mPreference.setVisible(isPowerSaveMode());
}
+
+ private void initializePreference() {
+ if (mPreference == null) {
+ mPreference = new BannerMessagePreference(mContext);
+ mPreference.setTitle(R.string.ambient_camera_summary_battery_saver_on);
+ mPreference.setPositiveButtonText(R.string.disable_text);
+ mPreference.setPositiveButtonOnClickListener(
+ p -> mPowerManager.setPowerSaveModeEnabled(false));
+ }
+ }
}
diff --git a/src/com/android/settings/display/AdaptiveSleepCameraStatePreferenceController.java b/src/com/android/settings/display/AdaptiveSleepCameraStatePreferenceController.java
index ba7a3ab..20080ce 100644
--- a/src/com/android/settings/display/AdaptiveSleepCameraStatePreferenceController.java
+++ b/src/com/android/settings/display/AdaptiveSleepCameraStatePreferenceController.java
@@ -33,26 +33,22 @@
*/
public class AdaptiveSleepCameraStatePreferenceController {
@VisibleForTesting
- final BannerMessagePreference mPreference;
+ BannerMessagePreference mPreference;
private final SensorPrivacyManager mPrivacyManager;
+ private final Context mContext;
public AdaptiveSleepCameraStatePreferenceController(Context context) {
- mPreference = new BannerMessagePreference(context);
- mPreference.setTitle(R.string.auto_rotate_camera_lock_title);
- mPreference.setSummary(R.string.adaptive_sleep_camera_lock_summary);
- mPreference.setPositiveButtonText(R.string.allow);
mPrivacyManager = SensorPrivacyManager.getInstance(context);
mPrivacyManager.addSensorPrivacyListener(CAMERA,
(sensor, enabled) -> updateVisibility());
- mPreference.setPositiveButtonOnClickListener(p -> {
- mPrivacyManager.setSensorPrivacy(CAMERA, false);
- });
+ mContext = context;
}
/**
* Adds the controlled preference to the provided preference screen.
*/
public void addToScreen(PreferenceScreen screen) {
+ initializePreference();
screen.addPreference(mPreference);
updateVisibility();
}
@@ -70,6 +66,18 @@
* Refreshes the visibility of the preference.
*/
public void updateVisibility() {
+ initializePreference();
mPreference.setVisible(isCameraLocked());
}
+
+ private void initializePreference() {
+ if (mPreference == null) {
+ mPreference = new BannerMessagePreference(mContext);
+ mPreference.setTitle(R.string.auto_rotate_camera_lock_title);
+ mPreference.setSummary(R.string.adaptive_sleep_camera_lock_summary);
+ mPreference.setPositiveButtonText(R.string.allow);
+ mPreference.setPositiveButtonOnClickListener(
+ p -> mPrivacyManager.setSensorPrivacy(CAMERA, false));
+ }
+ }
}
diff --git a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java
index c57904e..b86a070 100644
--- a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java
+++ b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java
@@ -65,19 +65,6 @@
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
mPrivacyManager = SensorPrivacyManager.getInstance(context);
mPowerManager = context.getSystemService(PowerManager.class);
- mPreference = new RestrictedSwitchPreference(context);
- mPreference.setTitle(R.string.adaptive_sleep_title);
- mPreference.setSummary(R.string.adaptive_sleep_description);
- mPreference.setChecked(isChecked());
- mPreference.setKey(PREFERENCE_KEY);
- mPreference.setOnPreferenceClickListener(preference -> {
- final boolean isChecked = ((RestrictedSwitchPreference) preference).isChecked();
- mMetricsFeatureProvider.action(context, SettingsEnums.ACTION_SCREEN_ATTENTION_CHANGED,
- isChecked);
- Settings.Secure.putInt(context.getContentResolver(),
- Settings.Secure.ADAPTIVE_SLEEP, isChecked ? 1 : DEFAULT_VALUE);
- return true;
- });
mPackageManager = context.getPackageManager();
}
@@ -116,8 +103,8 @@
mPreference.setSummary(R.string.adaptive_sleep_description);
mPreference.setChecked(isChecked());
mPreference.setKey(PREFERENCE_KEY);
- mPreference.setOnPreferenceChangeListener((preference, value) -> {
- final boolean isChecked = (Boolean) value;
+ mPreference.setOnPreferenceClickListener(preference -> {
+ final boolean isChecked = ((RestrictedSwitchPreference) preference).isChecked();
mMetricsFeatureProvider.action(mContext,
SettingsEnums.ACTION_SCREEN_ATTENTION_CHANGED,
isChecked);