diff options
5 files changed, 46 insertions, 20 deletions
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardAbsKeyInputView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardAbsKeyInputView.java index db36bcc95bc2..f6305894574c 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardAbsKeyInputView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardAbsKeyInputView.java @@ -88,6 +88,7 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout } protected abstract int getPasswordTextViewId(); + protected abstract int getWrongPasswordStringId(); protected abstract void resetState(); @Override @@ -144,7 +145,7 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout long deadline = mLockPatternUtils.setLockoutAttemptDeadline(); handleAttemptLockout(deadline); } - mSecurityMessageDisplay.setMessage(R.string.kg_wrong_pin, true); + mSecurityMessageDisplay.setMessage(getWrongPasswordStringId(), true); } mPasswordEntry.setText(""); } @@ -164,6 +165,7 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout @Override public void onFinish() { + mSecurityMessageDisplay.setMessage("", false); resetState(); } }.start(); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPINView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPINView.java index b7d9990e98e0..cea3fb09cc82 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPINView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPINView.java @@ -65,7 +65,9 @@ public class KeyguardPINView extends KeyguardAbsKeyInputView @Override public void onClick(View v) { doHapticKeyClick(); - verifyPasswordAndUnlock(); + if (mPasswordEntry.isEnabled()) { + verifyPasswordAndUnlock(); + } } }); ok.setOnHoverListener(new NumPadKey.LiftToActivateListener(getContext())); @@ -78,16 +80,22 @@ public class KeyguardPINView extends KeyguardAbsKeyInputView pinDelete.setVisibility(View.VISIBLE); pinDelete.setOnClickListener(new OnClickListener() { public void onClick(View v) { - CharSequence str = mPasswordEntry.getText(); - if (str.length() > 0) { - mPasswordEntry.setText(str.subSequence(0, str.length()-1)); + // check for time-based lockouts + if (mPasswordEntry.isEnabled()) { + CharSequence str = mPasswordEntry.getText(); + if (str.length() > 0) { + mPasswordEntry.setText(str.subSequence(0, str.length()-1)); + } } doHapticKeyClick(); } }); pinDelete.setOnLongClickListener(new View.OnLongClickListener() { public boolean onLongClick(View v) { - mPasswordEntry.setText(""); + // check for time-based lockouts + if (mPasswordEntry.isEnabled()) { + mPasswordEntry.setText(""); + } doHapticKeyClick(); return true; } @@ -104,4 +112,9 @@ public class KeyguardPINView extends KeyguardAbsKeyInputView @Override public void showUsabilityHint() { } + + @Override + public int getWrongPasswordStringId() { + return R.string.kg_wrong_pin; + } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java index 64bbdd38ae43..23ea2e9c1c90 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java @@ -195,4 +195,9 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView @Override public void showUsabilityHint() { } + + @Override + public int getWrongPasswordStringId() { + return R.string.kg_wrong_password; + } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/NumPadKey.java b/policy/src/com/android/internal/policy/impl/keyguard/NumPadKey.java index ca36007a2ef5..7f51a84458bb 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/NumPadKey.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/NumPadKey.java @@ -51,7 +51,8 @@ public class NumPadKey extends Button { } } } - if (mTextView != null) { + // check for time-based lockouts + if (mTextView != null && mTextView.isEnabled()) { mTextView.append(String.valueOf(mDigit)); } doHapticKeyClick(); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/SlidingChallengeLayout.java b/policy/src/com/android/internal/policy/impl/keyguard/SlidingChallengeLayout.java index 61561439b8dd..fd87646572bb 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/SlidingChallengeLayout.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/SlidingChallengeLayout.java @@ -16,6 +16,8 @@ package com.android.internal.policy.impl.keyguard; +import com.android.internal.R; + import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; @@ -29,7 +31,6 @@ import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.FloatProperty; import android.util.Log; -import android.util.MathUtils; import android.util.Property; import android.view.MotionEvent; import android.view.VelocityTracker; @@ -40,8 +41,6 @@ import android.view.accessibility.AccessibilityManager; import android.view.animation.Interpolator; import android.widget.Scroller; -import com.android.internal.R; - /** * This layout handles interaction with the sliding security challenge views * that overlay/resize other keyguard contents. @@ -53,7 +52,7 @@ public class SlidingChallengeLayout extends ViewGroup implements ChallengeLayout // The drag handle is measured in dp above & below the top edge of the // challenge view; these parameters change based on whether the challenge // is open or closed. - private static final int DRAG_HANDLE_CLOSED_ABOVE = 64; // dp + private static final int DRAG_HANDLE_CLOSED_ABOVE = 8; // dp private static final int DRAG_HANDLE_CLOSED_BELOW = 0; // dp private static final int DRAG_HANDLE_OPEN_ABOVE = 8; // dp private static final int DRAG_HANDLE_OPEN_BELOW = 0; // dp @@ -581,18 +580,16 @@ public class SlidingChallengeLayout extends ViewGroup implements ChallengeLayout final float x = ev.getX(i); final float y = ev.getY(i); if (!mIsBouncing && mActivePointerId == INVALID_POINTER - && ((isInDragHandle(x, y) && MathUtils.sq(x - mGestureStartX) - + MathUtils.sq(y - mGestureStartY) > mTouchSlopSquare) - || crossedDragHandle(x, y, mGestureStartY) + && (crossedDragHandle(x, y, mGestureStartY) || (isInChallengeView(x, y) && - mScrollState == SCROLL_STATE_SETTLING))) { + mScrollState == SCROLL_STATE_SETTLING))) { mActivePointerId = ev.getPointerId(i); mGestureStartX = x; mGestureStartY = y; mGestureStartChallengeBottom = getChallengeBottom(); mDragging = true; mChallengeView.setLayerType(LAYER_TYPE_HARDWARE, null); - } else if (isInChallengeView(x, y)) { + } else if (mChallengeShowing && isInChallengeView(x, y)) { mBlockDrag = true; } } @@ -767,11 +764,19 @@ public class SlidingChallengeLayout extends ViewGroup implements ChallengeLayout } private boolean crossedDragHandle(float x, float y, float initialY) { + final int challengeTop = mChallengeView.getTop(); - return x >= 0 && - x < getWidth() && - initialY < (challengeTop - getDragHandleSizeAbove()) && - y > challengeTop + getDragHandleSizeBelow(); + final boolean horizOk = x >= 0 && x < getWidth(); + + final boolean vertOk; + if (mChallengeShowing) { + vertOk = initialY < (challengeTop - getDragHandleSizeAbove()) && + y > challengeTop + getDragHandleSizeBelow(); + } else { + vertOk = initialY > challengeTop + getDragHandleSizeBelow() && + y < challengeTop - getDragHandleSizeAbove(); + } + return horizOk && vertOk; } @Override |