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

Commit ede87ce1 authored by jackqdyulei's avatar jackqdyulei Committed by Lei Yu
Browse files

Add dialog for summary tip

Also change SummaryTip to store the time data, which is used
in the dialog. If "Full last charge" time is available, show
normal message otherwise show message without it.

Bug: 72997971
Test: RunSettingsRoboTests
Change-Id: I4ce94f0935465a18275edb13e3be343313427c3b
parent f11976d8
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -4892,6 +4892,11 @@
    <!-- CANCEL button for dialog to remove restriction for app [CHAR LIMIT=NONE] -->
    <string name="battery_tip_unrestrict_app_dialog_cancel">Not now</string>
    <!-- Message for battery tip dialog to show the battery summary -->
    <string name="battery_tip_dialog_summary_message">Based on your usage, your battery usually lasts about <xliff:g id="time_duration">%1$s</xliff:g> when fully charged.\n\nIf you need to extend your battery life, turn on Battery Saver.</string>
    <!-- Message for battery tip dialog to show the battery summary -->
    <string name="battery_tip_dialog_summary_message_no_estimation">If you need to extend your battery life, turn on Battery Saver</string>
    <!-- Title for the smart battery manager preference [CHAR LIMIT=NONE] -->
    <string name="smart_battery_manager_title">Smart battery manager</string>
    <!-- Title for the smart battery toggle [CHAR LIMIT=NONE] -->
+14 −3
Original line number Diff line number Diff line
@@ -32,11 +32,13 @@ import com.android.settings.SettingsActivity;
import com.android.settings.Utils;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.fuelgauge.Estimate;
import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController.BatteryTipListener;
import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.HighUsageTip;
import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip;
import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip;
import com.android.settingslib.utils.StringUtil;

@@ -72,9 +74,18 @@ public class BatteryTipDialogFragment extends InstrumentedDialogFragment impleme

        switch (mBatteryTip.getType()) {
            case BatteryTip.TipType.SUMMARY:
            case BatteryTip.TipType.LOW_BATTERY:
                //TODO(b/70570352): add dialog
                return null;
                final long averageTimeMs = ((SummaryTip) mBatteryTip).getAverageTimeMs();
                final String message = context.getString(
                        averageTimeMs == Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN
                                ? R.string.battery_tip_dialog_summary_message_no_estimation
                                : R.string.battery_tip_dialog_summary_message,
                        StringUtil.formatElapsedTime(context, averageTimeMs,
                                false /* withSeconds */));

                return new AlertDialog.Builder(context)
                        .setMessage(message)
                        .setPositiveButton(android.R.string.ok, null)
                        .create();
            case BatteryTip.TipType.HIGH_DEVICE_USAGE:
                final HighUsageTip highUsageTip = (HighUsageTip) mBatteryTip;
                final RecyclerView view = (RecyclerView) LayoutInflater.from(context).inflate(
+4 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.support.annotation.VisibleForTesting;
import com.android.internal.os.BatteryStatsHelper;
import com.android.settings.fuelgauge.BatteryInfo;
import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.fuelgauge.Estimate;
import com.android.settings.fuelgauge.batterytip.detectors.EarlyWarningDetector;
import com.android.settings.fuelgauge.batterytip.detectors.HighUsageDetector;
import com.android.settings.fuelgauge.batterytip.detectors.LowBatteryDetector;
@@ -70,7 +71,7 @@ public class BatteryTipLoader extends AsyncLoader<List<BatteryTip>> {
        tips.add(new HighUsageDetector(context, policy, mBatteryStatsHelper).detect());
        tips.add(new SmartBatteryDetector(policy, context.getContentResolver()).detect());
        tips.add(new EarlyWarningDetector(policy, context).detect());
        tips.add(new SummaryDetector(policy).detect());
        tips.add(new SummaryDetector(policy, batteryInfo.averageTimeToDischarge).detect());
        tips.add(new RestrictAppDetector(context, policy).detect());

        Collections.sort(tips);
@@ -83,7 +84,8 @@ public class BatteryTipLoader extends AsyncLoader<List<BatteryTip>> {

    private List<BatteryTip> getFakeData() {
        final List<BatteryTip> tips = new ArrayList<>();
        tips.add(new SummaryTip(BatteryTip.StateType.NEW));
        tips.add(new SummaryTip(BatteryTip.StateType.NEW,
                Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN));
        tips.add(new LowBatteryTip(BatteryTip.StateType.NEW));

        return tips;
+3 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.SettingsActivity;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.fuelgauge.Estimate;
import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
@@ -82,7 +83,8 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
        mPreferenceGroup = (PreferenceGroup) screen.findPreference(getPreferenceKey());

        // Add summary tip in advance to avoid UI flakiness
        final SummaryTip summaryTip = new SummaryTip(BatteryTip.StateType.NEW);
        final SummaryTip summaryTip = new SummaryTip(BatteryTip.StateType.NEW,
                Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN);
        mPreferenceGroup.addPreference(summaryTip.buildPreference(mPrefContext));
    }

+4 −2
Original line number Diff line number Diff line
@@ -26,9 +26,11 @@ import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
 */
public class SummaryDetector implements BatteryTipDetector {
    private BatteryTipPolicy mPolicy;
    private long mAverageTimeMs;

    public SummaryDetector(BatteryTipPolicy policy) {
    public SummaryDetector(BatteryTipPolicy policy, long averageTimeMs) {
        mPolicy = policy;
        mAverageTimeMs = averageTimeMs;
    }

    @Override
@@ -37,6 +39,6 @@ public class SummaryDetector implements BatteryTipDetector {
        final int state = mPolicy.summaryEnabled
                ? BatteryTip.StateType.NEW
                : BatteryTip.StateType.INVISIBLE;
        return new SummaryTip(state);
        return new SummaryTip(state, mAverageTimeMs);
    }
}
Loading