From efba726dc863e8703a43d7d7e78e613f12feaf1d Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 13 Aug 2019 12:07:30 +0200 Subject: [PATCH] Added account/identity copy --- FAQ.md | 2 +- .../eu/faircode/email/AdapterAccount.java | 14 +++++ .../eu/faircode/email/AdapterIdentity.java | 15 ++++++ .../eu/faircode/email/FragmentAccount.java | 54 ++++++++++--------- .../eu/faircode/email/FragmentIdentity.java | 10 ++-- 5 files changed, 67 insertions(+), 28 deletions(-) diff --git a/FAQ.md b/FAQ.md index b2c9157594..d8303739eb 100644 --- a/FAQ.md +++ b/FAQ.md @@ -49,7 +49,7 @@ For authorizing: * ~~[Autocrypt Setup Message](https://autocrypt.org/autocrypt-spec-1.0.0.pdf) (section 4.4)~~ (IMO it is not a good idea to let an email client handle sensitive encryption keys for an exceptional use case while OpenKeychain can export keys too) * ~~Generic unified folders~~ * ~~New message notification schedules per account~~ (implemented by added a time condition to rules, so messages can be snoozed in selected periods) -* Copy accounts and identities +* ~~Copy accounts and identities~~ Anything on this list is in random order and *might* be added in the near future. diff --git a/app/src/main/java/eu/faircode/email/AdapterAccount.java b/app/src/main/java/eu/faircode/email/AdapterAccount.java index 0e69015be4..5e7df21932 100644 --- a/app/src/main/java/eu/faircode/email/AdapterAccount.java +++ b/app/src/main/java/eu/faircode/email/AdapterAccount.java @@ -214,6 +214,8 @@ public class AdapterAccount extends RecyclerView.Adapter() { @Override @@ -1213,34 +1217,36 @@ public class FragmentAccount extends FragmentBase { // Consider previous check/save/delete as cancelled pbWait.setVisibility(View.GONE); - args.putLong("account", account == null ? -1 : account.id); + if (copy < 0) { + args.putLong("account", account == null ? -1 : account.id); - new SimpleTask>() { - @Override - protected List onExecute(Context context, Bundle args) { - long account = args.getLong("account"); + new SimpleTask>() { + @Override + protected List onExecute(Context context, Bundle args) { + long account = args.getLong("account"); - DB db = DB.getInstance(context); - List folders = db.folder().getFolders(account, false, true); + DB db = DB.getInstance(context); + List folders = db.folder().getFolders(account, false, true); - if (folders != null && folders.size() > 0) - Collections.sort(folders, folders.get(0).getComparator(null)); + if (folders != null && folders.size() > 0) + Collections.sort(folders, folders.get(0).getComparator(null)); - return folders; - } + return folders; + } - @Override - protected void onExecuted(Bundle args, List folders) { - if (folders == null) - folders = new ArrayList<>(); - setFolders(folders, account); - } + @Override + protected void onExecuted(Bundle args, List folders) { + if (folders == null) + folders = new ArrayList<>(); + setFolders(folders, account); + } - @Override - protected void onException(Bundle args, Throwable ex) { - Helper.unexpectedError(getFragmentManager(), ex); - } - }.execute(FragmentAccount.this, args, "account:folders"); + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(getFragmentManager(), ex); + } + }.execute(FragmentAccount.this, args, "account:folders"); + } } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index 9a95d61635..da2f4d74a6 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -124,6 +124,7 @@ public class FragmentIdentity extends FragmentBase { private Group grpAdvanced; private long id = -1; + private long copy = -1; private boolean saving = false; private int color = Color.TRANSPARENT; @@ -138,7 +139,10 @@ public class FragmentIdentity extends FragmentBase { // Get arguments Bundle args = getArguments(); - id = args.getLong("id", -1); + if (args.getBoolean("copy")) + copy = args.getLong("id", -1); + else + id = args.getLong("id", -1); } @Override @@ -826,7 +830,7 @@ public class FragmentIdentity extends FragmentBase { super.onActivityCreated(savedInstanceState); Bundle args = new Bundle(); - args.putLong("id", id); + args.putLong("id", copy < 0 ? id : copy); new SimpleTask() { @Override @@ -867,7 +871,7 @@ public class FragmentIdentity extends FragmentBase { color = (identity == null || identity.color == null ? Color.TRANSPARENT : identity.color); - if (identity == null) + if (identity == null || copy > 0) new SimpleTask() { @Override protected Integer onExecute(Context context, Bundle args) {