From f6be6998cc74ae7c77e463a46d5afcf20097a780 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Thu, 8 Nov 2012 15:37:37 -0800 Subject: [PATCH] Added a forgot password link to the sign in screen --- .../astrid/actfm/ActFmLoginActivity.java | 43 +++++++++++++++++++ astrid/res/values/strings-actfm.xml | 12 ++++++ 2 files changed, 55 insertions(+) diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/ActFmLoginActivity.java b/astrid/plugin-src/com/todoroo/astrid/actfm/ActFmLoginActivity.java index 646da535d..bc721066c 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/ActFmLoginActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/ActFmLoginActivity.java @@ -27,11 +27,14 @@ import android.text.InputType; import android.text.SpannableString; import android.text.Spanned; import android.text.TextPaint; +import android.text.TextUtils; import android.text.method.PasswordTransformationMethod; import android.text.style.ClickableSpan; import android.text.style.UnderlineSpan; +import android.util.DisplayMetrics; import android.view.View; import android.view.View.OnClickListener; +import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; import android.widget.Button; import android.widget.EditText; @@ -338,6 +341,23 @@ public class ActFmLoginActivity extends FragmentActivity implements AuthListener InputType.TYPE_TEXT_VARIATION_PASSWORD); password.setTransformationMethod(new PasswordTransformationMethod()); + TextView forgotPassword = new TextView(ActFmLoginActivity.this); + SpannableString text = new SpannableString(getString(R.string.actfm_ALA_forgot_password)); + text.setSpan(new UnderlineSpan(), 0, text.length(), 0); + forgotPassword.setText(text); + LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + DisplayMetrics metrics = getResources().getDisplayMetrics(); + lp.setMargins(0, (int) (8 * metrics.density), 0, (int) (8 * metrics.density)); + forgotPassword.setLayoutParams(lp); + forgotPassword.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + forgotPassword(email.getText().toString()); + } + }); + body.addView(forgotPassword); + + ScrollView bodyScroll = new ScrollView(ActFmLoginActivity.this); bodyScroll.addView(body); @@ -362,6 +382,27 @@ public class ActFmLoginActivity extends FragmentActivity implements AuthListener } }; + private void forgotPassword(final String email) { + if (TextUtils.isEmpty(email)) { + DialogUtilities.okDialog(this, getString(R.string.actfm_ALA_enter_email), null); + } else { + final ProgressDialog pd = DialogUtilities.progressDialog(this, getString(R.string.DLG_please_wait)); + new Thread(new Runnable() { + @Override + public void run() { + try { + actFmInvoker.invoke("user_reset_password", "email", email); //$NON-NLS-1$ //$NON-NLS-2$ + DialogUtilities.okDialog(ActFmLoginActivity.this, getString(R.string.actfm_ALA_reset_sent, email), null); + } catch (IOException e) { + handleError(e); + } finally { + DialogUtilities.dismissDialog(ActFmLoginActivity.this, pd); + } + } + }).start(); + } + } + private String generateRandomPassword() { String acceptable = "abcdefghijklmnopqrstuvwxyz1234567890"; //$NON-NLS-1$ char[] chars = new char[8]; @@ -565,6 +606,8 @@ public class ActFmLoginActivity extends FragmentActivity implements AuthListener message = getString(R.string.actfm_ALA_error_user_exists); else if ("incorrect_password".equals(code)) message = getString(R.string.actfm_ALA_error_wrong_password); + else if ("user_not_found".equals(code)) + message = getString(R.string.actfm_ALA_error_user_not_found); } } errors.setText(message); diff --git a/astrid/res/values/strings-actfm.xml b/astrid/res/values/strings-actfm.xml index 3310c5867..f9d547735 100644 --- a/astrid/res/values/strings-actfm.xml +++ b/astrid/res/values/strings-actfm.xml @@ -276,6 +276,18 @@ Sorry, that password was incorrect. Please try again. + + Forgot password? + + + Please enter your email + + + Password reset sent to %s + + + User not found by that email. Try signing up instead! + Copy list