diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java index 075d3e7df4235..a8bbdf6b68c96 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java @@ -77,6 +77,7 @@ class Bubble implements BubbleViewProvider { private BubbleViewInfoTask mInflationTask; private boolean mInflateSynchronously; private boolean mPendingIntentCanceled; + private boolean mIsImportantConversation; /** * Presentational info about the flyout. @@ -363,6 +364,8 @@ class Bubble implements BubbleViewProvider { mIntent = entry.getBubbleMetadata().getIntent(); mDeleteIntent = entry.getBubbleMetadata().getDeleteIntent(); } + mIsImportantConversation = + entry.getChannel() == null ? false : entry.getChannel().isImportantConversation(); } @Nullable @@ -432,6 +435,13 @@ class Bubble implements BubbleViewProvider { return !shouldSuppressNotification() || !mIsClearable; } + /** + * Whether this notification conversation is important. + */ + boolean isImportantConversation() { + return mIsImportantConversation; + } + /** * Sets whether this notification should be suppressed in the shade. */ diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleIconFactory.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleIconFactory.java index a799f2d739e5d..40a93e1cdc47f 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleIconFactory.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleIconFactory.java @@ -23,6 +23,8 @@ import android.content.pm.LauncherApps; import android.content.pm.ShortcutInfo; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; @@ -76,15 +78,36 @@ public class BubbleIconFactory extends BaseIconFactory { * Returns a {@link BitmapInfo} for the app-badge that is shown on top of each bubble. This * will include the workprofile indicator on the badge if appropriate. */ - BitmapInfo getBadgeBitmap(Drawable userBadgedAppIcon) { + BitmapInfo getBadgeBitmap(Drawable userBadgedAppIcon, boolean isImportantConversation) { Bitmap userBadgedBitmap = createIconBitmap( userBadgedAppIcon, 1f, getBadgeSize()); - - Canvas c = new Canvas(); ShadowGenerator shadowGenerator = new ShadowGenerator(getBadgeSize()); - c.setBitmap(userBadgedBitmap); - shadowGenerator.recreateIcon(Bitmap.createBitmap(userBadgedBitmap), c); - return createIconBitmap(userBadgedBitmap); + if (!isImportantConversation) { + Canvas c = new Canvas(); + c.setBitmap(userBadgedBitmap); + shadowGenerator.recreateIcon(Bitmap.createBitmap(userBadgedBitmap), c); + return createIconBitmap(userBadgedBitmap); + } else { + float ringStrokeWidth = mContext.getResources().getDimensionPixelSize( + com.android.internal.R.dimen.importance_ring_stroke_width); + int importantConversationColor = mContext.getResources().getColor( + com.android.settingslib.R.color.important_conversation, null); + Bitmap badgeAndRing = Bitmap.createBitmap(userBadgedBitmap.getWidth(), + userBadgedBitmap.getHeight(), userBadgedBitmap.getConfig()); + Canvas c = new Canvas(badgeAndRing); + Rect dest = new Rect((int) ringStrokeWidth, (int) ringStrokeWidth, + c.getHeight() - (int) ringStrokeWidth, c.getWidth() - (int) ringStrokeWidth); + c.drawBitmap(userBadgedBitmap, null, dest, null); + Paint ringPaint = new Paint(); + ringPaint.setStyle(Paint.Style.STROKE); + ringPaint.setColor(importantConversationColor); + ringPaint.setAntiAlias(true); + ringPaint.setStrokeWidth(ringStrokeWidth); + c.drawCircle(c.getWidth() / 2, c.getHeight() / 2, c.getWidth() / 2 - ringStrokeWidth, + ringPaint); + shadowGenerator.recreateIcon(Bitmap.createBitmap(badgeAndRing), c); + return createIconBitmap(badgeAndRing); + } } /** diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleViewInfoTask.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleViewInfoTask.java index 3e4ff5262bbdf..1929fc4e9dbfe 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleViewInfoTask.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleViewInfoTask.java @@ -176,7 +176,8 @@ public class BubbleViewInfoTask extends AsyncTask