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

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

Merge "Add BatterySaver as SettingSlice"

parents 609ece77 e8854ec3
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -36,7 +36,8 @@
        <com.android.settings.widget.MasterSwitchPreference
            android:fragment="com.android.settings.fuelgauge.batterysaver.BatterySaverSettings"
            android:key="battery_saver_summary"
            android:title="@string/battery_saver"/>
            android:title="@string/battery_saver"
            settings:controller="com.android.settings.fuelgauge.BatterySaverController"/>

        <Preference
            android:fragment="com.android.settings.fuelgauge.SmartBatterySettings"
+7 −1
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@ import android.content.Context;
import android.support.v7.preference.Preference;
import android.support.v7.preference.TwoStatePreference;

import com.android.settings.widget.MasterSwitchPreference;

/**
 * Abstract class that consolidates logic for updating toggle controllers.
 * It automatically handles the getting and setting of the switch UI element.
@@ -46,7 +48,11 @@ public abstract class TogglePreferenceController extends BasePreferenceControlle

    @Override
    public final void updateState(Preference preference) {
        if (preference instanceof TwoStatePreference) {
            ((TwoStatePreference) preference).setChecked(isChecked());
        } if (preference instanceof MasterSwitchPreference) {
            ((MasterSwitchPreference) preference).setChecked(isChecked());
        }
    }

    @Override
+22 −28
Original line number Diff line number Diff line
@@ -21,42 +21,36 @@ import android.os.Handler;
import android.os.PowerManager;
import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.dashboard.conditional.BatterySaverCondition;
import com.android.settings.dashboard.conditional.ConditionManager;
import com.android.settings.widget.MasterSwitchPreference;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;

import static android.os.PowerManager.ACTION_POWER_SAVE_MODE_CHANGING;

public class BatterySaverController extends AbstractPreferenceController
        implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener,
        LifecycleObserver, OnStart, OnStop, BatterySaverReceiver.BatterySaverListener {
public class BatterySaverController extends TogglePreferenceController
        implements LifecycleObserver, OnStart, OnStop, BatterySaverReceiver.BatterySaverListener {
    private static final String KEY_BATTERY_SAVER = "battery_saver_summary";
    private final BatterySaverReceiver mBatteryStateChangeReceiver;
    private final PowerManager mPowerManager;
    private MasterSwitchPreference mBatterySaverPref;

    public BatterySaverController(Context context, Lifecycle lifecycle) {
        super(context);
    public BatterySaverController(Context context) {
        super(context, KEY_BATTERY_SAVER);

        lifecycle.addObserver(this);
        mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
        mBatteryStateChangeReceiver = new BatterySaverReceiver(context);
        mBatteryStateChangeReceiver.setBatterySaverListener(this);
    }

    @Override
    public boolean isAvailable() {
        return true;
    public int getAvailabilityStatus() {
        return AVAILABLE;
    }

    @Override
@@ -71,17 +65,9 @@ public class BatterySaverController extends AbstractPreferenceController
    }

    @Override
    public void updateState(Preference preference) {
        mBatterySaverPref.setChecked(mPowerManager.isPowerSaveMode());
        updateSummary();
    }

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        final boolean saverOn = (Boolean) newValue;
        if (saverOn != mPowerManager.isPowerSaveMode()
                && !mPowerManager.setPowerSaveMode(saverOn)) {
            // Do nothing if power save mode doesn't set correctly
    public boolean setChecked(boolean isChecked) {
        mBatterySaverPref.setChecked(isChecked);
        if (!mPowerManager.setPowerSaveMode(isChecked)) {
            return false;
        }

@@ -90,6 +76,11 @@ public class BatterySaverController extends AbstractPreferenceController
        return true;
    }

    @Override
    public boolean isChecked() {
        return mPowerManager.isPowerSaveMode();
    }

    @Override
    public void onStart() {
        mContext.getContentResolver().registerContentObserver(
@@ -110,7 +101,8 @@ public class BatterySaverController extends AbstractPreferenceController
        ConditionManager.get(mContext).getCondition(BatterySaverCondition.class).refreshState();
    }

    private void updateSummary() {
    @Override
    public String getSummary() {
        final boolean mode = mPowerManager.isPowerSaveMode();
        final int format = mode ? R.string.battery_saver_on_summary
                : R.string.battery_saver_off_summary;
@@ -119,10 +111,12 @@ public class BatterySaverController extends AbstractPreferenceController
        final int percentFormat = percent > 0 ? R.string.battery_saver_desc_turn_on_auto_pct
                : R.string.battery_saver_desc_turn_on_auto_never;

        final String summary = mContext.getString(format, mContext.getString(percentFormat,
        return mContext.getString(format, mContext.getString(percentFormat,
                Utils.formatPercentage(percent)));
    }

        mBatterySaverPref.setSummary(summary);
    private void updateSummary() {
        mBatterySaverPref.setSummary(getSummary());
    }

    private final ContentObserver mObserver = new ContentObserver(new Handler()) {
+9 −4
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ import com.android.settingslib.core.lifecycle.Lifecycle;

import com.android.settingslib.utils.PowerUtil;
import com.android.settingslib.utils.StringUtil;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -232,17 +233,20 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
        final SettingsActivity activity = (SettingsActivity) getActivity();
        final List<AbstractPreferenceController> controllers = new ArrayList<>();
        mBatteryHeaderPreferenceController = new BatteryHeaderPreferenceController(
                context, activity, this /* host */, getLifecycle());
                context, activity, this /* host */, lifecycle);
        controllers.add(mBatteryHeaderPreferenceController);
        mBatteryAppListPreferenceController = new BatteryAppListPreferenceController(context,
                KEY_APP_LIST, lifecycle, activity, this);
        controllers.add(mBatteryAppListPreferenceController);
        mBatteryTipPreferenceController = new BatteryTipPreferenceController(context,
                KEY_BATTERY_TIP, (SettingsActivity) getActivity(), this, this);
                KEY_BATTERY_TIP, (SettingsActivity) getActivity(), this /* fragment */, this /*
                BatteryTipListener */);
        controllers.add(mBatteryTipPreferenceController);
        controllers.add(new BatterySaverController(context, getLifecycle()));
        BatterySaverController batterySaverController = new BatterySaverController(context);
        controllers.add(batterySaverController);
        controllers.add(new BatteryPercentagePreferenceController(context));

        lifecycle.addObserver(batterySaverController);
        return controllers;
    }

