1
0
mirror of https://github.com/moparisthebest/k-9 synced 2024-12-17 21:32:26 -05:00

lift "displayMessage" out of a callback

This commit is contained in:
Jesse Vincent 2011-01-06 16:56:55 +00:00
parent 39ef6584a8
commit b2c44579d2

View File

@ -1685,86 +1685,8 @@ public class MessageView extends K9Activity implements OnClickListener
} }
} }
public void displayMessage(Account account, String folder, String uid, Message message)
private void renderAttachments(Part part, int depth) throws MessagingException
{ {
if (part.getBody() instanceof Multipart)
{
Multipart mp = (Multipart) part.getBody();
for (int i = 0; i < mp.getCount(); i++)
{
renderAttachments(mp.getBodyPart(i), depth + 1);
}
}
else if (part instanceof LocalAttachmentBodyPart)
{
String contentDisposition = MimeUtility.unfoldAndDecode(part.getDisposition());
// Inline parts with a content-id are almost certainly components of an HTML message
// not attachments. Don't show attachment download buttons for them.
if (contentDisposition != null &&
MimeUtility.getHeaderParameter(contentDisposition, null).matches("^(?i:inline)")
&& part.getHeader("Content-ID") != null)
{
return;
}
renderPartAsAttachment(part);
}
}
private void renderPartAsAttachment(Part part) throws MessagingException
{
LayoutInflater inflater = getLayoutInflater();
AttachmentView view = (AttachmentView)inflater.inflate(R.layout.message_view_attachment, null);
if (view.populateFromPart(part, mMessage, mAccount, mController, mListener))
{
mHandler.addAttachment((View)view);
}
return;
}
class Listener extends MessagingListener
{
@Override
public void loadMessageForViewHeadersAvailable(Account account, String folder, String uid,
final Message message)
{
if (!mMessageReference.uid.equals(uid) || !mMessageReference.folderName.equals(folder)
|| !mMessageReference.accountUuid.equals(account.getUuid()))
{
return;
}
MessageView.this.mMessage = message;
if (!message.isSet(Flag.X_DOWNLOADED_FULL)
&& !message.isSet(Flag.X_DOWNLOADED_PARTIAL))
{
mHandler.post(new Runnable()
{
public void run()
{
mMessageContentView.loadUrl("file:///android_asset/downloading.html");
updateDecryptLayout();
}
});
}
try
{
mHandler.setHeaders(message);
}
catch (MessagingException me)
{
Log.e(K9.LOG_TAG, "loadMessageForViewHeadersAvailable", me);
}
}
@Override
public void loadMessageForViewBodyAvailable(Account account, String folder, String uid,
Message message)
{
if (!mMessageReference.uid.equals(uid) || !mMessageReference.folderName.equals(folder)
|| !mMessageReference.accountUuid.equals(account.getUuid()))
{
return;
}
try try
{ {
if (MessageView.this.mMessage != null if (MessageView.this.mMessage != null
@ -1847,6 +1769,89 @@ public class MessageView extends K9Activity implements OnClickListener
Log.v(K9.LOG_TAG, "loadMessageForViewBodyAvailable", e); Log.v(K9.LOG_TAG, "loadMessageForViewBodyAvailable", e);
} }
} }
}
private void renderAttachments(Part part, int depth) throws MessagingException
{
if (part.getBody() instanceof Multipart)
{
Multipart mp = (Multipart) part.getBody();
for (int i = 0; i < mp.getCount(); i++)
{
renderAttachments(mp.getBodyPart(i), depth + 1);
}
}
else if (part instanceof LocalAttachmentBodyPart)
{
String contentDisposition = MimeUtility.unfoldAndDecode(part.getDisposition());
// Inline parts with a content-id are almost certainly components of an HTML message
// not attachments. Don't show attachment download buttons for them.
if (contentDisposition != null &&
MimeUtility.getHeaderParameter(contentDisposition, null).matches("^(?i:inline)")
&& part.getHeader("Content-ID") != null)
{
return;
}
renderPartAsAttachment(part);
}
}
private void renderPartAsAttachment(Part part) throws MessagingException
{
LayoutInflater inflater = getLayoutInflater();
AttachmentView view = (AttachmentView)inflater.inflate(R.layout.message_view_attachment, null);
if (view.populateFromPart(part, mMessage, mAccount, mController, mListener))
{
mHandler.addAttachment((View)view);
}
return;
}
class Listener extends MessagingListener
{
@Override
public void loadMessageForViewHeadersAvailable(Account account, String folder, String uid,
final Message message)
{
if (!mMessageReference.uid.equals(uid) || !mMessageReference.folderName.equals(folder)
|| !mMessageReference.accountUuid.equals(account.getUuid()))
{
return;
}
MessageView.this.mMessage = message;
if (!message.isSet(Flag.X_DOWNLOADED_FULL)
&& !message.isSet(Flag.X_DOWNLOADED_PARTIAL))
{
mHandler.post(new Runnable()
{
public void run()
{
mMessageContentView.loadUrl("file:///android_asset/downloading.html");
updateDecryptLayout();
}
});
}
try
{
mHandler.setHeaders(message);
}
catch (MessagingException me)
{
Log.e(K9.LOG_TAG, "loadMessageForViewHeadersAvailable", me);
}
}
@Override
public void loadMessageForViewBodyAvailable(Account account, String folder, String uid,
Message message)
{
if (!mMessageReference.uid.equals(uid) || !mMessageReference.folderName.equals(folder)
|| !mMessageReference.accountUuid.equals(account.getUuid()))
{
return;
}
displayMessage(account, folder, uid, message);
}//loadMessageForViewBodyAvailable }//loadMessageForViewBodyAvailable