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
pull/50/head
M66B 7 years ago
parent 7d1bc4a7f3
commit 9819b658bb

@ -596,6 +596,8 @@ public class FragmentAccount extends FragmentEx {
// Observe // Observe
DB.getInstance(getContext()).account().liveAccount(id).observe(getViewLifecycleOwner(), new Observer<EntityAccount>() { DB.getInstance(getContext()).account().liveAccount(id).observe(getViewLifecycleOwner(), new Observer<EntityAccount>() {
boolean once = false;
@Override @Override
public void onChanged(@Nullable EntityAccount account) { public void onChanged(@Nullable EntityAccount account) {
// Get providers // Get providers
@ -607,13 +609,17 @@ public class FragmentAccount extends FragmentEx {
spProvider.setAdapter(padapter); spProvider.setAdapter(padapter);
if (savedInstanceState == null) { if (savedInstanceState == null) {
etName.setText(account == null ? null : account.name); if (!once) {
etHost.setText(account == null ? null : account.host); once = true;
etPort.setText(account == null ? null : Long.toString(account.port));
etUser.setText(account == null ? null : account.user); etName.setText(account == null ? null : account.name);
tilPassword.getEditText().setText(account == null ? null : account.password); etHost.setText(account == null ? null : account.host);
cbSynchronize.setChecked(account == null ? true : account.synchronize); etPort.setText(account == null ? null : Long.toString(account.port));
cbPrimary.setChecked(account == null ? true : account.primary); 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 { } else {
int provider = savedInstanceState.getInt("provider"); int provider = savedInstanceState.getInt("provider");
spProvider.setTag(provider); spProvider.setTag(provider);

@ -148,6 +148,8 @@ public class FragmentFolder extends FragmentEx {
// Observe // Observe
DB.getInstance(getContext()).folder().liveFolder(id).observe(getViewLifecycleOwner(), new Observer<EntityFolder>() { DB.getInstance(getContext()).folder().liveFolder(id).observe(getViewLifecycleOwner(), new Observer<EntityFolder>() {
boolean once = false;
@Override @Override
public void onChanged(@Nullable EntityFolder folder) { public void onChanged(@Nullable EntityFolder folder) {
if (folder == null) { if (folder == null) {
@ -156,8 +158,12 @@ public class FragmentFolder extends FragmentEx {
} }
if (savedInstanceState == null) { if (savedInstanceState == null) {
cbSynchronize.setChecked(folder.synchronize); if (!once) {
etAfter.setText(Integer.toString(folder.after)); once = true;
cbSynchronize.setChecked(folder.synchronize);
etAfter.setText(Integer.toString(folder.after));
}
} }
pbWait.setVisibility(View.GONE); pbWait.setVisibility(View.GONE);

@ -393,21 +393,27 @@ public class FragmentIdentity extends FragmentEx {
// Observe identity // Observe identity
db.identity().liveIdentity(id).observe(getViewLifecycleOwner(), new Observer<EntityIdentity>() { db.identity().liveIdentity(id).observe(getViewLifecycleOwner(), new Observer<EntityIdentity>() {
boolean once = false;
@Override @Override
public void onChanged(@Nullable final EntityIdentity identity) { public void onChanged(@Nullable final EntityIdentity identity) {
if (savedInstanceState == null) { if (savedInstanceState == null) {
etName.setText(identity == null ? null : identity.name); if (!once) {
etEmail.setText(identity == null ? null : identity.email); once = true;
etReplyTo.setText(identity == null ? null : identity.replyto);
etHost.setText(identity == null ? null : identity.host); etName.setText(identity == null ? null : identity.name);
cbStartTls.setChecked(identity == null ? false : identity.starttls); etEmail.setText(identity == null ? null : identity.email);
etPort.setText(identity == null ? null : Long.toString(identity.port)); etReplyTo.setText(identity == null ? null : identity.replyto);
etUser.setText(identity == null ? null : identity.user); etHost.setText(identity == null ? null : identity.host);
tilPassword.getEditText().setText(identity == null ? null : identity.password); cbStartTls.setChecked(identity == null ? false : identity.starttls);
cbSynchronize.setChecked(identity == null ? true : identity.synchronize); etPort.setText(identity == null ? null : Long.toString(identity.port));
cbPrimary.setChecked(identity == null ? true : identity.primary); etUser.setText(identity == null ? null : identity.user);
tilPassword.getEditText().setText(identity == null ? null : identity.password);
etName.requestFocus(); cbSynchronize.setChecked(identity == null ? true : identity.synchronize);
cbPrimary.setChecked(identity == null ? true : identity.primary);
etName.requestFocus();
}
} else } else
tilPassword.getEditText().setText(savedInstanceState.getString("password")); tilPassword.getEditText().setText(savedInstanceState.getString("password"));

Loading…
Cancel
Save