Merge "Modifying user switcher per design (issue 7047393)" into jb-mr1-dev

This commit is contained in:
Adam Cohen
2012-10-03 16:26:17 -07:00
committed by Android (Google) Code Review
5 changed files with 37 additions and 12 deletions

View File

@@ -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) {
@@ -794,6 +809,12 @@ public class KeyguardHostView extends KeyguardViewBase {
public void showSecurityView() {
mSecurityViewContainer.setAlpha(1.0f);
}
@Override
public void showUnlockHint() {
mKeyguardSelectorView.ping();
}
};
multiUser.setCallback(callback);
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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();

View File

@@ -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) {