From a5f5f451cd197a595fb72e5526f07d72952fe49e Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 13 Jan 2022 15:33:27 +0100 Subject: [PATCH] Added share images button --- .../eu/faircode/email/AdapterMessage.java | 53 +++++++++++++++++++ .../res/layout/include_message_images.xml | 18 +++++-- 2 files changed, 68 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 7fbfb3a988..d9f169b01e 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -484,6 +484,7 @@ public class AdapterMessage extends RecyclerView.Adapter>() { + @Override + protected ArrayList onExecute(Context context, Bundle args) { + long id = args.getLong("id"); + + DB db = DB.getInstance(context); + List attachments = db.attachment().getAttachments(id); + if (attachments == null) + return null; + + ArrayList result = new ArrayList<>(); + for (EntityAttachment attachment : attachments) + if (attachment.isAttachment() && attachment.isImage()) { + File file = attachment.getFile(context); + Uri uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID, file); + result.add(uri); + } + + return result; + } + + @Override + protected void onExecuted(Bundle args, ArrayList uris) { + if (uris == null) + return; + + final Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); + intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); + intent.setType("image/*"); + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); + context.startActivity(Intent.createChooser(intent, context.getString(R.string.app_name))); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.unexpectedError(parentFragment.getParentFragmentManager(), ex); + } + }.execute(context, owner, args, "attachments:share"); + } + private boolean isOutgoing(TupleMessageEx message) { if (EntityFolder.isOutgoing(message.folderType)) return true; @@ -3562,6 +3613,8 @@ public class AdapterMessage extends RecyclerView.Adapter + + + app:layout_constraintTop_toBottomOf="@id/ibShareImages" /> + app:constraint_referenced_ids="vSeparatorImages,ibShareImages,rvImage" />