Merge "New content description string." into jb-ub-mail
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5e04654..7414b36 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -304,7 +304,7 @@
         <item quantity="other">Move <xliff:g>%1$d</xliff:g> conversations</item>
     </plurals>
     <!-- Formatting string for the content description field of a conversation list item when device is in accessibility mode. [CHAR LIMI=250] -->
-    <string name="content_description">Subject: <xliff:g id="subject">%1$s</xliff:g> Snippet:<xliff:g id="snippet">%2$s</xliff:g></string>
+    <string name="content_description"><xliff:g id="sender">%1$s</xliff:g> sent <xliff:g id="subject">%2$s</xliff:g> on <xliff:g id="date">%3$s</xliff:g></string>
     <!-- Formatting string. If the subject contains the tag of a mailing-list (text surrounded with
     return the subject with that tag ellipsized, e.g. "[android-gmail-team] Hello" -> "[andr...] Hello" [CHAR LIMIT=100] -->
     <string name="filtered_tag"> [<xliff:g id="tag">%1$s</xliff:g>]<xliff:g id="subject">%2$s</xliff:g></string>
diff --git a/src/com/android/mail/browse/ConversationItemViewModel.java b/src/com/android/mail/browse/ConversationItemViewModel.java
index 3b69c9c..44227e3 100644
--- a/src/com/android/mail/browse/ConversationItemViewModel.java
+++ b/src/com/android/mail/browse/ConversationItemViewModel.java
@@ -29,6 +29,7 @@
 import android.text.SpannableStringBuilder;
 import android.text.StaticLayout;
 import android.text.TextUtils;
+import android.text.format.DateUtils;
 import android.text.style.CharacterStyle;
 import android.util.LruCache;
 import android.util.Pair;
@@ -36,6 +37,7 @@
 import com.android.mail.R;
 import com.android.mail.providers.Conversation;
 import com.android.mail.providers.Folder;
+import com.android.mail.providers.MessageInfo;
 import com.android.mail.providers.UIProvider;
 
 import java.util.ArrayList;
@@ -126,6 +128,8 @@
 
     public int styledMessageInfoStringOffset;
 
+    private String mContentDescription;
+
     /**
      * Returns the view model for a conversation. If the model doesn't exist for this conversation
      * null is returned. Note: this should only be called from the UI thread.
@@ -305,8 +309,37 @@
      * Get conversation information to use for accessibility.
      */
     public CharSequence getContentDescription(Context context) {
-        return context.getString(R.string.content_description, conversation.subject,
-                conversation.getSnippet());
+        if (mContentDescription == null) {
+            // If any are unread, get the first unread sender.
+            // If all are unread, get the first sender.
+            // If all are read, get the last sender.
+            String sender = "";
+            if (conversation.conversationInfo != null) {
+                String lastSender = null;
+                int last = conversation.conversationInfo.messageInfos != null ?
+                        conversation.conversationInfo.messageInfos.size() - 1 : -1;
+                if (last != -1) {
+                    lastSender = conversation.conversationInfo.messageInfos.get(last).sender;
+                }
+                if (conversation.read) {
+                    sender = lastSender;
+                } else {
+                    String firstUnread = null;
+                    for (MessageInfo m : conversation.conversationInfo.messageInfos) {
+                        if (!m.read) {
+                            firstUnread = m.sender;
+                            break;
+                        }
+                    }
+                    sender = firstUnread;
+                }
+            }
+            String date = DateUtils.getRelativeTimeSpanString(context, conversation.dateMs)
+                    .toString();
+            mContentDescription = context.getString(R.string.content_description, sender,
+                    conversation.subject, date);
+        }
+        return mContentDescription;
     }
 
     /**
diff --git a/src/com/android/mail/ui/LeaveBehindItem.java b/src/com/android/mail/ui/LeaveBehindItem.java
index 8e29e53..5572623 100644
--- a/src/com/android/mail/ui/LeaveBehindItem.java
+++ b/src/com/android/mail/ui/LeaveBehindItem.java
@@ -201,7 +201,6 @@
         }
     }
 
-
     public void startFadeInAnimation() {
         if (!mFadingInText) {
             mFadingInText = true;