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,6 +609,9 @@ public class FragmentAccount extends FragmentEx {
spProvider.setAdapter(padapter); spProvider.setAdapter(padapter);
if (savedInstanceState == null) { if (savedInstanceState == null) {
if (!once) {
once = true;
etName.setText(account == null ? null : account.name); etName.setText(account == null ? null : account.name);
etHost.setText(account == null ? null : account.host); etHost.setText(account == null ? null : account.host);
etPort.setText(account == null ? null : Long.toString(account.port)); etPort.setText(account == null ? null : Long.toString(account.port));
@ -614,6 +619,7 @@ public class FragmentAccount extends FragmentEx {
tilPassword.getEditText().setText(account == null ? null : account.password); tilPassword.getEditText().setText(account == null ? null : account.password);
cbSynchronize.setChecked(account == null ? true : account.synchronize); cbSynchronize.setChecked(account == null ? true : account.synchronize);
cbPrimary.setChecked(account == null ? true : account.primary); 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,9 +158,13 @@ public class FragmentFolder extends FragmentEx {
} }
if (savedInstanceState == null) { if (savedInstanceState == null) {
if (!once) {
once = true;
cbSynchronize.setChecked(folder.synchronize); cbSynchronize.setChecked(folder.synchronize);
etAfter.setText(Integer.toString(folder.after)); etAfter.setText(Integer.toString(folder.after));
} }
}
pbWait.setVisibility(View.GONE); pbWait.setVisibility(View.GONE);
Helper.setViewsEnabled(view, true); Helper.setViewsEnabled(view, true);

@ -393,9 +393,14 @@ 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) {
if (!once) {
once = true;
etName.setText(identity == null ? null : identity.name); etName.setText(identity == null ? null : identity.name);
etEmail.setText(identity == null ? null : identity.email); etEmail.setText(identity == null ? null : identity.email);
etReplyTo.setText(identity == null ? null : identity.replyto); etReplyTo.setText(identity == null ? null : identity.replyto);
@ -408,6 +413,7 @@ public class FragmentIdentity extends FragmentEx {
cbPrimary.setChecked(identity == null ? true : identity.primary); cbPrimary.setChecked(identity == null ? true : identity.primary);
etName.requestFocus(); etName.requestFocus();
}
} else } else
tilPassword.getEditText().setText(savedInstanceState.getString("password")); tilPassword.getEditText().setText(savedInstanceState.getString("password"));

Loading…
Cancel
Save