From 306f27ba54227daf8d6f63470828f48612a34e27 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 9 Mar 2021 12:00:00 +0100 Subject: [PATCH] Limit number of addresses in send dialog --- .../eu/faircode/email/FragmentCompose.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 2e6cd7d6a0..6b5e0aa145 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -282,6 +282,7 @@ public class FragmentCompose extends FragmentBase { private static final int REDUCED_IMAGE_SIZE = 1440; // pixels private static final int REDUCED_IMAGE_QUALITY = 90; // percent + private static final int MAX_SHOW_RECIPIENTS = 5; private static final int RECIPIENTS_WARNING = 10; private static final int MAX_QUOTE_LEVEL = 5; @@ -6008,14 +6009,25 @@ public class FragmentCompose extends FragmentBase { boolean dsn = (draft.dsn != null && !EntityMessage.DSN_NONE.equals(draft.dsn)); int to = (draft.to == null ? 0 : draft.to.length); - int cc = (draft.cc == null ? 0 : draft.cc.length) + (draft.bcc == null ? 0 : draft.bcc.length); - if (cc == 0) - tvTo.setText(MessageHelper.formatAddressesShort(draft.to)); + int extra = (draft.cc == null ? 0 : draft.cc.length) + (draft.bcc == null ? 0 : draft.bcc.length); + + List
t = new ArrayList<>(); + if (draft.to != null) + if (to <= MAX_SHOW_RECIPIENTS) + t.addAll(Arrays.asList(draft.to)); + else { + t.addAll((Arrays.asList(Arrays.copyOf(draft.to, MAX_SHOW_RECIPIENTS)))); + extra += draft.to.length - MAX_SHOW_RECIPIENTS; + } + Address[] tos = t.toArray(new Address[0]); + + if (extra == 0) + tvTo.setText(MessageHelper.formatAddressesShort(tos)); else tvTo.setText(getString(R.string.title_name_plus, - MessageHelper.formatAddressesShort(draft.to), cc)); + MessageHelper.formatAddressesShort(tos), extra)); tvTo.setTextColor(Helper.resolveColor(getContext(), - to + cc > RECIPIENTS_WARNING ? R.attr.colorWarning : android.R.attr.textColorPrimary)); + to + extra > RECIPIENTS_WARNING ? R.attr.colorWarning : android.R.attr.textColorPrimary)); tvVia.setText(draft.identityEmail); cbPlainOnly.setChecked(draft.plain_only != null && draft.plain_only && !dsn);