diff --git a/k9mail/src/main/java/com/fsck/k9/activity/setup/AccountSetupAccountType.java b/k9mail/src/main/java/com/fsck/k9/activity/setup/AccountSetupAccountType.java index 5bc9f4130..41d5ab552 100644 --- a/k9mail/src/main/java/com/fsck/k9/activity/setup/AccountSetupAccountType.java +++ b/k9mail/src/main/java/com/fsck/k9/activity/setup/AccountSetupAccountType.java @@ -14,6 +14,7 @@ import com.fsck.k9.Preferences; import com.fsck.k9.R; import com.fsck.k9.activity.K9Activity; import java.net.URI; +import java.net.URISyntaxException; /** * Prompts the user to select an account type. The account type, along with the @@ -22,11 +23,9 @@ import java.net.URI; */ public class AccountSetupAccountType extends K9Activity implements OnClickListener { private static final String EXTRA_ACCOUNT = "account"; - private static final String EXTRA_MAKE_DEFAULT = "makeDefault"; private Account mAccount; - private boolean mMakeDefault; public static void actionSelectAccountType(Context context, Account account, boolean makeDefault) { @@ -49,83 +48,62 @@ public class AccountSetupAccountType extends K9Activity implements OnClickListen mMakeDefault = getIntent().getBooleanExtra(EXTRA_MAKE_DEFAULT, false); } - private void onPop() { - try { - URI uri = new URI(mAccount.getStoreUri()); - uri = new URI("pop3+ssl+", uri.getUserInfo(), uri.getHost(), uri.getPort(), null, null, null); - mAccount.setStoreUri(uri.toString()); - - uri = new URI(mAccount.getTransportUri()); - uri = new URI("smtp+tls+", uri.getUserInfo(), uri.getHost(), uri.getPort(), null, null, null); - mAccount.setTransportUri(uri.toString()); - - AccountSetupIncoming.actionIncomingSettings(this, mAccount, mMakeDefault); - finish(); - } catch (Exception use) { - failure(use); - } + private void setupStoreAndSmtpTransport(String schemePrefix) throws URISyntaxException { + URI storeUriForDecode = new URI(mAccount.getStoreUri()); + URI storeUri = new URI(schemePrefix, storeUriForDecode.getUserInfo(), storeUriForDecode.getHost(), + storeUriForDecode.getPort(), null, null, null); + mAccount.setStoreUri(storeUri.toString()); + URI transportUriForDecode = new URI(mAccount.getTransportUri()); + URI transportUri = new URI("smtp+tls+", transportUriForDecode.getUserInfo(), transportUriForDecode.getHost(), + transportUriForDecode.getPort(), null, null, null); + mAccount.setTransportUri(transportUri.toString()); } - private void onImap() { - try { - URI uri = new URI(mAccount.getStoreUri()); - uri = new URI("imap+ssl+", uri.getUserInfo(), uri.getHost(), uri.getPort(), null, null, null); - mAccount.setStoreUri(uri.toString()); + private void setupDav() throws URISyntaxException { + URI uriForDecode = new URI(mAccount.getStoreUri()); - uri = new URI(mAccount.getTransportUri()); - uri = new URI("smtp+tls+", uri.getUserInfo(), uri.getHost(), uri.getPort(), null, null, null); - mAccount.setTransportUri(uri.toString()); - - AccountSetupIncoming.actionIncomingSettings(this, mAccount, mMakeDefault); - finish(); - } catch (Exception use) { - failure(use); + /* + * The user info we have been given from + * AccountSetupBasics.onManualSetup() is encoded as an IMAP store + * URI: AuthType:UserName:Password (no fields should be empty). + * However, AuthType is not applicable to WebDAV nor to its store + * URI. Re-encode without it, using just the UserName and Password. + */ + String userPass = ""; + String[] userInfo = uriForDecode.getUserInfo().split(":"); + if (userInfo.length > 1) { + userPass = userInfo[1]; } - - } - - private void onWebDav() { - try { - URI uri = new URI(mAccount.getStoreUri()); - - /* - * The user info we have been given from - * AccountSetupBasics.onManualSetup() is encoded as an IMAP store - * URI: AuthType:UserName:Password (no fields should be empty). - * However, AuthType is not applicable to WebDAV nor to its store - * URI. Re-encode without it, using just the UserName and Password. - */ - String userPass = ""; - String[] userInfo = uri.getUserInfo().split(":"); - if (userInfo.length > 1) { - userPass = userInfo[1]; - } - if (userInfo.length > 2) { - userPass = userPass + ":" + userInfo[2]; - } - uri = new URI("webdav+ssl+", userPass, uri.getHost(), uri.getPort(), null, null, null); - mAccount.setStoreUri(uri.toString()); - AccountSetupIncoming.actionIncomingSettings(this, mAccount, mMakeDefault); - finish(); - } catch (Exception use) { - failure(use); + if (userInfo.length > 2) { + userPass = userPass + ":" + userInfo[2]; } - + URI uri = new URI("webdav+ssl+", userPass, uriForDecode.getHost(), uriForDecode.getPort(), null, null, null); + mAccount.setStoreUri(uri.toString()); } public void onClick(View v) { - switch (v.getId()) { - case R.id.pop: - onPop(); - break; - case R.id.imap: - onImap(); - break; - case R.id.webdav: - onWebDav(); - break; + try { + switch (v.getId()) { + case R.id.pop: { + setupStoreAndSmtpTransport("pop3+ssl+"); + break; + } + case R.id.imap: { + setupStoreAndSmtpTransport("imap+ssl+"); + break; + } + case R.id.webdav: { + setupDav(); + break; + } + } + } catch (Exception ex) { + failure(ex); } + + AccountSetupIncoming.actionIncomingSettings(this, mAccount, mMakeDefault); + finish(); } private void failure(Exception use) { diff --git a/k9mail/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java b/k9mail/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java index 91cd119ba..c9b8b345f 100644 --- a/k9mail/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java +++ b/k9mail/src/main/java/com/fsck/k9/activity/setup/AccountSetupBasics.java @@ -347,7 +347,7 @@ public class AccountSetupBasics extends K9Activity } } - protected void onNext() { + private void onNext() { if (mClientCertificateCheckBox.isChecked()) { // Auto-setup doesn't support client certificates.