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

Commit de28bc08 authored by Salvador Martinez's avatar Salvador Martinez
Browse files

Update BS warning to follow through on action

The BS warning only had support for following through when a user
wanted to toggle battery saver. This also makes it so that if
the warning is shown for routines it will finish whatever action
it interrupted once confirmed.

Test: robotests pass, manual verification
Bug: 129696128
Change-Id: I2c34ed678b19d95f3c7d1094ab8f79cc0c23252e
parent f1cea95f
Loading
Loading
Loading
Loading
+33 −18
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.settings.fuelgauge.batterysaver;

import android.content.ContentResolver;
import android.content.Context;
import android.os.Bundle;
import android.os.PowerManager;
import android.provider.Settings;
import android.provider.Settings.Global;
@@ -38,6 +39,7 @@ public class BatterySaverScheduleRadioButtonsController {
    public static final String KEY_NO_SCHEDULE = "key_battery_saver_no_schedule";
    public static final String KEY_ROUTINE = "key_battery_saver_routine";
    public static final String KEY_PERCENTAGE = "key_battery_saver_percentage";
    public static final int TRIGGER_LEVEL_MIN = 5;

    private Context mContext;
    private BatterySaverScheduleSeekBarController mSeekBarController;
@@ -67,30 +69,43 @@ public class BatterySaverScheduleRadioButtonsController {
    }

    public boolean setDefaultKey(String key) {
        final ContentResolver resolver = mContext.getContentResolver();
        if (key == null) {
            return false;
        }
        
        final ContentResolver resolver = mContext.getContentResolver();
        int mode = PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE;
        int triggerLevel = 0;
        if (!TextUtils.equals(key, KEY_NO_SCHEDULE)
                && BatterySaverUtils.maybeShowBatterySaverConfirmation(
                        mContext, true /* confirmOnly */)) {
            return true;
        } else {
        final Bundle confirmationExtras = new Bundle(3);
        switch (key) {
            case KEY_NO_SCHEDULE:
                break;
            case KEY_PERCENTAGE:
                    triggerLevel = 5;
                triggerLevel = TRIGGER_LEVEL_MIN;
                confirmationExtras.putBoolean(BatterySaverUtils.EXTRA_CONFIRM_TEXT_ONLY, true);
                confirmationExtras.putInt(BatterySaverUtils.EXTRA_POWER_SAVE_MODE_TRIGGER,
                        PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE);
                confirmationExtras.putInt(BatterySaverUtils.EXTRA_POWER_SAVE_MODE_TRIGGER_LEVEL,
                        triggerLevel);
                break;
            case KEY_ROUTINE:
                mode = PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC;
                confirmationExtras.putBoolean(BatterySaverUtils.EXTRA_CONFIRM_TEXT_ONLY, true);
                confirmationExtras.putInt(BatterySaverUtils.EXTRA_POWER_SAVE_MODE_TRIGGER,
                        PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC);
                break;
            default:
                throw new IllegalStateException(
                        "Not a valid key for " + this.getClass().getSimpleName());
        }
        }

        if (!TextUtils.equals(key, KEY_NO_SCHEDULE)
                && BatterySaverUtils.maybeShowBatterySaverConfirmation(
                mContext, confirmationExtras)) {
            // reset this if we need to show the confirmation message
            mode = PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE;
            triggerLevel = 0;
        }
        // Trigger level is intentionally left alone when going between dynamic and percentage modes
        // so that a users percentage based schedule is preserved when they toggle between the two.
        Settings.Global.putInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, mode);