WidgetConversationListItemViewBuilder.java revision be0cb1e421831672f49c30ecb46e6eee765cb661
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; 208a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.content.res.Resources; 218a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.graphics.Bitmap; 228a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.graphics.BitmapFactory; 238a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.graphics.Typeface; 248a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.text.Spannable; 258a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.text.SpannableStringBuilder; 268a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport android.text.style.AbsoluteSizeSpan; 278a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereiraimport 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 { 398a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Static font sizes 408a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int DATE_FONT_SIZE; 418a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int SUBJECT_FONT_SIZE; 428a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 438a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Static colors 448a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int SUBJECT_TEXT_COLOR_READ; 458a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static int SUBJECT_TEXT_COLOR_UNREAD; 46418336e902eb91bd69371dbb3aebc0396a658d0fMindy Pereira private static int DATE_TEXT_COLOR; 4724538e893ef2db41a4c1b341f676b64422920304Mindy Pereira 488a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Static bitmap 498a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private static Bitmap ATTACHMENT; 508a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 518a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira private final Context mContext; 52a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira private WidgetFolderDisplayer mFolderDisplayer; 538a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 546fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira /** 556fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira * Label Displayer for Widget 566fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira */ 576fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira protected static class WidgetFolderDisplayer extends FolderDisplayer { 586fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira public WidgetFolderDisplayer(Context context) { 596fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira super(context); 606fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 616fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 626fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira // Maximum number of folders we want to display 636fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira private static final int MAX_DISPLAYED_FOLDERS_COUNT = 3; 646fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 656fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira /* 666fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira * Load Conversation Labels 676fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira */ 686fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira @Override 69259df5b9e11908c8ef7c91483924891dd96b3c27Scott Kennedy public void loadConversationFolders(Conversation conv, final FolderUri ignoreFolderUri, 7067aa9e5162a15fb8b46b4113ac627cd20668f095Scott Kennedy final int ignoreFolderType) { 7167aa9e5162a15fb8b46b4113ac627cd20668f095Scott Kennedy super.loadConversationFolders(conv, ignoreFolderUri, ignoreFolderType); 726fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 736fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 74b39aaf53a555c1046ef31b3fecf15d086acca013Scott Kennedy private static int getFolderViewId(int position) { 756fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira switch (position) { 766fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira case 0: 776fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira return R.id.widget_folder_0; 786fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira case 1: 796fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira return R.id.widget_folder_1; 806fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira case 2: 816fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira return R.id.widget_folder_2; 826fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 836fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira return 0; 846fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 856fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 866fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira /** 876fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira * Display folders 886fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira */ 896fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira public void displayFolders(RemoteViews remoteViews) { 906fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira int displayedFolder = 0; 916fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira for (Folder folderValues : mFoldersSortedSet) { 926fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira int viewId = getFolderViewId(displayedFolder); 936fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira if (viewId == 0) { 946fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira continue; 956fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 966fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira remoteViews.setViewVisibility(viewId, View.VISIBLE); 976fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira int color[] = new int[] {folderValues.getBackgroundColor(mDefaultBgColor)}; 986fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira Bitmap bitmap = Bitmap.createBitmap(color, 1, 1, Bitmap.Config.RGB_565); 996fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira remoteViews.setImageViewBitmap(viewId, bitmap); 1006fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 1016fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira if (++displayedFolder == MAX_DISPLAYED_FOLDERS_COUNT) { 1026fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira break; 1036fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1046fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1056fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 1066fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira for (int i = displayedFolder; i < MAX_DISPLAYED_FOLDERS_COUNT; i++) { 1076fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira remoteViews.setViewVisibility(getFolderViewId(i), View.GONE); 1086fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1096fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1106fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira } 1116fe3cb987c44fd67e3094fff99769846d8adb8a8Mindy Pereira 1128a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira /* 1138a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * Get font sizes and bitmaps from Resources 1148a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira */ 115747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei public WidgetConversationListItemViewBuilder(Context context) { 1168a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira mContext = context; 1178a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira Resources res = context.getResources(); 1188a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1198a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Initialize font sizes 1208a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira DATE_FONT_SIZE = res.getDimensionPixelSize(R.dimen.widget_date_font_size); 1218a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira SUBJECT_FONT_SIZE = res.getDimensionPixelSize(R.dimen.widget_subject_font_size); 1228a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1238a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Initialize colors 1248a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira SUBJECT_TEXT_COLOR_READ = res.getColor(R.color.subject_text_color_read); 1258a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira SUBJECT_TEXT_COLOR_UNREAD = res.getColor(R.color.subject_text_color_unread); 126418336e902eb91bd69371dbb3aebc0396a658d0fMindy Pereira DATE_TEXT_COLOR = res.getColor(R.color.date_text_color); 12724538e893ef2db41a4c1b341f676b64422920304Mindy Pereira 1288a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Initialize Bitmap 1298a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira ATTACHMENT = BitmapFactory.decodeResource(res, R.drawable.ic_attachment_holo_light); 1308a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 1318a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1328a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira /* 1338a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * Add size, color and style to a given text 1348a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira */ 135b39aaf53a555c1046ef31b3fecf15d086acca013Scott Kennedy private static CharSequence addStyle(CharSequence text, int size, int color) { 1368a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira SpannableStringBuilder builder = new SpannableStringBuilder(text); 1378a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira builder.setSpan( 1388a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira new AbsoluteSizeSpan(size), 0, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 1398a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (color != 0) { 1408a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira builder.setSpan(new ForegroundColorSpan(color), 0, text.length(), 1418a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 1428a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 1438a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira return builder; 1448a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 1458a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1468a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira /* 1478a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira * Return the full View 1488a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira */ 149747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei public RemoteViews getStyledView(final CharSequence date, final Conversation conversation, 150259df5b9e11908c8ef7c91483924891dd96b3c27Scott Kennedy final FolderUri folderUri, final int ignoreFolderType, 151747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei final SpannableStringBuilder senders, final String filteredSubject) { 1528a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 15385c4a77abd849f5f3f0236d51554bb1bb99fe8f6Mindy Pereira final boolean isUnread = !conversation.read; 154747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei final String snippet = conversation.getSnippet(); 155747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei final boolean hasAttachments = conversation.hasAttachments; 1568a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1578a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Add style to date 158747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei final CharSequence styledDate = addStyle(date, DATE_FONT_SIZE, DATE_TEXT_COLOR); 1598a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1608a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Add style to subject 161747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei final int subjectColor = isUnread ? SUBJECT_TEXT_COLOR_UNREAD : SUBJECT_TEXT_COLOR_READ; 162747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei final SpannableStringBuilder subjectAndSnippet = new SpannableStringBuilder( 163be0cb1e421831672f49c30ecb46e6eee765cb661Andrew Sapperstein Conversation.getSubjectAndSnippetForDisplay( 164be0cb1e421831672f49c30ecb46e6eee765cb661Andrew Sapperstein mContext, null /* badgeText */, filteredSubject, snippet)); 1658a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (isUnread) { 166bf9508d3877d05742b2f5d23e1780366d3e1aa2eMindy Pereira subjectAndSnippet.setSpan(new StyleSpan(Typeface.BOLD), 0, filteredSubject.length(), 1678a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 1688a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 1698a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira subjectAndSnippet.setSpan(new ForegroundColorSpan(subjectColor), 0, subjectAndSnippet 1708a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira .length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 171747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei final CharSequence styledSubject = addStyle(subjectAndSnippet, SUBJECT_FONT_SIZE, 0); 1728a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1738a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Paper clip for attachment 1748a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira Bitmap paperclipBitmap = null; 1758a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (hasAttachments) { 1768a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira paperclipBitmap = ATTACHMENT; 1778a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 1788a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 1798a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira // Inflate and fill out the remote view 180747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei final RemoteViews remoteViews = new RemoteViews( 181747e678d20e99ddd17953ff4530d2ee3f1c6cfc7Mark Wei mContext.getPackageName(), R.layout.widget_conversation_list_item); 182178ac28d19065ceca8b293e13cf291d685080aa6Mindy Pereira remoteViews.setTextViewText(R.id.widget_senders, senders); 1838a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setTextViewText(R.id.widget_date, styledDate); 1848a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setTextViewText(R.id.widget_subject, styledSubject); 1858a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (paperclipBitmap != null) { 1868a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_attachment, View.VISIBLE); 1878a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setImageViewBitmap(R.id.widget_attachment, paperclipBitmap); 1888a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } else { 1898a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_attachment, View.GONE); 1908a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 1918a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira if (isUnread) { 1928a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_unread_background, View.VISIBLE); 1938a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_read_background, View.GONE); 1948a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } else { 1958a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_unread_background, View.GONE); 1968a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira remoteViews.setViewVisibility(R.id.widget_read_background, View.VISIBLE); 1978a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 198a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira if (mContext.getResources().getBoolean(R.bool.display_folder_colors_in_widget)) { 199a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira mFolderDisplayer = new WidgetFolderDisplayer(mContext); 20067aa9e5162a15fb8b46b4113ac627cd20668f095Scott Kennedy mFolderDisplayer.loadConversationFolders(conversation, folderUri, ignoreFolderType); 201a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira mFolderDisplayer.displayFolders(remoteViews); 202a4968036e4384431de74b96d43a40faaeecf053eMindy Pereira } 2038a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira 2048a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira return remoteViews; 2058a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira } 2068a8c50d8fcc4f20549c9f395edbad017a940e72bMindy Pereira} 207