From 50b941e50ef62bf540739888d49d1b77f4f8e4ef Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Thu, 31 Dec 2015 12:00:42 +0000 Subject: [PATCH] Show strength meter when password entry has focus. Also fixed some IME action issues on Android 2.3. --- .../res/layout/activity_password.xml | 1 - briar-android/res/layout/activity_setup.xml | 9 ++++--- .../android/PasswordActivity.java | 11 ++++---- .../briarproject/android/SetupActivity.java | 25 ++++++++++--------- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/briar-android/res/layout/activity_password.xml b/briar-android/res/layout/activity_password.xml index fc633e841a..dff9612aad 100644 --- a/briar-android/res/layout/activity_password.xml +++ b/briar-android/res/layout/activity_password.xml @@ -27,7 +27,6 @@ android:hint="@string/password_hint" android:imeOptions="actionDone" android:inputType="textPassword" - android:lines="1" android:maxLines="1" /> <Button diff --git a/briar-android/res/layout/activity_setup.xml b/briar-android/res/layout/activity_setup.xml index f484946166..d5ec69ba68 100644 --- a/briar-android/res/layout/activity_setup.xml +++ b/briar-android/res/layout/activity_setup.xml @@ -22,7 +22,7 @@ android:layout_height="wrap_content" android:gravity="center" android:text="@string/choose_nickname" - android:textSize="18sp"/> + android:textSize="@dimen/text_size_medium"/> <android.support.design.widget.TextInputLayout android:id="@+id/nickname_entry_wrapper" @@ -43,7 +43,7 @@ android:layout_height="wrap_content" android:gravity="center" android:text="@string/choose_password" - android:textSize="18sp"/> + android:textSize="@dimen/text_size_medium"/> <android.support.design.widget.TextInputLayout android:id="@+id/password_entry_wrapper" @@ -64,7 +64,7 @@ android:layout_height="wrap_content" android:gravity="center" android:text="@string/confirm_password" - android:textSize="18sp"/> + android:textSize="@dimen/text_size_medium"/> <android.support.design.widget.TextInputLayout android:id="@+id/password_confirm_wrapper" @@ -77,6 +77,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPassword" + android:imeOptions="actionDone" android:maxLines="1"/> </android.support.design.widget.TextInputLayout> @@ -88,7 +89,7 @@ <Button android:id="@+id/create_account" - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" android:enabled="false" android:text="@string/create_account_button"/> diff --git a/briar-android/src/org/briarproject/android/PasswordActivity.java b/briar-android/src/org/briarproject/android/PasswordActivity.java index f0c1a5fe3d..fed1a6201a 100644 --- a/briar-android/src/org/briarproject/android/PasswordActivity.java +++ b/briar-android/src/org/briarproject/android/PasswordActivity.java @@ -29,7 +29,6 @@ import static android.content.Intent.ACTION_MAIN; import static android.content.Intent.CATEGORY_HOME; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; -import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE; public class PasswordActivity extends BaseActivity { @@ -63,11 +62,11 @@ public class PasswordActivity extends BaseActivity { password = (EditText) findViewById(R.id.edit_password); password.setOnEditorActionListener(new OnEditorActionListener() { @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if (actionId == IME_ACTION_DONE) { - validatePassword(encrypted, password.getText()); - } - return false; + public boolean onEditorAction(TextView v, int actionId, + KeyEvent event) { + hideSoftKeyboard(); + validatePassword(encrypted, password.getText()); + return true; } }); } diff --git a/briar-android/src/org/briarproject/android/SetupActivity.java b/briar-android/src/org/briarproject/android/SetupActivity.java index e7940b0ffe..2713b99843 100644 --- a/briar-android/src/org/briarproject/android/SetupActivity.java +++ b/briar-android/src/org/briarproject/android/SetupActivity.java @@ -10,7 +10,6 @@ import android.text.TextWatcher; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; -import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; @@ -43,14 +42,13 @@ import static android.view.View.GONE; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; import static android.view.WindowManager.LayoutParams.FLAG_SECURE; -import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY; import static java.util.logging.Level.INFO; import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS; import static org.briarproject.api.crypto.PasswordStrengthEstimator.WEAK; import static org.briarproject.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH; public class SetupActivity extends BaseActivity implements OnClickListener, -OnEditorActionListener { + OnEditorActionListener { private static final Logger LOG = Logger.getLogger(SetupActivity.class.getName()); @@ -82,11 +80,13 @@ OnEditorActionListener { TextWatcher tw = new TextWatcher() { @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { + public void beforeTextChanged(CharSequence s, int start, int count, + int after) { } @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { + public void onTextChanged(CharSequence s, int start, int before, + int count) { enableOrDisableContinueButton(); } @@ -104,7 +104,7 @@ OnEditorActionListener { private void enableOrDisableContinueButton() { if (progress == null) return; // Not created yet - if (passwordEntry.getText().length() > 0) + if (passwordEntry.getText().length() > 0 && passwordEntry.hasFocus()) strengthMeter.setVisibility(VISIBLE); else strengthMeter.setVisibility(INVISIBLE); String nickname = nicknameEntry.getText().toString(); @@ -114,11 +114,14 @@ OnEditorActionListener { boolean passwordsMatch = firstPassword.equals(secondPassword); float strength = strengthEstimator.estimateStrength(firstPassword); strengthMeter.setStrength(strength); - AndroidUtils.setError(nicknameEntryWrapper, getString(R.string.name_too_long), + AndroidUtils.setError(nicknameEntryWrapper, + getString(R.string.name_too_long), nicknameLength > MAX_AUTHOR_NAME_LENGTH); - AndroidUtils.setError(passwordEntryWrapper, getString(R.string.password_too_weak), + AndroidUtils.setError(passwordEntryWrapper, + getString(R.string.password_too_weak), firstPassword.length() > 0 && strength < WEAK); - AndroidUtils.setError(passwordConfirmationWrapper, getString(R.string.passwords_do_not_match), + AndroidUtils.setError(passwordConfirmationWrapper, + getString(R.string.passwords_do_not_match), secondPassword.length() > 0 && !passwordsMatch); createAccountButton.setEnabled(nicknameLength > 0 && nicknameLength <= MAX_AUTHOR_NAME_LENGTH @@ -126,9 +129,7 @@ OnEditorActionListener { } public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - // Hide the soft keyboard - Object o = getSystemService(INPUT_METHOD_SERVICE); - ((InputMethodManager) o).toggleSoftInput(HIDE_IMPLICIT_ONLY, 0); + hideSoftKeyboard(); return true; } -- GitLab