Update Battery Saver schedule to add order to seekbar

If the first time battery saver warning was the one causing
a change in settings global the radio button picker doesn't update
the preferences correctly and would put the seekbar at the top. This
explicitly adds an order to the seekbar so that if it gets updated
for some reason it will show up at the end again.

Test: atest BatterySaverScheduleSettingsTest
Bug: 131434758
Change-Id: Iebab5d176c8fbdaea078e13a71eff7e21408353b
This commit is contained in:
Salvador Martinez
2019-05-01 13:18:43 -07:00
parent 8b285f2355
commit bd6045bea9
2 changed files with 34 additions and 0 deletions

View File

@@ -100,6 +100,9 @@ public class BatterySaverScheduleSeekBarController implements
} }
public void addToScreen(PreferenceScreen screen) { public void addToScreen(PreferenceScreen screen) {
// makes sure it gets added after the preferences if called due to first time battery
// saver message
mSeekBarPreference.setOrder(5);
screen.addPreference(mSeekBarPreference); screen.addPreference(mSeekBarPreference);
} }
} }

View File

@@ -17,15 +17,20 @@
package com.android.settings.fuelgauge.batterysaver; package com.android.settings.fuelgauge.batterysaver;
import android.content.Context; import android.content.Context;
import android.database.ContentObserver;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.provider.Settings;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View; import android.view.View;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
@@ -51,8 +56,18 @@ import java.util.List;
public class BatterySaverScheduleSettings extends RadioButtonPickerFragment { public class BatterySaverScheduleSettings extends RadioButtonPickerFragment {
public BatterySaverScheduleRadioButtonsController mRadioButtonController; public BatterySaverScheduleRadioButtonsController mRadioButtonController;
@VisibleForTesting
Context mContext;
private BatterySaverScheduleSeekBarController mSeekBarController; private BatterySaverScheduleSeekBarController mSeekBarController;
@VisibleForTesting
final ContentObserver mSettingsObserver = new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange, Uri uri) {
updateCandidates();
}
};
@Override @Override
protected int getPreferenceScreenResId() { protected int getPreferenceScreenResId() {
return R.xml.battery_saver_schedule_settings; return R.xml.battery_saver_schedule_settings;
@@ -64,6 +79,16 @@ public class BatterySaverScheduleSettings extends RadioButtonPickerFragment {
mSeekBarController = new BatterySaverScheduleSeekBarController(context); mSeekBarController = new BatterySaverScheduleSeekBarController(context);
mRadioButtonController = new BatterySaverScheduleRadioButtonsController( mRadioButtonController = new BatterySaverScheduleRadioButtonsController(
context, mSeekBarController); context, mSeekBarController);
mContext = context;
}
@Override
public void onResume() {
super.onResume();
mContext.getContentResolver().registerContentObserver(
Settings.Secure.getUriFor(Settings.Secure.LOW_POWER_WARNING_ACKNOWLEDGED),
false,
mSettingsObserver);
} }
@Override @Override
@@ -78,6 +103,12 @@ public class BatterySaverScheduleSettings extends RadioButtonPickerFragment {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
} }
@Override
public void onPause() {
mContext.getContentResolver().unregisterContentObserver(mSettingsObserver);
super.onPause();
}
@Override @Override
protected List<? extends CandidateInfo> getCandidates() { protected List<? extends CandidateInfo> getCandidates() {
Context context = getContext(); Context context = getContext();