diff options
| author | Cecilia Hong <xiaotinghong@google.com> | 2022-02-05 21:09:21 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-02-05 21:09:21 +0000 |
| commit | b420a4418f2bccaffef266a6be2bfae903b88232 (patch) | |
| tree | a614831de09e390c2d31d0ce9a03413688da36aa /core/java/android | |
| parent | e6c0ffb7b38fbc97765efd283e15ff0aaab1037b (diff) | |
| parent | e4368e19b85a1d28ff7f7266cc3b36bfca72bcfa (diff) | |
Merge "Modify Smartspace UI templates APIs."
Diffstat (limited to 'core/java/android')
10 files changed, 340 insertions, 164 deletions
diff --git a/core/java/android/app/smartspace/SmartspaceUtils.java b/core/java/android/app/smartspace/SmartspaceUtils.java index f058ffa5a04b..4545f43a8260 100644 --- a/core/java/android/app/smartspace/SmartspaceUtils.java +++ b/core/java/android/app/smartspace/SmartspaceUtils.java @@ -17,6 +17,8 @@ package android.app.smartspace; import android.annotation.Nullable; +import android.app.smartspace.uitemplatedata.SmartspaceText; +import android.text.TextUtils; /** * Utilities for Smartspace data. @@ -28,10 +30,22 @@ public final class SmartspaceUtils { private SmartspaceUtils() { } + /** Returns true if the passed in {@link SmartspaceText} is null or its content is empty. */ + public static boolean isEmpty(@Nullable SmartspaceText text) { + return text == null || TextUtils.isEmpty(text.getText()); + } + + /** Returns true if the passed-in {@link SmartspaceText}s are equal. */ + public static boolean isEqual(@Nullable SmartspaceText text1, @Nullable SmartspaceText text2) { + if (text1 == null && text2 == null) return true; + if (text1 == null || text2 == null) return false; + return text1.equals(text2); + } + /** Returns true if the passed-in {@link CharSequence}s are equal. */ public static boolean isEqual(@Nullable CharSequence cs1, @Nullable CharSequence cs2) { - if ((cs1 == null && cs2 != null) || (cs1 != null && cs2 == null)) return false; if (cs1 == null && cs2 == null) return true; + if (cs1 == null || cs2 == null) return false; return cs1.toString().contentEquals(cs2); } } diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceCarouselUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/SmartspaceCarouselUiTemplateData.java index c4c4fdef67f9..e996056291bc 100644 --- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceCarouselUiTemplateData.java +++ b/core/java/android/app/smartspace/uitemplatedata/SmartspaceCarouselUiTemplateData.java @@ -23,7 +23,6 @@ import android.app.smartspace.SmartspaceTarget; import android.app.smartspace.SmartspaceUtils; import android.os.Parcel; import android.os.Parcelable; -import android.text.TextUtils; import java.util.List; import java.util.Objects; @@ -51,15 +50,15 @@ public final class SmartspaceCarouselUiTemplateData extends SmartspaceDefaultUiT } private SmartspaceCarouselUiTemplateData(@SmartspaceTarget.UiTemplateType int templateType, - @Nullable CharSequence titleText, + @Nullable SmartspaceText titleText, @Nullable SmartspaceIcon titleIcon, - @Nullable CharSequence subtitleText, + @Nullable SmartspaceText subtitleText, @Nullable SmartspaceIcon subTitleIcon, @Nullable SmartspaceTapAction primaryTapAction, - @Nullable CharSequence supplementalSubtitleText, + @Nullable SmartspaceText supplementalSubtitleText, @Nullable SmartspaceIcon supplementalSubtitleIcon, @Nullable SmartspaceTapAction supplementalSubtitleTapAction, - @Nullable CharSequence supplementalAlarmText, + @Nullable SmartspaceText supplementalAlarmText, @NonNull List<CarouselItem> carouselItems, @Nullable SmartspaceTapAction carouselAction) { super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction, @@ -170,11 +169,11 @@ public final class SmartspaceCarouselUiTemplateData extends SmartspaceDefaultUiT if (mCarouselItems.isEmpty()) { throw new IllegalStateException("Carousel data is empty"); } + return new SmartspaceCarouselUiTemplateData(getTemplateType(), getTitleText(), - getTitleIcon(), getSubtitleText(), getSubTitleIcon(), getPrimaryTapAction(), + getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(), getSupplementalSubtitleText(), getSupplementalSubtitleIcon(), - getSupplementalSubtitleTapAction(), getSupplementalAlarmText(), - mCarouselItems, + getSupplementalSubtitleTapAction(), getSupplementalAlarmText(), mCarouselItems, mCarouselAction); } } @@ -184,7 +183,7 @@ public final class SmartspaceCarouselUiTemplateData extends SmartspaceDefaultUiT /** Text which is above the image item. */ @Nullable - private final CharSequence mUpperText; + private final SmartspaceText mUpperText; /** Image item. Can be empty. */ @Nullable @@ -192,7 +191,7 @@ public final class SmartspaceCarouselUiTemplateData extends SmartspaceDefaultUiT /** Text which is under the image item. */ @Nullable - private final CharSequence mLowerText; + private final SmartspaceText mLowerText; /** * Tap action for this {@link CarouselItem} instance. {@code mCarouselAction} is used if not @@ -202,14 +201,14 @@ public final class SmartspaceCarouselUiTemplateData extends SmartspaceDefaultUiT private final SmartspaceTapAction mTapAction; CarouselItem(@NonNull Parcel in) { - mUpperText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); + mUpperText = in.readTypedObject(SmartspaceText.CREATOR); mImage = in.readTypedObject(SmartspaceIcon.CREATOR); - mLowerText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); + mLowerText = in.readTypedObject(SmartspaceText.CREATOR); mTapAction = in.readTypedObject(SmartspaceTapAction.CREATOR); } - private CarouselItem(@Nullable CharSequence upperText, @Nullable SmartspaceIcon image, - @Nullable CharSequence lowerText, @Nullable SmartspaceTapAction tapAction) { + private CarouselItem(@Nullable SmartspaceText upperText, @Nullable SmartspaceIcon image, + @Nullable SmartspaceText lowerText, @Nullable SmartspaceTapAction tapAction) { mUpperText = upperText; mImage = image; mLowerText = lowerText; @@ -217,7 +216,7 @@ public final class SmartspaceCarouselUiTemplateData extends SmartspaceDefaultUiT } @Nullable - public CharSequence getUpperText() { + public SmartspaceText getUpperText() { return mUpperText; } @@ -227,7 +226,7 @@ public final class SmartspaceCarouselUiTemplateData extends SmartspaceDefaultUiT } @Nullable - public CharSequence getLowerText() { + public SmartspaceText getLowerText() { return mLowerText; } @@ -260,9 +259,9 @@ public final class SmartspaceCarouselUiTemplateData extends SmartspaceDefaultUiT @Override public void writeToParcel(@NonNull Parcel out, int flags) { - TextUtils.writeToParcel(mUpperText, out, flags); + out.writeTypedObject(mUpperText, flags); out.writeTypedObject(mImage, flags); - TextUtils.writeToParcel(mLowerText, out, flags); + out.writeTypedObject(mLowerText, flags); out.writeTypedObject(mTapAction, flags); } @@ -300,16 +299,16 @@ public final class SmartspaceCarouselUiTemplateData extends SmartspaceDefaultUiT @SystemApi public static final class Builder { - private CharSequence mUpperText; + private SmartspaceText mUpperText; private SmartspaceIcon mImage; - private CharSequence mLowerText; + private SmartspaceText mLowerText; private SmartspaceTapAction mTapAction; /** * Sets the upper text. */ @NonNull - public Builder setUpperText(@Nullable CharSequence upperText) { + public Builder setUpperText(@Nullable SmartspaceText upperText) { mUpperText = upperText; return this; } @@ -328,7 +327,7 @@ public final class SmartspaceCarouselUiTemplateData extends SmartspaceDefaultUiT * Sets the lower text. */ @NonNull - public Builder setLowerText(@Nullable CharSequence lowerText) { + public Builder setLowerText(@Nullable SmartspaceText lowerText) { mLowerText = lowerText; return this; } @@ -349,7 +348,8 @@ public final class SmartspaceCarouselUiTemplateData extends SmartspaceDefaultUiT */ @NonNull public CarouselItem build() { - if (TextUtils.isEmpty(mUpperText) && mImage == null && TextUtils.isEmpty( + if (SmartspaceUtils.isEmpty(mUpperText) && mImage == null + && SmartspaceUtils.isEmpty( mLowerText)) { throw new IllegalStateException("Carousel data is empty"); } diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceCombinedCardsUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/SmartspaceCombinedCardsUiTemplateData.java index 7e2f74eac4fe..9d4c8e23242c 100644 --- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceCombinedCardsUiTemplateData.java +++ b/core/java/android/app/smartspace/uitemplatedata/SmartspaceCombinedCardsUiTemplateData.java @@ -47,15 +47,15 @@ public final class SmartspaceCombinedCardsUiTemplateData extends SmartspaceDefau } private SmartspaceCombinedCardsUiTemplateData(@SmartspaceTarget.UiTemplateType int templateType, - @Nullable CharSequence titleText, + @Nullable SmartspaceText titleText, @Nullable SmartspaceIcon titleIcon, - @Nullable CharSequence subtitleText, + @Nullable SmartspaceText subtitleText, @Nullable SmartspaceIcon subTitleIcon, @Nullable SmartspaceTapAction primaryTapAction, - @Nullable CharSequence supplementalSubtitleText, + @Nullable SmartspaceText supplementalSubtitleText, @Nullable SmartspaceIcon supplementalSubtitleIcon, @Nullable SmartspaceTapAction supplementalSubtitleTapAction, - @Nullable CharSequence supplementalAlarmText, + @Nullable SmartspaceText supplementalAlarmText, @NonNull List<SmartspaceDefaultUiTemplateData> combinedCardDataList) { super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction, supplementalSubtitleText, supplementalSubtitleIcon, supplementalSubtitleTapAction, @@ -146,7 +146,7 @@ public final class SmartspaceCombinedCardsUiTemplateData extends SmartspaceDefau throw new IllegalStateException("Please assign a value to all @NonNull args."); } return new SmartspaceCombinedCardsUiTemplateData(getTemplateType(), getTitleText(), - getTitleIcon(), getSubtitleText(), getSubTitleIcon(), getPrimaryTapAction(), + getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(), getSupplementalSubtitleText(), getSupplementalSubtitleIcon(), getSupplementalSubtitleTapAction(), getSupplementalAlarmText(), mCombinedCardDataList); diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceDefaultUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/SmartspaceDefaultUiTemplateData.java index 742d5c9bdc0e..a7ac9c7ed4bf 100644 --- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceDefaultUiTemplateData.java +++ b/core/java/android/app/smartspace/uitemplatedata/SmartspaceDefaultUiTemplateData.java @@ -24,7 +24,6 @@ import android.app.smartspace.SmartspaceTarget.UiTemplateType; import android.app.smartspace.SmartspaceUtils; import android.os.Parcel; import android.os.Parcelable; -import android.text.TextUtils; import java.util.Objects; @@ -50,17 +49,17 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { * will be used, which has its own tap action applied to the title area. */ @Nullable - private final CharSequence mTitleText; + private final SmartspaceText mTitleText; @Nullable private final SmartspaceIcon mTitleIcon; /** Subtitle text and icon are shown at the second row. */ @Nullable - private final CharSequence mSubtitleText; + private final SmartspaceText mSubtitleText; @Nullable - private final SmartspaceIcon mSubTitleIcon; + private final SmartspaceIcon mSubtitleIcon; /** * Primary tap action for the entire card, including the blank spaces, except: 1. When title is @@ -75,7 +74,7 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { * Mainly used for weather info on non-weather card. */ @Nullable - private final CharSequence mSupplementalSubtitleText; + private final SmartspaceText mSupplementalSubtitleText; @Nullable private final SmartspaceIcon mSupplementalSubtitleIcon; @@ -92,19 +91,19 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { * alarm". */ @Nullable - private final CharSequence mSupplementalAlarmText; + private final SmartspaceText mSupplementalAlarmText; SmartspaceDefaultUiTemplateData(@NonNull Parcel in) { mTemplateType = in.readInt(); - mTitleText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); + mTitleText = in.readTypedObject(SmartspaceText.CREATOR); mTitleIcon = in.readTypedObject(SmartspaceIcon.CREATOR); - mSubtitleText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); - mSubTitleIcon = in.readTypedObject(SmartspaceIcon.CREATOR); + mSubtitleText = in.readTypedObject(SmartspaceText.CREATOR); + mSubtitleIcon = in.readTypedObject(SmartspaceIcon.CREATOR); mPrimaryTapAction = in.readTypedObject(SmartspaceTapAction.CREATOR); - mSupplementalSubtitleText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); + mSupplementalSubtitleText = in.readTypedObject(SmartspaceText.CREATOR); mSupplementalSubtitleIcon = in.readTypedObject(SmartspaceIcon.CREATOR); mSupplementalSubtitleTapAction = in.readTypedObject(SmartspaceTapAction.CREATOR); - mSupplementalAlarmText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); + mSupplementalAlarmText = in.readTypedObject(SmartspaceText.CREATOR); } /** @@ -112,20 +111,20 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { * SmartspaceDefaultUiTemplateData.Builder. */ SmartspaceDefaultUiTemplateData(@UiTemplateType int templateType, - @Nullable CharSequence titleText, + @Nullable SmartspaceText titleText, @Nullable SmartspaceIcon titleIcon, - @Nullable CharSequence subtitleText, - @Nullable SmartspaceIcon subTitleIcon, + @Nullable SmartspaceText subtitleText, + @Nullable SmartspaceIcon subtitleIcon, @Nullable SmartspaceTapAction primaryTapAction, - @Nullable CharSequence supplementalSubtitleText, + @Nullable SmartspaceText supplementalSubtitleText, @Nullable SmartspaceIcon supplementalSubtitleIcon, @Nullable SmartspaceTapAction supplementalSubtitleTapAction, - @Nullable CharSequence supplementalAlarmText) { + @Nullable SmartspaceText supplementalAlarmText) { mTemplateType = templateType; mTitleText = titleText; mTitleIcon = titleIcon; mSubtitleText = subtitleText; - mSubTitleIcon = subTitleIcon; + mSubtitleIcon = subtitleIcon; mPrimaryTapAction = primaryTapAction; mSupplementalSubtitleText = supplementalSubtitleText; mSupplementalSubtitleIcon = supplementalSubtitleIcon; @@ -139,7 +138,7 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { } @Nullable - public CharSequence getTitleText() { + public SmartspaceText getTitleText() { return mTitleText; } @@ -149,28 +148,28 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { } @Nullable - public CharSequence getSubtitleText() { + public SmartspaceText getSubtitleText() { return mSubtitleText; } @Nullable - public SmartspaceIcon getSubTitleIcon() { - return mSubTitleIcon; + public SmartspaceIcon getSubtitleIcon() { + return mSubtitleIcon; } @Nullable - public CharSequence getSupplementalSubtitleText() { - return mSupplementalSubtitleText; + public SmartspaceTapAction getPrimaryTapAction() { + return mPrimaryTapAction; } @Nullable - public SmartspaceIcon getSupplementalSubtitleIcon() { - return mSupplementalSubtitleIcon; + public SmartspaceText getSupplementalSubtitleText() { + return mSupplementalSubtitleText; } @Nullable - public SmartspaceTapAction getPrimaryTapAction() { - return mPrimaryTapAction; + public SmartspaceIcon getSupplementalSubtitleIcon() { + return mSupplementalSubtitleIcon; } @Nullable @@ -179,7 +178,7 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { } @Nullable - public CharSequence getSupplementalAlarmText() { + public SmartspaceText getSupplementalAlarmText() { return mSupplementalAlarmText; } @@ -208,15 +207,15 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { @Override public void writeToParcel(@NonNull Parcel out, int flags) { out.writeInt(mTemplateType); - TextUtils.writeToParcel(mTitleText, out, flags); + out.writeTypedObject(mTitleText, flags); out.writeTypedObject(mTitleIcon, flags); - TextUtils.writeToParcel(mSubtitleText, out, flags); - out.writeTypedObject(mSubTitleIcon, flags); + out.writeTypedObject(mSubtitleText, flags); + out.writeTypedObject(mSubtitleIcon, flags); out.writeTypedObject(mPrimaryTapAction, flags); - TextUtils.writeToParcel(mSupplementalSubtitleText, out, flags); + out.writeTypedObject(mSupplementalSubtitleText, flags); out.writeTypedObject(mSupplementalSubtitleIcon, flags); out.writeTypedObject(mSupplementalSubtitleTapAction, flags); - TextUtils.writeToParcel(mSupplementalAlarmText, out, flags); + out.writeTypedObject(mSupplementalAlarmText, flags); } @Override @@ -228,7 +227,7 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { that.mTitleText) && Objects.equals(mTitleIcon, that.mTitleIcon) && SmartspaceUtils.isEqual(mSubtitleText, that.mSubtitleText) - && Objects.equals(mSubTitleIcon, that.mSubTitleIcon) + && Objects.equals(mSubtitleIcon, that.mSubtitleIcon) && Objects.equals(mPrimaryTapAction, that.mPrimaryTapAction) && SmartspaceUtils.isEqual(mSupplementalSubtitleText, that.mSupplementalSubtitleText) @@ -240,7 +239,7 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { @Override public int hashCode() { - return Objects.hash(mTemplateType, mTitleText, mTitleIcon, mSubtitleText, mSubTitleIcon, + return Objects.hash(mTemplateType, mTitleText, mTitleIcon, mSubtitleText, mSubtitleIcon, mPrimaryTapAction, mSupplementalSubtitleText, mSupplementalSubtitleIcon, mSupplementalSubtitleTapAction, mSupplementalAlarmText); } @@ -252,7 +251,7 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { + ", mTitleText=" + mTitleText + ", mTitleIcon=" + mTitleIcon + ", mSubtitleText=" + mSubtitleText - + ", mSubTitleIcon=" + mSubTitleIcon + + ", mSubTitleIcon=" + mSubtitleIcon + ", mPrimaryTapAction=" + mPrimaryTapAction + ", mSupplementalSubtitleText=" + mSupplementalSubtitleText + ", mSupplementalSubtitleIcon=" + mSupplementalSubtitleIcon @@ -271,15 +270,15 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { public static class Builder { @UiTemplateType private final int mTemplateType; - private CharSequence mTitleText; + private SmartspaceText mTitleText; private SmartspaceIcon mTitleIcon; - private CharSequence mSubtitleText; - private SmartspaceIcon mSubTitleIcon; + private SmartspaceText mSubtitleText; + private SmartspaceIcon mSubtitleIcon; private SmartspaceTapAction mPrimaryTapAction; - private CharSequence mSupplementalSubtitleText; + private SmartspaceText mSupplementalSubtitleText; private SmartspaceIcon mSupplementalSubtitleIcon; private SmartspaceTapAction mSupplementalSubtitleTapAction; - private CharSequence mSupplementalAlarmText; + private SmartspaceText mSupplementalAlarmText; /** * A builder for {@link SmartspaceDefaultUiTemplateData}. @@ -300,7 +299,7 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { /** Should ONLY be used by the subclasses */ @Nullable @SuppressLint("GetterOnBuilder") - CharSequence getTitleText() { + SmartspaceText getTitleText() { return mTitleText; } @@ -314,15 +313,15 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { /** Should ONLY be used by the subclasses */ @Nullable @SuppressLint("GetterOnBuilder") - CharSequence getSubtitleText() { + SmartspaceText getSubtitleText() { return mSubtitleText; } /** Should ONLY be used by the subclasses */ @Nullable @SuppressLint("GetterOnBuilder") - SmartspaceIcon getSubTitleIcon() { - return mSubTitleIcon; + SmartspaceIcon getSubtitleIcon() { + return mSubtitleIcon; } /** Should ONLY be used by the subclasses */ @@ -335,7 +334,7 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { /** Should ONLY be used by the subclasses */ @Nullable @SuppressLint("GetterOnBuilder") - CharSequence getSupplementalSubtitleText() { + SmartspaceText getSupplementalSubtitleText() { return mSupplementalSubtitleText; } @@ -356,7 +355,7 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { /** Should ONLY be used by the subclasses */ @Nullable @SuppressLint("GetterOnBuilder") - CharSequence getSupplementalAlarmText() { + SmartspaceText getSupplementalAlarmText() { return mSupplementalAlarmText; } @@ -364,7 +363,7 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { * Sets the card title. */ @NonNull - public Builder setTitleText(@NonNull CharSequence titleText) { + public Builder setTitleText(@NonNull SmartspaceText titleText) { mTitleText = titleText; return this; } @@ -382,7 +381,7 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { * Sets the card subtitle. */ @NonNull - public Builder setSubtitleText(@NonNull CharSequence subtitleText) { + public Builder setSubtitleText(@NonNull SmartspaceText subtitleText) { mSubtitleText = subtitleText; return this; } @@ -391,8 +390,8 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { * Sets the card subtitle icon. */ @NonNull - public Builder setSubTitleIcon(@NonNull SmartspaceIcon subTitleIcon) { - mSubTitleIcon = subTitleIcon; + public Builder setSubtitleIcon(@NonNull SmartspaceIcon subtitleIcon) { + mSubtitleIcon = subtitleIcon; return this; } @@ -409,7 +408,8 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { * Sets the supplemental subtitle text. */ @NonNull - public Builder setSupplementalSubtitleText(@NonNull CharSequence supplementalSubtitleText) { + public Builder setSupplementalSubtitleText( + @NonNull SmartspaceText supplementalSubtitleText) { mSupplementalSubtitleText = supplementalSubtitleText; return this; } @@ -440,7 +440,7 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { * Sets the supplemental alarm text. */ @NonNull - public Builder setSupplementalAlarmText(@NonNull CharSequence supplementalAlarmText) { + public Builder setSupplementalAlarmText(@NonNull SmartspaceText supplementalAlarmText) { mSupplementalAlarmText = supplementalAlarmText; return this; } @@ -451,7 +451,7 @@ public class SmartspaceDefaultUiTemplateData implements Parcelable { @NonNull public SmartspaceDefaultUiTemplateData build() { return new SmartspaceDefaultUiTemplateData(mTemplateType, mTitleText, mTitleIcon, - mSubtitleText, mSubTitleIcon, mPrimaryTapAction, mSupplementalSubtitleText, + mSubtitleText, mSubtitleIcon, mPrimaryTapAction, mSupplementalSubtitleText, mSupplementalSubtitleIcon, mSupplementalSubtitleTapAction, mSupplementalAlarmText); } diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceHeadToHeadUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/SmartspaceHeadToHeadUiTemplateData.java index c76af27e7f16..bcd12eb0f527 100644 --- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceHeadToHeadUiTemplateData.java +++ b/core/java/android/app/smartspace/uitemplatedata/SmartspaceHeadToHeadUiTemplateData.java @@ -22,7 +22,6 @@ import android.annotation.SystemApi; import android.app.smartspace.SmartspaceTarget; import android.app.smartspace.SmartspaceUtils; import android.os.Parcel; -import android.text.TextUtils; import java.util.Objects; @@ -35,15 +34,15 @@ import java.util.Objects; public final class SmartspaceHeadToHeadUiTemplateData extends SmartspaceDefaultUiTemplateData { @Nullable - private final CharSequence mHeadToHeadTitle; + private final SmartspaceText mHeadToHeadTitle; @Nullable private final SmartspaceIcon mHeadToHeadFirstCompetitorIcon; @Nullable private final SmartspaceIcon mHeadToHeadSecondCompetitorIcon; @Nullable - private final CharSequence mHeadToHeadFirstCompetitorText; + private final SmartspaceText mHeadToHeadFirstCompetitorText; @Nullable - private final CharSequence mHeadToHeadSecondCompetitorText; + private final SmartspaceText mHeadToHeadSecondCompetitorText; /** Tap action for the head-to-head secondary card. */ @Nullable @@ -51,29 +50,29 @@ public final class SmartspaceHeadToHeadUiTemplateData extends SmartspaceDefaultU SmartspaceHeadToHeadUiTemplateData(@NonNull Parcel in) { super(in); - mHeadToHeadTitle = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); + mHeadToHeadTitle = in.readTypedObject(SmartspaceText.CREATOR); mHeadToHeadFirstCompetitorIcon = in.readTypedObject(SmartspaceIcon.CREATOR); mHeadToHeadSecondCompetitorIcon = in.readTypedObject(SmartspaceIcon.CREATOR); - mHeadToHeadFirstCompetitorText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); - mHeadToHeadSecondCompetitorText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); + mHeadToHeadFirstCompetitorText = in.readTypedObject(SmartspaceText.CREATOR); + mHeadToHeadSecondCompetitorText = in.readTypedObject(SmartspaceText.CREATOR); mHeadToHeadAction = in.readTypedObject(SmartspaceTapAction.CREATOR); } private SmartspaceHeadToHeadUiTemplateData(@SmartspaceTarget.UiTemplateType int templateType, - @Nullable CharSequence titleText, + @Nullable SmartspaceText titleText, @Nullable SmartspaceIcon titleIcon, - @Nullable CharSequence subtitleText, + @Nullable SmartspaceText subtitleText, @Nullable SmartspaceIcon subTitleIcon, @Nullable SmartspaceTapAction primaryTapAction, - @Nullable CharSequence supplementalSubtitleText, + @Nullable SmartspaceText supplementalSubtitleText, @Nullable SmartspaceIcon supplementalSubtitleIcon, @Nullable SmartspaceTapAction supplementalSubtitleTapAction, - @Nullable CharSequence supplementalAlarmText, - @Nullable CharSequence headToHeadTitle, + @Nullable SmartspaceText supplementalAlarmText, + @Nullable SmartspaceText headToHeadTitle, @Nullable SmartspaceIcon headToHeadFirstCompetitorIcon, @Nullable SmartspaceIcon headToHeadSecondCompetitorIcon, - @Nullable CharSequence headToHeadFirstCompetitorText, - @Nullable CharSequence headToHeadSecondCompetitorText, + @Nullable SmartspaceText headToHeadFirstCompetitorText, + @Nullable SmartspaceText headToHeadSecondCompetitorText, @Nullable SmartspaceTapAction headToHeadAction) { super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction, supplementalSubtitleText, supplementalSubtitleIcon, supplementalSubtitleTapAction, @@ -87,7 +86,7 @@ public final class SmartspaceHeadToHeadUiTemplateData extends SmartspaceDefaultU } @Nullable - public CharSequence getHeadToHeadTitle() { + public SmartspaceText getHeadToHeadTitle() { return mHeadToHeadTitle; } @@ -102,12 +101,12 @@ public final class SmartspaceHeadToHeadUiTemplateData extends SmartspaceDefaultU } @Nullable - public CharSequence getHeadToHeadFirstCompetitorText() { + public SmartspaceText getHeadToHeadFirstCompetitorText() { return mHeadToHeadFirstCompetitorText; } @Nullable - public CharSequence getHeadToHeadSecondCompetitorText() { + public SmartspaceText getHeadToHeadSecondCompetitorText() { return mHeadToHeadSecondCompetitorText; } @@ -141,11 +140,11 @@ public final class SmartspaceHeadToHeadUiTemplateData extends SmartspaceDefaultU @Override public void writeToParcel(@NonNull Parcel out, int flags) { super.writeToParcel(out, flags); - TextUtils.writeToParcel(mHeadToHeadTitle, out, flags); + out.writeTypedObject(mHeadToHeadTitle, flags); out.writeTypedObject(mHeadToHeadFirstCompetitorIcon, flags); out.writeTypedObject(mHeadToHeadSecondCompetitorIcon, flags); - TextUtils.writeToParcel(mHeadToHeadFirstCompetitorText, out, flags); - TextUtils.writeToParcel(mHeadToHeadSecondCompetitorText, out, flags); + out.writeTypedObject(mHeadToHeadFirstCompetitorText, flags); + out.writeTypedObject(mHeadToHeadSecondCompetitorText, flags); out.writeTypedObject(mHeadToHeadAction, flags); } @@ -195,11 +194,11 @@ public final class SmartspaceHeadToHeadUiTemplateData extends SmartspaceDefaultU @SystemApi public static final class Builder extends SmartspaceDefaultUiTemplateData.Builder { - private CharSequence mHeadToHeadTitle; + private SmartspaceText mHeadToHeadTitle; private SmartspaceIcon mHeadToHeadFirstCompetitorIcon; private SmartspaceIcon mHeadToHeadSecondCompetitorIcon; - private CharSequence mHeadToHeadFirstCompetitorText; - private CharSequence mHeadToHeadSecondCompetitorText; + private SmartspaceText mHeadToHeadFirstCompetitorText; + private SmartspaceText mHeadToHeadSecondCompetitorText; private SmartspaceTapAction mHeadToHeadAction; /** @@ -213,7 +212,7 @@ public final class SmartspaceHeadToHeadUiTemplateData extends SmartspaceDefaultU * Sets the head-to-head card's title */ @NonNull - public Builder setHeadToHeadTitle(@Nullable CharSequence headToHeadTitle) { + public Builder setHeadToHeadTitle(@Nullable SmartspaceText headToHeadTitle) { mHeadToHeadTitle = headToHeadTitle; return this; } @@ -243,7 +242,7 @@ public final class SmartspaceHeadToHeadUiTemplateData extends SmartspaceDefaultU */ @NonNull public Builder setHeadToHeadFirstCompetitorText( - @Nullable CharSequence headToHeadFirstCompetitorText) { + @Nullable SmartspaceText headToHeadFirstCompetitorText) { mHeadToHeadFirstCompetitorText = headToHeadFirstCompetitorText; return this; } @@ -253,7 +252,7 @@ public final class SmartspaceHeadToHeadUiTemplateData extends SmartspaceDefaultU */ @NonNull public Builder setHeadToHeadSecondCompetitorText( - @Nullable CharSequence headToHeadSecondCompetitorText) { + @Nullable SmartspaceText headToHeadSecondCompetitorText) { mHeadToHeadSecondCompetitorText = headToHeadSecondCompetitorText; return this; } @@ -273,7 +272,7 @@ public final class SmartspaceHeadToHeadUiTemplateData extends SmartspaceDefaultU @NonNull public SmartspaceHeadToHeadUiTemplateData build() { return new SmartspaceHeadToHeadUiTemplateData(getTemplateType(), getTitleText(), - getTitleIcon(), getSubtitleText(), getSubTitleIcon(), getPrimaryTapAction(), + getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(), getSupplementalSubtitleText(), getSupplementalSubtitleIcon(), getSupplementalSubtitleTapAction(), getSupplementalAlarmText(), mHeadToHeadTitle, diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceIcon.java b/core/java/android/app/smartspace/uitemplatedata/SmartspaceIcon.java index 70b30954afa7..1efbaeb8bd3c 100644 --- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceIcon.java +++ b/core/java/android/app/smartspace/uitemplatedata/SmartspaceIcon.java @@ -42,14 +42,19 @@ public final class SmartspaceIcon implements Parcelable { @Nullable private final CharSequence mContentDescription; + private final boolean mShouldTint; + SmartspaceIcon(@NonNull Parcel in) { mIcon = in.readTypedObject(Icon.CREATOR); mContentDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); + mShouldTint = in.readBoolean(); } - private SmartspaceIcon(@NonNull Icon icon, @Nullable CharSequence contentDescription) { + private SmartspaceIcon(@NonNull Icon icon, @Nullable CharSequence contentDescription, + boolean shouldTint) { mIcon = icon; mContentDescription = contentDescription; + mShouldTint = shouldTint; } @NonNull @@ -62,6 +67,11 @@ public final class SmartspaceIcon implements Parcelable { return mContentDescription; } + /** Return shouldTint value. The default value is true. */ + public boolean shouldTint() { + return mShouldTint; + } + @NonNull public static final Creator<SmartspaceIcon> CREATOR = new Creator<SmartspaceIcon>() { @Override @@ -80,13 +90,14 @@ public final class SmartspaceIcon implements Parcelable { if (this == o) return true; if (!(o instanceof SmartspaceIcon)) return false; SmartspaceIcon that = (SmartspaceIcon) o; - return mIcon.equals(that.mIcon) && SmartspaceUtils.isEqual(mContentDescription, - that.mContentDescription); + return mIcon.toString().equals(that.mIcon.toString()) && SmartspaceUtils.isEqual( + mContentDescription, + that.mContentDescription) && mShouldTint == that.mShouldTint; } @Override public int hashCode() { - return Objects.hash(mIcon, mContentDescription); + return Objects.hash(mIcon.toString(), mContentDescription, mShouldTint); } @Override @@ -98,13 +109,15 @@ public final class SmartspaceIcon implements Parcelable { public void writeToParcel(@NonNull Parcel out, int flags) { out.writeTypedObject(mIcon, flags); TextUtils.writeToParcel(mContentDescription, out, flags); + out.writeBoolean(mShouldTint); } @Override public String toString() { return "SmartspaceIcon{" - + "mImage=" + mIcon - + ", mContentDescription='" + mContentDescription + '\'' + + "mIcon=" + mIcon + + ", mContentDescription=" + mContentDescription + + ", mShouldTint=" + mShouldTint + '}'; } @@ -118,14 +131,16 @@ public final class SmartspaceIcon implements Parcelable { private Icon mIcon; private CharSequence mContentDescription; + private boolean mShouldTint; /** - * A builder for {@link SmartspaceIcon}. + * A builder for {@link SmartspaceIcon}, which sets shouldTint to true by default. * - * @param icon the icon image of this smartspace icon. + * @param icon the icon image of this {@link SmartspaceIcon} instance. */ public Builder(@NonNull Icon icon) { mIcon = Objects.requireNonNull(icon); + mShouldTint = true; } /** @@ -138,11 +153,20 @@ public final class SmartspaceIcon implements Parcelable { } /** + * Sets should tint icon. + */ + @NonNull + public Builder setShouldTint(boolean shouldTint) { + mShouldTint = shouldTint; + return this; + } + + /** * Builds a new SmartspaceIcon instance. */ @NonNull public SmartspaceIcon build() { - return new SmartspaceIcon(mIcon, mContentDescription); + return new SmartspaceIcon(mIcon, mContentDescription, mShouldTint); } } } diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubCardUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubCardUiTemplateData.java index 287cf8e61bc3..2db13d31bba1 100644 --- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubCardUiTemplateData.java +++ b/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubCardUiTemplateData.java @@ -22,7 +22,6 @@ import android.annotation.SystemApi; import android.app.smartspace.SmartspaceTarget; import android.app.smartspace.SmartspaceUtils; import android.os.Parcel; -import android.text.TextUtils; import java.util.Objects; @@ -40,7 +39,7 @@ public final class SmartspaceSubCardUiTemplateData extends SmartspaceDefaultUiTe /** Text for the sub-card, which shows below the icon when being set. */ @Nullable - private final CharSequence mSubCardText; + private final SmartspaceText mSubCardText; /** Tap action for the sub-card secondary card. */ @Nullable @@ -49,22 +48,22 @@ public final class SmartspaceSubCardUiTemplateData extends SmartspaceDefaultUiTe SmartspaceSubCardUiTemplateData(@NonNull Parcel in) { super(in); mSubCardIcon = in.readTypedObject(SmartspaceIcon.CREATOR); - mSubCardText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); + mSubCardText = in.readTypedObject(SmartspaceText.CREATOR); mSubCardAction = in.readTypedObject(SmartspaceTapAction.CREATOR); } private SmartspaceSubCardUiTemplateData(int templateType, - @Nullable CharSequence titleText, + @Nullable SmartspaceText titleText, @Nullable SmartspaceIcon titleIcon, - @Nullable CharSequence subtitleText, + @Nullable SmartspaceText subtitleText, @Nullable SmartspaceIcon subTitleIcon, @Nullable SmartspaceTapAction primaryTapAction, - @Nullable CharSequence supplementalSubtitleText, + @Nullable SmartspaceText supplementalSubtitleText, @Nullable SmartspaceIcon supplementalSubtitleIcon, @Nullable SmartspaceTapAction supplementalSubtitleTapAction, - @Nullable CharSequence supplementalAlarmText, + @Nullable SmartspaceText supplementalAlarmText, @NonNull SmartspaceIcon subCardIcon, - @Nullable CharSequence subCardText, + @Nullable SmartspaceText subCardText, @Nullable SmartspaceTapAction subCardAction) { super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction, supplementalSubtitleText, supplementalSubtitleIcon, supplementalSubtitleTapAction, @@ -80,7 +79,7 @@ public final class SmartspaceSubCardUiTemplateData extends SmartspaceDefaultUiTe } @Nullable - public CharSequence getSubCardText() { + public SmartspaceText getSubCardText() { return mSubCardText; } @@ -115,7 +114,7 @@ public final class SmartspaceSubCardUiTemplateData extends SmartspaceDefaultUiTe public void writeToParcel(@NonNull Parcel out, int flags) { super.writeToParcel(out, flags); out.writeTypedObject(mSubCardIcon, flags); - TextUtils.writeToParcel(mSubCardText, out, flags); + out.writeTypedObject(mSubCardText, flags); out.writeTypedObject(mSubCardAction, flags); } @@ -153,7 +152,7 @@ public final class SmartspaceSubCardUiTemplateData extends SmartspaceDefaultUiTe public static final class Builder extends SmartspaceDefaultUiTemplateData.Builder { private final SmartspaceIcon mSubCardIcon; - private CharSequence mSubCardText; + private SmartspaceText mSubCardText; private SmartspaceTapAction mSubCardAction; /** @@ -165,11 +164,11 @@ public final class SmartspaceSubCardUiTemplateData extends SmartspaceDefaultUiTe } /** - * Sets the card title text. + * Sets the card text. */ @NonNull - public Builder setSubCardAction(@NonNull CharSequence subCardTitleText) { - mSubCardText = subCardTitleText; + public Builder setSubCardText(@NonNull SmartspaceText subCardText) { + mSubCardText = subCardText; return this; } @@ -188,7 +187,7 @@ public final class SmartspaceSubCardUiTemplateData extends SmartspaceDefaultUiTe @NonNull public SmartspaceSubCardUiTemplateData build() { return new SmartspaceSubCardUiTemplateData(getTemplateType(), getTitleText(), - getTitleIcon(), getSubtitleText(), getSubTitleIcon(), getPrimaryTapAction(), + getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(), getSupplementalSubtitleText(), getSupplementalSubtitleIcon(), getSupplementalSubtitleTapAction(), getSupplementalAlarmText(), mSubCardIcon, mSubCardText, diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubImageUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubImageUiTemplateData.java index c4799936f8c9..2fe4cf87984a 100644 --- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubImageUiTemplateData.java +++ b/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubImageUiTemplateData.java @@ -22,8 +22,6 @@ import android.annotation.SystemApi; import android.app.smartspace.SmartspaceTarget; import android.os.Parcel; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -37,7 +35,7 @@ public final class SmartspaceSubImageUiTemplateData extends SmartspaceDefaultUiT /** Texts are shown next to the image as a vertical list */ @NonNull - private final List<CharSequence> mSubImageTexts; + private final List<SmartspaceText> mSubImageTexts; /** If multiple images are passed in, they will be rendered as GIF. */ @NonNull @@ -49,22 +47,22 @@ public final class SmartspaceSubImageUiTemplateData extends SmartspaceDefaultUiT SmartspaceSubImageUiTemplateData(@NonNull Parcel in) { super(in); - mSubImageTexts = Arrays.asList(in.readCharSequenceArray()); + mSubImageTexts = in.createTypedArrayList(SmartspaceText.CREATOR); mSubImages = in.createTypedArrayList(SmartspaceIcon.CREATOR); mSubImageAction = in.readTypedObject(SmartspaceTapAction.CREATOR); } private SmartspaceSubImageUiTemplateData(@SmartspaceTarget.UiTemplateType int templateType, - @Nullable CharSequence titleText, + @Nullable SmartspaceText titleText, @Nullable SmartspaceIcon titleIcon, - @Nullable CharSequence subtitleText, + @Nullable SmartspaceText subtitleText, @Nullable SmartspaceIcon subTitleIcon, @Nullable SmartspaceTapAction primaryTapAction, - @Nullable CharSequence supplementalSubtitleText, + @Nullable SmartspaceText supplementalSubtitleText, @Nullable SmartspaceIcon supplementalSubtitleIcon, @Nullable SmartspaceTapAction supplementalSubtitleTapAction, - @Nullable CharSequence supplementalAlarmText, - @NonNull List<CharSequence> subImageTexts, + @Nullable SmartspaceText supplementalAlarmText, + @NonNull List<SmartspaceText> subImageTexts, @NonNull List<SmartspaceIcon> subImages, @Nullable SmartspaceTapAction subImageAction) { super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction, @@ -76,7 +74,7 @@ public final class SmartspaceSubImageUiTemplateData extends SmartspaceDefaultUiT } @NonNull - public List<CharSequence> getSubImageTexts() { + public List<SmartspaceText> getSubImageTexts() { return mSubImageTexts; } @@ -115,7 +113,7 @@ public final class SmartspaceSubImageUiTemplateData extends SmartspaceDefaultUiT @Override public void writeToParcel(@NonNull Parcel out, int flags) { super.writeToParcel(out, flags); - out.writeCharSequenceList(new ArrayList<>(mSubImageTexts)); + out.writeTypedList(mSubImageTexts); out.writeTypedList(mSubImages); out.writeTypedObject(mSubImageAction, flags); } @@ -153,14 +151,14 @@ public final class SmartspaceSubImageUiTemplateData extends SmartspaceDefaultUiT @SystemApi public static final class Builder extends SmartspaceDefaultUiTemplateData.Builder { - private final List<CharSequence> mSubImageTexts; + private final List<SmartspaceText> mSubImageTexts; private final List<SmartspaceIcon> mSubImages; private SmartspaceTapAction mSubImageAction; /** * A builder for {@link SmartspaceSubImageUiTemplateData}. */ - public Builder(@NonNull List<CharSequence> subImageTexts, + public Builder(@NonNull List<SmartspaceText> subImageTexts, @NonNull List<SmartspaceIcon> subImages) { super(SmartspaceTarget.UI_TEMPLATE_SUB_IMAGE); mSubImageTexts = Objects.requireNonNull(subImageTexts); @@ -171,7 +169,7 @@ public final class SmartspaceSubImageUiTemplateData extends SmartspaceDefaultUiT * Sets the card tap action. */ @NonNull - public Builder setCarouselAction(@NonNull SmartspaceTapAction subImageAction) { + public Builder setSubImageAction(@NonNull SmartspaceTapAction subImageAction) { mSubImageAction = subImageAction; return this; } @@ -182,7 +180,7 @@ public final class SmartspaceSubImageUiTemplateData extends SmartspaceDefaultUiT @NonNull public SmartspaceSubImageUiTemplateData build() { return new SmartspaceSubImageUiTemplateData(getTemplateType(), getTitleText(), - getTitleIcon(), getSubtitleText(), getSubTitleIcon(), getPrimaryTapAction(), + getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(), getSupplementalSubtitleText(), getSupplementalSubtitleIcon(), getSupplementalSubtitleTapAction(), getSupplementalAlarmText(), mSubImageTexts, mSubImages, diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubListUiTemplateData.java b/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubListUiTemplateData.java index b5d9645027d8..9512c7fb130e 100644 --- a/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubListUiTemplateData.java +++ b/core/java/android/app/smartspace/uitemplatedata/SmartspaceSubListUiTemplateData.java @@ -22,11 +22,10 @@ import android.annotation.SystemApi; import android.app.smartspace.SmartspaceTarget; import android.os.Parcel; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Objects; + /** * Holds all the relevant data needed to render a Smartspace card with the sub-list Ui Template. * @@ -38,7 +37,7 @@ public final class SmartspaceSubListUiTemplateData extends SmartspaceDefaultUiTe @Nullable private final SmartspaceIcon mSubListIcon; @NonNull - private final List<CharSequence> mSubListTexts; + private final List<SmartspaceText> mSubListTexts; /** Tap action for the sub-list secondary card. */ @Nullable @@ -47,22 +46,22 @@ public final class SmartspaceSubListUiTemplateData extends SmartspaceDefaultUiTe SmartspaceSubListUiTemplateData(@NonNull Parcel in) { super(in); mSubListIcon = in.readTypedObject(SmartspaceIcon.CREATOR); - mSubListTexts = Arrays.asList(in.readCharSequenceArray()); + mSubListTexts = in.createTypedArrayList(SmartspaceText.CREATOR); mSubListAction = in.readTypedObject(SmartspaceTapAction.CREATOR); } private SmartspaceSubListUiTemplateData(@SmartspaceTarget.UiTemplateType int templateType, - @Nullable CharSequence titleText, + @Nullable SmartspaceText titleText, @Nullable SmartspaceIcon titleIcon, - @Nullable CharSequence subtitleText, + @Nullable SmartspaceText subtitleText, @Nullable SmartspaceIcon subTitleIcon, @Nullable SmartspaceTapAction primaryTapAction, - @Nullable CharSequence supplementalSubtitleText, + @Nullable SmartspaceText supplementalSubtitleText, @Nullable SmartspaceIcon supplementalSubtitleIcon, @Nullable SmartspaceTapAction supplementalSubtitleTapAction, - @Nullable CharSequence supplementalAlarmText, + @Nullable SmartspaceText supplementalAlarmText, @Nullable SmartspaceIcon subListIcon, - @NonNull List<CharSequence> subListTexts, + @NonNull List<SmartspaceText> subListTexts, @Nullable SmartspaceTapAction subListAction) { super(templateType, titleText, titleIcon, subtitleText, subTitleIcon, primaryTapAction, supplementalSubtitleText, supplementalSubtitleIcon, supplementalSubtitleTapAction, @@ -78,7 +77,7 @@ public final class SmartspaceSubListUiTemplateData extends SmartspaceDefaultUiTe } @NonNull - public List<CharSequence> getSubListTexts() { + public List<SmartspaceText> getSubListTexts() { return mSubListTexts; } @@ -113,7 +112,7 @@ public final class SmartspaceSubListUiTemplateData extends SmartspaceDefaultUiTe public void writeToParcel(@NonNull Parcel out, int flags) { super.writeToParcel(out, flags); out.writeTypedObject(mSubListIcon, flags); - out.writeCharSequenceList(new ArrayList<>(mSubListTexts)); + out.writeTypedList(mSubListTexts); out.writeTypedObject(mSubListAction, flags); } @@ -151,13 +150,13 @@ public final class SmartspaceSubListUiTemplateData extends SmartspaceDefaultUiTe public static final class Builder extends SmartspaceDefaultUiTemplateData.Builder { private SmartspaceIcon mSubListIcon; - private final List<CharSequence> mSubListTexts; + private final List<SmartspaceText> mSubListTexts; private SmartspaceTapAction mSubListAction; /** * A builder for {@link SmartspaceSubListUiTemplateData}. */ - public Builder(@NonNull List<CharSequence> subListTexts) { + public Builder(@NonNull List<SmartspaceText> subListTexts) { super(SmartspaceTarget.UI_TEMPLATE_SUB_LIST); mSubListTexts = Objects.requireNonNull(subListTexts); } @@ -175,7 +174,7 @@ public final class SmartspaceSubListUiTemplateData extends SmartspaceDefaultUiTe * Sets the card tap action. */ @NonNull - public Builder setCarouselAction(@NonNull SmartspaceTapAction subListAction) { + public Builder setSubListAction(@NonNull SmartspaceTapAction subListAction) { mSubListAction = subListAction; return this; } @@ -186,7 +185,7 @@ public final class SmartspaceSubListUiTemplateData extends SmartspaceDefaultUiTe @NonNull public SmartspaceSubListUiTemplateData build() { return new SmartspaceSubListUiTemplateData(getTemplateType(), getTitleText(), - getTitleIcon(), getSubtitleText(), getSubTitleIcon(), getPrimaryTapAction(), + getTitleIcon(), getSubtitleText(), getSubtitleIcon(), getPrimaryTapAction(), getSupplementalSubtitleText(), getSupplementalSubtitleIcon(), getSupplementalSubtitleTapAction(), getSupplementalAlarmText(), mSubListIcon, mSubListTexts, diff --git a/core/java/android/app/smartspace/uitemplatedata/SmartspaceText.java b/core/java/android/app/smartspace/uitemplatedata/SmartspaceText.java new file mode 100644 index 000000000000..25d13e6521c6 --- /dev/null +++ b/core/java/android/app/smartspace/uitemplatedata/SmartspaceText.java @@ -0,0 +1,143 @@ +/* + * Copyright (C) 2022 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 android.app.smartspace.uitemplatedata; + +import android.annotation.NonNull; +import android.annotation.SystemApi; +import android.app.smartspace.SmartspaceUtils; +import android.os.Parcel; +import android.os.Parcelable; +import android.text.TextUtils; + +import java.util.Objects; + +/** + * Holds the information for a Smartspace-card text: the text content and + * the truncate_at information. + * + * @hide + */ +@SystemApi +public final class SmartspaceText implements Parcelable { + + @NonNull + private final CharSequence mText; + + private final TextUtils.TruncateAt mTruncateAtType; + + SmartspaceText(Parcel in) { + mText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); + mTruncateAtType = TextUtils.TruncateAt.valueOf(in.readString()); + } + + private SmartspaceText(@NonNull CharSequence text, TextUtils.TruncateAt truncateAtType) { + mText = text; + mTruncateAtType = truncateAtType; + } + + @NonNull + public CharSequence getText() { + return mText; + } + + @NonNull + public TextUtils.TruncateAt getTruncateAtType() { + return mTruncateAtType; + } + + @NonNull + public static final Creator<SmartspaceText> CREATOR = new Creator<SmartspaceText>() { + @Override + public SmartspaceText createFromParcel(Parcel in) { + return new SmartspaceText(in); + } + + @Override + public SmartspaceText[] newArray(int size) { + return new SmartspaceText[size]; + } + }; + + @Override + public int describeContents() { + return 0; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof SmartspaceText)) return false; + SmartspaceText that = (SmartspaceText) o; + return mTruncateAtType == that.mTruncateAtType && SmartspaceUtils.isEqual(mText, + that.mText); + } + + @Override + public int hashCode() { + return Objects.hash(mText, mTruncateAtType); + } + + @Override + public void writeToParcel(@NonNull Parcel out, int flags) { + TextUtils.writeToParcel(mText, out, flags); + out.writeString(mTruncateAtType.name()); + } + + /** + * A builder for {@link SmartspaceText} object. + * + * @hide + */ + @SystemApi + public static final class Builder { + private final CharSequence mText; + private TextUtils.TruncateAt mTruncateAtType; + + /** + * A builder for {@link SmartspaceText}, which sets TruncateAtType to AT_END by default. + */ + public Builder(@NonNull CharSequence text) { + mText = Objects.requireNonNull(text); + mTruncateAtType = TextUtils.TruncateAt.END; + } + + /** + * A builder for {@link SmartspaceText}. + */ + public Builder(@NonNull CharSequence text, @NonNull TextUtils.TruncateAt truncateAtType) { + mText = Objects.requireNonNull(text); + mTruncateAtType = Objects.requireNonNull(truncateAtType); + } + + /** + * Sets truncateAtType. + */ + @NonNull + public Builder setTruncateAtType(@NonNull TextUtils.TruncateAt truncateAtType) { + mTruncateAtType = Objects.requireNonNull(truncateAtType); + return this; + } + + /** + * Builds a new SmartspaceText instance. + */ + @NonNull + public SmartspaceText build() { + return new SmartspaceText(mText, mTruncateAtType); + } + } +} |
