From e59394a1563b4c5242553162f16a082de1af4eda Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 20 Feb 2019 16:07:17 +0000 Subject: [PATCH] Show when a provider does not support UTF-8 --- .../java/eu/faircode/email/FragmentAccount.java | 14 ++++++++++++++ app/src/main/res/layout/fragment_account.xml | 13 ++++++++++++- app/src/main/res/values/strings.xml | 1 + 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index b77dd95f64..f2e86de3d2 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -63,6 +63,7 @@ import com.google.android.material.snackbar.Snackbar; import com.google.android.material.textfield.TextInputLayout; import com.sun.mail.imap.IMAPFolder; import com.sun.mail.imap.IMAPStore; +import com.sun.mail.imap.protocol.IMAPProtocol; import java.io.IOException; import java.net.UnknownHostException; @@ -119,6 +120,7 @@ public class FragmentAccount extends FragmentBase { private TextView tvIdle; private TextView tvMove; private TextView tvUidPlus; + private TextView tvUtf8; private ArrayAdapter adapter; private Spinner spDrafts; @@ -197,6 +199,7 @@ public class FragmentAccount extends FragmentBase { tvIdle = view.findViewById(R.id.tvIdle); tvMove = view.findViewById(R.id.tvMove); tvUidPlus = view.findViewById(R.id.tvUidPlus); + tvUtf8 = view.findViewById(R.id.tvUtf8); spDrafts = view.findViewById(R.id.spDrafts); spSent = view.findViewById(R.id.spSent); @@ -520,6 +523,7 @@ public class FragmentAccount extends FragmentBase { tvIdle.setVisibility(View.GONE); tvMove.setVisibility(View.GONE); tvUidPlus.setVisibility(View.GONE); + tvUtf8.setVisibility(View.GONE); grpFolders.setVisibility(View.GONE); tvError.setVisibility(View.GONE); } @@ -643,6 +647,14 @@ public class FragmentAccount extends FragmentBase { junk = true; } + if (EntityFolder.INBOX.equals(type)) + result.utf8 = (Boolean) ((IMAPFolder) ifolder).doCommand(new IMAPFolder.ProtocolCommand() { + @Override + public Object doCommand(IMAPProtocol protocol) { + return protocol.supportsUtf8(); + } + }); + Log.i(folder.name + " id=" + folder.id + " type=" + folder.type + " attr=" + TextUtils.join(",", attrs)); } @@ -678,6 +690,7 @@ public class FragmentAccount extends FragmentBase { tvIdle.setVisibility(result.idle ? View.GONE : View.VISIBLE); tvMove.setVisibility(result.move ? View.GONE : View.VISIBLE); tvUidPlus.setVisibility(result.uidplus ? View.GONE : View.VISIBLE); + tvUtf8.setVisibility(result.utf8 == null || result.utf8 ? View.GONE : View.VISIBLE); setFolders(result.folders, result.account); @@ -1459,5 +1472,6 @@ public class FragmentAccount extends FragmentBase { boolean idle; boolean move; boolean uidplus; + Boolean utf8; } } diff --git a/app/src/main/res/layout/fragment_account.xml b/app/src/main/res/layout/fragment_account.xml index 63c9efad91..194a3eaaae 100644 --- a/app/src/main/res/layout/fragment_account.xml +++ b/app/src/main/res/layout/fragment_account.xml @@ -486,6 +486,17 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tvMove" /> + + + app:layout_constraintTop_toBottomOf="@id/tvUtf8" /> This provider does not support push messages. This will delay reception of new messages and increase battery usage. This provider does not support MOVE This provider does not support UIDPLUS + This provider does not support UTF-8 Synchronization errors since %1$s Synchronization is disabled A drafts folder is required to send messages