1
0
mirror of https://github.com/moparisthebest/k-9 synced 2024-08-13 17:03:48 -04:00

First pass at a "download the rest of this message" button

This commit is contained in:
Jesse Vincent 2010-07-19 01:52:59 +00:00
parent d0c24e23c7
commit 111e6f5109
4 changed files with 51 additions and 11 deletions

View File

@ -196,4 +196,8 @@
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="4dip" /> android:padding="4dip" />
<Button android:id="@+id/download_remainder"
android:text="@string/message_view_download_remainder"
android:layout_height="wrap_content"
android:layout_width="fill_parent" />
</merge> </merge>

View File

@ -275,6 +275,9 @@ Welcome to K-9 Mail setup. K-9 is an open source mail client for Android origin
<string name="message_view_fetching_attachment_toast">Fetching attachment.</string> <string name="message_view_fetching_attachment_toast">Fetching attachment.</string>
<string name="message_view_no_viewer">Unable to find viewer for <xliff:g id="mimetype">%s</xliff:g>.</string> <string name="message_view_no_viewer">Unable to find viewer for <xliff:g id="mimetype">%s</xliff:g>.</string>
<string name="message_view_download_remainder">Download complete message</string>
<!-- NOTE: The following message refers to strings with id 'account_setup_incoming_save_all_headers_label' and 'account_setup_incoming_title' --> <!-- NOTE: The following message refers to strings with id 'account_setup_incoming_save_all_headers_label' and 'account_setup_incoming_title' -->
<string name="message_additional_headers_not_downloaded">Not all headers have been downloaded or saved. Select \"Save all headers locally\" in the account\'s incoming server settings to enable this for the future.</string> <string name="message_additional_headers_not_downloaded">Not all headers have been downloaded or saved. Select \"Save all headers locally\" in the account\'s incoming server settings to enable this for the future.</string>
<string name="message_no_additional_headers_available">All headers have been downloaded, but there are no additional headers to show.</string> <string name="message_no_additional_headers_available">All headers have been downloaded, but there are no additional headers to show.</string>

View File

@ -103,6 +103,10 @@ public class MessageView extends K9Activity implements OnClickListener
private View mAttachmentIcon; private View mAttachmentIcon;
private View mDownloadingIcon; private View mDownloadingIcon;
private View mShowPicturesSection; private View mShowPicturesSection;
private Button mDownloadRemainder;
View next; View next;
View next_scrolling; View next_scrolling;
View previous; View previous;
@ -417,6 +421,13 @@ public class MessageView extends K9Activity implements OnClickListener
null); // bottom null); // bottom
} }
if(mMessage.isSet(Flag.X_DOWNLOADED_FULL)) {
mDownloadRemainder.setVisibility(View.GONE);
} else {
mDownloadRemainder.setEnabled(true);
mDownloadRemainder.setVisibility(View.VISIBLE);
}
} }
}); });
@ -712,6 +723,7 @@ public class MessageView extends K9Activity implements OnClickListener
mDownloadingIcon = findViewById(R.id.downloading); mDownloadingIcon = findViewById(R.id.downloading);
mShowPicturesSection = findViewById(R.id.show_pictures_section); mShowPicturesSection = findViewById(R.id.show_pictures_section);
mDownloadRemainder = (Button)findViewById(R.id.download_remainder);
mFlagged = (CheckBox)findViewById(R.id.flagged); mFlagged = (CheckBox)findViewById(R.id.flagged);
mFlagged.setOnClickListener(new OnClickListener() mFlagged.setOnClickListener(new OnClickListener()
@ -774,6 +786,8 @@ public class MessageView extends K9Activity implements OnClickListener
setOnClickListener(R.id.show_pictures); setOnClickListener(R.id.show_pictures);
setOnClickListener(R.id.download_remainder);
setTitle(""); setTitle("");
Intent intent = getIntent(); Intent intent = getIntent();
@ -1494,6 +1508,25 @@ public class MessageView extends K9Activity implements OnClickListener
return null; return null;
} }
private void onDownloadRemainder()
{
if(mMessage.isSet(Flag.X_DOWNLOADED_FULL))
{
return;
}
Log.v(K9.LOG_TAG, "downloading remainder");
mDownloadRemainder.setEnabled(false);
MessagingController.getInstance(getApplication()).loadMessageForViewRemote(
mAccount,
mMessageReference.folderName,
mMessageReference.uid,
mListener);
}
private void onDownloadAttachment(Attachment attachment) private void onDownloadAttachment(Attachment attachment)
{ {
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
@ -1593,6 +1626,9 @@ public class MessageView extends K9Activity implements OnClickListener
case R.id.header_container: case R.id.header_container:
onShowAdditionalHeaders(); onShowAdditionalHeaders();
break; break;
case R.id.download_remainder:
onDownloadRemainder();
break;
} }
} }

View File

@ -2995,7 +2995,7 @@ public class MessagingController implements Runnable
} }
} }
private void loadMessageForViewRemote(final Account account, final String folder, public void loadMessageForViewRemote(final Account account, final String folder,
final String uid, final MessagingListener listener) final String uid, final MessagingListener listener)
{ {
put("loadMessageForViewRemote", listener, new Runnable() put("loadMessageForViewRemote", listener, new Runnable()
@ -3042,6 +3042,7 @@ public class MessagingController implements Runnable
// Store the message locally and load the stored message into memory // Store the message locally and load the stored message into memory
localFolder.appendMessages(new Message[] { remoteMessage }); localFolder.appendMessages(new Message[] { remoteMessage });
fp.add(FetchProfile.Item.ENVELOPE);
message = localFolder.getMessage(uid); message = localFolder.getMessage(uid);
localFolder.fetch(new Message[] { message }, fp, null); localFolder.fetch(new Message[] { message }, fp, null);
@ -3049,6 +3050,12 @@ public class MessagingController implements Runnable
message.setFlag(Flag.X_DOWNLOADED_FULL, true); message.setFlag(Flag.X_DOWNLOADED_FULL, true);
} }
// now that we have the full message, refresh the headers
for (MessagingListener l : getListeners(listener))
{
l.loadMessageForViewHeadersAvailable(account, folder, uid, message);
}
for (MessagingListener l : getListeners(listener)) for (MessagingListener l : getListeners(listener))
{ {
l.loadMessageForViewBodyAvailable(account, folder, uid, message); l.loadMessageForViewBodyAvailable(account, folder, uid, message);
@ -3118,16 +3125,6 @@ public class MessagingController implements Runnable
l.loadMessageForViewHeadersAvailable(account, folder, uid, message); l.loadMessageForViewHeadersAvailable(account, folder, uid, message);
} }
if (!message.isSet(Flag.X_DOWNLOADED_FULL))
{
loadMessageForViewRemote(account, folder, uid, listener);
if (!message.isSet(Flag.X_DOWNLOADED_PARTIAL))
{
localFolder.close();
return;
}
}
FetchProfile fp = new FetchProfile(); FetchProfile fp = new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE); fp.add(FetchProfile.Item.ENVELOPE);
fp.add(FetchProfile.Item.BODY); fp.add(FetchProfile.Item.BODY);