WidgetConversationListItemViewBuilder.java revision 94033deeb31df739a27fce15887a3f0a2e808b12
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 android.content.Context; 20a839fd0af18f53574128e32dc0900339280fba05Andrew Sappersteinimport android.content.res.Resources; 218a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.graphics.Bitmap; 22a839fd0af18f53574128e32dc0900339280fba05Andrew Sappersteinimport android.graphics.BitmapFactory; 238a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.graphics.Typeface; 248a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.text.Spannable; 258a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.text.SpannableStringBuilder; 26a839fd0af18f53574128e32dc0900339280fba05Andrew Sappersteinimport android.text.style.AbsoluteSizeSpan; 27a839fd0af18f53574128e32dc0900339280fba05Andrew Sappersteinimport android.text.style.ForegroundColorSpan; 288a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.text.style.StyleSpan; 298a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.view.View; 308a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.widget.RemoteViews; 318a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 32be0cb1e421831672f49c30ecb46e6eee765cb661Andrew Sappersteinimport com.android.mail.R; 33be0cb1e421831672f49c30ecb46e6eee765cb661Andrew Sappersteinimport com.android.mail.providers.Conversation; 34be0cb1e421831672f49c30ecb46e6eee765cb661Andrew Sappersteinimport com.android.mail.providers.Folder; 35be0cb1e421831672f49c30ecb46e6eee765cb661Andrew Sappersteinimport com.android.mail.ui.FolderDisplayer; 36be0cb1e421831672f49c30ecb46e6eee765cb661Andrew Sappersteinimport com.android.mail.utils.FolderUri; 37be0cb1e421831672f49c30ecb46e6eee765cb661Andrew Sapperstein 38747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Weipublic class WidgetConversationListItemViewBuilder { 39a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein // Static colors 40928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux private static int SUBJECT_TEXT_COLOR; 41928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux private static int SNIPPET_TEXT_COLOR; 421c6d71b47e7af11b3cf7bd6da4a89594941be968James Lemieux private static int DATE_TEXT_COLOR_READ; 431c6d71b47e7af11b3cf7bd6da4a89594941be968James Lemieux private static int DATE_TEXT_COLOR_UNREAD; 44a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein 45a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein // Static bitmap 46a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein private static Bitmap ATTACHMENT; 478a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 48a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira private WidgetFolderDisplayer mFolderDisplayer; 498a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 506fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira /** 516fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira * Label Displayer for Widget 526fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira */ 536fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira protected static class WidgetFolderDisplayer extends FolderDisplayer { 546fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira public WidgetFolderDisplayer(Context context) { 556fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira super(context); 566fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 576fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 586fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira // Maximum number of folders we want to display 596fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira private static final int MAX_DISPLAYED_FOLDERS_COUNT = 3; 606fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 616fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira /* 626fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira * Load Conversation Labels 636fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira */ 646fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira @Override 65259df5b9e11908c8ef7c91483924891dd96b3c27Scott Kennedy public void loadConversationFolders(Conversation conv, final FolderUri ignoreFolderUri, 6667aa9e5162a15fb8b46b4113ac627cd20668f095Scott Kennedy final int ignoreFolderType) { 6767aa9e5162a15fb8b46b4113ac627cd20668f095Scott Kennedy super.loadConversationFolders(conv, ignoreFolderUri, ignoreFolderType); 686fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 696fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 70b39aaf53a555c1046ef31b3fecf15d086acca013Scott Kennedy private static int getFolderViewId(int position) { 716fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira switch (position) { 726fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira case 0: 736fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira return R.id.widget_folder_0; 746fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira case 1: 756fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira return R.id.widget_folder_1; 766fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira case 2: 776fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira return R.id.widget_folder_2; 786fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 796fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira return 0; 806fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 816fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 826fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira /** 836fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira * Display folders 846fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira */ 856fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira public void displayFolders(RemoteViews remoteViews) { 866fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira int displayedFolder = 0; 876fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira for (Folder folderValues : mFoldersSortedSet) { 886fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira int viewId = getFolderViewId(displayedFolder); 896fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira if (viewId == 0) { 906fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira continue; 916fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 926fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira remoteViews.setViewVisibility(viewId, View.VISIBLE); 936fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira int color[] = new int[] {folderValues.getBackgroundColor(mDefaultBgColor)}; 946fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira Bitmap bitmap = Bitmap.createBitmap(color, 1, 1, Bitmap.Config.RGB_565); 956fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira remoteViews.setImageViewBitmap(viewId, bitmap); 966fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 976fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira if (++displayedFolder == MAX_DISPLAYED_FOLDERS_COUNT) { 986fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira break; 996fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1006fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1016fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 1026fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira for (int i = displayedFolder; i < MAX_DISPLAYED_FOLDERS_COUNT; i++) { 1036fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira remoteViews.setViewVisibility(getFolderViewId(i), View.GONE); 1046fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1056fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1066fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1076fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 1088a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira /* 1098a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * Get font sizes and bitmaps from Resources 1108a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira */ 111747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei public WidgetConversationListItemViewBuilder(Context context) { 112928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux final Resources res = context.getResources(); 113a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein 114a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein // Initialize colors 115928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux SUBJECT_TEXT_COLOR = res.getColor(R.color.subject_text_color); 116928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux SNIPPET_TEXT_COLOR = res.getColor(R.color.snippet_text_color); 1171c6d71b47e7af11b3cf7bd6da4a89594941be968James Lemieux DATE_TEXT_COLOR_READ = res.getColor(R.color.date_text_color_read); 1181c6d71b47e7af11b3cf7bd6da4a89594941be968James Lemieux DATE_TEXT_COLOR_UNREAD = res.getColor(R.color.date_text_color_unread); 119a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein 120a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein // Initialize Bitmap 12126407717f0b20021f369be52dab0f2ac3a93e673Andrew Sapperstein ATTACHMENT = BitmapFactory.decodeResource(res, R.drawable.ic_attach_file_20dp); 122a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein } 123a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein 124a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein /* 125a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein * Add size, color and style to a given text 126a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein */ 127a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein private static CharSequence addStyle(CharSequence text, int size, int color) { 128a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein SpannableStringBuilder builder = new SpannableStringBuilder(text); 129a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein builder.setSpan( 130a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein new AbsoluteSizeSpan(size), 0, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 131a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein if (color != 0) { 132a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein builder.setSpan(new ForegroundColorSpan(color), 0, text.length(), 133a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 134a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein } 135a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein return builder; 1368a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 1378a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1388a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira /* 1398a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * Return the full View 1408a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira */ 141928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux public RemoteViews getStyledView(final Context context, final CharSequence date, 142928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux final Conversation conversation, final FolderUri folderUri, final int ignoreFolderType, 14394033deeb31df739a27fce15887a3f0a2e808b12James Lemieux final SpannableStringBuilder senders, String subject) { 1448a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 14585c4a77abd849f5f3f0236d51554bb1bb99fe8f6Mindy Pereira final boolean isUnread = !conversation.read; 146747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei final String snippet = conversation.getSnippet(); 147747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei final boolean hasAttachments = conversation.hasAttachments; 148928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux final Resources res = context.getResources(); 149928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux final int dateFontSize = res.getDimensionPixelSize(R.dimen.widget_date_font_size); 150928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux final int subjectFontSize = res.getDimensionPixelSize(R.dimen.widget_subject_font_size); 1518a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 152a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein // Add style to date 1531c6d71b47e7af11b3cf7bd6da4a89594941be968James Lemieux final int dateColor = isUnread ? DATE_TEXT_COLOR_UNREAD : DATE_TEXT_COLOR_READ; 154928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux final CharSequence styledDate = addStyle(date, dateFontSize, dateColor); 155a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein 15694033deeb31df739a27fce15887a3f0a2e808b12James Lemieux subject = Conversation.getSubjectForDisplay(context, null /* badgeText */, subject); 15794033deeb31df739a27fce15887a3f0a2e808b12James Lemieux 158928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux final SpannableStringBuilder subjectBuilder = new SpannableStringBuilder( 15994033deeb31df739a27fce15887a3f0a2e808b12James Lemieux Conversation.getSubjectForDisplay(context, null /* badgeText */, subject)); 1608a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (isUnread) { 16194033deeb31df739a27fce15887a3f0a2e808b12James Lemieux subjectBuilder.setSpan(new StyleSpan(Typeface.BOLD), 0, subject.length(), 1628a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 1638a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 164928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux subjectBuilder.setSpan(new ForegroundColorSpan(SUBJECT_TEXT_COLOR), 0, 165928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux subjectBuilder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 166928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux final CharSequence styledSubject = addStyle(subjectBuilder, subjectFontSize, 0); 167928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux 168928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux final SpannableStringBuilder snippetBuilder = new SpannableStringBuilder(snippet); 169928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux snippetBuilder.setSpan(new ForegroundColorSpan(SNIPPET_TEXT_COLOR), 0, 170928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux snippetBuilder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 171928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux final CharSequence styledSnippet = addStyle(snippetBuilder, subjectFontSize, 0); 172a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein 173a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein // Paper clip for attachment 174a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein Bitmap paperclipBitmap = null; 175a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein if (hasAttachments) { 176a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein paperclipBitmap = ATTACHMENT; 177a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein } 1788a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1798a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Inflate and fill out the remote view 180747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei final RemoteViews remoteViews = new RemoteViews( 181928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux context.getPackageName(), R.layout.widget_conversation_list_item); 182178ac28d19065ceca8b293e13cf291d685080aa6Mindy Pereira remoteViews.setTextViewText(R.id.widget_senders, senders); 183a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein remoteViews.setTextViewText(R.id.widget_date, styledDate); 184a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein remoteViews.setTextViewText(R.id.widget_subject, styledSubject); 185928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux remoteViews.setTextViewText(R.id.widget_snippet, styledSnippet); 186a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein if (paperclipBitmap != null) { 187a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein remoteViews.setViewVisibility(R.id.widget_attachment, View.VISIBLE); 188a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein remoteViews.setImageViewBitmap(R.id.widget_attachment, paperclipBitmap); 189a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein } else { 190a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein remoteViews.setViewVisibility(R.id.widget_attachment, View.GONE); 191a839fd0af18f53574128e32dc0900339280fba05Andrew Sapperstein } 1928a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (isUnread) { 1938a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_unread_background, View.VISIBLE); 1948a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_read_background, View.GONE); 1958a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } else { 1968a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_unread_background, View.GONE); 1978a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_read_background, View.VISIBLE); 1988a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 199928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux if (context.getResources().getBoolean(R.bool.display_folder_colors_in_widget)) { 200928308d6b10d353493492ad05e0227f960ddaa7eJames Lemieux mFolderDisplayer = new WidgetFolderDisplayer(context); 20167aa9e5162a15fb8b46b4113ac627cd20668f095Scott Kennedy mFolderDisplayer.loadConversationFolders(conversation, folderUri, ignoreFolderType); 202a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira mFolderDisplayer.displayFolders(remoteViews); 203a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira } 2048a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 2058a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira return remoteViews; 2068a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 2078a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira} 208