Loading res/layout/card_preference.xml +6 −5 Original line number Diff line number Diff line Loading @@ -67,12 +67,15 @@ android:maxLines="10" style="@style/PreferenceSummaryTextStyle"/> <RelativeLayout <LinearLayout android:id="@+id/card_preference_buttons" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:layout_below="@android:id/summary" android:gravity="center_vertical|end" android:orientation="horizontal" android:paddingEnd="20dp" android:visibility="gone"> <Button android:id="@android:id/button1" Loading @@ -80,17 +83,15 @@ android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_marginStart="20dp" android:layout_toStartOf="@android:id/button2" android:visibility="gone"/> <Button android:id="@android:id/button2" style="@style/CardPreferenceBorderlessButton" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_marginHorizontal="20dp" android:layout_alignParentEnd="true" android:layout_marginStart="20dp" android:visibility="gone"/> </RelativeLayout> </LinearLayout> </RelativeLayout> <!-- Preference should place its actual preference widget here. --> Loading src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java +4 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,10 @@ public abstract class BatteryTip implements Comparable<BatteryTip>, Parcelable { if (iconTintColorId != View.NO_ID) { preference.getIcon().setTint(context.getColor(iconTintColorId)); } final CardPreference cardPreference = castToCardPreferenceSafely(preference); if (cardPreference != null) { cardPreference.resetLayoutState(); } } /** Returns the color resid for tinting {@link #getIconId()} or {@link View#NO_ID} if none. */ Loading src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java +4 −4 Original line number Diff line number Diff line Loading @@ -73,15 +73,15 @@ public final class IncompatibleChargerTip extends BatteryTip { } cardPreference.setSelectable(false); cardPreference.setSecondaryButtonText(context.getString(R.string.learn_more)); cardPreference.setSecondaryButtonClickListener( cardPreference.setPrimaryButtonText(context.getString(R.string.learn_more)); cardPreference.setPrimaryButtonClickListener( button -> button.startActivityForResult( HelpUtils.getHelpIntent( context, context.getString(R.string.help_url_incompatible_charging), /* backupContext */ ""), /* requestCode */ 0)); cardPreference.setSecondaryButtonVisible(true); cardPreference.setSecondaryButtonContentDescription(context.getString( cardPreference.setPrimaryButtonVisible(true); cardPreference.setPrimaryButtonContentDescription(context.getString( R.string.battery_tip_incompatible_charging_content_description)); } } src/com/android/settings/widget/CardPreference.java +16 −3 Original line number Diff line number Diff line Loading @@ -30,9 +30,7 @@ import com.google.android.material.card.MaterialCardView; import java.util.Optional; /** * Preference that wrapped by {@link MaterialCardView}, only support to set icon, title and summary */ /** Preference that wrapped by {@link MaterialCardView} */ public class CardPreference extends Preference { private View.OnClickListener mPrimaryBtnClickListener = null; Loading Loading @@ -76,6 +74,12 @@ public class CardPreference extends Preference { setSecondaryButtonVisible(mSecondaryButtonVisible); } /** Clear layout state if needed */ public void resetLayoutState() { setPrimaryButtonVisible(false); setSecondaryButtonVisible(false); } /** * Register a callback to be invoked when the primary button is clicked. * Loading Loading @@ -140,6 +144,15 @@ public class CardPreference extends Preference { updateButtonGroupsVisibility(); } /** * Sets the text of content description on primary button. * * @param text text for the content description */ public void setPrimaryButtonContentDescription(String text) { mPrimaryButton.ifPresent(button -> button.setContentDescription(text)); } /** * Sets the text of content description on secondary button. * Loading tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTipTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -18,13 +18,16 @@ package com.android.settings.fuelgauge.batterytip.tips; import static com.google.common.truth.Truth.assertThat; import android.content.Context; import android.view.View; import android.os.Parcel; import android.os.Parcelable; import androidx.annotation.IdRes; import androidx.preference.Preference; import androidx.preference.PreferenceViewHolder; import com.android.settings.R; import com.android.settings.widget.CardPreference; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.testutils.DrawableTestHelper; Loading Loading @@ -80,6 +83,21 @@ public class BatteryTipTest { assertThat(parcelTip.needUpdate()).isTrue(); } @Test public void updatePreference_resetLayoutState() { mContext.setTheme(R.style.Theme_Settings); PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests( View.inflate(mContext, R.layout.card_preference_layout, /* parent= */ null)); CardPreference cardPreference = new CardPreference(mContext); cardPreference.onBindViewHolder(holder); cardPreference.setPrimaryButtonVisible(true); mBatteryTip.updatePreference(cardPreference); View view = holder.findViewById(R.id.card_preference_buttons); assertThat(view.getVisibility()).isEqualTo(View.GONE); } @Test public void tipOrder_orderUnique() { final List<Integer> orders = new ArrayList<>(); Loading Loading
res/layout/card_preference.xml +6 −5 Original line number Diff line number Diff line Loading @@ -67,12 +67,15 @@ android:maxLines="10" style="@style/PreferenceSummaryTextStyle"/> <RelativeLayout <LinearLayout android:id="@+id/card_preference_buttons" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:layout_below="@android:id/summary" android:gravity="center_vertical|end" android:orientation="horizontal" android:paddingEnd="20dp" android:visibility="gone"> <Button android:id="@android:id/button1" Loading @@ -80,17 +83,15 @@ android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_marginStart="20dp" android:layout_toStartOf="@android:id/button2" android:visibility="gone"/> <Button android:id="@android:id/button2" style="@style/CardPreferenceBorderlessButton" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_marginHorizontal="20dp" android:layout_alignParentEnd="true" android:layout_marginStart="20dp" android:visibility="gone"/> </RelativeLayout> </LinearLayout> </RelativeLayout> <!-- Preference should place its actual preference widget here. --> Loading
src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java +4 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,10 @@ public abstract class BatteryTip implements Comparable<BatteryTip>, Parcelable { if (iconTintColorId != View.NO_ID) { preference.getIcon().setTint(context.getColor(iconTintColorId)); } final CardPreference cardPreference = castToCardPreferenceSafely(preference); if (cardPreference != null) { cardPreference.resetLayoutState(); } } /** Returns the color resid for tinting {@link #getIconId()} or {@link View#NO_ID} if none. */ Loading
src/com/android/settings/fuelgauge/batterytip/tips/IncompatibleChargerTip.java +4 −4 Original line number Diff line number Diff line Loading @@ -73,15 +73,15 @@ public final class IncompatibleChargerTip extends BatteryTip { } cardPreference.setSelectable(false); cardPreference.setSecondaryButtonText(context.getString(R.string.learn_more)); cardPreference.setSecondaryButtonClickListener( cardPreference.setPrimaryButtonText(context.getString(R.string.learn_more)); cardPreference.setPrimaryButtonClickListener( button -> button.startActivityForResult( HelpUtils.getHelpIntent( context, context.getString(R.string.help_url_incompatible_charging), /* backupContext */ ""), /* requestCode */ 0)); cardPreference.setSecondaryButtonVisible(true); cardPreference.setSecondaryButtonContentDescription(context.getString( cardPreference.setPrimaryButtonVisible(true); cardPreference.setPrimaryButtonContentDescription(context.getString( R.string.battery_tip_incompatible_charging_content_description)); } }
src/com/android/settings/widget/CardPreference.java +16 −3 Original line number Diff line number Diff line Loading @@ -30,9 +30,7 @@ import com.google.android.material.card.MaterialCardView; import java.util.Optional; /** * Preference that wrapped by {@link MaterialCardView}, only support to set icon, title and summary */ /** Preference that wrapped by {@link MaterialCardView} */ public class CardPreference extends Preference { private View.OnClickListener mPrimaryBtnClickListener = null; Loading Loading @@ -76,6 +74,12 @@ public class CardPreference extends Preference { setSecondaryButtonVisible(mSecondaryButtonVisible); } /** Clear layout state if needed */ public void resetLayoutState() { setPrimaryButtonVisible(false); setSecondaryButtonVisible(false); } /** * Register a callback to be invoked when the primary button is clicked. * Loading Loading @@ -140,6 +144,15 @@ public class CardPreference extends Preference { updateButtonGroupsVisibility(); } /** * Sets the text of content description on primary button. * * @param text text for the content description */ public void setPrimaryButtonContentDescription(String text) { mPrimaryButton.ifPresent(button -> button.setContentDescription(text)); } /** * Sets the text of content description on secondary button. * Loading
tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTipTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -18,13 +18,16 @@ package com.android.settings.fuelgauge.batterytip.tips; import static com.google.common.truth.Truth.assertThat; import android.content.Context; import android.view.View; import android.os.Parcel; import android.os.Parcelable; import androidx.annotation.IdRes; import androidx.preference.Preference; import androidx.preference.PreferenceViewHolder; import com.android.settings.R; import com.android.settings.widget.CardPreference; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.testutils.DrawableTestHelper; Loading Loading @@ -80,6 +83,21 @@ public class BatteryTipTest { assertThat(parcelTip.needUpdate()).isTrue(); } @Test public void updatePreference_resetLayoutState() { mContext.setTheme(R.style.Theme_Settings); PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests( View.inflate(mContext, R.layout.card_preference_layout, /* parent= */ null)); CardPreference cardPreference = new CardPreference(mContext); cardPreference.onBindViewHolder(holder); cardPreference.setPrimaryButtonVisible(true); mBatteryTip.updatePreference(cardPreference); View view = holder.findViewById(R.id.card_preference_buttons); assertThat(view.getVisibility()).isEqualTo(View.GONE); } @Test public void tipOrder_orderUnique() { final List<Integer> orders = new ArrayList<>(); Loading