Merge branch 'master' into tls-client-cert-auth

Conflicts:
	res/layout/account_setup_basics.xml
	res/values/strings.xml
	src/com/fsck/k9/activity/setup/AccountSetupBasics.java
This commit is contained in:
Joe Steele 2014-08-19 16:19:02 -04:00
commit 1783dd1a63
12 changed files with 86 additions and 35 deletions

View File

@ -4,11 +4,11 @@ buildscript {
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:0.11.+' classpath 'com.android.tools.build:gradle:0.12.2'
} }
} }
apply plugin: 'android' apply plugin: 'com.android.application'
dependencies { dependencies {
compile project(':plugins:Android-PullToRefresh:library') compile project(':plugins:Android-PullToRefresh:library')
@ -21,7 +21,7 @@ dependencies {
android { android {
compileSdkVersion 19 compileSdkVersion 19
buildToolsVersion '19.1.0' buildToolsVersion '20.0.0'
sourceSets { sourceSets {
main { main {

View File

@ -1,8 +1,8 @@
apply plugin: 'android-library' apply plugin: 'com.android.library'
android { android {
compileSdkVersion 19 compileSdkVersion 19
buildToolsVersion '19.1.0' buildToolsVersion '20.0.0'
sourceSets { sourceSets {
main { main {

View File

@ -1,4 +1,4 @@
apply plugin: 'android-library' apply plugin: 'com.android.library'
android { android {
compileSdkVersion 19 compileSdkVersion 19

View File

@ -1,8 +1,8 @@
apply plugin: 'android-library' apply plugin: 'com.android.library'
android { android {
compileSdkVersion 19 compileSdkVersion 19
buildToolsVersion '19.1.0' buildToolsVersion '20.0.0'
sourceSets { sourceSets {
main { main {

View File

@ -5,16 +5,16 @@ buildscript {
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:0.11.+' classpath 'com.android.tools.build:gradle:0.12.2'
} }
} }
apply plugin: 'android-library' apply plugin: 'com.android.library'
android { android {
compileSdkVersion 17 compileSdkVersion 19
buildToolsVersion '19.1.0' buildToolsVersion '20.0.0'
// NOTE: We are using the old folder structure to also support Eclipse // NOTE: We are using the old folder structure to also support Eclipse
sourceSets { sourceSets {
main { main {

View File

@ -34,6 +34,12 @@
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:nextFocusDown="@+id/next" android:nextFocusDown="@+id/next"
/> />
<CheckBox
android:id="@+id/show_password"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="@string/show_password"
/>
<com.fsck.k9.view.ClientCertificateSpinner <com.fsck.k9.view.ClientCertificateSpinner
android:id="@+id/account_client_certificate_spinner" android:id="@+id/account_client_certificate_spinner"
android:layout_width="fill_parent" android:layout_width="fill_parent"

View File

@ -1108,7 +1108,9 @@ Please submit bug reports, contribute new features and ask questions at
<string name="fetching_attachment_dialog_message">Fetching attachment…</string> <string name="fetching_attachment_dialog_message">Fetching attachment…</string>
<string name="auth_external_error">Unable to authenticate. The server does not advertise the SASL EXTERNAL capability. This could be due to a problem with the client certificate (expired, unknown certificate authority) or some other configuration problem.</string> <string name="auth_external_error">Unable to authenticate. The server does not advertise the SASL EXTERNAL capability. This could be due to a problem with the client certificate (expired, unknown certificate authority) or some other configuration problem.</string>
<string name="show_password">Show password</string>
<!-- === OpenPGP specific ================================================================== --> <!-- === OpenPGP specific ================================================================== -->
<string name="openpgp_decrypting_verifying">Decrypting/Verifying…</string> <string name="openpgp_decrypting_verifying">Decrypting/Verifying…</string>
<string name="openpgp_successful_decryption">Successful decryption</string> <string name="openpgp_successful_decryption">Successful decryption</string>

View File

@ -105,10 +105,6 @@
<incoming uri="pop3+ssl+://pop.east.cox.net" username="$user" /> <incoming uri="pop3+ssl+://pop.east.cox.net" username="$user" />
<outgoing uri="smtp+ssl+://smtp.east.cox.net" username="$user" /> <outgoing uri="smtp+ssl+://smtp.east.cox.net" username="$user" />
</provider> </provider>
<provider id="dotmac" label=".Mac" domain="mac.com">
<incoming uri="imap+ssl+://imap.mail.me.com" username="$user" />
<outgoing uri="smtp+tls+://smtp.mail.me.com" username="$email" />
</provider>
<provider id="live" label="Windows Live Hotmail" domain="live.com"> <provider id="live" label="Windows Live Hotmail" domain="live.com">
<incoming uri="imap+ssl+://imap-mail.outlook.com" username="$email" /> <incoming uri="imap+ssl+://imap-mail.outlook.com" username="$email" />
<outgoing uri="smtp+tls+://smtp-mail.outlook.com" username="$email" /> <outgoing uri="smtp+tls+://smtp-mail.outlook.com" username="$email" />
@ -125,10 +121,6 @@
<incoming uri="imap+ssl+://imap-mail.outlook.com" username="$email" /> <incoming uri="imap+ssl+://imap-mail.outlook.com" username="$email" />
<outgoing uri="smtp+tls+://smtp-mail.outlook.com" username="$email" /> <outgoing uri="smtp+tls+://smtp-mail.outlook.com" username="$email" />
</provider> </provider>
<provider id="mobileme" label="MobileMe" domain="me.com">
<incoming uri="imap+ssl+://imap.mail.me.com" username="$user" />
<outgoing uri="smtp+tls+://smtp.mail.me.com" username="$email" />
</provider>
<provider id="montclair.edu" label="MSU" domain="montclair.edu"> <provider id="montclair.edu" label="MSU" domain="montclair.edu">
<incoming uri="imap+ssl+://mail.montclair.edu" username="$user" /> <incoming uri="imap+ssl+://mail.montclair.edu" username="$user" />
<outgoing uri="smtp+tls+://smtp.montclair.edu" username="$user" /> <outgoing uri="smtp+tls+://smtp.montclair.edu" username="$user" />
@ -151,6 +143,24 @@
<incoming uri="imap+ssl+://imap.mail.yahoo.com" username="$email" /> <incoming uri="imap+ssl+://imap.mail.yahoo.com" username="$email" />
<outgoing uri="smtp+ssl+://smtp.mail.yahoo.com" username="$email" /> <outgoing uri="smtp+ssl+://smtp.mail.yahoo.com" username="$email" />
</provider> </provider>
<!-- Apple -->
<provider id="apple" label="Apple" domain="apple.com">
<incoming uri="imap+ssl+://imap.mail.apple.com" username="$user" />
<outgoing uri="smtp+tls+://smtp.mail.apple.com" username="$user" />
</provider>
<provider id="dotmac" label=".Mac" domain="mac.com">
<incoming uri="imap+ssl+://imap.mail.mac.com" username="$user" />
<outgoing uri="smtp+tls+://smtp.mail.mac.com" username="$user" />
</provider>
<provider id="mobileme" label="MobileMe" domain="me.com">
<incoming uri="imap+ssl+://imap.mail.me.com" username="$user" />
<outgoing uri="smtp+tls+://smtp.mail.me.com" username="$user" />
</provider>
<provider id="icloud" label="iCloud" domain="icloud.com">
<incoming uri="imap+ssl+://imap.mail.icloud.com" username="$user" />
<outgoing uri="smtp+tls+://smtp.mail.icloud.com" username="$user" />
</provider>
<!-- Australia --> <!-- Australia -->
<provider id="fastmail-fm" label="Fastmail" domain="fastmail.fm"> <provider id="fastmail-fm" label="Fastmail" domain="fastmail.fm">

View File

@ -277,10 +277,18 @@ public class FolderList extends K9ListActivity {
mInflater = getLayoutInflater(); mInflater = getLayoutInflater();
onNewIntent(getIntent());
context = this; context = this;
onNewIntent(getIntent());
if (isFinishing()) {
/*
* onNewIntent() may call finish(), but execution will still continue here.
* We return now because we don't want to display the changelog which can
* result in a leaked window error.
*/
return;
}
ChangeLog cl = new ChangeLog(this); ChangeLog cl = new ChangeLog(this);
if (cl.isFirstRun()) { if (cl.isFirstRun()) {
cl.getLogDialog().show(); cl.getLogDialog().show();
@ -308,7 +316,11 @@ public class FolderList extends K9ListActivity {
mAccount = Preferences.getPreferences(this).getAccount(accountUuid); mAccount = Preferences.getPreferences(this).getAccount(accountUuid);
if (mAccount == null) { if (mAccount == null) {
// This shouldn't normally happen. But apparently it does. See issue 2261. /*
* This can happen when a launcher shortcut is created for an
* account, and then the account is deleted or data is wiped, and
* then the shortcut is used.
*/
finish(); finish();
return; return;
} }

View File

@ -1,6 +1,14 @@
package com.fsck.k9.activity.setup; package com.fsck.k9.activity.setup;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.util.Locale;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
@ -9,6 +17,7 @@ import android.content.Intent;
import android.content.res.XmlResourceParser; import android.content.res.XmlResourceParser;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.text.InputType;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
@ -19,7 +28,11 @@ import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText; import android.widget.EditText;
import com.fsck.k9.*; import com.fsck.k9.Account;
import com.fsck.k9.EmailAddressValidator;
import com.fsck.k9.K9;
import com.fsck.k9.Preferences;
import com.fsck.k9.R;
import com.fsck.k9.activity.K9Activity; import com.fsck.k9.activity.K9Activity;
import com.fsck.k9.activity.setup.AccountSetupCheckSettings.CheckDirection; import com.fsck.k9.activity.setup.AccountSetupCheckSettings.CheckDirection;
import com.fsck.k9.helper.Utility; import com.fsck.k9.helper.Utility;
@ -33,13 +46,6 @@ import com.fsck.k9.mail.transport.SmtpTransport;
import com.fsck.k9.view.ClientCertificateSpinner; import com.fsck.k9.view.ClientCertificateSpinner;
import com.fsck.k9.view.ClientCertificateSpinner.OnClientCertificateChangedListener; import com.fsck.k9.view.ClientCertificateSpinner.OnClientCertificateChangedListener;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.util.Locale;
/** /**
* Prompts the user for the email address and password. * Prompts the user for the email address and password.
* Attempts to lookup default settings for the domain the user specified. If the * Attempts to lookup default settings for the domain the user specified. If the
@ -83,6 +89,17 @@ public class AccountSetupBasics extends K9Activity
mClientCertificateSpinner = (ClientCertificateSpinner)findViewById(R.id.account_client_certificate_spinner); mClientCertificateSpinner = (ClientCertificateSpinner)findViewById(R.id.account_client_certificate_spinner);
mNextButton = (Button)findViewById(R.id.next); mNextButton = (Button)findViewById(R.id.next);
mManualSetupButton = (Button)findViewById(R.id.manual_setup); mManualSetupButton = (Button)findViewById(R.id.manual_setup);
CheckBox showPassword = (CheckBox) findViewById(R.id.show_password);
showPassword.setOnCheckedChangeListener (new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
mPasswordView.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
} else {
mPasswordView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
}
});
mNextButton.setOnClickListener(this); mNextButton.setOnClickListener(this);
mManualSetupButton.setOnClickListener(this); mManualSetupButton.setOnClickListener(this);

View File

@ -259,7 +259,7 @@ public class SmtpTransport extends Transport {
// characters (see issue 2143), so use IP address. // characters (see issue 2143), so use IP address.
if (!ipAddr.equals("")) { if (!ipAddr.equals("")) {
if (localAddress instanceof Inet6Address) { if (localAddress instanceof Inet6Address) {
localHost = "[IPV6:" + ipAddr + "]"; localHost = "[IPv6:" + ipAddr + "]";
} else { } else {
localHost = "[" + ipAddr + "]"; localHost = "[" + ipAddr + "]";
} }

View File

@ -381,7 +381,11 @@ public class MessageOpenPgpView extends LinearLayout {
} }
private void handleError(final OpenPgpError error) { private void handleError(final OpenPgpError error) {
mFragment.getActivity().runOnUiThread(new Runnable() { Activity activity = mFragment.getActivity();
if (activity == null) {
return;
}
activity.runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {