From c31308f3474c0012f710e7cf46bfb47ebdf4b1ef Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 24 Jan 2020 11:00:09 +0100 Subject: [PATCH] EML share attachments --- .../java/eu/faircode/email/ActivityEML.java | 37 ++++++++++++++++++- .../faircode/email/AdapterAttachmentEML.java | 14 ++++++- .../main/res/layout/item_attachment_eml.xml | 20 ++++++++-- 3 files changed, 64 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityEML.java b/app/src/main/java/eu/faircode/email/ActivityEML.java index ee95df3ff2..4830aa888e 100644 --- a/app/src/main/java/eu/faircode/email/ActivityEML.java +++ b/app/src/main/java/eu/faircode/email/ActivityEML.java @@ -51,6 +51,7 @@ import com.sun.mail.imap.IMAPFolder; import org.jsoup.nodes.Document; +import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; @@ -177,7 +178,41 @@ public class ActivityEML extends ActivityBase { result.parts.getAttachmentParts(), new AdapterAttachmentEML.IEML() { @Override - public void onSelected(MessageHelper.AttachmentPart apart) { + public void onShare(MessageHelper.AttachmentPart apart) { + new SimpleTask() { + @Override + protected File onExecute(Context context, Bundle args) throws Throwable { + apart.attachment.id = 0L; + File file = apart.attachment.getFile(context); + Log.i("Writing to " + file); + + try (InputStream is = apart.part.getInputStream()) { + try (OutputStream os = new FileOutputStream(file)) { + byte[] buffer = new byte[Helper.BUFFER_SIZE]; + for (int len = is.read(buffer); len != -1; len = is.read(buffer)) + os.write(buffer, 0, len); + } + } + + return file; + } + + @Override + protected void onExecuted(Bundle args, File file) { + Helper.share(ActivityEML.this, file, + apart.attachment.getMimeType(), + apart.attachment.name); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.unexpectedError(getSupportFragmentManager(), ex); + } + }.execute(ActivityEML.this, new Bundle(), "eml:share"); + } + + @Override + public void onSave(MessageHelper.AttachmentPart apart) { ActivityEML.this.apart = apart; Intent create = new Intent(Intent.ACTION_CREATE_DOCUMENT); diff --git a/app/src/main/java/eu/faircode/email/AdapterAttachmentEML.java b/app/src/main/java/eu/faircode/email/AdapterAttachmentEML.java index de2963d6d4..913dcb6914 100644 --- a/app/src/main/java/eu/faircode/email/AdapterAttachmentEML.java +++ b/app/src/main/java/eu/faircode/email/AdapterAttachmentEML.java @@ -23,6 +23,7 @@ import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageButton; import android.widget.TextView; import androidx.annotation.NonNull; @@ -41,6 +42,7 @@ public class AdapterAttachmentEML extends RecyclerView.Adapter @@ -57,9 +57,21 @@ android:layout_marginStart="6dp" android:text="10 kB" android:textAppearance="@style/TextAppearance.AppCompat.Small" - app:layout_constraintBottom_toBottomOf="@id/tvType" - app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/ibSave" app:layout_constraintStart_toEndOf="@id/tvType" - app:layout_constraintTop_toTopOf="@id/tvName" /> + app:layout_constraintTop_toTopOf="parent" /> + + \ No newline at end of file