Merge "Fix banner tip buttons visibility and update incompatible tip" into udc-dev
This commit is contained in:
@@ -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"
|
||||
@@ -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. -->
|
||||
|
@@ -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. */
|
||||
|
@@ -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));
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
@@ -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.
|
||||
*
|
||||
@@ -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.
|
||||
*
|
||||
|
@@ -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;
|
||||
|
||||
@@ -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<>();
|
||||
|
@@ -109,13 +109,13 @@ public final class IncompatibleChargerTipTest {
|
||||
|
||||
mIncompatibleChargerTip.updatePreference(mCardPreference);
|
||||
|
||||
verify(mCardPreference).setSecondaryButtonText(expected);
|
||||
verify(mCardPreference).setPrimaryButtonText(expected);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updatePreference_shouldSetSecondaryButtonVisible() {
|
||||
mIncompatibleChargerTip.updatePreference(mCardPreference);
|
||||
verify(mCardPreference).setSecondaryButtonVisible(true);
|
||||
verify(mCardPreference).setPrimaryButtonVisible(true);
|
||||
}
|
||||
|
||||
private String getLastErrorLog() {
|
||||
|
@@ -6,7 +6,7 @@
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*Visibility_setGoneForPrimaryButton_buttonGroupIsGone
|
||||
* 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.
|
||||
@@ -48,8 +48,8 @@ public class CardPreferenceTest {
|
||||
context.setTheme(R.style.Theme_Settings);
|
||||
mCardPreference = new CardPreference(context);
|
||||
|
||||
View rootView = View.inflate(context, R.layout.card_preference_layout, /* parent= */ null);
|
||||
mHolder = PreferenceViewHolder.createInstanceForTests(rootView);
|
||||
mHolder = PreferenceViewHolder.createInstanceForTests(
|
||||
View.inflate(context, R.layout.card_preference_layout, /* parent= */ null));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -63,14 +63,14 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBindViewHolder_noButtonVisible_buttonsLayoutShouldBeGone() {
|
||||
public void onBindViewHolder_noButtonVisible_buttonsLayoutIsGone() {
|
||||
mCardPreference.onBindViewHolder(mHolder);
|
||||
|
||||
assertThat(getCardPreferenceButtonsView().getVisibility()).isEqualTo(GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBindViewHolder_setPrimaryButtonVisibility_buttonsLayoutShouldBeVisible() {
|
||||
public void onBindViewHolder_setPrimaryButtonVisibility_buttonsLayoutIsVisible() {
|
||||
mCardPreference.setPrimaryButtonVisible(true);
|
||||
|
||||
mCardPreference.onBindViewHolder(mHolder);
|
||||
@@ -79,7 +79,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBindViewHolder_setPrimaryButtonVisibility_shouldApplyToPrimaryButton() {
|
||||
public void onBindViewHolder_setPrimaryButtonVisibilityToVisible() {
|
||||
mCardPreference.setPrimaryButtonVisible(true);
|
||||
|
||||
mCardPreference.onBindViewHolder(mHolder);
|
||||
@@ -88,7 +88,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBindViewHolder_setSecondaryButtonVisibility_buttonsLayoutShouldBeVisible() {
|
||||
public void onBindViewHolder_setSecondaryButtonVisibility_buttonsLayoutIsVisible() {
|
||||
mCardPreference.setSecondaryButtonVisible(true);
|
||||
|
||||
mCardPreference.onBindViewHolder(mHolder);
|
||||
@@ -97,7 +97,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBindViewHolder_setSecondaryButtonVisibility_shouldApplyToSecondaryButton() {
|
||||
public void onBindViewHolder_setSecondaryButtonVisibilityToVisible() {
|
||||
mCardPreference.setSecondaryButtonVisible(true);
|
||||
|
||||
mCardPreference.onBindViewHolder(mHolder);
|
||||
@@ -106,7 +106,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBindViewHolder_setPrimaryButtonText_shouldApplyToPrimaryButton() {
|
||||
public void onBindViewHolder_setPrimaryButtonTextToExpectedText() {
|
||||
String expectedText = "primary-button";
|
||||
mCardPreference.setPrimaryButtonText(expectedText);
|
||||
|
||||
@@ -116,7 +116,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBindViewHolder_setSecondaryButtonText_shouldApplyToSecondaryButton() {
|
||||
public void onBindViewHolder_setSecondaryButtonTextToExpectedText() {
|
||||
String expectedText = "secondary-button";
|
||||
mCardPreference.setSecondaryButtonText(expectedText);
|
||||
|
||||
@@ -140,7 +140,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void performClickOnPrimaryButton_shouldCalledClickListener() {
|
||||
public void performClickOnPrimaryButton_callClickListener() {
|
||||
final boolean[] hasCalled = {false};
|
||||
View.OnClickListener clickListener = v -> hasCalled[0] = true;
|
||||
mCardPreference.setPrimaryButtonClickListener(clickListener);
|
||||
@@ -152,7 +152,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void performClickOnSecondaryButton_shouldCalledClickListener() {
|
||||
public void performClickOnSecondaryButton_callClickListener() {
|
||||
final boolean[] hasCalled = {false};
|
||||
View.OnClickListener clickListener = v -> hasCalled[0] = true;
|
||||
mCardPreference.setSecondaryButtonClickListener(clickListener);
|
||||
@@ -178,7 +178,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setPrimaryButtonVisibility_setTrueAfterBindViewHolder_shouldBeVisible() {
|
||||
public void setPrimaryButtonVisibility_setTrueAfterBindViewHolder_isVisible() {
|
||||
mCardPreference.setPrimaryButtonVisible(false);
|
||||
mCardPreference.onBindViewHolder(mHolder);
|
||||
|
||||
@@ -198,7 +198,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setPrimaryButtonText_setNull_shouldBeEmptyText() {
|
||||
public void setPrimaryButtonText_setNull_isEmptyText() {
|
||||
final String emptyString = "";
|
||||
mCardPreference.setPrimaryButtonText("1234");
|
||||
mCardPreference.onBindViewHolder(mHolder);
|
||||
@@ -222,7 +222,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setPrimaryButtonClickListener_setNull_shouldClearTheOnClickListener() {
|
||||
public void setPrimaryButtonClickListener_setNull_clearTheOnClickListener() {
|
||||
final String[] hasCalled = {"not called"};
|
||||
View.OnClickListener clickListener = v -> hasCalled[0] = "called once";
|
||||
mCardPreference.setPrimaryButtonClickListener(clickListener);
|
||||
@@ -235,7 +235,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setSecondaryButtonVisibility_setTrueAfterBindViewHolder_shouldBeVisible() {
|
||||
public void setSecondaryButtonVisibility_setTrueAfterBindViewHolder_isVisible() {
|
||||
mCardPreference.setSecondaryButtonVisible(false);
|
||||
mCardPreference.onBindViewHolder(mHolder);
|
||||
|
||||
@@ -255,7 +255,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setSecondaryButtonText_setNull_shouldBeEmptyText() {
|
||||
public void setSecondaryButtonText_setNull_isEmptyText() {
|
||||
String emptyString = "";
|
||||
mCardPreference.setSecondaryButtonText("1234");
|
||||
mCardPreference.onBindViewHolder(mHolder);
|
||||
@@ -279,7 +279,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setSecondaryButtonClickListener_setNull_shouldClearTheOnClickListener() {
|
||||
public void setSecondaryButtonClickListener_setNull_clearTheOnClickListener() {
|
||||
final String[] hasCalled = {"not called"};
|
||||
View.OnClickListener clickListener = v -> hasCalled[0] = "called once";
|
||||
mCardPreference.setSecondaryButtonClickListener(clickListener);
|
||||
@@ -292,8 +292,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void
|
||||
setPrimaryButtonVisibility_onlyPrimaryButtonVisible_setGone_buttonGroupShouldBeGone() {
|
||||
public void setPrimaryButtonVisibility_setGoneForSecondaryButton_buttonGroupIsGone() {
|
||||
mCardPreference.setPrimaryButtonVisible(true);
|
||||
mCardPreference.setSecondaryButtonVisible(false);
|
||||
mCardPreference.onBindViewHolder(mHolder);
|
||||
@@ -307,8 +306,7 @@ public class CardPreferenceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void
|
||||
setSecondaryButtonVisibility_only2ndButtonVisible_setGone_buttonGroupShouldBeGone() {
|
||||
public void setSecondaryButtonVisibility_setGoneForPrimaryButton_buttonGroupIsGone() {
|
||||
mCardPreference.setPrimaryButtonVisible(false);
|
||||
mCardPreference.setSecondaryButtonVisible(true);
|
||||
mCardPreference.onBindViewHolder(mHolder);
|
||||
@@ -321,6 +319,17 @@ public class CardPreferenceTest {
|
||||
assertThat(getCardPreferenceButtonsView().getVisibility()).isEqualTo(GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resetLayoutState_buttonGroupIsGone() {
|
||||
mCardPreference.setPrimaryButtonVisible(true);
|
||||
mCardPreference.setSecondaryButtonVisible(true);
|
||||
mCardPreference.onBindViewHolder(mHolder);
|
||||
|
||||
mCardPreference.resetLayoutState();
|
||||
|
||||
assertThat(getCardPreferenceButtonsView().getVisibility()).isEqualTo(GONE);
|
||||
}
|
||||
|
||||
private View getCardPreferenceButtonsView() {
|
||||
return mHolder.findViewById(R.id.card_preference_buttons);
|
||||
}
|
||||
|
Reference in New Issue
Block a user