Merge "Fix cancel handling in account settings screens" into ub-mail-master

This commit is contained in:
Tony Mantler 2014-04-25 00:41:28 +00:00 committed by Android (Google) Code Review
commit 2ac92114ad
4 changed files with 35 additions and 10 deletions

View File

@ -47,6 +47,8 @@ public abstract class AccountServerBaseFragment extends AccountSetupFragment
private static final String BUNDLE_KEY_SETTINGS = "AccountServerBaseFragment.settings"; private static final String BUNDLE_KEY_SETTINGS = "AccountServerBaseFragment.settings";
private static final String BUNDLE_KEY_ACTIVITY_TITLE = "AccountServerBaseFragment.title"; private static final String BUNDLE_KEY_ACTIVITY_TITLE = "AccountServerBaseFragment.title";
private static final String BUNDLE_KEY_SAVING = "AccountServerBaseFragment.saving"; private static final String BUNDLE_KEY_SAVING = "AccountServerBaseFragment.saving";
private static final String BUNDLE_KEY_SENDAUTH = "AccountServerBaseFragment.sendAuth";
private static final String BUNDLE_KEY_RECVAUTH = "AccountServerBaseFragment.recvAuth";
protected Context mAppContext; protected Context mAppContext;
/** /**
@ -112,6 +114,8 @@ public abstract class AccountServerBaseFragment extends AccountSetupFragment
if (savedInstanceState != null) { if (savedInstanceState != null) {
mSettingsMode = savedInstanceState.getBoolean(BUNDLE_KEY_SETTINGS); mSettingsMode = savedInstanceState.getBoolean(BUNDLE_KEY_SETTINGS);
mSaving = savedInstanceState.getBoolean(BUNDLE_KEY_SAVING); mSaving = savedInstanceState.getBoolean(BUNDLE_KEY_SAVING);
mLoadedSendAuth = savedInstanceState.getParcelable(BUNDLE_KEY_SENDAUTH);
mLoadedRecvAuth = savedInstanceState.getParcelable(BUNDLE_KEY_RECVAUTH);
} else if (getArguments() != null) { } else if (getArguments() != null) {
mSettingsMode = getArguments().getBoolean(BUNDLE_KEY_SETTINGS); mSettingsMode = getArguments().getBoolean(BUNDLE_KEY_SETTINGS);
} }
@ -160,6 +164,8 @@ public abstract class AccountServerBaseFragment extends AccountSetupFragment
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
outState.putString(BUNDLE_KEY_ACTIVITY_TITLE, (String) getActivity().getTitle()); outState.putString(BUNDLE_KEY_ACTIVITY_TITLE, (String) getActivity().getTitle());
outState.putBoolean(BUNDLE_KEY_SETTINGS, mSettingsMode); outState.putBoolean(BUNDLE_KEY_SETTINGS, mSettingsMode);
outState.putParcelable(BUNDLE_KEY_SENDAUTH, mLoadedSendAuth);
outState.putParcelable(BUNDLE_KEY_RECVAUTH, mLoadedRecvAuth);
} }
@Override @Override
@ -178,6 +184,7 @@ public abstract class AccountServerBaseFragment extends AccountSetupFragment
public void onClick(View v) { public void onClick(View v) {
final int viewId = v.getId(); final int viewId = v.getId();
if (viewId == R.id.cancel) { if (viewId == R.id.cancel) {
collectUserInputInternal();
getActivity().onBackPressed(); getActivity().onBackPressed();
} else if (viewId == R.id.done) { } else if (viewId == R.id.done) {
collectUserInput(); collectUserInput();
@ -280,5 +287,11 @@ public abstract class AccountServerBaseFragment extends AccountSetupFragment
/** /**
* Collect the user's input into the setup data object. Concrete classes must implement. * Collect the user's input into the setup data object. Concrete classes must implement.
*/ */
public abstract void collectUserInput(); public abstract int collectUserInputInternal();
public void collectUserInput() {
final int phase = collectUserInputInternal();
final Callback callback = (Callback) getActivity();
callback.onAccountServerUIComplete(phase);
}
} }

View File

