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:
@@ -5661,12 +5661,6 @@
|
||||
<!-- Battery saver: Title for battery saver schedule screen [CHAR_LIMIT=40] -->
|
||||
<string name="battery_saver_schedule_settings_title">Set a schedule</string>
|
||||
|
||||
<!-- Battery Saver: Title for sticky battery saver preference [CHAR_LIMIT=60] -->
|
||||
<string name="battery_saver_sticky_title">Keep battery saver on</string>
|
||||
|
||||
<!-- Battery Saver: Description for sticky battery saver preference [CHAR_LIMIT=NONE] -->
|
||||
<string name="battery_saver_sticky_description">Battery saver will stay on even after device is fully charged</string>
|
||||
|
||||
<!-- Battery Saver: Title for sticky battery saver preference [CHAR_LIMIT=60] -->
|
||||
<string name="battery_saver_sticky_title_new">Turn off when fully charged</string>
|
||||
|
||||
|
@@ -28,8 +28,8 @@
|
||||
|
||||
<SwitchPreference
|
||||
android:key="battery_saver_sticky"
|
||||
android:title="@string/battery_saver_sticky_title"
|
||||
android:summary="@string/battery_saver_sticky_description"
|
||||
android:title="@string/battery_saver_sticky_title_new"
|
||||
android:summary="@string/summary_placeholder"
|
||||
settings:keywords="@string/keywords_battery_saver_sticky"
|
||||
settings:controller="com.android.settings.fuelgauge.batterysaver.BatterySaverStickyPreferenceController"/>
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -16,11 +16,11 @@
|
||||
|
||||
package com.android.settings.fuelgauge.batterysaver;
|
||||
|
||||
import static com.android.settings.fuelgauge.batterysaver.BatterySaverStickyPreferenceController.LOW_POWER_STICKY_AUTO_DISABLE_ENABLED;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.Context;
|
||||
import android.provider.Settings;
|
||||
import android.provider.Settings.Global;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -43,21 +43,21 @@ public class BatterySaverStickyPreferenceControllerTest {
|
||||
|
||||
private int getAutoDisableSetting() {
|
||||
return Settings.Global.getInt(mContext.getContentResolver(),
|
||||
LOW_POWER_STICKY_AUTO_DISABLE_ENABLED,
|
||||
Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED,
|
||||
1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnPreferenceChange_turnOnKeepActive_autoDisableOff() {
|
||||
mController.onPreferenceChange(null, true);
|
||||
final int isOn = getAutoDisableSetting();
|
||||
assertThat(isOn).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnPreferenceChange_TurnOffKeepActive_autoDisableOff() {
|
||||
mController.onPreferenceChange(null, false);
|
||||
public void testOnPreferenceChange_turnOnAutoOff_autoDisableOn() {
|
||||
mController.setChecked(true);
|
||||
final int isOn = getAutoDisableSetting();
|
||||
assertThat(isOn).isEqualTo(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnPreferenceChange_TurnOffAutoOff_autoDisableOff() {
|
||||
mController.setChecked(false);
|
||||
final int isOn = getAutoDisableSetting();
|
||||
assertThat(isOn).isEqualTo(0);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user