From deaa30a5f34c848122224c3c0fa59f7afb1765f7 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 5 Sep 2018 20:39:47 +0000 Subject: [PATCH] Fixes --- .../eu/faircode/email/FragmentAccount.java | 10 ++++----- .../eu/faircode/email/FragmentFolder.java | 10 ++++----- .../eu/faircode/email/FragmentIdentity.java | 22 ++++++++++++++----- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index 5e40611f..641c6e1a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -711,10 +711,14 @@ public class FragmentAccount extends FragmentEx { // Observe DB.getInstance(getContext()).account().liveAccount(id).observe(getViewLifecycleOwner(), new Observer() { - boolean once = false; + private boolean once = false; @Override public void onChanged(@Nullable EntityAccount account) { + if (once) + return; + once = true; + // Get providers List providers = Provider.loadProfiles(getContext()); providers.add(0, new Provider(getString(R.string.title_select))); @@ -725,10 +729,6 @@ public class FragmentAccount extends FragmentEx { spProvider.setAdapter(padapter); if (savedInstanceState == null) { - if (once) - return; - once = true; - if (account != null) { for (int pos = 2; pos < providers.size(); pos++) if (providers.get(pos).imap_host.equals(account.host)) { diff --git a/app/src/main/java/eu/faircode/email/FragmentFolder.java b/app/src/main/java/eu/faircode/email/FragmentFolder.java index aaf92679..441a1978 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolder.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolder.java @@ -146,7 +146,7 @@ public class FragmentFolder extends FragmentEx { // Observe DB.getInstance(getContext()).folder().liveFolder(id).observe(getViewLifecycleOwner(), new Observer() { - boolean once = false; + private boolean once = false; @Override public void onChanged(@Nullable EntityFolder folder) { @@ -155,11 +155,11 @@ public class FragmentFolder extends FragmentEx { return; } - if (savedInstanceState == null) { - if (once) - return; - once = true; + if (once) + return; + once = true; + if (savedInstanceState == null) { cbSynchronize.setChecked(folder.synchronize); cbUnified.setChecked(folder.unified); etAfter.setText(Integer.toString(folder.after)); diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index 2a81ea28..6dccc7e4 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -134,6 +134,12 @@ public class FragmentIdentity extends FragmentEx { Provider provider = (Provider) spProvider.getItemAtPosition(pos); if (provider.imap_host.equals(account.host) && provider.imap_port == account.port) { spProvider.setSelection(pos); + + // This is needed because the spinner might be invisible + etHost.setText(provider.smtp_host); + etPort.setText(Integer.toString(provider.smtp_port)); + cbStartTls.setChecked(provider.starttls); + break; } } @@ -396,15 +402,15 @@ public class FragmentIdentity extends FragmentEx { // Observe identity db.identity().liveIdentity(id).observe(getViewLifecycleOwner(), new Observer() { - boolean once = false; + private boolean once = false; @Override public void onChanged(@Nullable final EntityIdentity identity) { - if (savedInstanceState == null) { - if (once) - return; - once = true; + if (once) + return; + once = true; + if (savedInstanceState == null) { etName.setText(identity == null ? null : identity.name); etEmail.setText(identity == null ? null : identity.email); etReplyTo.setText(identity == null ? null : identity.replyto); @@ -433,8 +439,14 @@ public class FragmentIdentity extends FragmentEx { db.account().liveAccounts().removeObservers(getViewLifecycleOwner()); db.account().liveAccounts().observe(getViewLifecycleOwner(), new Observer>() { + private boolean once = false; + @Override public void onChanged(List accounts) { + if (once) + return; + once = true; + if (accounts == null) accounts = new ArrayList<>();