diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml
index 1af8a8c2410..77c6b7322c2 100644
--- a/res/xml/power_usage_summary.xml
+++ b/res/xml/power_usage_summary.xml
@@ -33,7 +33,7 @@
android:selectable="false"
settings:searchable="false" />
-
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java
index 31cec6a46ba..e6f622cf00b 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java
@@ -33,7 +33,7 @@ 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.CardPreference;
+import com.android.settings.widget.TipCardPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import java.util.List;
@@ -55,7 +55,7 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
private SettingsActivity mSettingsActivity;
private MetricsFeatureProvider mMetricsFeatureProvider;
private boolean mNeedUpdate;
- @VisibleForTesting CardPreference mCardPreference;
+ @VisibleForTesting TipCardPreference mCardPreference;
@VisibleForTesting Context mPrefContext;
InstrumentedPreferenceFragment mFragment;
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java
index 37162448b1b..dbe2722ebea 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java
@@ -28,7 +28,6 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.widget.CardPreference;
import com.android.settingslib.HelpUtils;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -80,9 +79,9 @@ public class BatteryDefenderTip extends BatteryTip {
super.updatePreference(preference);
final Context context = preference.getContext();
- CardPreference cardPreference = castToCardPreferenceSafely(preference);
+ var cardPreference = castToTipCardPreferenceSafely(preference);
if (cardPreference == null) {
- Log.e(TAG, "cast Preference to CardPreference failed");
+ Log.e(TAG, "cast Preference to TipCardPreference failed");
return;
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java
index 1345032d2ae..1f5374dac8a 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java
@@ -23,10 +23,11 @@ import android.util.SparseIntArray;
import androidx.annotation.DrawableRes;
import androidx.annotation.IntDef;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
-import com.android.settings.widget.CardPreference;
+import com.android.settings.widget.TipCardPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import java.lang.annotation.Retention;
@@ -165,7 +166,7 @@ public abstract class BatteryTip implements Comparable, Parcelable {
preference.setTitle(getTitle(context));
preference.setSummary(getSummary(context));
preference.setIcon(getIconId());
- final CardPreference cardPreference = castToCardPreferenceSafely(preference);
+ final TipCardPreference cardPreference = castToTipCardPreferenceSafely(preference);
if (cardPreference != null) {
cardPreference.resetLayoutState();
}
@@ -206,7 +207,9 @@ public abstract class BatteryTip implements Comparable, Parcelable {
return "type=" + mType + " state=" + mState;
}
- public CardPreference castToCardPreferenceSafely(Preference preference) {
- return preference instanceof CardPreference ? (CardPreference) preference : null;
+ /** Returns the converted {@link TipCardPreference} if it is valid. */
+ @Nullable
+ public TipCardPreference castToTipCardPreferenceSafely(Preference preference) {
+ return preference instanceof TipCardPreference ? (TipCardPreference) preference : null;
}
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java
index 72c710c023f..7453dedf41c 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java
@@ -26,7 +26,6 @@ import androidx.core.app.ActivityCompat;
import androidx.preference.Preference;
import com.android.settings.R;
-import com.android.settings.widget.CardPreference;
import com.android.settingslib.HelpUtils;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -74,7 +73,7 @@ public final class IncompatibleChargerTip extends BatteryTip {
public void updatePreference(Preference preference) {
super.updatePreference(preference);
final Context context = preference.getContext();
- final CardPreference cardPreference = castToCardPreferenceSafely(preference);
+ final var cardPreference = castToTipCardPreferenceSafely(preference);
if (cardPreference == null) {
Log.e(TAG, "cast Preference to CardPreference failed");
return;
diff --git a/src/com/android/settings/widget/CardPreference.java b/src/com/android/settings/widget/CardPreference.java
new file mode 100644
index 00000000000..db6827efab8
--- /dev/null
+++ b/src/com/android/settings/widget/CardPreference.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.Button;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.settings.R;
+
+import com.google.android.material.card.MaterialCardView;
+
+import java.util.Optional;
+
+/** Preference that wrapped by {@link MaterialCardView} */
+public class CardPreference extends Preference {
+ @Nullable private View.OnClickListener mPrimaryBtnClickListener = null;
+ @Nullable private View.OnClickListener mSecondaryBtnClickListener = null;
+ @Nullable private String mPrimaryButtonText = null;
+ @Nullable private String mSecondaryButtonText = null;
+ private Optional