Flip the preference for sticky battery saver

Instead of toggled on being to keep battery saver on, the UX
writers would like to make toggled on be turn battery saver off
automatically. Also turns the controller into a
TogglePreferenceController, because those exist apparently.

Test: visual inspection, tests pass
Fixes: 126938839
Change-Id: Iffac536d0b1956d4534ca1b5fa5c6440c4d3a3ff
This commit is contained in:
Salvador Martinez
2019-03-22 13:42:39 -07:00
parent 12256ca49f
commit d12d722099
4 changed files with 49 additions and 34 deletions

View File

@@ -1,37 +1,58 @@
package com.android.settings.fuelgauge.batterysaver;
import android.content.Context;
import android.icu.text.NumberFormat;
import android.provider.Settings;
import android.provider.Settings.Global;
import androidx.preference.Preference;
import androidx.preference.SwitchPreference;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.TogglePreferenceController;
public class BatterySaverStickyPreferenceController extends BasePreferenceController implements
public class BatterySaverStickyPreferenceController extends TogglePreferenceController implements
PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
public static final String LOW_POWER_STICKY_AUTO_DISABLE_ENABLED =
"low_power_sticky_auto_disable_enabled";
private Context mContext;
public BatterySaverStickyPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
mContext = context;
}
@Override
public boolean isChecked() {
return Settings.Global.getInt(mContext.getContentResolver(),
Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1) == 1;
}
@Override
public boolean setChecked(boolean isChecked) {
Settings.Global.putInt(mContext.getContentResolver(),
Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED,
isChecked ? 1 : 0);
return true;
}
@Override
protected void refreshSummary(Preference preference) {
super.refreshSummary(preference);
final double stickyShutoffLevel = Settings.Global.getInt(
mContext.getContentResolver(), Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_LEVEL, 90);
final String percentage = NumberFormat
.getPercentInstance()
.format(stickyShutoffLevel / 100.0);
preference.setSummary(
mContext.getString(R.string.battery_saver_sticky_description_new, percentage));
}
@Override
public void updateState(Preference preference) {
int setting = Settings.Global.getInt(mContext.getContentResolver(),
LOW_POWER_STICKY_AUTO_DISABLE_ENABLED, 1);
Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1);
((SwitchPreference) preference).setChecked(setting == 0);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean keepActive = (Boolean) newValue;
Settings.Global.putInt(mContext.getContentResolver(),
LOW_POWER_STICKY_AUTO_DISABLE_ENABLED,
keepActive ? 0 : 1);
return true;
((SwitchPreference) preference).setChecked(setting == 1);
refreshSummary(preference);
}
@Override