diff options
| author | 2012-10-03 13:50:55 -0700 | |
|---|---|---|
| committer | 2012-10-03 13:50:55 -0700 | |
| commit | 0a8d32673b3d34153c287916f0ca8d4439f3087e (patch) | |
| tree | dbb8f933f7172ef6c79a72d0a4a686eb64ad96d0 | |
| parent | 6bcd73203ada36b446b05fa33f9834ac989c0621 (diff) | |
Modifying user switcher per design (issue 7047393)
-> When user is switched, we immediately show their security, if present
-> If a user taps on the active user, it shows the glow pad unlock hint
Change-Id: I074ed63123a6bc6a38051cb77b5d86bd3f0e93ea
5 files changed, 37 insertions, 12 deletions
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java index 117877d2085a..74d4da295bd4 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java @@ -67,6 +67,7 @@ public class KeyguardHostView extends KeyguardViewBase { private AppWidgetHost mAppWidgetHost; private KeyguardWidgetPager mAppWidgetContainer; private ViewFlipper mSecurityViewContainer; + private KeyguardSelectorView mKeyguardSelectorView; private KeyguardTransportControlView mTransportControl; private boolean mEnableMenuKey; private boolean mIsVerifyUnlockOnly; @@ -90,6 +91,7 @@ public class KeyguardHostView extends KeyguardViewBase { /*package*/ interface UserSwitcherCallback { void hideSecurityView(int duration); void showSecurityView(); + void showUnlockHint(); } public KeyguardHostView(Context context) { @@ -144,6 +146,7 @@ public class KeyguardHostView extends KeyguardViewBase { KeyguardWidgetRegion kgwr = (KeyguardWidgetRegion) findViewById(R.id.kg_widget_region); kgwr.setVisibility(VISIBLE); mSecurityViewContainer = (ViewFlipper) findViewById(R.id.view_flipper); + mKeyguardSelectorView = (KeyguardSelectorView) findViewById(R.id.keyguard_selector_view); addDefaultWidgets(); updateSecurityViews(); @@ -373,6 +376,18 @@ public class KeyguardHostView extends KeyguardViewBase { showSecurityScreen(mSecurityModel.getBackupFor(currentMode)); } + public boolean showNextSecurityScreenIfPresent() { + SecurityMode securityMode = mSecurityModel.getSecurityMode(); + // Allow an alternate, such as biometric unlock + securityMode = mSecurityModel.getAlternateFor(securityMode); + if (SecurityMode.None == securityMode) { + return false; + } else { + showSecurityScreen(securityMode); // switch to the alternate security view + return true; + } + } + private void showNextSecurityScreenOrFinish(boolean authenticated) { boolean finish = false; if (SecurityMode.None == mCurrentSecuritySelection) { @@ -783,6 +798,12 @@ public class KeyguardHostView extends KeyguardViewBase { public void showSecurityView() { mSecurityViewContainer.setAlpha(1.0f); } + + @Override + public void showUnlockHint() { + mKeyguardSelectorView.ping(); + } + }; multiUser.setCallback(callback); } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserAvatar.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserAvatar.java index a034f4c52977..7266883f8148 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserAvatar.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserAvatar.java @@ -57,32 +57,29 @@ class KeyguardMultiUserAvatar extends FrameLayout { KeyguardMultiUserAvatar icon = (KeyguardMultiUserAvatar) LayoutInflater.from(context).inflate(resId, userSelector, false); - icon.setup(info, userSelector); + icon.init(info, userSelector); return icon; } public KeyguardMultiUserAvatar(Context context) { - super(context, null, 0); + this(context, null, 0); } public KeyguardMultiUserAvatar(Context context, AttributeSet attrs) { - super(context, attrs, 0); + this(context, attrs, 0); } public KeyguardMultiUserAvatar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - } - - public void setup(UserInfo user, KeyguardMultiUserSelectorView userSelector) { - mUserInfo = user; - mUserSelector = userSelector; - init(); - } - private void init() { Resources res = mContext.getResources(); mActiveTextColor = res.getColor(R.color.kg_multi_user_text_active); mInactiveTextColor = res.getColor(R.color.kg_multi_user_text_inactive); + } + + public void init(UserInfo user, KeyguardMultiUserSelectorView userSelector) { + mUserInfo = user; + mUserSelector = userSelector; mUserImage = (ImageView) findViewById(R.id.keyguard_user_avatar); mUserName = (TextView) findViewById(R.id.keyguard_user_name); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserSelectorView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserSelectorView.java index 3b45c227b2b9..82141423f6fa 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserSelectorView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserSelectorView.java @@ -107,7 +107,8 @@ public class KeyguardMultiUserSelectorView extends FrameLayout implements View.O if (!(v instanceof KeyguardMultiUserAvatar)) return; final KeyguardMultiUserAvatar avatar = (KeyguardMultiUserAvatar) v; if (mActiveUserAvatar == avatar) { - // They clicked the active user, no need to do anything + // If they click the currently active user, show the unlock hint + mCallback.showUnlockHint(); return; } else { // Reset the previously active user to appear inactive diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java index 400375481a40..e3b7b0171324 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java @@ -179,6 +179,10 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri return mGlowPadView.getTargetPosition(resId) != -1; } + public void ping() { + mGlowPadView.ping(); + } + private void updateTargets() { int currentUserHandle = mLockPatternUtils.getCurrentUser(); DevicePolicyManager dpm = mLockPatternUtils.getDevicePolicyManager(); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java index c4f761f8456c..23a96fb2e9e6 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java @@ -36,6 +36,7 @@ import android.view.ViewManager; import android.view.WindowManager; import android.widget.FrameLayout; +import com.android.internal.policy.impl.keyguard.KeyguardSecurityModel.SecurityMode; import com.android.internal.widget.LockPatternUtils; import com.android.internal.R; @@ -191,6 +192,7 @@ public class KeyguardViewManager { if (userSwitched) { mKeyguardView.goToUserSwitcher(); + mKeyguardView.showNextSecurityScreenIfPresent(); } if (mScreenOn) { |