From f1623044276120c2b019afb36d8654c45cf68ed7 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 6 Jun 2024 17:24:36 +0200 Subject: [PATCH] Added renaming of attachments --- .../eu/faircode/email/AdapterAttachment.java | 25 ++++++++-- .../java/eu/faircode/email/DaoAttachment.java | 6 +++ .../eu/faircode/email/FragmentCompose.java | 46 ++++++++++++++++++- app/src/main/res/values/strings.xml | 1 + 4 files changed, 74 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterAttachment.java b/app/src/main/java/eu/faircode/email/AdapterAttachment.java index 3755263770..c0254706fa 100644 --- a/app/src/main/java/eu/faircode/email/AdapterAttachment.java +++ b/app/src/main/java/eu/faircode/email/AdapterAttachment.java @@ -273,15 +273,20 @@ public class AdapterAttachment extends RecyclerView.Adapter pickImages; @@ -3373,6 +3374,10 @@ public class FragmentCompose extends FragmentBase { onAction(R.id.action_send, extras, "sendnow"); } break; + case REQUEST_EDIT_ATTACHMENT: + if (resultCode == RESULT_OK && data != null) + onEditAttachment(data.getBundleExtra("args")); + break; case REQUEST_REMOVE_ATTACHMENTS: if (resultCode == RESULT_OK) onRemoveAttachments(); @@ -4965,6 +4970,45 @@ public class FragmentCompose extends FragmentBase { onAction(R.id.action_delete, "delete"); } + private void onEditAttachment(Bundle args) { + new SimpleTask() { + @Override + protected Void onExecute(Context context, Bundle args) throws Throwable { + long id = args.getLong("id"); + String prev = args.getString("prev"); + String name = args.getString("name"); + + if (TextUtils.isEmpty(name)) + return null; + + name = Helper.sanitizeFilename(name); + + File source = EntityAttachment.getFile(context, id, prev); + File target = EntityAttachment.getFile(context, id, name); + if (!source.renameTo(target)) + throw new IllegalArgumentException("Could not rename " + source.getName() + " into " + target.getName()); + + DB db = DB.getInstance(context); + try { + db.beginTransaction(); + + db.attachment().setName(id, name); + + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + + return null; + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.unexpectedError(getParentFragmentManager(), ex); + } + }.execute(this, args, "attachment:edit"); + } + private void onRemoveAttachments() { Bundle args = new Bundle(); args.putLong("id", working); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 26cfb919b7..917f4f9755 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1508,6 +1508,7 @@ Create rule … Full screen Force light theme + Rename Share Share link Open message