summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values-land/arrays.xml12
-rw-r--r--res/values-sw600dp-land/arrays.xml32
-rw-r--r--res/values-sw600dp/arrays.xml12
-rw-r--r--res/values-sw600dp/dimen.xml1
-rw-r--r--res/values-sw720dp-land/arrays.xml31
-rw-r--r--res/values-sw720dp/arrays.xml31
-rw-r--r--res/values/arrays.xml12
-rw-r--r--res/values/dimen.xml1
-rw-r--r--src/com/android/mail/browse/ConversationItemView.java57
-rw-r--r--src/com/android/mail/browse/ConversationItemViewCoordinates.java18
-rw-r--r--src/com/android/mail/providers/Conversation.java10
-rw-r--r--src/com/android/mail/widget/WidgetConversationViewBuilder.java2
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);