WidgetConversationListItemViewBuilder.java revision a4968036e4384431de74b96d43a40faaeecf053e
18a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira/* 28a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * Copyright (C) 2012 The Android Open Source Project 38a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * 48a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * Licensed under the Apache License, Version 2.0 (the "License"); 58a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * you may not use this file except in compliance with the License. 68a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * You may obtain a copy of the License at 78a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * 88a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * http://www.apache.org/licenses/LICENSE-2.0 98a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * 108a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * Unless required by applicable law or agreed to in writing, software 118a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * distributed under the License is distributed on an "AS IS" BASIS, 128a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * See the License for the specific language governing permissions and 148a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * limitations under the License. 158a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira */ 168a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 178a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereirapackage com.android.mail.widget; 188a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 198a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport com.android.mail.R; 208a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport com.android.mail.providers.Account; 216fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereiraimport com.android.mail.providers.Folder; 226fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereiraimport com.android.mail.ui.FolderDisplayer; 23a4968036e4384431de74b96d43a40faaeecf053eMindy Pereiraimport com.android.mail.widget.WidgetConversationViewBuilder.WidgetFolderDisplayer; 246fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 256fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereiraimport java.util.Map; 268a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 278a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.content.Context; 288a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.content.res.Resources; 298a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.graphics.Bitmap; 308a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.graphics.BitmapFactory; 318a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.graphics.Typeface; 328a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.text.Spannable; 338a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.text.SpannableStringBuilder; 348a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.text.style.AbsoluteSizeSpan; 358a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.text.style.ForegroundColorSpan; 368a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.text.style.StyleSpan; 378a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.view.View; 388a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.widget.RemoteViews; 398a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 408a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereirapublic class WidgetConversationViewBuilder { 418a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Static font sizes 428a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int SENDERS_FONT_SIZE; 438a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int DATE_FONT_SIZE; 448a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int SUBJECT_FONT_SIZE; 458a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 468a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Static colors 478a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int SUBJECT_TEXT_COLOR_READ; 488a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int SUBJECT_TEXT_COLOR_UNREAD; 498a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int SENDERS_TEXT_COLOR_READ; 508a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int SENDERS_TEXT_COLOR_UNREAD; 518a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int DATE_TEXT_COLOR_READ; 528a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int DATE_TEXT_COLOR_UNREAD; 538a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int DRAFT_TEXT_COLOR; 548a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 558a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Static bitmap 568a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static Bitmap ATTACHMENT; 578a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 588a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private final Context mContext; 59a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira private WidgetFolderDisplayer mFolderDisplayer; 608a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 616fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira /** 626fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira * Label Displayer for Widget 636fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira */ 646fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira protected static class WidgetFolderDisplayer extends FolderDisplayer { 656fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira public WidgetFolderDisplayer(Context context) { 666fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira super(context); 676fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 686fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 696fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira // Maximum number of folders we want to display 706fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira private static final int MAX_DISPLAYED_FOLDERS_COUNT = 3; 716fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 726fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira /* 736fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira * Load Conversation Labels 746fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira */ 756fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira @Override 766fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira public void loadConversationFolders(String rawFolders, Folder ignoreFolder) { 776fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira super.loadConversationFolders(rawFolders, ignoreFolder); 786fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 796fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 806fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira private int getFolderViewId(int position) { 816fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira switch (position) { 826fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira case 0: 836fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira return R.id.widget_folder_0; 846fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira case 1: 856fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira return R.id.widget_folder_1; 866fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira case 2: 876fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira return R.id.widget_folder_2; 886fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 896fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira return 0; 906fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 916fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 926fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira /** 936fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira * Display folders 946fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira */ 956fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira public void displayFolders(RemoteViews remoteViews) { 966fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira int displayedFolder = 0; 976fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira for (Folder folderValues : mFoldersSortedSet) { 986fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira int viewId = getFolderViewId(displayedFolder); 996fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira if (viewId == 0) { 1006fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira continue; 1016fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1026fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira remoteViews.setViewVisibility(viewId, View.VISIBLE); 1036fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira int color[] = new int[] {folderValues.getBackgroundColor(mDefaultBgColor)}; 1046fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira Bitmap bitmap = Bitmap.createBitmap(color, 1, 1, Bitmap.Config.RGB_565); 1056fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira remoteViews.setImageViewBitmap(viewId, bitmap); 1066fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 1076fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira if (++displayedFolder == MAX_DISPLAYED_FOLDERS_COUNT) { 1086fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira break; 1096fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1106fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1116fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 1126fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira for (int i = displayedFolder; i < MAX_DISPLAYED_FOLDERS_COUNT; i++) { 1136fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira remoteViews.setViewVisibility(getFolderViewId(i), View.GONE); 1146fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1156fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1166fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1176fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 1188a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira /* 1198a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * Get font sizes and bitmaps from Resources 1208a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira */ 1218a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira public WidgetConversationViewBuilder(Context context, Account account) { 1228a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira mContext = context; 1238a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira Resources res = context.getResources(); 1248a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1258a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Initialize font sizes 1268a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira SENDERS_FONT_SIZE = res.getDimensionPixelSize(R.dimen.widget_senders_font_size); 1278a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira DATE_FONT_SIZE = res.getDimensionPixelSize(R.dimen.widget_date_font_size); 1288a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira SUBJECT_FONT_SIZE = res.getDimensionPixelSize(R.dimen.widget_subject_font_size); 1298a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1308a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Initialize colors 1318a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira SUBJECT_TEXT_COLOR_READ = res.getColor(R.color.subject_text_color_read); 1328a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira SUBJECT_TEXT_COLOR_UNREAD = res.getColor(R.color.subject_text_color_unread); 1338a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira SENDERS_TEXT_COLOR_READ = res.getColor(R.color.senders_text_color_read); 1348a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira SENDERS_TEXT_COLOR_UNREAD = res.getColor(R.color.senders_text_color_unread); 1358a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira DATE_TEXT_COLOR_READ = res.getColor(R.color.date_text_color_read); 1368a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira DATE_TEXT_COLOR_UNREAD = res.getColor(R.color.date_text_color_unread); 1378a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira DRAFT_TEXT_COLOR = res.getColor(R.color.drafts); 1388a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1398a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Initialize Bitmap 1408a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira ATTACHMENT = BitmapFactory.decodeResource(res, R.drawable.ic_attachment_holo_light); 1418a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 1428a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1438a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira /* 1448a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * Add size, color and style to a given text 1458a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira */ 1468a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private CharSequence addStyle(CharSequence text, int size, int color) { 1478a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira SpannableStringBuilder builder = new SpannableStringBuilder(text); 1488a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira builder.setSpan( 1498a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira new AbsoluteSizeSpan(size), 0, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 1508a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (color != 0) { 1518a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira builder.setSpan(new ForegroundColorSpan(color), 0, text.length(), 1528a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 1538a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 1548a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira return builder; 1558a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 1568a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1578a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira /* 1588a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * Return the full View 1598a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira */ 1606fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira public RemoteViews getStyledView(CharSequence senders, CharSequence status, CharSequence date, 1616fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira CharSequence subject, CharSequence snippet, String folders, boolean hasAttachments, 1626fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira boolean read, Folder currentFolder) { 1638a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 164161e735e3c892891da455bfdf17e0281f448fd49Mindy Pereira final boolean isUnread = !read; 1658a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1668a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Add style to senders 1678a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira CharSequence styledSenders = addStyle(senders, SENDERS_FONT_SIZE, 1688a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira isUnread ? SENDERS_TEXT_COLOR_UNREAD : SENDERS_TEXT_COLOR_READ); 1698a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1708a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Add the status indicator 1718a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (status.length() > 0) { 1728a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira final SpannableStringBuilder builder = new SpannableStringBuilder(styledSenders); 1738a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1748a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (senders.length() > 0) { 1758a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // TODO(pwestbro) sender formatting should use resources. Bug 5354473 1768a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira builder.append(addStyle(", ", SENDERS_FONT_SIZE, 1778a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira isUnread ? SENDERS_TEXT_COLOR_UNREAD : SENDERS_TEXT_COLOR_READ)); 1788a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 1798a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1808a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira final CharSequence styledStatus = addStyle(status, SENDERS_FONT_SIZE, DRAFT_TEXT_COLOR); 1818a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira styledSenders = builder.append(styledStatus); 1828a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 1838a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1848a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Add style to date 1858a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira CharSequence styledDate = addStyle(date, DATE_FONT_SIZE, isUnread ? DATE_TEXT_COLOR_UNREAD 1868a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira : DATE_TEXT_COLOR_READ); 1878a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1888a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Add style to subject 1898a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira int subjectColor = isUnread ? SUBJECT_TEXT_COLOR_UNREAD : SUBJECT_TEXT_COLOR_READ; 1908a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira SpannableStringBuilder subjectAndSnippet = new SpannableStringBuilder(mContext.getString( 1918a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira R.string.subject_and_snippet, subject, snippet)); 1928a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (isUnread) { 1938a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira subjectAndSnippet.setSpan(new StyleSpan(Typeface.BOLD), 0, subject.length(), 1948a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 1958a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 1968a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira subjectAndSnippet.setSpan(new ForegroundColorSpan(subjectColor), 0, subjectAndSnippet 1978a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira .length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 1988a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira CharSequence styledSubject = addStyle(subjectAndSnippet, SUBJECT_FONT_SIZE, 0); 1998a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 2008a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Paper clip for attachment 2018a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira Bitmap paperclipBitmap = null; 2028a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (hasAttachments) { 2038a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira paperclipBitmap = ATTACHMENT; 2048a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 2058a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 2068a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Inflate and fill out the remote view 2078a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira RemoteViews remoteViews = new RemoteViews( 2088a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira mContext.getPackageName(), R.layout.widget_conversation); 2098a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setTextViewText(R.id.widget_senders, styledSenders); 2108a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setTextViewText(R.id.widget_date, styledDate); 2118a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setTextViewText(R.id.widget_subject, styledSubject); 2128a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (paperclipBitmap != null) { 2138a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_attachment, View.VISIBLE); 2148a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setImageViewBitmap(R.id.widget_attachment, paperclipBitmap); 2158a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } else { 2168a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_attachment, View.GONE); 2178a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 2188a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (isUnread) { 2198a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_unread_background, View.VISIBLE); 2208a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_read_background, View.GONE); 2218a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } else { 2228a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_unread_background, View.GONE); 2238a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_read_background, View.VISIBLE); 2248a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 225a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira if (mContext.getResources().getBoolean(R.bool.display_folder_colors_in_widget)) { 226a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira mFolderDisplayer = new WidgetFolderDisplayer(mContext); 227a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira mFolderDisplayer.loadConversationFolders(folders, currentFolder); 228a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira mFolderDisplayer.displayFolders(remoteViews); 229a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira } 2308a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 2318a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira return remoteViews; 2328a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 2338a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira} 234