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

Commit dc36cc44 authored by Xinyi Mao's avatar Xinyi Mao Committed by Android (Google) Code Review
Browse files

Merge "[Expressive Battery] Migirate tips card in battery screen to banner message" into main

parents 335d3062 376c308a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@
        android:selectable="false"
        settings:searchable="false" />

    <com.android.settings.widget.TipCardPreference
    <com.android.settingslib.widget.BannerMessagePreference
        android:key="battery_tip"
        android:title="@string/summary_placeholder"
        settings:controller="com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController" />
+4 −2
Original line number Diff line number Diff line
@@ -33,8 +33,8 @@ import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.TipCardPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.widget.BannerMessagePreference;

import java.util.List;
import java.util.Map;
@@ -55,8 +55,10 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
    private Activity mActivity;
    private MetricsFeatureProvider mMetricsFeatureProvider;
    private boolean mNeedUpdate;
    @VisibleForTesting TipCardPreference mCardPreference;

    @VisibleForTesting BannerMessagePreference mCardPreference;
    @VisibleForTesting Context mPrefContext;

    InstrumentedPreferenceFragment mFragment;

    public BatteryTipPreferenceController(Context context, String preferenceKey) {
+14 −20
Original line number Diff line number Diff line
@@ -27,12 +27,11 @@ import androidx.core.app.ActivityCompat;
import androidx.preference.Preference;

import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.HelpUtils;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;

import kotlin.Unit;

/** Tip to show current battery is overheated */
public class BatteryDefenderTip extends BatteryTip {

@@ -79,17 +78,20 @@ public class BatteryDefenderTip extends BatteryTip {
        super.updatePreference(preference);
        final Context context = preference.getContext();

        var cardPreference = castToTipCardPreferenceSafely(preference);
        var cardPreference = castToBannerMassagePreferenceSafely(preference);
        if (cardPreference == null) {
            Log.e(TAG, "cast Preference to TipCardPreference failed");
            return;
        }

        cardPreference.setSelectable(false);
        cardPreference.setIconResId(getIconId());
        cardPreference.setPrimaryButtonText(context.getString(R.string.learn_more));
        cardPreference.setPrimaryButtonAction(
                () -> {
        cardPreference.setNegativeButtonText(
                Utils.createAccessibleSequence(
                        context.getString(R.string.learn_more),
                        context.getString(R.string
                                .battery_tip_limited_temporarily_sec_button_content_description)));
        cardPreference.setNegativeButtonOnClickListener(
                unused -> {
                    var helpIntent =
                            HelpUtils.getHelpIntent(
                                    context,
@@ -100,25 +102,17 @@ public class BatteryDefenderTip extends BatteryTip {
                            helpIntent,
                            /* requestCode= */ 0,
                            /* options= */ null);

                    return Unit.INSTANCE;
                });
        cardPreference.setPrimaryButtonVisibility(true);
        cardPreference.setPrimaryButtonContentDescription(
                context.getString(
                        R.string.battery_tip_limited_temporarily_sec_button_content_description));
        cardPreference.setNegativeButtonVisible(true);

        cardPreference.setSecondaryButtonText(
        cardPreference.setPositiveButtonText(
                context.getString(R.string.battery_tip_charge_to_full_button));
        cardPreference.setSecondaryButtonAction(
                () -> {
        cardPreference.setPositiveButtonOnClickListener(
                unused -> {
                    resumeCharging(context);
                    preference.setVisible(false);

                    return Unit.INSTANCE;
                });
        cardPreference.setSecondaryButtonVisibility(mIsPluggedIn);
        cardPreference.buildContent();
        cardPreference.setPositiveButtonVisible(mIsPluggedIn);
    }

    private void resumeCharging(Context context) {
+10 −6
Original line number Diff line number Diff line
@@ -27,8 +27,9 @@ import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;

import com.android.settings.widget.TipCardPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.widget.BannerMessagePreference;
import com.android.settingslib.widget.BannerMessagePreference.AttentionLevel;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -166,9 +167,10 @@ public abstract class BatteryTip implements Comparable<BatteryTip>, Parcelable {
        preference.setTitle(getTitle(context));
        preference.setSummary(getSummary(context));
        preference.setIcon(getIconId());
        final TipCardPreference cardPreference = castToTipCardPreferenceSafely(preference);
        final BannerMessagePreference cardPreference =
                castToBannerMassagePreferenceSafely(preference);
        if (cardPreference != null) {
            cardPreference.resetLayoutState();
            cardPreference.setAttentionLevel(AttentionLevel.NORMAL);
        }
    }

@@ -207,9 +209,11 @@ public abstract class BatteryTip implements Comparable<BatteryTip>, Parcelable {
        return "type=" + mType + " state=" + mState;
    }

    /** Returns the converted {@link TipCardPreference} if it is valid. */
    /** Returns the converted {@link BannerMessagePreference} if it is valid. */
    @Nullable
    public TipCardPreference castToTipCardPreferenceSafely(Preference preference) {
        return preference instanceof TipCardPreference ? (TipCardPreference) preference : null;
    public BannerMessagePreference castToBannerMassagePreferenceSafely(Preference preference) {
        return preference instanceof BannerMessagePreference
                ? (BannerMessagePreference) preference
                : null;
    }
}
+10 −14
Original line number Diff line number Diff line
@@ -26,11 +26,10 @@ import androidx.core.app.ActivityCompat;
import androidx.preference.Preference;

import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settingslib.HelpUtils;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;

import kotlin.Unit;

/** Tip to show incompatible charger state */
public final class IncompatibleChargerTip extends BatteryTip {
    private static final String TAG = "IncompatibleChargerTip";
@@ -73,18 +72,20 @@ public final class IncompatibleChargerTip extends BatteryTip {
    public void updatePreference(Preference preference) {
        super.updatePreference(preference);
        final Context context = preference.getContext();
        final var cardPreference = castToTipCardPreferenceSafely(preference);
        final var cardPreference = castToBannerMassagePreferenceSafely(preference);
        if (cardPreference == null) {
            Log.e(TAG, "cast Preference to CardPreference failed");
            return;
        }

        cardPreference.setSelectable(false);
        cardPreference.enableDismiss(false);
        cardPreference.setIconResId(getIconId());
        cardPreference.setPrimaryButtonText(context.getString(R.string.learn_more));
        cardPreference.setPrimaryButtonAction(
                () -> {
        cardPreference.setNegativeButtonText(
                Utils.createAccessibleSequence(
                        context.getString(R.string.learn_more),
                        context.getString(
                                R.string.battery_tip_incompatible_charging_content_description)));
        cardPreference.setNegativeButtonOnClickListener(
                unused -> {
                    var helpIntent =
                            HelpUtils.getHelpIntent(
                                    context,
@@ -95,13 +96,8 @@ public final class IncompatibleChargerTip extends BatteryTip {
                            helpIntent,
                            /* requestCode= */ 0,
                            /* options= */ null);

                    return Unit.INSTANCE;
                });
        cardPreference.setPrimaryButtonVisibility(true);
        cardPreference.setPrimaryButtonContentDescription(
                context.getString(R.string.battery_tip_incompatible_charging_content_description));
        cardPreference.buildContent();
        cardPreference.setNegativeButtonVisible(true);
    }

    public static final Creator CREATOR =
Loading