OSDN Git Service

Flip the preference for sticky battery saver
authorSalvador Martinez <dehboxturtle@google.com>
Fri, 22 Mar 2019 20:42:39 +0000 (13:42 -0700)
committerSalvador Martinez <dehboxturtle@google.com>
Tue, 26 Mar 2019 18:29:18 +0000 (11:29 -0700)
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

res/values/strings.xml
res/xml/battery_saver_settings.xml
src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceController.java
tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverStickyPreferenceControllerTest.java

index 23a5c89..7cc904f 100644 (file)
     <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>
 
     <!-- Battery Saver: Description for sticky battery saver preference [CHAR_LIMIT=NONE] -->
index ae9d14d..c8d1d63 100644 (file)
@@ -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"/>
 
index 7a1f7f5..7d4bdac 100644 (file)
@@ -1,40 +1,61 @@
 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 void updateState(Preference preference) {
-        int setting = Settings.Global.getInt(mContext.getContentResolver(),
-                LOW_POWER_STICKY_AUTO_DISABLE_ENABLED, 1);
-
-        ((SwitchPreference) preference).setChecked(setting == 0);
+    public boolean isChecked() {
+        return Settings.Global.getInt(mContext.getContentResolver(),
+            Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1) == 1;
     }
 
     @Override
-    public boolean onPreferenceChange(Preference preference, Object newValue) {
-        boolean keepActive = (Boolean) newValue;
+    public boolean setChecked(boolean isChecked) {
         Settings.Global.putInt(mContext.getContentResolver(),
-                LOW_POWER_STICKY_AUTO_DISABLE_ENABLED,
-                keepActive ? 0 : 1);
+            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(),
+            Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED, 1);
+
+        ((SwitchPreference) preference).setChecked(setting == 1);
+        refreshSummary(preference);
+    }
+
+    @Override
     public int getAvailabilityStatus() {
         return AVAILABLE;
     }
index 0ee9cfc..0e7c312 100644 (file)
 
 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);
+    public void testOnPreferenceChange_turnOnAutoOff_autoDisableOn() {
+        mController.setChecked(true);
         final int isOn = getAutoDisableSetting();
-        assertThat(isOn).isEqualTo(0);
+        assertThat(isOn).isEqualTo(1);
     }
 
     @Test
-    public void testOnPreferenceChange_TurnOffKeepActive_autoDisableOff() {
-        mController.onPreferenceChange(null, false);
+    public void testOnPreferenceChange_TurnOffAutoOff_autoDisableOff() {
+        mController.setChecked(false);
         final int isOn = getAutoDisableSetting();
-        assertThat(isOn).isEqualTo(1);
+        assertThat(isOn).isEqualTo(0);
     }
 }