Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6823de71 authored by Adam Cohen's avatar Adam Cohen Committed by Android (Google) Code Review
Browse files

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

parents ab781ba0 0a8d3267
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -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);
        }
+8 −11
Original line number Diff line number Diff line
@@ -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);        
+2 −1
Original line number Diff line number Diff line
@@ -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
+4 −0
Original line number Diff line number Diff line
@@ -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();
+2 −0
Original line number Diff line number Diff line
@@ -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) {