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