From 1b8c5314196da82775854f52f12ed50089469cf3 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 11 Mar 2019 16:02:40 +0000 Subject: [PATCH] Reordered message menu --- .idea/gradle.xml | 10 +- .../eu/faircode/email/AdapterMessage.java | 288 +++++++++--------- app/src/main/res/menu/menu_message.xml | 16 +- 3 files changed, 159 insertions(+), 155 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 2996d53125..23156c1693 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -3,11 +3,15 @@ diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index b67eb6c153..3685f7b807 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -2120,6 +2120,13 @@ public class AdapterMessage extends RecyclerView.Adapter() { + @Override + protected EntityFolder onExecute(Context context, Bundle args) { + EntityMessage message = (EntityMessage) args.getSerializable("message"); + return DB.getInstance(context).folder().getFolder(message.folder); + } + + @Override + protected void onExecuted(final Bundle args, EntityFolder folder) { + EntityMessage message = (EntityMessage) args.getSerializable("message"); + + List keywords = Arrays.asList(message.keywords); + + final List items = new ArrayList<>(keywords); + for (String keyword : folder.keywords) + if (!items.contains(keyword)) + items.add(keyword); + + Collections.sort(items); + + final boolean selected[] = new boolean[items.size()]; + final boolean dirty[] = new boolean[items.size()]; + for (int i = 0; i < selected.length; i++) { + selected[i] = keywords.contains(items.get(i)); + dirty[i] = false; + } + + new DialogBuilderLifecycle(context, owner) + .setTitle(R.string.title_manage_keywords) + .setMultiChoiceItems(items.toArray(new String[0]), selected, new DialogInterface.OnMultiChoiceClickListener() { + @Override + public void onClick(DialogInterface dialog, int which, boolean isChecked) { + dirty[which] = true; + } + }) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + args.putStringArray("keywords", items.toArray(new String[0])); + args.putBooleanArray("selected", selected); + args.putBooleanArray("dirty", dirty); + + new SimpleTask() { + @Override + protected Void onExecute(Context context, Bundle args) { + EntityMessage message = (EntityMessage) args.getSerializable("message"); + String[] keywords = args.getStringArray("keywords"); + boolean[] selected = args.getBooleanArray("selected"); + boolean[] dirty = args.getBooleanArray("dirty"); + + DB db = DB.getInstance(context); + + try { + db.beginTransaction(); + + for (int i = 0; i < selected.length; i++) + if (dirty[i]) + EntityOperation.queue(context, db, message, EntityOperation.KEYWORD, keywords[i], selected[i]); + + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + + return null; + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(context, owner, ex); + } + }.execute(context, owner, args, "message:keywords:managa"); + } + }) + .setNeutralButton(R.string.title_add, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + View view = LayoutInflater.from(context).inflate(R.layout.dialog_keyword, null); + final EditText etKeyword = view.findViewById(R.id.etKeyword); + etKeyword.setText(null); + new DialogBuilderLifecycle(context, owner) + .setView(view) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String keyword = Helper.sanitizeKeyword(etKeyword.getText().toString()); + if (!TextUtils.isEmpty(keyword)) { + args.putString("keyword", keyword); + + new SimpleTask() { + @Override + protected Void onExecute(Context context, Bundle args) { + EntityMessage message = (EntityMessage) args.getSerializable("message"); + String keyword = args.getString("keyword"); + + DB db = DB.getInstance(context); + EntityOperation.queue(context, db, message, EntityOperation.KEYWORD, keyword, true); + + return null; + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(context, owner, ex); + } + }.execute(context, owner, args, "message:keyword:add"); + } + } + }).show(); + } + }) + .show(); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(context, owner, ex); + } + }.execute(context, owner, args, "message:keywords"); + } + private void onMenuShare(ActionData data) { Bundle args = new Bundle(); args.putLong("id", data.message.id); @@ -2340,144 +2478,6 @@ public class AdapterMessage extends RecyclerView.Adapter() { - @Override - protected EntityFolder onExecute(Context context, Bundle args) { - EntityMessage message = (EntityMessage) args.getSerializable("message"); - return DB.getInstance(context).folder().getFolder(message.folder); - } - - @Override - protected void onExecuted(final Bundle args, EntityFolder folder) { - EntityMessage message = (EntityMessage) args.getSerializable("message"); - - List keywords = Arrays.asList(message.keywords); - - final List items = new ArrayList<>(keywords); - for (String keyword : folder.keywords) - if (!items.contains(keyword)) - items.add(keyword); - - Collections.sort(items); - - final boolean selected[] = new boolean[items.size()]; - final boolean dirty[] = new boolean[items.size()]; - for (int i = 0; i < selected.length; i++) { - selected[i] = keywords.contains(items.get(i)); - dirty[i] = false; - } - - new DialogBuilderLifecycle(context, owner) - .setTitle(R.string.title_manage_keywords) - .setMultiChoiceItems(items.toArray(new String[0]), selected, new DialogInterface.OnMultiChoiceClickListener() { - @Override - public void onClick(DialogInterface dialog, int which, boolean isChecked) { - dirty[which] = true; - } - }) - .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - args.putStringArray("keywords", items.toArray(new String[0])); - args.putBooleanArray("selected", selected); - args.putBooleanArray("dirty", dirty); - - new SimpleTask() { - @Override - protected Void onExecute(Context context, Bundle args) { - EntityMessage message = (EntityMessage) args.getSerializable("message"); - String[] keywords = args.getStringArray("keywords"); - boolean[] selected = args.getBooleanArray("selected"); - boolean[] dirty = args.getBooleanArray("dirty"); - - DB db = DB.getInstance(context); - - try { - db.beginTransaction(); - - for (int i = 0; i < selected.length; i++) - if (dirty[i]) - EntityOperation.queue(context, db, message, EntityOperation.KEYWORD, keywords[i], selected[i]); - - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); - } - - return null; - } - - @Override - protected void onException(Bundle args, Throwable ex) { - Helper.unexpectedError(context, owner, ex); - } - }.execute(context, owner, args, "message:keywords:managa"); - } - }) - .setNeutralButton(R.string.title_add, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - View view = LayoutInflater.from(context).inflate(R.layout.dialog_keyword, null); - final EditText etKeyword = view.findViewById(R.id.etKeyword); - etKeyword.setText(null); - new DialogBuilderLifecycle(context, owner) - .setView(view) - .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - String keyword = Helper.sanitizeKeyword(etKeyword.getText().toString()); - if (!TextUtils.isEmpty(keyword)) { - args.putString("keyword", keyword); - - new SimpleTask() { - @Override - protected Void onExecute(Context context, Bundle args) { - EntityMessage message = (EntityMessage) args.getSerializable("message"); - String keyword = args.getString("keyword"); - - DB db = DB.getInstance(context); - EntityOperation.queue(context, db, message, EntityOperation.KEYWORD, keyword, true); - - return null; - } - - @Override - protected void onException(Bundle args, Throwable ex) { - Helper.unexpectedError(context, owner, ex); - } - }.execute(context, owner, args, "message:keyword:add"); - } - } - }).show(); - } - }) - .show(); - } - - @Override - protected void onException(Bundle args, Throwable ex) { - Helper.unexpectedError(context, owner, ex); - } - }.execute(context, owner, args, "message:keywords"); - } - - private void onMenuDecrypt(ActionData data) { - LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(context); - lbm.sendBroadcast( - new Intent(ActivityView.ACTION_DECRYPT) - .putExtra("id", data.message.id)); - } - private void onActionMore(final ActionData data) { boolean show_headers = properties.getValue("headers", data.message.id); @@ -2536,9 +2536,15 @@ public class AdapterMessage extends RecyclerView.Adapter + + + + @@ -44,12 +52,4 @@ - - - -