Merge "Modifying user switcher per design (issue 7047393)" into jb-mr1-dev
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user