@@ -322,7 +326,8 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList

    @VisibleForTesting
    void updateLastFullChargePreference(long timeMs) {
        final CharSequence timeSequence = StringUtil.formatRelativeTime(getContext(), timeMs, false);
        final CharSequence timeSequence = StringUtil.formatRelativeTime(getContext(), timeMs,
                false);
        mLastFullChargePref.setSubtitle(timeSequence);
    }

+3 −1
Original line number Diff line number Diff line
@@ -314,12 +314,14 @@ public class PowerUsageSummaryLegacy extends PowerUsageBase implements
        controllers.add(mBatteryHeaderPreferenceController);
        controllers.add(new AutoBrightnessPreferenceController(context, KEY_AUTO_BRIGHTNESS));
        controllers.add(new TimeoutPreferenceController(context, KEY_SCREEN_TIMEOUT));
        controllers.add(new BatterySaverController(context, getLifecycle()));
        controllers.add(new BatteryPercentagePreferenceController(context));
        controllers.add(new AmbientDisplayPreferenceController(
                context,
                new AmbientDisplayConfiguration(context),
                KEY_AMBIENT_DISPLAY));
        BatterySaverController batterySaverController = new BatterySaverController(context);
        controllers.add(batterySaverController);
        getLifecycle().addObserver(batterySaverController);
        return controllers;
    }

Loading