From acd756e642dbad58bea86eb5160e0d7f3f3124cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20W=C3=A4chter?= Date: Sat, 5 Jul 2014 18:59:48 +0200 Subject: [PATCH 01/10] Fixed https://github.com/typingArtist/k-9/issues/1. HELO/EHLO IPv6 address literals are now conforming to RFC5321. --- src/com/fsck/k9/mail/transport/SmtpTransport.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/fsck/k9/mail/transport/SmtpTransport.java b/src/com/fsck/k9/mail/transport/SmtpTransport.java index 2636a8710..70e270bbd 100644 --- a/src/com/fsck/k9/mail/transport/SmtpTransport.java +++ b/src/com/fsck/k9/mail/transport/SmtpTransport.java @@ -245,7 +245,7 @@ public class SmtpTransport extends Transport { // characters (see issue 2143), so use IP address. if (!ipAddr.equals("")) { if (localAddress instanceof Inet6Address) { - localHost = "[IPV6:" + ipAddr + "]"; + localHost = "[IPv6:" + ipAddr + "]"; } else { localHost = "[" + ipAddr + "]"; } From 14032088db44ffb751b5ebab38919e6671a4afc5 Mon Sep 17 00:00:00 2001 From: miguelpinheiro Date: Sat, 19 Jul 2014 15:22:51 +0100 Subject: [PATCH 02/10] Update providers.xml Added apple mail providers (apple.com, mac.com, me.com, icloud.com) --- res/xml/providers.xml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/res/xml/providers.xml b/res/xml/providers.xml index 94d43f58e..e7bcbe151 100644 --- a/res/xml/providers.xml +++ b/res/xml/providers.xml @@ -151,6 +151,24 @@ + + + + + + + + + + + + + + + + + + From 2486caaf2dbd32cbd67a2ed45ee2c7448349664e Mon Sep 17 00:00:00 2001 From: miguelpinheiro Date: Sat, 19 Jul 2014 15:46:11 +0100 Subject: [PATCH 03/10] Sort apple emails in own category and add icloud.com --- res/xml/providers.xml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/res/xml/providers.xml b/res/xml/providers.xml index e7bcbe151..ce8ae7141 100644 --- a/res/xml/providers.xml +++ b/res/xml/providers.xml @@ -105,10 +105,6 @@ - - - - @@ -125,10 +121,6 @@ - - - - @@ -157,11 +149,11 @@ - + - + From a671e51052d9313a788c4ad04cfeb2f17886e9fc Mon Sep 17 00:00:00 2001 From: miguelpinheiro Date: Sat, 19 Jul 2014 15:48:44 +0100 Subject: [PATCH 04/10] Sort apple emails in own category and add icloud.com --- res/xml/providers.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/xml/providers.xml b/res/xml/providers.xml index ce8ae7141..3f90b0369 100644 --- a/res/xml/providers.xml +++ b/res/xml/providers.xml @@ -153,7 +153,7 @@ - + From f463aa9fa0c4564dbfc12236e3d0f4dd732ec457 Mon Sep 17 00:00:00 2001 From: cketti Date: Sat, 26 Jul 2014 16:53:03 +0200 Subject: [PATCH 05/10] Fix indentation --- res/xml/providers.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/xml/providers.xml b/res/xml/providers.xml index 3f90b0369..29e34d452 100644 --- a/res/xml/providers.xml +++ b/res/xml/providers.xml @@ -144,7 +144,7 @@ - + From c36d2d7a5e5b27f7cfd6892109f9ceb5e49006df Mon Sep 17 00:00:00 2001 From: cketti Date: Sat, 26 Jul 2014 18:06:20 +0200 Subject: [PATCH 06/10] Use latest Gradle Android plugin and build tools --- build.gradle | 6 +++--- plugins/Android-PullToRefresh/library/build.gradle | 4 ++-- plugins/HoloColorPicker/build.gradle | 2 +- plugins/ckChangeLog/library/build.gradle | 4 ++-- plugins/openpgp-api-library/build.gradle | 10 +++++----- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index 1b68ac21a..07d0e49b6 100644 --- a/build.gradle +++ b/build.gradle @@ -4,11 +4,11 @@ buildscript { } 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 { compile project(':plugins:Android-PullToRefresh:library') @@ -21,7 +21,7 @@ dependencies { android { compileSdkVersion 19 - buildToolsVersion '19.1.0' + buildToolsVersion '20.0.0' sourceSets { main { diff --git a/plugins/Android-PullToRefresh/library/build.gradle b/plugins/Android-PullToRefresh/library/build.gradle index 46e878d7b..6d617a45f 100644 --- a/plugins/Android-PullToRefresh/library/build.gradle +++ b/plugins/Android-PullToRefresh/library/build.gradle @@ -1,8 +1,8 @@ -apply plugin: 'android-library' +apply plugin: 'com.android.library' android { compileSdkVersion 19 - buildToolsVersion '19.1.0' + buildToolsVersion '20.0.0' sourceSets { main { diff --git a/plugins/HoloColorPicker/build.gradle b/plugins/HoloColorPicker/build.gradle index 03e52faa0..7c966604e 100644 --- a/plugins/HoloColorPicker/build.gradle +++ b/plugins/HoloColorPicker/build.gradle @@ -1,4 +1,4 @@ -apply plugin: 'android-library' +apply plugin: 'com.android.library' android { compileSdkVersion 19 diff --git a/plugins/ckChangeLog/library/build.gradle b/plugins/ckChangeLog/library/build.gradle index d84407c25..b7eec9000 100644 --- a/plugins/ckChangeLog/library/build.gradle +++ b/plugins/ckChangeLog/library/build.gradle @@ -1,8 +1,8 @@ -apply plugin: 'android-library' +apply plugin: 'com.android.library' android { compileSdkVersion 19 - buildToolsVersion '19.1.0' + buildToolsVersion '20.0.0' sourceSets { main { diff --git a/plugins/openpgp-api-library/build.gradle b/plugins/openpgp-api-library/build.gradle index 96caf2433..1c5461493 100644 --- a/plugins/openpgp-api-library/build.gradle +++ b/plugins/openpgp-api-library/build.gradle @@ -5,16 +5,16 @@ buildscript { } 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 { - compileSdkVersion 17 - buildToolsVersion '19.1.0' - + compileSdkVersion 19 + buildToolsVersion '20.0.0' + // NOTE: We are using the old folder structure to also support Eclipse sourceSets { main { From fe49a5f005b8b6f535db9227d9b6a24b45212b46 Mon Sep 17 00:00:00 2001 From: Joe Steele Date: Wed, 18 Jun 2014 11:38:01 -0400 Subject: [PATCH 07/10] Avoid NPE in MessageOpenPgpView.handleError() E/AndroidRuntime(25655): FATAL EXCEPTION: main E/AndroidRuntime(25655): Process: com.fsck.k9, PID: 25655 E/AndroidRuntime(25655): java.lang.NullPointerException E/AndroidRuntime(25655): at com.fsck.k9.view.MessageOpenPgpView.handleError(MessageOpenPgpView.java:385) E/AndroidRuntime(25655): at com.fsck.k9.view.MessageOpenPgpView.access$3(MessageOpenPgpView.java:384) E/AndroidRuntime(25655): at com.fsck.k9.view.MessageOpenPgpView$DecryptVerifyCallback.onReturn(MessageOpenPgpView.java:357) E/AndroidRuntime(25655): at org.openintents.openpgp.util.OpenPgpApi$OpenPgpAsyncTask.onPostExecute(OpenPgpApi.java:195) E/AndroidRuntime(25655): at org.openintents.openpgp.util.OpenPgpApi$OpenPgpAsyncTask.onPostExecute(OpenPgpApi.java:1) E/AndroidRuntime(25655): at android.os.AsyncTask.finish(AsyncTask.java:632) E/AndroidRuntime(25655): at android.os.AsyncTask.access$600(AsyncTask.java:177) E/AndroidRuntime(25655): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) E/AndroidRuntime(25655): at android.os.Handler.dispatchMessage(Handler.java:102) E/AndroidRuntime(25655): at android.os.Looper.loop(Looper.java:136) E/AndroidRuntime(25655): at android.app.ActivityThread.main(ActivityThread.java:5128) E/AndroidRuntime(25655): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(25655): at java.lang.reflect.Method.invoke(Method.java:515) E/AndroidRuntime(25655): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) E/AndroidRuntime(25655): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611) E/AndroidRuntime(25655): at dalvik.system.NativeStart.main(Native Method) --- src/com/fsck/k9/view/MessageOpenPgpView.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/com/fsck/k9/view/MessageOpenPgpView.java b/src/com/fsck/k9/view/MessageOpenPgpView.java index d2a00d09c..dd2cbb40b 100644 --- a/src/com/fsck/k9/view/MessageOpenPgpView.java +++ b/src/com/fsck/k9/view/MessageOpenPgpView.java @@ -381,7 +381,11 @@ public class MessageOpenPgpView extends LinearLayout { } private void handleError(final OpenPgpError error) { - mFragment.getActivity().runOnUiThread(new Runnable() { + Activity activity = mFragment.getActivity(); + if (activity == null) { + return; + } + activity.runOnUiThread(new Runnable() { @Override public void run() { From 41570e4305469218fe1357a748beac8991ce133c Mon Sep 17 00:00:00 2001 From: Joe Steele Date: Tue, 15 Jul 2014 12:16:05 -0400 Subject: [PATCH 08/10] Fix leaked window error in FolderList Observed after wiping data and then tapping a launcher shortcut for an account. --- src/com/fsck/k9/activity/FolderList.java | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/com/fsck/k9/activity/FolderList.java b/src/com/fsck/k9/activity/FolderList.java index 15273145b..bd049bd52 100644 --- a/src/com/fsck/k9/activity/FolderList.java +++ b/src/com/fsck/k9/activity/FolderList.java @@ -99,6 +99,8 @@ public class FolderList extends K9ListActivity { private TextView mActionBarSubTitle; private TextView mActionBarUnread; + private boolean mIsFinished = false; + class FolderListHandler extends Handler { public void refreshTitle() { @@ -277,10 +279,18 @@ public class FolderList extends K9ListActivity { mInflater = getLayoutInflater(); - onNewIntent(getIntent()); - context = this; + onNewIntent(getIntent()); + if (mIsFinished) { + /* + * 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); if (cl.isFirstRun()) { cl.getLogDialog().show(); @@ -308,7 +318,12 @@ public class FolderList extends K9ListActivity { mAccount = Preferences.getPreferences(this).getAccount(accountUuid); 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. + */ + mIsFinished = true; finish(); return; } @@ -316,6 +331,7 @@ public class FolderList extends K9ListActivity { if (intent.getBooleanExtra(EXTRA_FROM_SHORTCUT, false) && !K9.FOLDER_NONE.equals(mAccount.getAutoExpandFolderName())) { onOpenFolder(mAccount.getAutoExpandFolderName()); + mIsFinished = true; finish(); } else { initializeActivityView(); From c881207295179b04b0fd1bed1b682f6d94c3cfe6 Mon Sep 17 00:00:00 2001 From: Joe Steele Date: Thu, 14 Aug 2014 16:22:51 -0400 Subject: [PATCH 09/10] Use isFinishing() instead As suggested by @maniac103 https://github.com/k9mail/k-9/commit/41570e4#commitcomment-7388209 --- src/com/fsck/k9/activity/FolderList.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/com/fsck/k9/activity/FolderList.java b/src/com/fsck/k9/activity/FolderList.java index bd049bd52..1270c724a 100644 --- a/src/com/fsck/k9/activity/FolderList.java +++ b/src/com/fsck/k9/activity/FolderList.java @@ -99,8 +99,6 @@ public class FolderList extends K9ListActivity { private TextView mActionBarSubTitle; private TextView mActionBarUnread; - private boolean mIsFinished = false; - class FolderListHandler extends Handler { public void refreshTitle() { @@ -282,7 +280,7 @@ public class FolderList extends K9ListActivity { context = this; onNewIntent(getIntent()); - if (mIsFinished) { + 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 @@ -323,7 +321,6 @@ public class FolderList extends K9ListActivity { * account, and then the account is deleted or data is wiped, and * then the shortcut is used. */ - mIsFinished = true; finish(); return; } @@ -331,7 +328,6 @@ public class FolderList extends K9ListActivity { if (intent.getBooleanExtra(EXTRA_FROM_SHORTCUT, false) && !K9.FOLDER_NONE.equals(mAccount.getAutoExpandFolderName())) { onOpenFolder(mAccount.getAutoExpandFolderName()); - mIsFinished = true; finish(); } else { initializeActivityView(); From a495627d72990f0ce6cb795d5e2d9dae3df523fe Mon Sep 17 00:00:00 2001 From: pylerSM Date: Mon, 18 Aug 2014 13:06:25 +0200 Subject: [PATCH 10/10] Show password feature --- res/layout/account_setup_basics.xml | 6 ++++ res/values/strings.xml | 2 ++ .../k9/activity/setup/AccountSetupBasics.java | 34 +++++++++++++++---- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/res/layout/account_setup_basics.xml b/res/layout/account_setup_basics.xml index 2c4028414..e64a379cf 100644 --- a/res/layout/account_setup_basics.xml +++ b/res/layout/account_setup_basics.xml @@ -34,6 +34,12 @@ android:layout_width="fill_parent" android:nextFocusDown="@+id/next" /> + Saving draft Fetching attachment… + Show password + Decrypting/Verifying… Successful decryption diff --git a/src/com/fsck/k9/activity/setup/AccountSetupBasics.java b/src/com/fsck/k9/activity/setup/AccountSetupBasics.java index 421e56368..e0ca5f484 100644 --- a/src/com/fsck/k9/activity/setup/AccountSetupBasics.java +++ b/src/com/fsck/k9/activity/setup/AccountSetupBasics.java @@ -1,6 +1,13 @@ 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.Dialog; import android.content.Context; @@ -9,22 +16,24 @@ import android.content.Intent; import android.content.res.XmlResourceParser; import android.os.Bundle; import android.text.Editable; +import android.text.InputType; import android.text.TextWatcher; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.CompoundButton.OnCheckedChangeListener; 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.setup.AccountSetupCheckSettings.CheckDirection; import com.fsck.k9.helper.Utility; -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. @@ -65,6 +74,17 @@ public class AccountSetupBasics extends K9Activity mPasswordView = (EditText)findViewById(R.id.account_password); mNextButton = (Button)findViewById(R.id.next); 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); mManualSetupButton.setOnClickListener(this);