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
This commit is contained in:
@@ -27,8 +27,6 @@
|
|||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
android:baselineAligned="false">
|
android:baselineAligned="false">
|
||||||
|
|
||||||
<include layout="@layout/card_preference_icon_frame"/>
|
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -36,10 +34,22 @@
|
|||||||
android:paddingTop="16dp"
|
android:paddingTop="16dp"
|
||||||
android:paddingBottom="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
|
<TextView
|
||||||
android:id="@android:id/title"
|
android:id="@android:id/title"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_toEndOf="@+id/card_preference_parent"
|
||||||
android:maxLines="2"
|
android:maxLines="2"
|
||||||
android:textAppearance="?android:attr/textAppearanceListItem"
|
android:textAppearance="?android:attr/textAppearanceListItem"
|
||||||
android:ellipsize="marquee"/>
|
android:ellipsize="marquee"/>
|
||||||
@@ -61,7 +71,7 @@
|
|||||||
android:id="@+id/card_preference_buttons"
|
android:id="@+id/card_preference_buttons"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="24dp"
|
||||||
android:layout_below="@android:id/summary"
|
android:layout_below="@android:id/summary"
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
<Button
|
<Button
|
||||||
@@ -69,7 +79,7 @@
|
|||||||
style="@style/CardPreferencePrimaryButton"
|
style="@style/CardPreferencePrimaryButton"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_marginHorizontal="4dp"
|
android:layout_marginStart="20dp"
|
||||||
android:layout_toStartOf="@android:id/button2"
|
android:layout_toStartOf="@android:id/button2"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
<Button
|
<Button
|
||||||
@@ -77,7 +87,7 @@
|
|||||||
style="@style/CardPreferenceBorderlessButton"
|
style="@style/CardPreferenceBorderlessButton"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_marginHorizontal="4dp"
|
android:layout_marginHorizontal="20dp"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
@@ -20,7 +20,9 @@
|
|||||||
android:id="@+id/container"
|
android:id="@+id/container"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
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:foreground="@drawable/contextual_card_background"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
style="@style/ContextualCardStyle">
|
style="@style/ContextualCardStyle">
|
||||||
|
@@ -6329,9 +6329,11 @@
|
|||||||
<!-- Title for the battery limited temporarily tip [CHAR LIMIT=NONE] -->
|
<!-- Title for the battery limited temporarily tip [CHAR LIMIT=NONE] -->
|
||||||
<string name="battery_tip_limited_temporarily_title">Charging is paused</string>
|
<string name="battery_tip_limited_temporarily_title">Charging is paused</string>
|
||||||
<!-- Summary for the battery limited temporarily tip [CHAR LIMIT=NONE] -->
|
<!-- 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] -->
|
<!-- 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>
|
<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] -->
|
<!-- Text of battery limited temporarily tip resume charge button. [CHAR LIMIT=NONE] -->
|
||||||
<string name="battery_tip_limited_temporarily_dialog_resume_charge">Resume charging</string>
|
<string name="battery_tip_limited_temporarily_dialog_resume_charge">Resume charging</string>
|
||||||
<!-- Message of battery limited temporarily tip. [CHAR LIMIT=NONE] -->
|
<!-- Message of battery limited temporarily tip. [CHAR LIMIT=NONE] -->
|
||||||
|
@@ -975,6 +975,7 @@
|
|||||||
<item name="android:textSize">14sp</item>
|
<item name="android:textSize">14sp</item>
|
||||||
<item name="android:textAllCaps">false</item>
|
<item name="android:textAllCaps">false</item>
|
||||||
<item name="android:singleLine">true</item>
|
<item name="android:singleLine">true</item>
|
||||||
|
<item name="android:paddingHorizontal">24dp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="CardPreferenceBorderlessButton"
|
<style name="CardPreferenceBorderlessButton"
|
||||||
|
@@ -29,7 +29,6 @@ import androidx.annotation.NonNull;
|
|||||||
import com.android.internal.util.CollectionUtils;
|
import com.android.internal.util.CollectionUtils;
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.core.InstrumentedPreferenceFragment;
|
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.BatteryTipAction;
|
||||||
import com.android.settings.fuelgauge.batterytip.actions.OpenBatterySaverAction;
|
import com.android.settings.fuelgauge.batterytip.actions.OpenBatterySaverAction;
|
||||||
import com.android.settings.fuelgauge.batterytip.actions.OpenRestrictAppFragmentAction;
|
import com.android.settings.fuelgauge.batterytip.actions.OpenRestrictAppFragmentAction;
|
||||||
@@ -107,8 +106,6 @@ public class BatteryTipUtils {
|
|||||||
}
|
}
|
||||||
case BatteryTip.TipType.REMOVE_APP_RESTRICTION:
|
case BatteryTip.TipType.REMOVE_APP_RESTRICTION:
|
||||||
return new UnrestrictAppAction(settingsActivity, (UnrestrictAppTip) batteryTip);
|
return new UnrestrictAppAction(settingsActivity, (UnrestrictAppTip) batteryTip);
|
||||||
case BatteryTip.TipType.BATTERY_DEFENDER:
|
|
||||||
return new BatteryDefenderAction(settingsActivity);
|
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@@ -29,6 +29,7 @@ import androidx.preference.Preference;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.widget.CardPreference;
|
import com.android.settings.widget.CardPreference;
|
||||||
|
import com.android.settingslib.HelpUtils;
|
||||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import java.text.NumberFormat;
|
import java.text.NumberFormat;
|
||||||
@@ -48,6 +49,7 @@ public class BatteryDefenderTip extends BatteryTip {
|
|||||||
public BatteryDefenderTip(@StateType int state, boolean extraDefend) {
|
public BatteryDefenderTip(@StateType int state, boolean extraDefend) {
|
||||||
super(TipType.BATTERY_DEFENDER, state, true /* showDialog */);
|
super(TipType.BATTERY_DEFENDER, state, true /* showDialog */);
|
||||||
mExtraDefend = extraDefend;
|
mExtraDefend = extraDefend;
|
||||||
|
mShowDialog = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private BatteryDefenderTip(Parcel in) {
|
private BatteryDefenderTip(Parcel in) {
|
||||||
@@ -99,6 +101,7 @@ public class BatteryDefenderTip extends BatteryTip {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cardPreference.setSelectable(false);
|
||||||
cardPreference.setPrimaryButtonText(
|
cardPreference.setPrimaryButtonText(
|
||||||
context.getString(R.string.battery_tip_charge_to_full_button));
|
context.getString(R.string.battery_tip_charge_to_full_button));
|
||||||
cardPreference.setPrimaryButtonClickListener(
|
cardPreference.setPrimaryButtonClickListener(
|
||||||
@@ -109,8 +112,15 @@ public class BatteryDefenderTip extends BatteryTip {
|
|||||||
cardPreference.setPrimaryButtonVisible(isPluggedIn(context));
|
cardPreference.setPrimaryButtonVisible(isPluggedIn(context));
|
||||||
|
|
||||||
cardPreference.setSecondaryButtonText(context.getString(R.string.learn_more));
|
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.setSecondaryButtonVisible(true);
|
||||||
|
cardPreference.setSecondaryButtonContentDescription(context.getString(
|
||||||
|
R.string.battery_tip_limited_temporarily_sec_button_content_description));
|
||||||
}
|
}
|
||||||
|
|
||||||
private CardPreference castToCardPreferenceSafely(Preference preference) {
|
private CardPreference castToCardPreferenceSafely(Preference preference) {
|
||||||
|
@@ -140,6 +140,15 @@ public class CardPreference extends Preference {
|
|||||||
updateButtonGroupsVisibility();
|
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() {
|
private void updateButtonGroupsVisibility() {
|
||||||
int visibility =
|
int visibility =
|
||||||
(mPrimaryButtonVisible || mSecondaryButtonVisible) ? View.VISIBLE : View.GONE;
|
(mPrimaryButtonVisible || mSecondaryButtonVisible) ? View.VISIBLE : View.GONE;
|
||||||
|
@@ -23,7 +23,6 @@ import static org.mockito.Mockito.when;
|
|||||||
|
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.core.InstrumentedPreferenceFragment;
|
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.OpenBatterySaverAction;
|
||||||
import com.android.settings.fuelgauge.batterytip.actions.OpenRestrictAppFragmentAction;
|
import com.android.settings.fuelgauge.batterytip.actions.OpenRestrictAppFragmentAction;
|
||||||
import com.android.settings.fuelgauge.batterytip.actions.RestrictAppAction;
|
import com.android.settings.fuelgauge.batterytip.actions.RestrictAppAction;
|
||||||
@@ -105,10 +104,10 @@ public class BatteryTipUtilsTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void
|
public void
|
||||||
testGetActionForBatteryTip_typeBatteryDefenderStateNew_returnActionBatteryDefender() {
|
testGetActionForBatteryTip_typeBatteryDefenderStateNew_returnNullAction() {
|
||||||
when(mBatteryDefenderTip.getState()).thenReturn(BatteryTip.StateType.NEW);
|
when(mBatteryDefenderTip.getState()).thenReturn(BatteryTip.StateType.NEW);
|
||||||
|
|
||||||
assertThat(BatteryTipUtils.getActionForBatteryTip(mBatteryDefenderTip, mSettingsActivity,
|
assertThat(BatteryTipUtils.getActionForBatteryTip(mBatteryDefenderTip, mSettingsActivity,
|
||||||
mFragment)).isInstanceOf(BatteryDefenderAction.class);
|
mFragment)).isNull();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user