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

Commit 441d3401 authored by Adam Cohen's avatar Adam Cohen Committed by Android Git Automerger
Browse files

am 7741e620: Merge "Making sure the sticky widget logic works with music" into...

am 7741e620: Merge "Making sure the sticky widget logic works with music" into jb-mr1-lockscreen-dev

* commit '7741e620':
  Making sure the sticky widget logic works with music
parents a7af0209 7741e620
Loading
Loading
Loading
Loading
+39 −13
Original line number Diff line number Diff line
@@ -82,6 +82,9 @@ public class KeyguardHostView extends KeyguardViewBase {
    private KeyguardSecurityModel mSecurityModel;
    private KeyguardViewStateManager mViewStateManager;

    int mLocalStickyWidget = -1;
    boolean mPersitentStickyWidgetLoaded = false;

    private Rect mTempRect = new Rect();

    /*package*/ interface TransportCallback {
@@ -109,7 +112,7 @@ public class KeyguardHostView extends KeyguardViewBase {
        mAppWidgetManager = AppWidgetManager.getInstance(mContext);
        mSecurityModel = new KeyguardSecurityModel(context);

        mViewStateManager = new KeyguardViewStateManager();
        mViewStateManager = new KeyguardViewStateManager(this);
    }

    @Override
@@ -1169,6 +1172,37 @@ public class KeyguardHostView extends KeyguardViewBase {
        return v != null && v.getId() == R.id.keyguard_add_widget;
    }

    private boolean isMusicPage(int pageIndex) {
        return pageIndex >= 0 && pageIndex == getWidgetPosition(R.id.keyguard_transport_control);
    }

    private int getStickyWidget() {
        // The first time we query the persistent state. From that point, we use a locally updated
        // notion of the sticky widget page.
        if (!mPersitentStickyWidgetLoaded) {
            mLocalStickyWidget = mLockPatternUtils.getStickyAppWidgetIndex();
            mPersitentStickyWidgetLoaded = true;
        }
        return mLocalStickyWidget;
    }

    public void updateStickyWidget(int index) {
        if (index < 0 || index >= mAppWidgetContainer.getChildCount()) {
            return;
        }
        if (isAddPage(index)) {
            return;
        }
        if (isCameraPage(index)) {
            return;
        }
        if (isMusicPage(index)) {
            return;
        }

        mLocalStickyWidget = index;
    }

    private int getAppropriateWidgetPage(boolean isMusicPlaying) {
        // assumes at least one widget (besides camera + add)

@@ -1179,7 +1213,7 @@ public class KeyguardHostView extends KeyguardViewBase {
        }

        // if we have a valid sticky widget, show it
        int stickyWidgetIndex = mLockPatternUtils.getStickyAppWidgetIndex();
        int stickyWidgetIndex = getStickyWidget();
        if (stickyWidgetIndex > -1
                && stickyWidgetIndex < mAppWidgetContainer.getChildCount()
                && !isAddPage(stickyWidgetIndex)
@@ -1198,18 +1232,10 @@ public class KeyguardHostView extends KeyguardViewBase {
    }

    private void saveStickyWidgetIndex() {
        int stickyWidgetIndex = mAppWidgetContainer.getCurrentPage();
        if (isAddPage(stickyWidgetIndex)) {
            stickyWidgetIndex++;
        }
        if (isCameraPage(stickyWidgetIndex)) {
            stickyWidgetIndex--;
        }
        if (stickyWidgetIndex < 0 || stickyWidgetIndex >= mAppWidgetContainer.getChildCount()) {
            stickyWidgetIndex = -1;
        if (DEBUG) Log.d(TAG, "saveStickyWidgetIndex: " + mLocalStickyWidget);
        if (mPersitentStickyWidgetLoaded && mLocalStickyWidget >= 0) {
            mLockPatternUtils.setStickyAppWidgetIndex(mLocalStickyWidget);
        }
        if (DEBUG) Log.d(TAG, "saveStickyWidgetIndex: " + stickyWidgetIndex);
        mLockPatternUtils.setStickyAppWidgetIndex(stickyWidgetIndex);
    }

    private void enableUserSelectorIfNecessary() {
+7 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ public class KeyguardViewStateManager implements

    private KeyguardWidgetPager mKeyguardWidgetPager;
    private ChallengeLayout mChallengeLayout;
    private KeyguardHostView mKeyguardHostView;
    private int[] mTmpPoint = new int[2];
    private int[] mTmpLoc = new int[2];

@@ -49,7 +50,8 @@ public class KeyguardViewStateManager implements

    int mChallengeTop = 0;

    public KeyguardViewStateManager() {
    public KeyguardViewStateManager(KeyguardHostView hostView) {
        mKeyguardHostView = hostView;
    }

    public void setPagedView(KeyguardWidgetPager pagedView) {
@@ -145,6 +147,10 @@ public class KeyguardViewStateManager implements
        // We only modify the page state if it is not currently under control by the slider.
        // This prevents conflicts.

        if (mKeyguardHostView != null) {
            mKeyguardHostView.updateStickyWidget(newPageIndex);
        }

        // If the page hasn't switched, don't bother with any of this
        if (mCurrentPage == newPageIndex) return;