Merge "[Expressive Battery] Migrate tips card in battery usage to banner message" into main

This commit is contained in:
YK Hung
2025-02-18 21:25:50 -08:00
committed by Android (Google) Code Review
10 changed files with 134 additions and 111 deletions

View File

@@ -17,6 +17,7 @@
package com.android.settings.fuelgauge.batteryusage;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.provider.Settings;
import android.text.TextUtils;
@@ -28,7 +29,8 @@ import androidx.annotation.Nullable;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.widget.TipCardPreference;
import com.android.settingslib.widget.BannerMessagePreference;
import com.android.settingslib.widget.BannerMessagePreference.AttentionLevel;
import java.util.function.Function;
@@ -37,6 +39,7 @@ class AnomalyEventWrapper {
private final Context mContext;
private final PowerAnomalyEvent mPowerAnomalyEvent;
private final AttentionLevel mAttentionLevel;
private final int mCardStyleId;
private final int mResourceIndex;
@@ -51,6 +54,7 @@ class AnomalyEventWrapper {
// Set basic battery tips card info
mCardStyleId = mPowerAnomalyEvent.getType().getNumber();
mResourceIndex = mPowerAnomalyEvent.getKey().getNumber();
mAttentionLevel = mCardStyleId == 0 ? AttentionLevel.NORMAL : AttentionLevel.MEDIUM;
}
private <T> T getInfo(
@@ -104,12 +108,14 @@ class AnomalyEventWrapper {
return mPowerAnomalyEvent.hasEventId() ? mPowerAnomalyEvent.getEventId() : null;
}
int getIconResId() {
return getResourceId(R.array.battery_tips_card_icons, mCardStyleId, "drawable");
}
int getColorResId() {
return getResourceId(R.array.battery_tips_card_colors, mCardStyleId, "color");
Drawable getIconDrawable() {
final int iconResId =
getResourceId(R.array.battery_tips_card_icons, mCardStyleId, "drawable");
Drawable drawable = mContext.getDrawable(iconResId);
if (drawable != null && mAttentionLevel != AttentionLevel.NORMAL) {
drawable.setTint(mContext.getColor(mAttentionLevel.getButtonBackgroundColorResId()));
}
return drawable;
}
String getTitleString() {
@@ -236,16 +242,16 @@ class AnomalyEventWrapper {
return mHighlightSlotPair;
}
boolean updateTipsCardPreference(TipCardPreference preference) {
boolean updateTipsCardPreference(BannerMessagePreference preference) {
final String titleString = getTitleString();
if (TextUtils.isEmpty(titleString)) {
return false;
}
preference.setTitle(titleString);
preference.setIconResId(getIconResId());
preference.setTintColorResId(getColorResId());
preference.setPrimaryButtonText(getDismissBtnString());
preference.setSecondaryButtonText(getMainBtnString());
preference.setIcon(getIconDrawable());
preference.setAttentionLevel(mAttentionLevel);
preference.setNegativeButtonText(getDismissBtnString());
preference.setPositiveButtonText(getMainBtnString());
return true;
}

View File

@@ -377,7 +377,9 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
mTransomTop = resources.getDimensionPixelSize(R.dimen.chartview_transom_padding_top);
mTransomLineDefaultColor = Utils.getDisabled(mContext, DIVIDER_COLOR);
mTransomLineSelectedColor =
resources.getColor(R.color.color_battery_anomaly_app_warning_selector);
resources.getColor(
com.android.settingslib.widget.preference.banner.R.color
.settingslib_banner_button_background_medium);
final int slotHighlightColor = Utils.getDisabled(mContext, mTransomLineSelectedColor);
mTransomIconSize = resources.getDimensionPixelSize(R.dimen.chartview_transom_icon_size);
mTransomLinePaint = new Paint();

View File

@@ -25,15 +25,14 @@ import androidx.preference.PreferenceScreen;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.core.BasePreferenceController;
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;
/** Controls the update for battery tips card */
public class BatteryTipsController extends BasePreferenceController {
private static final String TAG = "BatteryTipsController";
private static final String ROOT_PREFERENCE_KEY = "battery_tips_category";
private static final String CARD_PREFERENCE_KEY = "battery_tips_card";
private static final String PREFERENCE_KEY = "battery_tips_card";
@VisibleForTesting static final String ANOMALY_KEY = "anomaly_key";
@@ -53,12 +52,12 @@ public class BatteryTipsController extends BasePreferenceController {
@VisibleForTesting OnAnomalyConfirmListener mOnAnomalyConfirmListener;
@VisibleForTesting OnAnomalyRejectListener mOnAnomalyRejectListener;
@VisibleForTesting TipCardPreference mCardPreference;
@VisibleForTesting BannerMessagePreference mCardPreference;
@VisibleForTesting AnomalyEventWrapper mAnomalyEventWrapper = null;
@VisibleForTesting Boolean mIsAcceptable = false;
public BatteryTipsController(Context context) {
super(context, ROOT_PREFERENCE_KEY);
super(context, PREFERENCE_KEY);
final FeatureFactory featureFactory = FeatureFactory.getFeatureFactory();
mMetricsFeatureProvider = featureFactory.getMetricsFeatureProvider();
}
@@ -71,7 +70,10 @@ public class BatteryTipsController extends BasePreferenceController {
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mCardPreference = screen.findPreference(CARD_PREFERENCE_KEY);
mCardPreference = screen.findPreference(PREFERENCE_KEY);
// Set preference as invisible since there is no default tips.
mCardPreference.setVisible(false);
}
void setOnAnomalyConfirmListener(OnAnomalyConfirmListener listener) {
@@ -117,20 +119,13 @@ public class BatteryTipsController extends BasePreferenceController {
return;
}
mCardPreference.setPrimaryButtonAction(
() -> {
onBatteryTipsCardDismiss(anomalyKeyNumber);
return null;
});
mCardPreference.setSecondaryButtonAction(
() -> {
onBatteryTipsCardAccept(anomalyKeyNumber);
return null;
});
mCardPreference.setNegativeButtonOnClickListener(
view -> onBatteryTipsCardDismiss(anomalyKeyNumber));
mCardPreference.setPositiveButtonOnClickListener(
view -> onBatteryTipsCardAccept(anomalyKeyNumber));
mCardPreference.setPrimaryButtonVisibility(true);
mCardPreference.setSecondaryButtonVisibility(true);
mCardPreference.buildContent();
mCardPreference.setPositiveButtonVisible(true);
mCardPreference.setNegativeButtonVisible(true);
mCardPreference.setVisible(true);
mMetricsFeatureProvider.action(
/* attribution= */ SettingsEnums.FUELGAUGE_BATTERY_HISTORY_DETAIL,