Merge "[Expressive Battery] Migrate tips card in battery usage to banner message" into main
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user