From 9819b658bb8c4dad68721780fce580b1c47a99f9 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 15 Aug 2018 16:53:34 +0000 Subject: [PATCH] Fill forms only once - This is simpler than using SimpleTask for a one shot get - Account, identity and folder are update on state change / error --- .../eu/faircode/email/FragmentAccount.java | 20 ++++++++----- .../eu/faircode/email/FragmentFolder.java | 10 +++++-- .../eu/faircode/email/FragmentIdentity.java | 30 +++++++++++-------- 3 files changed, 39 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index da4d8049ee..8d8c497895 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -596,6 +596,8 @@ public class FragmentAccount extends FragmentEx { // Observe DB.getInstance(getContext()).account().liveAccount(id).observe(getViewLifecycleOwner(), new Observer() { + boolean once = false; + @Override public void onChanged(@Nullable EntityAccount account) { // Get providers @@ -607,13 +609,17 @@ public class FragmentAccount extends FragmentEx { spProvider.setAdapter(padapter); if (savedInstanceState == null) { - etName.setText(account == null ? null : account.name); - etHost.setText(account == null ? null : account.host); - etPort.setText(account == null ? null : Long.toString(account.port)); - etUser.setText(account == null ? null : account.user); - tilPassword.getEditText().setText(account == null ? null : account.password); - cbSynchronize.setChecked(account == null ? true : account.synchronize); - cbPrimary.setChecked(account == null ? true : account.primary); + if (!once) { + once = true; + + etName.setText(account == null ? null : account.name); + etHost.setText(account == null ? null : account.host); + etPort.setText(account == null ? null : Long.toString(account.port)); + etUser.setText(account == null ? null : account.user); + tilPassword.getEditText().setText(account == null ? null : account.password); + cbSynchronize.setChecked(account == null ? true : account.synchronize); + cbPrimary.setChecked(account == null ? true : account.primary); + } } else { int provider = savedInstanceState.getInt("provider"); spProvider.setTag(provider); diff --git a/app/src/main/java/eu/faircode/email/FragmentFolder.java b/app/src/main/java/eu/faircode/email/FragmentFolder.java index 54bc478aa7..5153da1d26 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolder.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolder.java @@ -148,6 +148,8 @@ public class FragmentFolder extends FragmentEx { // Observe DB.getInstance(getContext()).folder().liveFolder(id).observe(getViewLifecycleOwner(), new Observer() { + boolean once = false; + @Override public void onChanged(@Nullable EntityFolder folder) { if (folder == null) { @@ -156,8 +158,12 @@ public class FragmentFolder extends FragmentEx { } if (savedInstanceState == null) { - cbSynchronize.setChecked(folder.synchronize); - etAfter.setText(Integer.toString(folder.after)); + if (!once) { + once = true; + + cbSynchronize.setChecked(folder.synchronize); + etAfter.setText(Integer.toString(folder.after)); + } } pbWait.setVisibility(View.GONE); diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index 468d73748a..d4a783075c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -393,21 +393,27 @@ public class FragmentIdentity extends FragmentEx { // Observe identity db.identity().liveIdentity(id).observe(getViewLifecycleOwner(), new Observer() { + boolean once = false; + @Override public void onChanged(@Nullable final EntityIdentity identity) { if (savedInstanceState == null) { - etName.setText(identity == null ? null : identity.name); - etEmail.setText(identity == null ? null : identity.email); - etReplyTo.setText(identity == null ? null : identity.replyto); - etHost.setText(identity == null ? null : identity.host); - cbStartTls.setChecked(identity == null ? false : identity.starttls); - etPort.setText(identity == null ? null : Long.toString(identity.port)); - etUser.setText(identity == null ? null : identity.user); - tilPassword.getEditText().setText(identity == null ? null : identity.password); - cbSynchronize.setChecked(identity == null ? true : identity.synchronize); - cbPrimary.setChecked(identity == null ? true : identity.primary); - - etName.requestFocus(); + if (!once) { + once = true; + + etName.setText(identity == null ? null : identity.name); + etEmail.setText(identity == null ? null : identity.email); + etReplyTo.setText(identity == null ? null : identity.replyto); + etHost.setText(identity == null ? null : identity.host); + cbStartTls.setChecked(identity == null ? false : identity.starttls); + etPort.setText(identity == null ? null : Long.toString(identity.port)); + etUser.setText(identity == null ? null : identity.user); + tilPassword.getEditText().setText(identity == null ? null : identity.password); + cbSynchronize.setChecked(identity == null ? true : identity.synchronize); + cbPrimary.setChecked(identity == null ? true : identity.primary); + + etName.requestFocus(); + } } else tilPassword.getEditText().setText(savedInstanceState.getString("password"));