diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 71c1cf7a72..4a71228adf 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -183,6 +183,7 @@ public class AdapterMessage extends RecyclerView.Adapter 0 ? View.VISIBLE : View.GONE); btnDownloadAttachments.setVisibility(View.GONE); + btnSaveAttachments.setVisibility(View.GONE); tvNoInternetAttachments.setVisibility(View.GONE); tvSubject.setText(message.subject); @@ -590,18 +596,20 @@ public class AdapterMessage extends RecyclerView.Adapter 1); boolean downloading = false; - boolean all = (attachments.size() > 1); for (EntityAttachment attachment : attachments) { - if (attachment.progress != null) { - downloading = true; - break; - } + if (attachment.progress == null && !attachment.available) + download = true; if (!attachment.available) - all = false; + save = false; + if (attachment.progress != null) + downloading = true; } - btnDownloadAttachments.setVisibility(all ? View.VISIBLE : View.GONE); + btnDownloadAttachments.setVisibility(download ? View.VISIBLE : View.GONE); + btnSaveAttachments.setVisibility(save ? View.VISIBLE : View.GONE); tvNoInternetAttachments.setVisibility(downloading && !internet ? View.VISIBLE : View.GONE); if (message.content) { @@ -708,6 +716,8 @@ public class AdapterMessage extends RecyclerView.Adapter() { + @Override + protected Void onExecute(Context context, Bundle args) throws Throwable { + long id = args.getLong("id"); + + DB db = DB.getInstance(context); + try { + db.beginTransaction(); + + EntityMessage msg = db.message().getMessage(id); + if (message != null) + for (EntityAttachment attachment : db.attachment().getAttachments(message.id)) + if (attachment.progress == null && !attachment.available) { + db.attachment().setProgress(attachment.id, 0); + EntityOperation.queue(context, db, msg, EntityOperation.ATTACHMENT, attachment.sequence); + } + + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + + return null; + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(context, owner, ex); + } + }.execute(context, owner, args); + } + + private void onSaveAttachments(TupleMessageEx message) { LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(context); lbm.sendBroadcast( new Intent(ActivityView.ACTION_STORE_ATTACHMENTS) diff --git a/app/src/main/res/layout/item_message_compact.xml b/app/src/main/res/layout/item_message_compact.xml index e139e24d9e..7b630dc085 100644 --- a/app/src/main/res/layout/item_message_compact.xml +++ b/app/src/main/res/layout/item_message_compact.xml @@ -561,10 +561,28 @@ android:layout_height="wrap_content" android:minWidth="0dp" android:minHeight="0dp" + android:text="@string/title_download_all" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/rvAttachment" /> + +