From ae363598051d94f8acaa4f00ecae38e2eb59099d Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 18 Jan 2022 12:14:50 +0100 Subject: [PATCH] Added displaying and sending sensitivity --- .../eu/faircode/email/AdapterMessage.java | 22 ++++++ .../java/eu/faircode/email/DaoMessage.java | 3 + .../eu/faircode/email/FragmentCompose.java | 48 ++++++++++++ .../java/eu/faircode/email/MessageHelper.java | 8 ++ app/src/main/res/drawable/sensitivity.xml | 12 +++ .../main/res/drawable/twotone_business_24.xml | 15 ++++ app/src/main/res/layout/dialog_send.xml | 25 ++++++- .../res/layout/fragment_legend_messages.xml | 74 ++++++++++++++++++- .../res/layout/include_message_compact.xml | 14 +++- .../res/layout/include_message_normal.xml | 14 +++- app/src/main/res/values/strings.xml | 4 + 11 files changed, 235 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable/sensitivity.xml create mode 100644 app/src/main/res/drawable/twotone_business_24.xml diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 62d930c2ef..a5b8525bdd 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -340,6 +340,7 @@ public class AdapterMessage extends RecyclerView.Adapter 0) + ToastEx.makeText(context, resid, Toast.LENGTH_LONG).show(); + } + private void onShowSnoozed(TupleMessageEx message) { if (message.ui_snoozed != null && message.ui_snoozed != Long.MAX_VALUE) { DateFormat DTF = Helper.getDateTimeInstance(context, SimpleDateFormat.MEDIUM, SimpleDateFormat.SHORT); diff --git a/app/src/main/java/eu/faircode/email/DaoMessage.java b/app/src/main/java/eu/faircode/email/DaoMessage.java index 639b7b23ae..081991cd89 100644 --- a/app/src/main/java/eu/faircode/email/DaoMessage.java +++ b/app/src/main/java/eu/faircode/email/DaoMessage.java @@ -677,6 +677,9 @@ public interface DaoMessage { @Query("UPDATE message SET priority = :priority WHERE id = :id AND NOT (priority IS :priority)") int setMessagePriority(long id, Integer priority); + @Query("UPDATE message SET sensitivity = :sensitivity WHERE id = :id AND NOT (sensitivity IS :sensitivity)") + int setMessageSensitivity(long id, Integer sensitivity); + @Query("UPDATE message SET importance = :importance WHERE id = :id AND NOT (importance IS :importance)") int setMessageImportance(long id, Integer importance); diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index af981eb854..b76a37f07b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -6959,6 +6959,7 @@ public class FragmentCompose extends FragmentBase { final Spinner spEncrypt = dview.findViewById(R.id.spEncrypt); final ImageButton ibEncryption = dview.findViewById(R.id.ibEncryption); final Spinner spPriority = dview.findViewById(R.id.spPriority); + final Spinner spSensitivity = dview.findViewById(R.id.spSensitivity); final TextView tvSendAt = dview.findViewById(R.id.tvSendAt); final ImageButton ibSendAt = dview.findViewById(R.id.ibSendAt); final CheckBox cbArchive = dview.findViewById(R.id.cbArchive); @@ -7007,6 +7008,8 @@ public class FragmentCompose extends FragmentBase { spEncrypt.setSelection(0); spPriority.setTag(1); spPriority.setSelection(1); + spSensitivity.setTag(0); + spSensitivity.setSelection(0); tvSendAt.setText(null); cbArchive.setEnabled(false); cbNotAgain.setChecked(!send_dialog); @@ -7219,6 +7222,47 @@ public class FragmentCompose extends FragmentBase { } }); + spSensitivity.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + int last = (int) spSensitivity.getTag(); + if (last != position) { + spSensitivity.setTag(position); + setSensitivity(position); + } + } + + @Override + public void onNothingSelected(AdapterView parent) { + spSensitivity.setTag(0); + setSensitivity(0); + } + + private void setSensitivity(int sensitivity) { + Bundle args = new Bundle(); + args.putLong("id", id); + args.putInt("sensitivity", sensitivity); + + new SimpleTask() { + @Override + protected Void onExecute(Context context, Bundle args) { + long id = args.getLong("id"); + int sensitivity = args.getInt("sensitivity"); + + DB db = DB.getInstance(context); + db.message().setMessageSensitivity(id, sensitivity < 1 ? null : sensitivity); + + return null; + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.unexpectedError(getParentFragmentManager(), ex); + } + }.setExecutor(executor).execute(FragmentDialogSend.this, args, "compose:sensitivity"); + } + }); + ibSendAt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -7289,6 +7333,10 @@ public class FragmentCompose extends FragmentBase { spPriority.setTag(priority); spPriority.setSelection(priority); + int sensitivity = (draft.sensitivity == null ? 0 : draft.sensitivity); + spSensitivity.setTag(sensitivity); + spSensitivity.setSelection(sensitivity); + if (draft.ui_snoozed == null) { if (send_delayed == 0) tvSendAt.setText(getString(R.string.title_now)); diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 3475fadebf..6008e3474d 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -283,6 +283,14 @@ public class MessageHelper { imessage.addHeader("X-MSMail-Priority", "High"); } + // Sensitivity + if (EntityMessage.SENSITIVITY_PERSONAL.equals(message.sensitivity)) + imessage.addHeader("Sensitivity", "Personal"); + else if (EntityMessage.SENSITIVITY_PRIVATE.equals(message.sensitivity)) + imessage.addHeader("Sensitivity", "Private"); + else if (EntityMessage.SENSITIVITY_CONFIDENTIAL.equals(message.sensitivity)) + imessage.addHeader("Sensitivity", "Company-Confidential"); + // References if (message.references != null) { // https://tools.ietf.org/html/rfc5322#section-2.1.1 diff --git a/app/src/main/res/drawable/sensitivity.xml b/app/src/main/res/drawable/sensitivity.xml new file mode 100644 index 0000000000..23f28a3307 --- /dev/null +++ b/app/src/main/res/drawable/sensitivity.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/app/src/main/res/drawable/twotone_business_24.xml b/app/src/main/res/drawable/twotone_business_24.xml new file mode 100644 index 0000000000..3a56aa8557 --- /dev/null +++ b/app/src/main/res/drawable/twotone_business_24.xml @@ -0,0 +1,15 @@ + + + + diff --git a/app/src/main/res/layout/dialog_send.xml b/app/src/main/res/layout/dialog_send.xml index 1163fb438d..3d93626232 100644 --- a/app/src/main/res/layout/dialog_send.xml +++ b/app/src/main/res/layout/dialog_send.xml @@ -391,6 +391,29 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvPriority" /> + + + + + app:layout_constraintTop_toBottomOf="@+id/spSensitivity" /> + + + + + + + + + + + + + app:layout_constraintTop_toBottomOf="@id/tvConfidentialSensitivity" /> + + diff --git a/app/src/main/res/layout/include_message_normal.xml b/app/src/main/res/layout/include_message_normal.xml index 080c794839..be9ff1bbaa 100644 --- a/app/src/main/res/layout/include_message_normal.xml +++ b/app/src/main/res/layout/include_message_normal.xml @@ -93,13 +93,25 @@ app:srcCompat="@drawable/priority" app:tint="?attr/colorAccent" /> + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2876240d3c..88186e44ca 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1249,6 +1249,7 @@ Archive replied message Encryption Priority + Sensitivity No server found at \'%1$s\' Style @@ -1606,6 +1607,9 @@ Has draft Has high priority Has low priority + Is personal + Is private + Is confidential Is important Is not important Is signed