Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 507b7bf4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Flip the preference for sticky battery saver"

parents 5b39ec5d d12d7220
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -5659,12 +5659,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>
+2 −2
Original line number Diff line number Diff line
@@ -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"/>

+34 −13
Original line number Diff line number Diff line
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;
+8 −8
Original line number Diff line number Diff line
@@ -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);
    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);
    }
}