diff options
-rw-r--r-- | res/drawable-hdpi/ic_notification_anonymous_avatar_32dp.png | bin | 0 -> 3152 bytes | |||
-rw-r--r-- | res/drawable-hdpi/ic_notification_mail_16dp.png (renamed from res/drawable-hdpi/stat_notify_email.png) | bin | 771 -> 771 bytes | |||
-rw-r--r-- | res/drawable-hdpi/ic_notification_multiple_mail_24dp.png (renamed from res/drawable-hdpi/ic_notification_multiple_mail_holo_dark.png) | bin | 400 -> 400 bytes | |||
-rw-r--r-- | res/drawable-mdpi/ic_notification_anonymous_avatar_32dp.png | bin | 0 -> 3038 bytes | |||
-rw-r--r-- | res/drawable-mdpi/ic_notification_mail_16dp.png (renamed from res/drawable-mdpi/stat_notify_email.png) | bin | 736 -> 736 bytes | |||
-rw-r--r-- | res/drawable-mdpi/ic_notification_multiple_mail_24dp.png (renamed from res/drawable-mdpi/ic_notification_multiple_mail_holo_dark.png) | bin | 214 -> 214 bytes | |||
-rw-r--r-- | res/drawable-xhdpi/ic_notification_anonymous_avatar_32dp.png | bin | 0 -> 3418 bytes | |||
-rw-r--r-- | res/drawable-xhdpi/ic_notification_mail_16dp.png (renamed from res/drawable-xhdpi/stat_notify_email.png) | bin | 947 -> 947 bytes | |||
-rw-r--r-- | res/drawable-xhdpi/ic_notification_multiple_mail_24dp.png (renamed from res/drawable-xhdpi/ic_notification_multiple_mail_holo_dark.png) | bin | 385 -> 385 bytes | |||
-rw-r--r-- | res/drawable-xxhdpi/ic_notification_anonymous_avatar_32dp.png | bin | 0 -> 3698 bytes | |||
-rw-r--r-- | res/drawable-xxhdpi/ic_notification_mail_16dp.png (renamed from res/drawable-xxhdpi/stat_notify_email.png) | bin | 786 -> 786 bytes | |||
-rw-r--r-- | res/drawable-xxhdpi/ic_notification_multiple_mail_24dp.png (renamed from res/drawable-xxhdpi/ic_notification_multiple_mail_holo_dark.png) | bin | 1517 -> 1517 bytes | |||
-rw-r--r-- | res/layout/undo_notification.xml | 4 | ||||
-rw-r--r-- | res/values/colors.xml | 1 | ||||
-rw-r--r-- | src/com/android/mail/utils/NotificationActionUtils.java | 2 | ||||
-rw-r--r-- | src/com/android/mail/utils/NotificationUtils.java | 68 |
16 files changed, 64 insertions, 11 deletions
diff --git a/res/drawable-hdpi/ic_notification_anonymous_avatar_32dp.png b/res/drawable-hdpi/ic_notification_anonymous_avatar_32dp.png Binary files differnew file mode 100644 index 000000000..c600bb11e --- /dev/null +++ b/res/drawable-hdpi/ic_notification_anonymous_avatar_32dp.png diff --git a/res/drawable-hdpi/stat_notify_email.png b/res/drawable-hdpi/ic_notification_mail_16dp.png Binary files differindex d40e2fe1e..d40e2fe1e 100644 --- a/res/drawable-hdpi/stat_notify_email.png +++ b/res/drawable-hdpi/ic_notification_mail_16dp.png diff --git a/res/drawable-hdpi/ic_notification_multiple_mail_holo_dark.png b/res/drawable-hdpi/ic_notification_multiple_mail_24dp.png Binary files differindex a733c2add..a733c2add 100644 --- a/res/drawable-hdpi/ic_notification_multiple_mail_holo_dark.png +++ b/res/drawable-hdpi/ic_notification_multiple_mail_24dp.png diff --git a/res/drawable-mdpi/ic_notification_anonymous_avatar_32dp.png b/res/drawable-mdpi/ic_notification_anonymous_avatar_32dp.png Binary files differnew file mode 100644 index 000000000..34bd19499 --- /dev/null +++ b/res/drawable-mdpi/ic_notification_anonymous_avatar_32dp.png diff --git a/res/drawable-mdpi/stat_notify_email.png b/res/drawable-mdpi/ic_notification_mail_16dp.png Binary files differindex 86e06b9c3..86e06b9c3 100644 --- a/res/drawable-mdpi/stat_notify_email.png +++ b/res/drawable-mdpi/ic_notification_mail_16dp.png diff --git a/res/drawable-mdpi/ic_notification_multiple_mail_holo_dark.png b/res/drawable-mdpi/ic_notification_multiple_mail_24dp.png Binary files differindex 8071c272d..8071c272d 100644 --- a/res/drawable-mdpi/ic_notification_multiple_mail_holo_dark.png +++ b/res/drawable-mdpi/ic_notification_multiple_mail_24dp.png diff --git a/res/drawable-xhdpi/ic_notification_anonymous_avatar_32dp.png b/res/drawable-xhdpi/ic_notification_anonymous_avatar_32dp.png Binary files differnew file mode 100644 index 000000000..a78750e76 --- /dev/null +++ b/res/drawable-xhdpi/ic_notification_anonymous_avatar_32dp.png diff --git a/res/drawable-xhdpi/stat_notify_email.png b/res/drawable-xhdpi/ic_notification_mail_16dp.png Binary files differindex 0317760ee..0317760ee 100644 --- a/res/drawable-xhdpi/stat_notify_email.png +++ b/res/drawable-xhdpi/ic_notification_mail_16dp.png diff --git a/res/drawable-xhdpi/ic_notification_multiple_mail_holo_dark.png b/res/drawable-xhdpi/ic_notification_multiple_mail_24dp.png Binary files differindex 03bf26cec..03bf26cec 100644 --- a/res/drawable-xhdpi/ic_notification_multiple_mail_holo_dark.png +++ b/res/drawable-xhdpi/ic_notification_multiple_mail_24dp.png diff --git a/res/drawable-xxhdpi/ic_notification_anonymous_avatar_32dp.png b/res/drawable-xxhdpi/ic_notification_anonymous_avatar_32dp.png Binary files differnew file mode 100644 index 000000000..878256668 --- /dev/null +++ b/res/drawable-xxhdpi/ic_notification_anonymous_avatar_32dp.png diff --git a/res/drawable-xxhdpi/stat_notify_email.png b/res/drawable-xxhdpi/ic_notification_mail_16dp.png Binary files differindex ba98c67a9..ba98c67a9 100644 --- a/res/drawable-xxhdpi/stat_notify_email.png +++ b/res/drawable-xxhdpi/ic_notification_mail_16dp.png diff --git a/res/drawable-xxhdpi/ic_notification_multiple_mail_holo_dark.png b/res/drawable-xxhdpi/ic_notification_multiple_mail_24dp.png Binary files differindex 67dcf5c20..67dcf5c20 100644 --- a/res/drawable-xxhdpi/ic_notification_multiple_mail_holo_dark.png +++ b/res/drawable-xxhdpi/ic_notification_multiple_mail_24dp.png diff --git a/res/layout/undo_notification.xml b/res/layout/undo_notification.xml index 86312ba2d..9505b3a74 100644 --- a/res/layout/undo_notification.xml +++ b/res/layout/undo_notification.xml @@ -31,7 +31,7 @@ android:layout_height="@android:dimen/notification_large_icon_height" android:background="@color/notification_template_icon_low_bg" android:scaleType="center" - android:src="@drawable/stat_notify_email" /> + android:src="@drawable/ic_notification_mail_16dp" /> <LinearLayout android:layout_width="match_parent" @@ -80,4 +80,4 @@ android:textAllCaps="true" /> </LinearLayout> -</FrameLayout>
\ No newline at end of file +</FrameLayout> diff --git a/res/values/colors.xml b/res/values/colors.xml index 577814c6d..553f4002f 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -101,6 +101,7 @@ <color name="low_spam_warning_background_color">#FFF1A8</color> <color name="notification_template_icon_low_bg">#0cffffff</color> + <color name="notification_icon_gmail_red">#da4336</color> <!-- Search colors --> <color name="search_banner_bg">#f6f6f6</color> diff --git a/src/com/android/mail/utils/NotificationActionUtils.java b/src/com/android/mail/utils/NotificationActionUtils.java index 5c832fba8..de4b5fafc 100644 --- a/src/com/android/mail/utils/NotificationActionUtils.java +++ b/src/com/android/mail/utils/NotificationActionUtils.java @@ -633,7 +633,7 @@ public class NotificationActionUtils { final NotificationCompat.Builder builder = new NotificationCompat.Builder(context); - builder.setSmallIcon(R.drawable.stat_notify_email); + builder.setSmallIcon(R.drawable.ic_notification_mail_16dp); builder.setWhen(notificationAction.getWhen()); final RemoteViews undoView = diff --git a/src/com/android/mail/utils/NotificationUtils.java b/src/com/android/mail/utils/NotificationUtils.java index 74b13ecf6..4983949ab 100644 --- a/src/com/android/mail/utils/NotificationUtils.java +++ b/src/com/android/mail/utils/NotificationUtils.java @@ -26,6 +26,14 @@ import android.content.res.Resources; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.BitmapShader; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; +import android.graphics.RectF; +import android.graphics.Rect; +import android.graphics.Shader; import android.net.Uri; import android.os.Looper; import android.provider.ContactsContract; @@ -622,7 +630,11 @@ public class NotificationUtils { new NotificationCompat.WearableExtender(); Map<Integer, NotificationBuilders> msgNotifications = new ArrayMap<Integer, NotificationBuilders>(); - notification.setSmallIcon(R.drawable.stat_notify_email); + notification.setColor( + context.getResources().getColor(R.color.notification_icon_bg_red)); + // TODO(shahrk) - fix for multiple mail + // if(folder.notificationIconResId != 0 || unseenCount <= 2) + notification.setSmallIcon(R.drawable.ic_notification_mail_16dp); notification.setTicker(account.getDisplayName()); notification.setVisibility(NotificationCompat.VISIBILITY_PRIVATE); @@ -784,6 +796,7 @@ public class NotificationUtils { // create the *public* form of the *private* notification we have been assembling final Notification publicNotification = createPublicNotification(context, account, folder, when, unseenCount, unreadCount, clickIntent); + notification.setPublicVersion(publicNotification); nm.notify(notificationId, notification.build()); @@ -842,8 +855,8 @@ public class NotificationUtils { .setContentTitle(createTitle(context, unseenCount)) .setContentText(account.getDisplayName()) .setContentIntent(clickIntent) - .setSmallIcon(R.drawable.stat_notify_email) .setLargeIcon(largeIcon) + .setColor(context.getResources().getColor(R.color.notification_icon_bg_red)) .setNumber(unreadCount) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setWhen(when); @@ -855,6 +868,12 @@ public class NotificationUtils { builder.setGroupSummary(true); } + // TODO(shahrk) - fix for multiple mail + // If the folder is a special label or only has 1 unseen, tack on the badge + // if (folder.notificationIconResId != 0 || !multipleUnseen) { + builder.setSmallIcon(R.drawable.ic_notification_mail_16dp); + + return builder.build(); } @@ -926,9 +945,9 @@ public class NotificationUtils { if (folder.notificationIconResId != 0) { resId = folder.notificationIconResId; } else if (multipleNew) { - resId = R.drawable.ic_notification_multiple_mail_holo_dark; + resId = R.drawable.ic_notification_multiple_mail_24dp; } else { - resId = R.drawable.ic_contact_picture; + resId = R.drawable.ic_notification_anonymous_avatar_32dp; } final Bitmap icon = getIcon(context, resId); @@ -973,6 +992,7 @@ public class NotificationUtils { final Resources res = context.getResources(); final String notificationAccountDisplayName = account.getDisplayName(); final String notificationAccountEmail = account.getEmailAddress(); + final boolean multipleUnseen = unseenCount > 1; LogUtils.i(LOG_TAG, "Showing notification with unreadCount of %d and unseenCount of %d", unreadCount, unseenCount); @@ -985,7 +1005,7 @@ public class NotificationUtils { // Notification label name for user label notifications. final String notificationLabelName = isInbox ? null : folder.name; - if (unseenCount > 1) { + if (multipleUnseen) { // Build the string that describes the number of new messages final String newMessagesString = createTitle(context, unseenCount); @@ -1074,7 +1094,16 @@ public class NotificationUtils { // Adding conversation notification for Wear. NotificationCompat.Builder conversationNotif = new NotificationCompat.Builder(context); - conversationNotif.setSmallIcon(R.drawable.stat_notify_email); + + // TODO(shahrk) - fix for multiple mail + // Check that the group's folder is assigned an icon res (one of the + // 4 sections). If it is, we can add the gmail badge. If not, it is + // accompanied by the multiple_mail_24dp icon and we don't want a badge + // if (folder.notificationIconResId != 0) { + conversationNotif.setSmallIcon(R.drawable.ic_notification_mail_16dp); + + conversationNotif.setColor( + context.getResources().getColor(R.color.notification_icon_bg_red)); conversationNotif.setContentText(digestLine); Intent conversationNotificationIntent = createViewConversationIntent( context, account, folder, conversationCursor); @@ -1690,6 +1719,7 @@ public class NotificationUtils { contactIconInfo.icon = new LetterTileProvider(context).getLetterTile(dimensions, displayName, senderAddress); } + contactIconInfo.icon = cropSquareIconToCircle(contactIconInfo.icon); } if (contactIconInfo.icon == null) { @@ -1740,8 +1770,8 @@ public class NotificationUtils { final int idealIconWidth, final int idealIconHeight, final int idealWearableBgWidth, final int idealWearableBgHeight) { final ContactIconInfo contactIconInfo = new ContactIconInfo(); - final List<Long> contactIds = findContacts( context, Arrays.asList( - new String[] { senderAddress })); + final List<Long> contactIds = findContacts(context, Arrays.asList( + new String[]{senderAddress})); if (contactIds != null) { for (final long id : contactIds) { @@ -1776,6 +1806,28 @@ public class NotificationUtils { return contactIconInfo; } + /** + * Crop a square bitmap into a circular one. Used for both contact photos and letter tiles. + * @param icon Square bitmap to crop + * @return Circular bitmap + */ + private static Bitmap cropSquareIconToCircle(Bitmap icon) { + final int iconWidth = icon.getWidth(); + final Bitmap newIcon = Bitmap.createBitmap(iconWidth, iconWidth, Bitmap.Config.ARGB_8888); + final Canvas canvas = new Canvas(newIcon); + final Paint paint = new Paint(); + final Rect rect = new Rect(0, 0, icon.getWidth(), + icon.getHeight()); + + paint.setAntiAlias(true); + canvas.drawARGB(0, 0, 0, 0); + canvas.drawCircle(iconWidth/2, iconWidth/2, iconWidth/2, paint); + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); + canvas.drawBitmap(icon, rect, rect, paint); + + return newIcon; + } + private static String getMessageBodyWithoutElidedText(final Message message) { return getMessageBodyWithoutElidedText(message.getBodyAsHtml()); } |