summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/ConfirmLockPassword.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/ConfirmLockPassword.java')
-rw-r--r--src/com/android/settings/ConfirmLockPassword.java147
1 files changed, 57 insertions, 90 deletions
diff --git a/src/com/android/settings/ConfirmLockPassword.java b/src/com/android/settings/ConfirmLockPassword.java
index b49dc6e..44c599b 100644
--- a/src/com/android/settings/ConfirmLockPassword.java
+++ b/src/com/android/settings/ConfirmLockPassword.java
@@ -16,14 +16,11 @@
package com.android.settings;
+import android.annotation.Nullable;
import android.text.TextUtils;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.widget.LockPatternUtils;
-import com.android.internal.widget.PasswordEntryKeyboardHelper;
-import com.android.internal.widget.PasswordEntryKeyboardView;
-import android.app.Activity;
-import android.app.Fragment;
import android.app.admin.DevicePolicyManager;
import android.content.Intent;
import android.os.Bundle;
@@ -31,23 +28,18 @@ import android.os.CountDownTimer;
import android.os.Handler;
import android.os.SystemClock;
import android.os.storage.StorageManager;
-import android.text.Editable;
import android.text.InputType;
-import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.LayoutInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
-import android.widget.Button;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
-public class ConfirmLockPassword extends SettingsActivity {
-
- public static final String PACKAGE = "com.android.settings";
- public static final String HEADER_TEXT = PACKAGE + ".ConfirmLockPattern.header";
+public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
public static class InternalActivity extends ConfirmLockPassword {
}
@@ -65,28 +57,17 @@ public class ConfirmLockPassword extends SettingsActivity {
return false;
}
- @Override
- public void onCreate(Bundle savedInstanceState) {
- // Disable IME on our window since we provide our own keyboard
- //getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
- //WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
- super.onCreate(savedInstanceState);
- CharSequence msg = getText(R.string.lockpassword_confirm_your_password_header);
- setTitle(msg);
- }
-
- public static class ConfirmLockPasswordFragment extends InstrumentedFragment
- implements OnClickListener, OnEditorActionListener, TextWatcher {
+ public static class ConfirmLockPasswordFragment extends ConfirmDeviceCredentialBaseFragment
+ implements OnClickListener, OnEditorActionListener {
private static final String KEY_NUM_WRONG_CONFIRM_ATTEMPTS
= "confirm_lock_password_fragment.key_num_wrong_confirm_attempts";
private static final long ERROR_MESSAGE_TIMEOUT = 3000;
private TextView mPasswordEntry;
private LockPatternUtils mLockPatternUtils;
- private TextView mHeaderText;
+ private TextView mHeaderTextView;
+ private TextView mDetailsTextView;
+ private TextView mErrorTextView;
private Handler mHandler = new Handler();
- private PasswordEntryKeyboardHelper mKeyboardHelper;
- private PasswordEntryKeyboardView mKeyboardView;
- private Button mContinueButton;
private int mNumWrongConfirmAttempts;
private CountDownTimer mCountdownTimer;
private boolean mIsAlpha;
@@ -111,51 +92,35 @@ public class ConfirmLockPassword extends SettingsActivity {
Bundle savedInstanceState) {
final int storedQuality = mLockPatternUtils.getKeyguardStoredPasswordQuality();
View view = inflater.inflate(R.layout.confirm_lock_password, null);
- // Disable IME on our window since we provide our own keyboard
-
- view.findViewById(R.id.cancel_button).setOnClickListener(this);
- mContinueButton = (Button) view.findViewById(R.id.next_button);
- mContinueButton.setOnClickListener(this);
- mContinueButton.setEnabled(false); // disable until the user enters at least one char
mPasswordEntry = (TextView) view.findViewById(R.id.password_entry);
mPasswordEntry.setOnEditorActionListener(this);
- mPasswordEntry.addTextChangedListener(this);
- mKeyboardView = (PasswordEntryKeyboardView) view.findViewById(R.id.keyboard);
- mHeaderText = (TextView) view.findViewById(R.id.headerText);
+ mHeaderTextView = (TextView) view.findViewById(R.id.headerText);
+ mDetailsTextView = (TextView) view.findViewById(R.id.detailsText);
+ mErrorTextView = (TextView) view.findViewById(R.id.errorText);
mIsAlpha = DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC == storedQuality
|| DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC == storedQuality
|| DevicePolicyManager.PASSWORD_QUALITY_COMPLEX == storedQuality;
Intent intent = getActivity().getIntent();
if (intent != null) {
- CharSequence headerMessage = intent.getCharSequenceExtra(HEADER_TEXT);
+ CharSequence headerMessage = intent.getCharSequenceExtra(
+ ConfirmDeviceCredentialBaseFragment.HEADER_TEXT);
+ CharSequence detailsMessage = intent.getCharSequenceExtra(
+ ConfirmDeviceCredentialBaseFragment.DETAILS_TEXT);
if (TextUtils.isEmpty(headerMessage)) {
headerMessage = getString(getDefaultHeader());
}
- mHeaderText.setText(headerMessage);
+ if (TextUtils.isEmpty(detailsMessage)) {
+ detailsMessage = getString(getDefaultDetails());
+ }
+ mHeaderTextView.setText(headerMessage);
+ mDetailsTextView.setText(detailsMessage);
}
-
- final Activity activity = getActivity();
- mKeyboardHelper = new PasswordEntryKeyboardHelper(activity,
- mKeyboardView, mPasswordEntry);
- mKeyboardHelper.setKeyboardMode(mIsAlpha ?
- PasswordEntryKeyboardHelper.KEYBOARD_MODE_ALPHA
- : PasswordEntryKeyboardHelper.KEYBOARD_MODE_NUMERIC);
- mKeyboardView.requestFocus();
-
int currentType = mPasswordEntry.getInputType();
mPasswordEntry.setInputType(mIsAlpha ? currentType
: (InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD));
-
- if (activity instanceof SettingsActivity) {
- final SettingsActivity sa = (SettingsActivity) activity;
- int id = getDefaultHeader();
- CharSequence title = getText(id);
- sa.setTitle(title);
- }
-
return view;
}
@@ -164,10 +129,19 @@ public class ConfirmLockPassword extends SettingsActivity {
: R.string.lockpassword_confirm_your_pin_header;
}
+ private int getDefaultDetails() {
+ return mIsAlpha ? R.string.lockpassword_confirm_your_password_generic
+ : R.string.lockpassword_confirm_your_pin_generic;
+ }
+
+ private int getErrorMessage() {
+ return mIsAlpha ? R.string.lockpassword_invalid_password
+ : R.string.lockpassword_invalid_pin;
+ }
+
@Override
public void onPause() {
super.onPause();
- mKeyboardView.requestFocus();
if (mCountdownTimer != null) {
mCountdownTimer.cancel();
mCountdownTimer = null;
@@ -181,9 +155,7 @@ public class ConfirmLockPassword extends SettingsActivity {
@Override
public void onResume() {
- // TODO Auto-generated method stub
super.onResume();
- mKeyboardView.requestFocus();
long deadline = mLockPatternUtils.getLockoutAttemptDeadline();
if (deadline != 0) {
handleAttemptLockout(deadline);
@@ -196,33 +168,35 @@ public class ConfirmLockPassword extends SettingsActivity {
outState.putInt(KEY_NUM_WRONG_CONFIRM_ATTEMPTS, mNumWrongConfirmAttempts);
}
+ @Override
+ protected void authenticationSucceeded(@Nullable String password) {
+ Intent intent = new Intent();
+ if (getActivity() instanceof ConfirmLockPassword.InternalActivity) {
+ intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_TYPE,
+ mIsAlpha ? StorageManager.CRYPT_TYPE_PASSWORD
+ : StorageManager.CRYPT_TYPE_PIN);
+ intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD, password);
+ }
+ getActivity().setResult(RESULT_OK, intent);
+ getActivity().finish();
+ }
+
private void handleNext() {
final String pin = mPasswordEntry.getText().toString();
if (mLockPatternUtils.checkPassword(pin)) {
-
- Intent intent = new Intent();
- if (getActivity() instanceof ConfirmLockPassword.InternalActivity) {
- intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_TYPE,
- mIsAlpha ? StorageManager.CRYPT_TYPE_PASSWORD
- : StorageManager.CRYPT_TYPE_PIN);
- intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD, pin);
- }
-
- getActivity().setResult(RESULT_OK, intent);
- getActivity().finish();
+ authenticationSucceeded(pin);
} else {
if (++mNumWrongConfirmAttempts >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT) {
long deadline = mLockPatternUtils.setLockoutAttemptDeadline();
handleAttemptLockout(deadline);
} else {
- showError(R.string.lockpattern_need_to_unlock_wrong);
+ showError(getErrorMessage());
}
}
}
private void handleAttemptLockout(long elapsedRealtimeDeadline) {
long elapsedRealtime = SystemClock.elapsedRealtime();
- showError(R.string.lockpattern_too_many_failed_confirmation_attempts_header, 0);
mPasswordEntry.setEnabled(false);
mCountdownTimer = new CountDownTimer(
elapsedRealtimeDeadline - elapsedRealtime,
@@ -231,15 +205,15 @@ public class ConfirmLockPassword extends SettingsActivity {
@Override
public void onTick(long millisUntilFinished) {
final int secondsCountdown = (int) (millisUntilFinished / 1000);
- mHeaderText.setText(getString(
- R.string.lockpattern_too_many_failed_confirmation_attempts_footer,
- secondsCountdown));
+ showError(getString(
+ R.string.lockpattern_too_many_failed_confirmation_attempts,
+ secondsCountdown), 0);
}
@Override
public void onFinish() {
mPasswordEntry.setEnabled(true);
- mHeaderText.setText(getDefaultHeader());
+ mErrorTextView.setText("");
mNumWrongConfirmAttempts = 0;
}
}.start();
@@ -264,13 +238,13 @@ public class ConfirmLockPassword extends SettingsActivity {
private final Runnable mResetErrorRunnable = new Runnable() {
public void run() {
- mHeaderText.setText(getDefaultHeader());
+ mErrorTextView.setText("");
}
};
- private void showError(int msg, long timeout) {
- mHeaderText.setText(msg);
- mHeaderText.announceForAccessibility(mHeaderText.getText());
+ private void showError(CharSequence msg, long timeout) {
+ mErrorTextView.setText(msg);
+ mErrorTextView.announceForAccessibility(mErrorTextView.getText());
mPasswordEntry.setText(null);
mHandler.removeCallbacks(mResetErrorRunnable);
if (timeout != 0) {
@@ -278,6 +252,10 @@ public class ConfirmLockPassword extends SettingsActivity {
}
}
+ private void showError(int msg, long timeout) {
+ showError(getText(msg), timeout);
+ }
+
// {@link OnEditorActionListener} methods.
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
// Check if this was the result of hitting the enter or "done" key
@@ -289,16 +267,5 @@ public class ConfirmLockPassword extends SettingsActivity {
}
return false;
}
-
- // {@link TextWatcher} methods.
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
-
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- }
-
- public void afterTextChanged(Editable s) {
- mContinueButton.setEnabled(mPasswordEntry.getText().length() > 0);
- }
}
}