diff options
-rw-r--r-- | res/values-land/arrays.xml | 12 | ||||
-rw-r--r-- | res/values-sw600dp-land/arrays.xml | 32 | ||||
-rw-r--r-- | res/values-sw600dp/arrays.xml | 12 | ||||
-rw-r--r-- | res/values-sw600dp/dimen.xml | 1 | ||||
-rw-r--r-- | res/values-sw720dp-land/arrays.xml | 31 | ||||
-rw-r--r-- | res/values-sw720dp/arrays.xml | 31 | ||||
-rw-r--r-- | res/values/arrays.xml | 12 | ||||
-rw-r--r-- | res/values/dimen.xml | 1 | ||||
-rw-r--r-- | src/com/android/mail/browse/ConversationItemView.java | 57 | ||||
-rw-r--r-- | src/com/android/mail/browse/ConversationItemViewCoordinates.java | 18 | ||||
-rw-r--r-- | src/com/android/mail/providers/Conversation.java | 10 | ||||
-rw-r--r-- | src/com/android/mail/widget/WidgetConversationViewBuilder.java | 2 |
12 files changed, 33 insertions, 186 deletions
diff --git a/res/values-land/arrays.xml b/res/values-land/arrays.xml index f5fdf687e..7b303a8b8 100644 --- a/res/values-land/arrays.xml +++ b/res/values-land/arrays.xml @@ -20,18 +20,6 @@ <item>64</item> <item>70</item> </integer-array> - <integer-array name="subject_with_folders_lengths"> - <item>0</item> - <item>-1</item> - <item>120</item> - <item>120</item> - </integer-array> - <integer-array name="subject_lengths"> - <item>-1</item> - <item>-1</item> - <item>-1</item> - <item>-1</item> - </integer-array> <integer-array name="senders_with_attachment_lengths"> <item>40</item> <item>40</item> diff --git a/res/values-sw600dp-land/arrays.xml b/res/values-sw600dp-land/arrays.xml deleted file mode 100644 index a96f1fa01..000000000 --- a/res/values-sw600dp-land/arrays.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2011 Google Inc. - Licensed to The Android Open Source Project. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<resources> - <integer-array name="subject_with_folders_lengths"> - <item>0</item> - <item>56</item> - <item>160</item> - <item>160</item> - </integer-array> - <integer-array name="subject_lengths"> - <item>0</item> - <item>80</item> - <item>160</item> - <item>160</item> - </integer-array> -</resources> diff --git a/res/values-sw600dp/arrays.xml b/res/values-sw600dp/arrays.xml index 972eaccb7..6171548fc 100644 --- a/res/values-sw600dp/arrays.xml +++ b/res/values-sw600dp/arrays.xml @@ -17,18 +17,6 @@ --> <resources> - <integer-array name="subject_with_folders_lengths"> - <item>0</item> - <item>-1</item> - <item>70</item> - <item>70</item> - </integer-array> - <integer-array name="subject_lengths"> - <item>0</item> - <item>-1</item> - <item>78</item> - <item>78</item> - </integer-array> <integer-array name="senders_with_attachment_lengths"> <item>50</item> <item>30</item> diff --git a/res/values-sw600dp/dimen.xml b/res/values-sw600dp/dimen.xml index 237bfc0ab..61d6cb347 100644 --- a/res/values-sw600dp/dimen.xml +++ b/res/values-sw600dp/dimen.xml @@ -43,6 +43,7 @@ <dimen name="attachment_tile_min_size">180dp</dimen> <dimen name="attachment_tile_max_size">254dp</dimen> <dimen name="wait_padding">32dp</dimen> + <dimen name="folders_left_padding">8dip</dimen> <dimen name="compose_area_left_padding">80dip</dimen> <dimen name="compose_area_right_padding">80dip</dimen> diff --git a/res/values-sw720dp-land/arrays.xml b/res/values-sw720dp-land/arrays.xml deleted file mode 100644 index 2e19f7d5e..000000000 --- a/res/values-sw720dp-land/arrays.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2011 Google Inc. - Licensed to The Android Open Source Project. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<resources> - <integer-array name="subject_with_folders_lengths"> - <item>0</item> - <item>80</item> - <item>-1</item> - <item>-1</item> - </integer-array> - <integer-array name="subject_lengths"> - <item>-1</item> - <item>80</item> - <item>-1</item> - <item>-1</item> - </integer-array> -</resources>
\ No newline at end of file diff --git a/res/values-sw720dp/arrays.xml b/res/values-sw720dp/arrays.xml deleted file mode 100644 index e49f866dd..000000000 --- a/res/values-sw720dp/arrays.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2011 Google Inc. - Licensed to The Android Open Source Project. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<resources> - <integer-array name="subject_with_folders_lengths"> - <item>0</item> - <item>-1</item> - <item>120</item> - <item>120</item> - </integer-array> - <integer-array name="subject_lengths"> - <item>0</item> - <item>-1</item> - <item>180</item> - <item>180</item> - </integer-array> -</resources>
\ No newline at end of file diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 8c362c065..1d9a3f939 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -20,18 +20,6 @@ <item>64</item> <item>72</item> </integer-array> - <integer-array name="subject_with_folders_lengths"> - <item>-1</item> - <item>-1</item> - <item>54</item> - <item>54</item> - </integer-array> - <integer-array name="subject_lengths"> - <item>-1</item> - <item>-1</item> - <item>-1</item> - <item>-1</item> - </integer-array> <integer-array name="senders_with_attachment_lengths"> <item>25</item> <item>25</item> diff --git a/res/values/dimen.xml b/res/values/dimen.xml index d67c6c73a..e06b6699e 100644 --- a/res/values/dimen.xml +++ b/res/values/dimen.xml @@ -49,6 +49,7 @@ <dimen name="move_slop">4dip</dimen> <dimen name="standard_scaled_dimen">100sp</dimen> <dimen name="folder_cell_width">8dip</dimen> + <dimen name="folders_left_padding">16dip</dimen> <dimen name="triangle_width">15dip</dimen> <dimen name="conversation_page_gutter">16dp</dimen> <dimen name="conversation_message_content_margin_side">16dp</dimen> diff --git a/src/com/android/mail/browse/ConversationItemView.java b/src/com/android/mail/browse/ConversationItemView.java index 08276bcc5..1284135fe 100644 --- a/src/com/android/mail/browse/ConversationItemView.java +++ b/src/com/android/mail/browse/ConversationItemView.java @@ -175,6 +175,7 @@ public class ConversationItemView extends View implements SwipeableItemView, Tog private TextView mSendersTextView; private TextView mDateTextView; private DividedImageCanvas mContactImagesHolder; + private static int sFoldersLeftPadding; private static TextAppearanceSpan sDateTextAppearance; private static TextAppearanceSpan sSubjectTextUnreadSpan; private static TextAppearanceSpan sSubjectTextReadSpan; @@ -397,7 +398,7 @@ public class ConversationItemView extends View implements SwipeableItemView, Tog sSendersTextViewHeight = res.getDimensionPixelSize (R.dimen.senders_textview_height); sScrollSlop = res.getInteger(R.integer.swipeScrollSlop); - + sFoldersLeftPadding = res.getDimensionPixelSize(R.dimen.folders_left_padding); sDateTextAppearance = new TextAppearanceSpan(mContext, R.style.DateTextAppearance); sContactPhotoManager = ContactPhotoManager.createContactPhotoManager(context); } @@ -505,6 +506,10 @@ public class ConversationItemView extends View implements SwipeableItemView, Tog mHeader.standardScaledDimen, mCheckboxesEnabled); calculateTextsAndBitmaps(); calculateCoordinates(); + + // Subject. + createSubject(mHeader.unread, showActivatedText()); + if (!mHeader.isLayoutValid(mContext)) { setContentDescription(); } @@ -557,9 +562,6 @@ public class ConversationItemView extends View implements SwipeableItemView, Tog final boolean isUnread = mHeader.unread; updateBackground(isUnread); - // Subject. - createSubject(isUnread, showActivatedText()); - mHeader.sendersDisplayText = new SpannableStringBuilder(); mHeader.styledSendersString = new SpannableStringBuilder(); @@ -667,14 +669,19 @@ public class ConversationItemView extends View implements SwipeableItemView, Tog private void createSubject(boolean isUnread, boolean activated) { String subject = filterTag(mHeader.conversation.subject); final String snippet = mHeader.conversation.getSnippet(); - int maxChars = -1; - if (mCoordinates.showFolders && mHeader.folderDisplayer != null + int maxWidth = -1; + if (!ConversationItemViewCoordinates.isWideMode(mMode) && mCoordinates.showFolders + && mHeader.folderDisplayer != null && mHeader.folderDisplayer.hasVisibleFolders()) { - maxChars = ConversationItemViewCoordinates.getSubjectLength(mContext, - mActivity.getViewMode().getMode(), true /*hasFolders*/); + sPaint.setTextSize(mHeader.unread ? sSubjectTextUnreadSpan.getTextSize() + : sSubjectTextReadSpan.getTextSize()); + sPaint.setTypeface(mHeader.unread ? Typeface.DEFAULT_BOLD : Typeface.DEFAULT); + maxWidth = (mSendersWidth * 2) + - ConversationItemViewCoordinates.getFoldersWidth(mContext, mMode) + - sFoldersLeftPadding; } SpannableStringBuilder subjectText = Conversation.getSubjectAndSnippetForDisplay(mContext, - subject, snippet, maxChars); + subject, snippet, maxWidth, sPaint); int subjectTextLength = Math.min(subjectText.length(), subject.length()); if (!TextUtils.isEmpty(subject)) { subjectText.setSpan(TextAppearanceSpan.wrap(isUnread ? @@ -746,40 +753,22 @@ public class ConversationItemView extends View implements SwipeableItemView, Tog mPaperclipX = mDateX - ATTACHMENT.getWidth(); - int cellWidth = mContext.getResources().getDimensionPixelSize(R.dimen.folder_cell_width); - + mFoldersXEnd = mCoordinates.foldersXEnd; if (ConversationItemViewCoordinates.isWideMode(mMode)) { - // Folders are displayed above the date. - mFoldersXEnd = mCoordinates.foldersXEnd; // In wide mode, the end of the senders should align with // the start of the subject and is based on a max width. mSendersWidth = mCoordinates.sendersWidth; } else { // In normal mode, the width is based on where the folders or date // (or attachment icon) start. - mFoldersXEnd = mCoordinates.foldersXEnd; - if (mCoordinates.showFolders) { - final int sendersEnd; - if (mHeader.paperclip != null) { - sendersEnd = mPaperclipX; - } else { - sendersEnd = mDateX - cellWidth / 2; - } - mSendersWidth = sendersEnd - mCoordinates.sendersX - 2 * cellWidth; - if (mHeader.folderDisplayer.hasVisibleFolders()) { - mSendersWidth -= ConversationItemViewCoordinates.getFoldersWidth(mContext, - mMode); - } + int dateAttachmentStart = 0; + // Have this end near the paperclip or date, not the folders. + if (mHeader.paperclip != null) { + dateAttachmentStart = mPaperclipX; } else { - int dateAttachmentStart = 0; - // Have this end near the paperclip or date, not the folders. - if (mHeader.paperclip != null) { - dateAttachmentStart = mPaperclipX; - } else { - dateAttachmentStart = mDateX; - } - mSendersWidth = dateAttachmentStart - mCoordinates.sendersX - cellWidth; + dateAttachmentStart = mDateX; } + mSendersWidth = dateAttachmentStart - mCoordinates.sendersX ; } // Second pass to layout each fragment. diff --git a/src/com/android/mail/browse/ConversationItemViewCoordinates.java b/src/com/android/mail/browse/ConversationItemViewCoordinates.java index f58bd99a4..aca8f43c8 100644 --- a/src/com/android/mail/browse/ConversationItemViewCoordinates.java +++ b/src/com/android/mail/browse/ConversationItemViewCoordinates.java @@ -271,24 +271,6 @@ public class ConversationItemViewCoordinates { } } - /** - * Returns the length (maximum of characters) of subject in this mode, where - * mode is defined as CONV_LIST, CONVERSATION, etc - */ - public static int getSubjectLength(Context context, int mode, boolean hasFolders) { - final Resources res = context.getResources(); - int[] lengths; - if (hasFolders) { - lengths = res.getIntArray(R.array.subject_with_folders_lengths); - } else { - lengths = res.getIntArray(R.array.subject_lengths); - } - if (mode > lengths.length - 1) { - mode = ViewMode.CONVERSATION_LIST; - } - return lengths[mode]; - } - public static int getColorBlockWidth(Context context) { Resources res = context.getResources(); if (COLOR_BLOCK_WIDTH <= 0) { diff --git a/src/com/android/mail/providers/Conversation.java b/src/com/android/mail/providers/Conversation.java index 1b0cb0ef8..03e92ec4e 100644 --- a/src/com/android/mail/providers/Conversation.java +++ b/src/com/android/mail/providers/Conversation.java @@ -23,7 +23,9 @@ import android.os.Parcel; import android.os.Parcelable; import android.provider.BaseColumns; import android.text.SpannableStringBuilder; +import android.text.TextPaint; import android.text.TextUtils; +import android.text.TextUtils.TruncateAt; import com.android.mail.R; import com.android.mail.providers.UIProvider.ConversationColumns; @@ -533,7 +535,7 @@ public class Conversation implements Parcelable { * if there is no limit */ public static SpannableStringBuilder getSubjectAndSnippetForDisplay(Context context, - String filteredSubject, String snippet, int maxChars) { + String filteredSubject, String snippet, int avail, TextPaint paint) { if (sSubjectAndSnippet == null) { sSubjectAndSnippet = context.getString(R.string.subject_and_snippet); } @@ -541,8 +543,10 @@ public class Conversation implements Parcelable { String.format(sSubjectAndSnippet, filteredSubject, snippet) : filteredSubject; SpannableStringBuilder builder = new SpannableStringBuilder(); - if (maxChars != -1 && maxChars < subjectText.length()) { - builder.append(subjectText, 0, maxChars); + if (avail != -1) { + CharSequence ellipsizedText = TextUtils.ellipsize(subjectText, paint, avail, + TruncateAt.END); + builder.append(ellipsizedText, 0, ellipsizedText.length() - 1); } else { builder.append(subjectText); } diff --git a/src/com/android/mail/widget/WidgetConversationViewBuilder.java b/src/com/android/mail/widget/WidgetConversationViewBuilder.java index 75af7a3cb..a3e25b747 100644 --- a/src/com/android/mail/widget/WidgetConversationViewBuilder.java +++ b/src/com/android/mail/widget/WidgetConversationViewBuilder.java @@ -159,7 +159,7 @@ public class WidgetConversationViewBuilder { // Add style to subject int subjectColor = isUnread ? SUBJECT_TEXT_COLOR_UNREAD : SUBJECT_TEXT_COLOR_READ; SpannableStringBuilder subjectAndSnippet = Conversation.getSubjectAndSnippetForDisplay( - mContext, filteredSubject, snippet, -1); + mContext, filteredSubject, snippet, -1, null); if (isUnread) { subjectAndSnippet.setSpan(new StyleSpan(Typeface.BOLD), 0, filteredSubject.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); |