@ -597,7 +597,7 @@ public class AccountSettings extends PreferenceActivity implements
* Forcefully go backward in the stack. This may potentially discard unsaved settings. * Forcefully go backward in the stack. This may potentially discard unsaved settings.
*/ */
private void forceBack() { private void forceBack() {
onBackPressed(); super.onBackPressed();
} }
@Override @Override

View File

@ -22,6 +22,7 @@ import android.content.Intent;
import android.content.Loader; import android.content.Loader;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Parcel;
import android.text.Editable; import android.text.Editable;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.TextWatcher; import android.text.TextWatcher;
@ -398,7 +399,13 @@ public class AccountSetupIncomingFragment extends AccountServerBaseFragment
mClientCertificateSelector.setCertificate(recvAuth.mClientCertAlias); mClientCertificateSelector.setCertificate(recvAuth.mClientCertAlias);
} }
mLoadedRecvAuth = recvAuth; // Make a deep copy of the HostAuth to compare with later
final Parcel parcel = Parcel.obtain();
parcel.writeParcelable(recvAuth, recvAuth.describeContents());
parcel.setDataPosition(0);
mLoadedRecvAuth = parcel.readParcelable(HostAuth.class.getClassLoader());
parcel.recycle();
mLoaded = true; mLoaded = true;
validateFields(); validateFields();
} }
@ -530,7 +537,7 @@ public class AccountSetupIncomingFragment extends AccountServerBaseFragment
* Entry point from Activity, when "next" button is clicked * Entry point from Activity, when "next" button is clicked
*/ */
@Override @Override
public void collectUserInput() { public int collectUserInputInternal() {
final Account account = mSetupData.getAccount(); final Account account = mSetupData.getAccount();
// Make sure delete policy is an valid option before using it; otherwise, the results are // Make sure delete policy is an valid option before using it; otherwise, the results are
@ -568,8 +575,7 @@ public class AccountSetupIncomingFragment extends AccountServerBaseFragment
} }
recvAuth.mClientCertAlias = mClientCertificateSelector.getCertificate(); recvAuth.mClientCertAlias = mClientCertificateSelector.getCertificate();
final Callback callback = (Callback) getActivity(); return SetupDataFragment.CHECK_INCOMING;
callback.onAccountServerUIComplete(SetupDataFragment.CHECK_INCOMING);
} }
@Override @Override

View File

@ -21,6 +21,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.Loader; import android.content.Loader;
import android.os.Bundle; import android.os.Bundle;
import android.os.Parcel;
import android.text.Editable; import android.text.Editable;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.TextWatcher; import android.text.TextWatcher;
@ -256,7 +257,13 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
updatePortFromSecurityType(); updatePortFromSecurityType();
} }
mLoadedSendAuth = sendAuth; // Make a deep copy of the HostAuth to compare with later
final Parcel parcel = Parcel.obtain();
parcel.writeParcelable(sendAuth, sendAuth.describeContents());
parcel.setDataPosition(0);
mLoadedSendAuth = parcel.readParcelable(HostAuth.class.getClassLoader());
parcel.recycle();
mLoaded = true; mLoaded = true;
validateFields(); validateFields();
} }
@ -362,7 +369,7 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
* Entry point from Activity, when "next" button is clicked * Entry point from Activity, when "next" button is clicked
*/ */
@Override @Override
public void collectUserInput() { public int collectUserInputInternal() {
final Account account = mSetupData.getAccount(); final Account account = mSetupData.getAccount();
final HostAuth sendAuth = account.getOrCreateHostAuthSend(mAppContext); final HostAuth sendAuth = account.getOrCreateHostAuthSend(mAppContext);
@ -387,8 +394,7 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment
sendAuth.setConnection(mBaseScheme, serverAddress, serverPort, securityType); sendAuth.setConnection(mBaseScheme, serverAddress, serverPort, securityType);
sendAuth.mDomain = null; sendAuth.mDomain = null;
final Callback callback = (Callback) getActivity(); return SetupDataFragment.CHECK_OUTGOING;
callback.onAccountServerUIComplete(SetupDataFragment.CHECK_OUTGOING);
} }
@Override @Override