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

Commit 21bff55d authored by d34d's avatar d34d Committed by Clark Scheff
Browse files

Keyguard: Implement KeyguardExternalViewCallbacks

Change-Id: I9176f2dd67075de51aa72d456eca3b8898bbbbe3
parent f068b9f0
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.content.ContentResolver;
import android.app.ActivityManager;
import android.app.StatusBarManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.database.ContentObserver;
@@ -1090,6 +1091,10 @@ public class NotificationPanelView extends PanelView implements
                if (mKeyguardExternalView == null) {
                    mKeyguardExternalView =
                            getExternalKeyguardView(mThirdPartyKeyguardViewComponent);
                    if (mKeyguardExternalView != null) {
                        mKeyguardExternalView.registerKeyguardExternalViewCallback(
                                mExternalKeyguardViewCallbacks);
                    }
                }
                if (mKeyguardExternalView != null && !mKeyguardExternalView.isAttachedToWindow()) {
                    addView(mKeyguardExternalView, 0, EXTERNAL_KEYGUARD_VIEW_PARAMS);
@@ -1176,6 +1181,39 @@ public class NotificationPanelView extends PanelView implements
        }
    };

    private KeyguardExternalView.KeyguardExternalViewCallbacks mExternalKeyguardViewCallbacks =
            new KeyguardExternalView.KeyguardExternalViewCallbacks() {
        @Override
        public void dismiss() {
            if (hasExternalKeyguardView()) {
                mStatusBar.setBarState(StatusBarState.KEYGUARD);
                mStatusBar.showBouncer();
            }
        }

        @Override
        public void dismissAndStartActivity(Intent intent) {
            if (hasExternalKeyguardView()) {
                mStatusBar.setBarState(StatusBarState.KEYGUARD);
                mStatusBar.startActivity(intent, true);
            }
        }

        @Override
        public void collapseNotificationPanel() {
            if (mStatusBar.getBarState() == StatusBarState.KEYGUARD && hasExternalKeyguardView()) {
                mStatusBar.focusKeyguardExternalView();
            }
        }

        @Override
        public void providerDied() {
            mKeyguardExternalView.unregisterKeyguardExternalViewCallback(
                    mExternalKeyguardViewCallbacks);
            mKeyguardExternalView = null;
        }
    };

    private void animateHeaderSlidingIn() {
        // If the QS is already expanded we don't need to slide in the header as it's already
        // visible.
@@ -2581,6 +2619,10 @@ public class NotificationPanelView extends PanelView implements
        return mKeyguardExternalView != null && mKeyguardExternalView.isAttachedToWindow();
    }

    public boolean isExternalKeyguardViewInteractive() {
        return mKeyguardExternalView != null && mKeyguardExternalView.isInteractive();
    }

    public KeyguardExternalView getExternalKeyguardView() {
        return mKeyguardExternalView;
    }
+12 −7
Original line number Diff line number Diff line
@@ -4458,7 +4458,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        return false;
    }

    private void showBouncer() {
    protected void showBouncer() {
        if (!mRecreating &&
                (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED)) {
            mWaitingForKeyguardExit = mStatusBarKeyguardViewManager.isShowing();
@@ -4466,15 +4466,20 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        }
    }

    private void showBouncerOrFocusKeyguardExternalView() {
        if (mNotificationPanel.hasExternalKeyguardView() && !isKeyguardShowingMedia()) {
    protected void showBouncerOrFocusKeyguardExternalView() {
        if (mNotificationPanel.hasExternalKeyguardView() && !isKeyguardShowingMedia() &&
                mNotificationPanel.isExternalKeyguardViewInteractive()) {
            focusKeyguardExternalView();
        } else {
            showBouncer();
        }
    }

    protected void focusKeyguardExternalView() {
        mStatusBarView.collapseAllPanels(/*animate=*/ false, false /* delayed*/,
                1.0f /* speedUpFactor */);
        mStatusBarKeyguardViewManager.setKeyguardExternalViewFocus(true);
        setBarState(StatusBarState.SHADE);
        } else {
            showBouncer();
        }
    }

    private void instantExpandNotificationsPanel() {