From 97552673364f914f0052d3c07e96c74ecdde4301 Mon Sep 17 00:00:00 2001 From: Martin Hibdon Date: Thu, 30 Jan 2014 14:49:02 -0800 Subject: [PATCH] Use the AuthenticationView for outgoing Change-Id: I42a6a8e0dfb271f22bbf1d2d18138d27809744bc --- .../account_setup_outgoing_fragment.xml | 15 +++------- .../account_setup_outgoing_fragment.xml | 14 ++-------- .../setup/AccountSetupIncomingFragment.java | 4 +-- .../setup/AccountSetupOutgoingFragment.java | 28 +++++++++++-------- .../activity/setup/AuthenticationView.java | 14 +++------- 5 files changed, 28 insertions(+), 47 deletions(-) diff --git a/res/layout-sw600dp/account_setup_outgoing_fragment.xml b/res/layout-sw600dp/account_setup_outgoing_fragment.xml index e33154080..e4153c4e7 100644 --- a/res/layout-sw600dp/account_setup_outgoing_fragment.xml +++ b/res/layout-sw600dp/account_setup_outgoing_fragment.xml @@ -106,16 +106,9 @@ android:id="@+id/account_require_login_settings_2" android:paddingTop="16dip" android:visibility="gone" > - - + diff --git a/res/layout/account_setup_outgoing_fragment.xml b/res/layout/account_setup_outgoing_fragment.xml index 22dc60f6c..da6c62df6 100644 --- a/res/layout/account_setup_outgoing_fragment.xml +++ b/res/layout/account_setup_outgoing_fragment.xml @@ -78,17 +78,9 @@ android:imeOptions="actionDone" android:layout_height="wrap_content" android:layout_width="match_parent" /> - - + android:layout_height="wrap_content"/> diff --git a/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java b/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java index 9b428aad0..b12fcc0fc 100644 --- a/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java +++ b/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java @@ -17,8 +17,6 @@ package com.android.email.activity.setup; import android.app.Activity; -import android.app.FragmentManager; -import android.app.FragmentTransaction; import android.content.Context; import android.os.Bundle; import android.text.Editable; @@ -373,7 +371,7 @@ public class AccountSetupIncomingFragment extends AccountServerBaseFragment final Account account = mSetupData.getAccount(); final HostAuth recvAuth = account.getOrCreateHostAuthRecv(mContext); mServiceInfo = EmailServiceUtils.getServiceInfo(mContext, recvAuth.mProtocol); - mAuthenticationView.setAuthInfo(mServiceInfo, recvAuth); + mAuthenticationView.setAuthInfo(mServiceInfo.offerOAuth, mServiceInfo.offerCerts, recvAuth); final String username = recvAuth.mLogin; if (username != null) { diff --git a/src/com/android/email/activity/setup/AccountSetupOutgoingFragment.java b/src/com/android/email/activity/setup/AccountSetupOutgoingFragment.java index a8e7717e9..234b1999e 100644 --- a/src/com/android/email/activity/setup/AccountSetupOutgoingFragment.java +++ b/src/com/android/email/activity/setup/AccountSetupOutgoingFragment.java @@ -36,7 +36,10 @@ import android.widget.Spinner; import com.android.email.R; import com.android.email.activity.UiUtilities; +import com.android.email.activity.setup.AuthenticationView.AuthenticationCallback; import com.android.email.provider.AccountBackupRestore; +import com.android.email.service.EmailServiceUtils; +import com.android.email.service.EmailServiceUtils.EmailServiceInfo; import com.android.email2.ui.MailActivityEmail; import com.android.emailcommon.Logging; import com.android.emailcommon.provider.Account; @@ -51,7 +54,7 @@ import com.android.mail.utils.LogUtils; * (for editing existing accounts). */ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment - implements OnCheckedChangeListener { + implements OnCheckedChangeListener, AuthenticationCallback { private final static String STATE_KEY_LOADED = "AccountSetupOutgoingFragment.loaded"; @@ -59,7 +62,7 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment private static final int SMTP_PORT_SSL = 465; private EditText mUsernameView; - private EditText mPasswordView; + private AuthenticationView mAuthenticationView; private EditText mServerView; private EditText mPortView; private CheckBox mRequireLoginView; @@ -103,7 +106,7 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment final Context context = getActivity(); mUsernameView = UiUtilities.getView(view, R.id.account_username); - mPasswordView = UiUtilities.getView(view, R.id.account_password); + mAuthenticationView = UiUtilities.getView(view, R.id.authentication_view); mServerView = UiUtilities.getView(view, R.id.account_server); mPortView = UiUtilities.getView(view, R.id.account_port); mRequireLoginView = UiUtilities.getView(view, R.id.account_require_login); @@ -162,7 +165,6 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment public void onTextChanged(CharSequence s, int start, int before, int count) { } }; mUsernameView.addTextChangedListener(validationTextWatcher); - mPasswordView.addTextChangedListener(validationTextWatcher); mServerView.addTextChangedListener(validationTextWatcher); mPortView.addTextChangedListener(validationTextWatcher); @@ -172,6 +174,8 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment // Additional setup only used while in "settings" mode onCreateViewSettingsMode(view); + mAuthenticationView.setAuthenticationCallback(this); + return view; } @@ -274,10 +278,7 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment mRequireLoginView.setChecked(true); } - final String password = sendAuth.mPassword; - if (password != null) { - mPasswordView.setText(password); - } + mAuthenticationView.setAuthInfo(true, false, sendAuth); } final int flags = sendAuth.mFlags & ~HostAuth.FLAG_AUTHENTICATE; @@ -310,11 +311,9 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment if (enabled && mRequireLoginView.isChecked()) { enabled = !TextUtils.isEmpty(mUsernameView.getText()) - && !TextUtils.isEmpty(mPasswordView.getText()); + && mAuthenticationView.getAuthValid(); } enableNextButton(enabled); - // Warn (but don't prevent) if password has leading/trailing spaces - AccountSettingsUtils.checkPasswordSpaces(mContext, mPasswordView); } /** @@ -368,7 +367,7 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment if (mRequireLoginView.isChecked()) { final String userName = mUsernameView.getText().toString().trim(); - final String userPassword = mPasswordView.getText().toString(); + final String userPassword = mAuthenticationView.getPassword().toString(); sendAuth.setLogin(userName, userPassword); } else { sendAuth.setLogin(null, null); @@ -390,4 +389,9 @@ public class AccountSetupOutgoingFragment extends AccountServerBaseFragment mCallback.onProceedNext(SetupDataFragment.CHECK_OUTGOING, this); clearButtonBounce(); } + + @Override + public void onValidateStateChanged() { + validateFields(); + } } diff --git a/src/com/android/email/activity/setup/AuthenticationView.java b/src/com/android/email/activity/setup/AuthenticationView.java index e312237cd..2187ba350 100644 --- a/src/com/android/email/activity/setup/AuthenticationView.java +++ b/src/com/android/email/activity/setup/AuthenticationView.java @@ -1,9 +1,7 @@ package com.android.email.activity.setup; import android.app.Activity; -import android.app.Fragment; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; @@ -15,25 +13,20 @@ import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; -import android.view.ViewGroup; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; import com.android.email.R; import com.android.email.activity.UiUtilities; -import com.android.email.service.EmailServiceUtils; import com.android.email.service.EmailServiceUtils.EmailServiceInfo; import com.android.email.view.CertificateSelector; import com.android.email.view.CertificateSelector.HostCallback; -import com.android.email2.ui.MailActivityEmail; import com.android.emailcommon.Device; -import com.android.emailcommon.Logging; import com.android.emailcommon.VendorPolicyLoader.OAuthProvider; import com.android.emailcommon.provider.Credential; import com.android.emailcommon.provider.HostAuth; import com.android.emailcommon.utility.CertificateRequestor; -import com.android.mail.utils.LogUtils; import java.io.IOException; @@ -182,9 +175,10 @@ public class AuthenticationView extends LinearLayout implements HostCallback, On } } - public void setAuthInfo(final EmailServiceInfo serviceInfo, final HostAuth hostAuth) { - mOfferOAuth = serviceInfo.offerOAuth; - mOfferCerts = serviceInfo.offerCerts; + public void setAuthInfo(final boolean offerOAuth, final boolean offerCerts, + final HostAuth hostAuth) { + mOfferOAuth = offerOAuth; + mOfferCerts = offerCerts; if (mOfferOAuth) { final Credential cred = hostAuth.getCredential(getContext());