mirror of
https://github.com/moparisthebest/k-9
synced 2024-11-23 09:52:16 -05:00
Save attachment count
This commit is contained in:
parent
5e4743bf66
commit
d2d85393d3
@ -17,7 +17,7 @@ import static org.junit.Assert.assertEquals;
|
||||
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class MessagePreviewExtractorTest {
|
||||
public class MessageInfoExtractorTest {
|
||||
|
||||
@Test
|
||||
public void shouldExtractPreviewFromSinglePlainTextPart() throws MessagingException {
|
||||
@ -26,7 +26,7 @@ public class MessagePreviewExtractorTest {
|
||||
TextBody body = new TextBody("Message text ");
|
||||
message.setBody(body);
|
||||
|
||||
String preview = MessagePreviewExtractor.extractPreview(getContext(), message);
|
||||
String preview = new MessageInfoExtractor(getContext(), message).getMessageTextPreview();
|
||||
|
||||
assertEquals("Message text", preview);
|
||||
}
|
||||
@ -49,7 +49,7 @@ public class MessagePreviewExtractorTest {
|
||||
"560-------570-------580-------590-------600-------");
|
||||
message.setBody(body);
|
||||
|
||||
String preview = MessagePreviewExtractor.extractPreview(getContext(), message);
|
||||
String preview = new MessageInfoExtractor(getContext(), message).getMessageTextPreview();
|
||||
|
||||
assertEquals(512, preview.length());
|
||||
assertEquals('…', preview.charAt(511));
|
||||
@ -62,7 +62,7 @@ public class MessagePreviewExtractorTest {
|
||||
TextBody body = new TextBody("<html><body><pre>Message text</pre></body></html>");
|
||||
message.setBody(body);
|
||||
|
||||
String preview = MessagePreviewExtractor.extractPreview(getContext(), message);
|
||||
String preview = new MessageInfoExtractor(getContext(), message).getMessageTextPreview();
|
||||
|
||||
assertEquals("Message text", preview);
|
||||
}
|
||||
@ -83,7 +83,7 @@ public class MessagePreviewExtractorTest {
|
||||
MimeBodyPart htmlPart = new MimeBodyPart(htmlBody, "text/html");
|
||||
multipart.addBodyPart(htmlPart);
|
||||
|
||||
String preview = MessagePreviewExtractor.extractPreview(getContext(), message);
|
||||
String preview = new MessageInfoExtractor(getContext(), message).getMessageTextPreview();
|
||||
|
||||
assertEquals("text", preview);
|
||||
}
|
||||
@ -104,7 +104,7 @@ public class MessagePreviewExtractorTest {
|
||||
MimeBodyPart htmlPart = new MimeBodyPart(htmlBody, "text/html");
|
||||
multipart.addBodyPart(htmlPart);
|
||||
|
||||
String preview = MessagePreviewExtractor.extractPreview(getContext(), message);
|
||||
String preview = new MessageInfoExtractor(getContext(), message).getMessageTextPreview();
|
||||
|
||||
assertEquals("text / html", preview);
|
||||
}
|
||||
@ -130,7 +130,7 @@ public class MessagePreviewExtractorTest {
|
||||
MimeBodyPart messagePart = new MimeBodyPart(innerMessage, "message/rfc822");
|
||||
multipart.addBodyPart(messagePart);
|
||||
|
||||
String preview = MessagePreviewExtractor.extractPreview(getContext(), message);
|
||||
String preview = new MessageInfoExtractor(getContext(), message).getMessageTextPreview();
|
||||
|
||||
assertEquals("text / Includes message titled \"inner message\" containing: html", preview);
|
||||
}
|
@ -1247,10 +1247,10 @@ public class LocalFolder extends Folder<LocalMessage> implements Serializable {
|
||||
parentId = threadInfo.parentId;
|
||||
}
|
||||
|
||||
//TODO: get attachment count
|
||||
|
||||
try {
|
||||
String preview = MessagePreviewExtractor.extractPreview(localStore.context, message);
|
||||
MessageInfoExtractor messageExtractor = new MessageInfoExtractor(localStore.context, message);
|
||||
String preview = messageExtractor.getMessageTextPreview();
|
||||
int attachmentCount = messageExtractor.getAttachmentCount();
|
||||
|
||||
long rootMessagePartId = saveMessageParts(db, message);
|
||||
|
||||
@ -1273,7 +1273,7 @@ public class LocalFolder extends Folder<LocalMessage> implements Serializable {
|
||||
cv.put("bcc_list", Address.pack(message.getRecipients(RecipientType.BCC)));
|
||||
cv.put("preview", preview);
|
||||
cv.put("reply_to_list", Address.pack(message.getReplyTo()));
|
||||
cv.put("attachment_count", 0); //FIXME
|
||||
cv.put("attachment_count", attachmentCount);
|
||||
cv.put("internal_date", message.getInternalDate() == null
|
||||
? System.currentTimeMillis() : message.getInternalDate().getTime());
|
||||
cv.put("mime_type", message.getMimeType());
|
||||
|
@ -0,0 +1,43 @@
|
||||
package com.fsck.k9.mailstore;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.fsck.k9.mail.Message;
|
||||
import com.fsck.k9.mail.MessagingException;
|
||||
import com.fsck.k9.mail.Part;
|
||||
import com.fsck.k9.mail.internet.MessageExtractor;
|
||||
import com.fsck.k9.mail.internet.Viewable;
|
||||
|
||||
|
||||
class MessageInfoExtractor {
|
||||
private final Context context;
|
||||
private final Message message;
|
||||
private List<Viewable> viewables;
|
||||
private List<Part> attachments;
|
||||
|
||||
public MessageInfoExtractor(Context context, Message message) {
|
||||
this.context = context;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getMessageTextPreview() throws MessagingException {
|
||||
getViewablesIfNecessary();
|
||||
return MessagePreviewExtractor.extractPreview(context, viewables);
|
||||
}
|
||||
|
||||
public int getAttachmentCount() throws MessagingException {
|
||||
getViewablesIfNecessary();
|
||||
return attachments.size();
|
||||
}
|
||||
|
||||
private void getViewablesIfNecessary() throws MessagingException {
|
||||
if (viewables == null) {
|
||||
attachments = new ArrayList<Part>();
|
||||
viewables = MessageExtractor.getViewables(message, attachments);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
package com.fsck.k9.mailstore;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.content.Context;
|
||||
@ -9,8 +8,6 @@ import android.text.TextUtils;
|
||||
|
||||
import com.fsck.k9.R;
|
||||
import com.fsck.k9.helper.HtmlConverter;
|
||||
import com.fsck.k9.mail.Message;
|
||||
import com.fsck.k9.mail.MessagingException;
|
||||
import com.fsck.k9.mail.Part;
|
||||
import com.fsck.k9.mail.internet.MessageExtractor;
|
||||
import com.fsck.k9.mail.internet.Viewable;
|
||||
@ -20,22 +17,11 @@ import com.fsck.k9.mail.internet.Viewable.MessageHeader;
|
||||
import com.fsck.k9.mail.internet.Viewable.Textual;
|
||||
|
||||
|
||||
public class MessagePreviewExtractor {
|
||||
class MessagePreviewExtractor {
|
||||
private static final int MAX_PREVIEW_LENGTH = 512;
|
||||
private static final int MAX_CHARACTERS_CHECKED_FOR_PREVIEW = 8192;
|
||||
|
||||
public static String extractPreview(Context context, Message message) throws MessagingException {
|
||||
try {
|
||||
List<Part> attachments = new ArrayList<Part>();
|
||||
List<Viewable> viewables = MessageExtractor.getViewables(message, attachments);
|
||||
|
||||
return buildPreview(context, viewables);
|
||||
} catch (Exception e) {
|
||||
throw new MessagingException("Couldn't extract viewable parts", e);
|
||||
}
|
||||
}
|
||||
|
||||
private static String buildPreview(Context context, List<Viewable> viewables) throws MessagingException {
|
||||
public static String extractPreview(Context context, List<Viewable> viewables) {
|
||||
StringBuilder text = new StringBuilder();
|
||||
boolean divider = false;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user