Update defend tips card
- Update defend tips card to unclickable
- Update secondary button's action and content description
screenshot: https://screenshot.googleplex.com/BYU8Mh5abJ9Tirh.png
Bug: 243769797
Bug: 243641857
Bug: 244219076
Test: make SettingsRoboTests
Change-Id: I7fdf5f7404d33f0374a992c83a7653a01b9f11bc
diff --git a/res/layout/card_preference.xml b/res/layout/card_preference.xml
index 39523eb..72e17ef 100644
--- a/res/layout/card_preference.xml
+++ b/res/layout/card_preference.xml
@@ -27,8 +27,6 @@
android:clipToPadding="false"
android:baselineAligned="false">
- <include layout="@layout/card_preference_icon_frame"/>
-
<RelativeLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
@@ -36,10 +34,22 @@
android:paddingTop="16dp"
android:paddingBottom="16dp">
+ <LinearLayout
+ android:id="@+id/card_preference_parent"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignTop="@android:id/title"
+ android:layout_alignBottom="@android:id/summary"
+ android:gravity="center_vertical">
+
+ <include layout="@layout/card_preference_icon_frame"/>
+ </LinearLayout>
+
<TextView
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_toEndOf="@+id/card_preference_parent"
android:maxLines="2"
android:textAppearance="?android:attr/textAppearanceListItem"
android:ellipsize="marquee"/>
@@ -61,7 +71,7 @@
android:id="@+id/card_preference_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginTop="8dp"
+ android:layout_marginTop="24dp"
android:layout_below="@android:id/summary"
android:visibility="gone">
<Button
@@ -69,7 +79,7 @@
style="@style/CardPreferencePrimaryButton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
- android:layout_marginHorizontal="4dp"
+ android:layout_marginStart="20dp"
android:layout_toStartOf="@android:id/button2"
android:visibility="gone"/>
<Button
@@ -77,7 +87,7 @@
style="@style/CardPreferenceBorderlessButton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
- android:layout_marginHorizontal="4dp"
+ android:layout_marginHorizontal="20dp"
android:layout_alignParentEnd="true"
android:visibility="gone"/>
</RelativeLayout>
diff --git a/res/layout/card_preference_layout.xml b/res/layout/card_preference_layout.xml
index 8373637..0cdcb17 100644
--- a/res/layout/card_preference_layout.xml
+++ b/res/layout/card_preference_layout.xml
@@ -20,7 +20,9 @@
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_margin="8dp"
+ android:layout_marginVertical="8dp"
+ android:layout_marginStart="24dp"
+ android:layout_marginEnd="16dp"
android:foreground="@drawable/contextual_card_background"
android:clickable="true"
style="@style/ContextualCardStyle">
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1eaf28f..d2a3230 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6329,9 +6329,11 @@
<!-- Title for the battery limited temporarily tip [CHAR LIMIT=NONE] -->
<string name="battery_tip_limited_temporarily_title">Charging is paused</string>
<!-- Summary for the battery limited temporarily tip [CHAR LIMIT=NONE] -->
- <string name="battery_tip_limited_temporarily_summary">Protecting battery to extend battery lifespan\nTap to learn more</string>
+ <string name="battery_tip_limited_temporarily_summary">Protecting battery to extend battery lifespan</string>
<!-- Summary for the battery limited temporarily extra tip [CHAR LIMIT=NONE] -->
<string name="battery_tip_limited_temporarily_extra_summary"><xliff:g id="percent" example="10%">%1$s</xliff:g></string>
+ <!-- Content description for the battery limited temporarily tip secondary button [CHAR LIMIT=NONE] -->
+ <string name="battery_tip_limited_temporarily_sec_button_content_description">Learn more about charging is paused</string>
<!-- Text of battery limited temporarily tip resume charge button. [CHAR LIMIT=NONE] -->
<string name="battery_tip_limited_temporarily_dialog_resume_charge">Resume charging</string>
<!-- Message of battery limited temporarily tip. [CHAR LIMIT=NONE] -->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 8dee082..4fc6e9f 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -975,6 +975,7 @@
<item name="android:textSize">14sp</item>
<item name="android:textAllCaps">false</item>
<item name="android:singleLine">true</item>
+ <item name="android:paddingHorizontal">24dp</item>
</style>
<style name="CardPreferenceBorderlessButton"
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java
index d12784f..4dcdc0c 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java
@@ -29,7 +29,6 @@
import com.android.internal.util.CollectionUtils;
import com.android.settings.SettingsActivity;
import com.android.settings.core.InstrumentedPreferenceFragment;
-import com.android.settings.fuelgauge.batterytip.actions.BatteryDefenderAction;
import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction;
import com.android.settings.fuelgauge.batterytip.actions.OpenBatterySaverAction;
import com.android.settings.fuelgauge.batterytip.actions.OpenRestrictAppFragmentAction;
@@ -107,8 +106,6 @@
}
case BatteryTip.TipType.REMOVE_APP_RESTRICTION:
return new UnrestrictAppAction(settingsActivity, (UnrestrictAppTip) batteryTip);
- case BatteryTip.TipType.BATTERY_DEFENDER:
- return new BatteryDefenderAction(settingsActivity);
default:
return null;
}
diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java
index 5c0fc58..2fb5650 100644
--- a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java
+++ b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryDefenderTip.java
@@ -29,6 +29,7 @@
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;
import java.text.NumberFormat;
@@ -48,6 +49,7 @@
public BatteryDefenderTip(@StateType int state, boolean extraDefend) {
super(TipType.BATTERY_DEFENDER, state, true /* showDialog */);
mExtraDefend = extraDefend;
+ mShowDialog = false;
}
private BatteryDefenderTip(Parcel in) {
@@ -99,6 +101,7 @@
return;
}
+ cardPreference.setSelectable(false);
cardPreference.setPrimaryButtonText(
context.getString(R.string.battery_tip_charge_to_full_button));
cardPreference.setPrimaryButtonClickListener(
@@ -109,8 +112,15 @@
cardPreference.setPrimaryButtonVisible(isPluggedIn(context));
cardPreference.setSecondaryButtonText(context.getString(R.string.learn_more));
- cardPreference.setSecondaryButtonClickListener(unused -> cardPreference.performClick());
+ cardPreference.setSecondaryButtonClickListener(
+ button -> button.startActivityForResult(
+ HelpUtils.getHelpIntent(
+ context,
+ context.getString(R.string.help_url_battery_defender),
+ /* backupContext */ ""), /* requestCode */ 0));
cardPreference.setSecondaryButtonVisible(true);
+ cardPreference.setSecondaryButtonContentDescription(context.getString(
+ R.string.battery_tip_limited_temporarily_sec_button_content_description));
}
private CardPreference castToCardPreferenceSafely(Preference preference) {
diff --git a/src/com/android/settings/widget/CardPreference.java b/src/com/android/settings/widget/CardPreference.java
index afccfac..862a943 100644
--- a/src/com/android/settings/widget/CardPreference.java
+++ b/src/com/android/settings/widget/CardPreference.java
@@ -140,6 +140,15 @@
updateButtonGroupsVisibility();
}
+ /**
+ * Sets the text of content description on secondary button.
+ *
+ * @param text text for the content description
+ */
+ public void setSecondaryButtonContentDescription(String text) {
+ mSecondaryButton.ifPresent(button -> button.setContentDescription(text));
+ }
+
private void updateButtonGroupsVisibility() {
int visibility =
(mPrimaryButtonVisible || mSecondaryButtonVisible) ? View.VISIBLE : View.GONE;
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java
index 29f4f14..3bb33c6 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java
@@ -23,7 +23,6 @@
import com.android.settings.SettingsActivity;
import com.android.settings.core.InstrumentedPreferenceFragment;
-import com.android.settings.fuelgauge.batterytip.actions.BatteryDefenderAction;
import com.android.settings.fuelgauge.batterytip.actions.OpenBatterySaverAction;
import com.android.settings.fuelgauge.batterytip.actions.OpenRestrictAppFragmentAction;
import com.android.settings.fuelgauge.batterytip.actions.RestrictAppAction;
@@ -105,10 +104,10 @@
@Test
public void
- testGetActionForBatteryTip_typeBatteryDefenderStateNew_returnActionBatteryDefender() {
+ testGetActionForBatteryTip_typeBatteryDefenderStateNew_returnNullAction() {
when(mBatteryDefenderTip.getState()).thenReturn(BatteryTip.StateType.NEW);
assertThat(BatteryTipUtils.getActionForBatteryTip(mBatteryDefenderTip, mSettingsActivity,
- mFragment)).isInstanceOf(BatteryDefenderAction.class);
+ mFragment)).isNull();
}
}