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

Commit d31bc8ca authored by Michael Jurka's avatar Michael Jurka Committed by Android Git Automerger
Browse files

am f1424272: am 1aad5be9: am 835579e8: Merge "Removing sticky widgets in...

am f1424272: am 1aad5be9: am 835579e8: Merge "Removing sticky widgets in lockscreen" into jb-mr1-lockscreen-dev

* commit 'f1424272':
  Removing sticky widgets in lockscreen
parents a8bc8a5a f1424272
Loading
Loading
Loading
Loading
+5 −15
Original line number Diff line number Diff line
@@ -110,6 +110,11 @@ public class LockPatternUtils {
     */
    public static final String KEYGUARD_SHOW_SECURITY_CHALLENGE = "showsecuritychallenge";

    /**
     * Tells the keyguard to show the widget with the specified id when the keyguard is created.
     */
    public static final String KEYGUARD_SHOW_APPWIDGET = "showappwidget";

    /**
     * Options used to lock the device upon user switch.
     */
@@ -1183,21 +1188,6 @@ public class LockPatternUtils {
        return true;
    }

    public int getStickyAppWidgetIndex() {
        return Settings.Secure.getIntForUser(
                mContentResolver,
                Settings.Secure.LOCK_SCREEN_STICKY_APPWIDGET,
                -1,
                UserHandle.USER_CURRENT);
    }

    public void setStickyAppWidgetIndex(int value) {
        Settings.Secure.putIntForUser(mContentResolver,
                Settings.Secure.LOCK_SCREEN_STICKY_APPWIDGET,
                value,
                UserHandle.USER_CURRENT);
    }

    private long getLong(String secureSettingKey, long defaultValue) {
        try {
            return getLockSettings().getLong(secureSettingKey, defaultValue,
+30 −54
Original line number Diff line number Diff line
@@ -37,8 +37,6 @@ import android.os.Looper;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.AttributeSet;
import android.util.Log;
@@ -75,6 +73,7 @@ public class KeyguardHostView extends KeyguardViewBase {
    private boolean mIsVerifyUnlockOnly;
    private boolean mEnableFallback; // TODO: This should get the value from KeyguardPatternView
    private SecurityMode mCurrentSecuritySelection = SecurityMode.Invalid;
    private int mAppWidgetToShow;

    protected Runnable mLaunchRunnable;

@@ -84,7 +83,6 @@ public class KeyguardHostView extends KeyguardViewBase {
    private KeyguardSecurityModel mSecurityModel;
    private KeyguardViewStateManager mViewStateManager;

    int mLocalStickyWidget = -1;
    boolean mPersitentStickyWidgetLoaded = false;

    private Rect mTempRect = new Rect();
@@ -768,7 +766,6 @@ public class KeyguardHostView extends KeyguardViewBase {
        // Once the screen turns off, we no longer consider this to be first boot and we want the
        // biometric unlock to start next time keyguard is shown.
        KeyguardUpdateMonitor.getInstance(mContext).setAlternateUnlockEnabled(true);
        saveStickyWidgetIndex();
        checkAppWidgetConsistency();
        showPrimarySecurityScreen(true);
        getSecurityView(mCurrentSecuritySelection).onPause();
@@ -967,7 +964,7 @@ public class KeyguardHostView extends KeyguardViewBase {
        initializeTransportControl();
    }

    private void removeTransportFromWidgetPager() {
    private boolean removeTransportFromWidgetPager() {
        int page = getWidgetPosition(R.id.keyguard_transport_control);
        if (page != -1) {
            mAppWidgetContainer.removeWidget(mTransportControl);
@@ -976,8 +973,9 @@ public class KeyguardHostView extends KeyguardViewBase {
            KeyguardHostView.this.addView(mTransportControl);
            mTransportControl.setVisibility(View.GONE);
            mViewStateManager.setTransportState(KeyguardViewStateManager.TRANSPORT_GONE);
            mTransportControl.post(mSwitchPageRunnable);
            return true;
        }
        return false;
    }

    private void addTransportToWidgetPager() {
@@ -1006,9 +1004,10 @@ public class KeyguardHostView extends KeyguardViewBase {
            mTransportControl.setKeyguardCallback(new TransportCallback() {
                @Override
                public void onListenerDetached() {
                    removeTransportFromWidgetPager();
                    if (removeTransportFromWidgetPager()) {
                        mTransportControl.post(mSwitchPageRunnable);
                    }
                }

                @Override
                public void onListenerAttached() {
@@ -1183,7 +1182,6 @@ public class KeyguardHostView extends KeyguardViewBase {
    @Override
    public Parcelable onSaveInstanceState() {
        if (DEBUG) Log.d(TAG, "onSaveInstanceState");
        saveStickyWidgetIndex();
        Parcelable superState = super.onSaveInstanceState();
        SavedState ss = new SavedState(superState);
        ss.transportState = mViewStateManager.getTransportState();
@@ -1207,9 +1205,7 @@ public class KeyguardHostView extends KeyguardViewBase {
    public void onWindowFocusChanged(boolean hasWindowFocus) {
        super.onWindowFocusChanged(hasWindowFocus);
        if (DEBUG) Log.d(TAG, "Window is " + (hasWindowFocus ? "focused" : "unfocused"));
        if (!hasWindowFocus) {
            saveStickyWidgetIndex();
        } else if (mShowSecurityWhenReturn) {
        if (hasWindowFocus && mShowSecurityWhenReturn) {
            SlidingChallengeLayout slider =
                (SlidingChallengeLayout) findViewById(R.id.sliding_layout);
            if (slider != null) {
@@ -1243,31 +1239,13 @@ public class KeyguardHostView extends KeyguardViewBase {
        return null;
    }

    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;
    private boolean isWidgetPage(int pageIndex) {
        View v = mAppWidgetContainer.getChildAt(pageIndex);
        if (v != null && v instanceof KeyguardWidgetFrame) {
            KeyguardWidgetFrame kwf = (KeyguardWidgetFrame) v;
            return kwf.getContentAppWidgetId() != AppWidgetManager.INVALID_APPWIDGET_ID;
        }
        if (mAppWidgetContainer.isAddPage(index)) {
            return;
        }
        if (mAppWidgetContainer.isCameraPage(index)) {
            return;
        }
        if (isMusicPage(index)) {
            return;
        }

        mLocalStickyWidget = index;
        return false;
    }

    boolean isMusicPage(int pageIndex) {
@@ -1276,23 +1254,23 @@ public class KeyguardHostView extends KeyguardViewBase {

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

        if (mAppWidgetToShow != AppWidgetManager.INVALID_APPWIDGET_ID) {
            final int childCount = mAppWidgetContainer.getChildCount();
            for (int i = 0; i < childCount; i++) {
                if (mAppWidgetContainer.getWidgetPageAt(i).getContentAppWidgetId()
                        == mAppWidgetToShow) {
                    mAppWidgetToShow = AppWidgetManager.INVALID_APPWIDGET_ID;
                    return i;
                }
            }
            mAppWidgetToShow = AppWidgetManager.INVALID_APPWIDGET_ID;
        }
        // if music playing, show transport
        if (isMusicPlaying) {
            if (DEBUG) Log.d(TAG, "Music playing, show transport");
            return mAppWidgetContainer.getWidgetPageIndex(mTransportControl);
        }

        // if we have a valid sticky widget, show it
        int stickyWidgetIndex = getStickyWidget();
        if (stickyWidgetIndex > -1
                && stickyWidgetIndex < mAppWidgetContainer.getChildCount()
                && !mAppWidgetContainer.isAddPage(stickyWidgetIndex)
                && !mAppWidgetContainer.isCameraPage(stickyWidgetIndex)) {
            if (DEBUG) Log.d(TAG, "Valid sticky widget found, show page " + stickyWidgetIndex);
            return stickyWidgetIndex;
        }

        // else show the right-most widget (except for camera)
        int rightMost = mAppWidgetContainer.getChildCount() - 1;
        if (mAppWidgetContainer.isCameraPage(rightMost)) {
@@ -1302,13 +1280,6 @@ public class KeyguardHostView extends KeyguardViewBase {
        return rightMost;
    }

    private void saveStickyWidgetIndex() {
        if (DEBUG) Log.d(TAG, "saveStickyWidgetIndex: " + mLocalStickyWidget);
        if (mPersitentStickyWidgetLoaded && mLocalStickyWidget >= 0) {
            mLockPatternUtils.setStickyAppWidgetIndex(mLocalStickyWidget);
        }
    }

    private void enableUserSelectorIfNecessary() {
        if (!UserManager.supportsMultipleUsers()) {
            return; // device doesn't support multi-user mode
@@ -1380,6 +1351,11 @@ public class KeyguardHostView extends KeyguardViewBase {
        mAppWidgetContainer.setCurrentPage(getWidgetPosition(R.id.keyguard_multi_user_selector));
    }

    public void goToWidget(int appWidgetId) {
        mAppWidgetToShow = appWidgetId;
        mSwitchPageRunnable.run();
    }

    public boolean handleMenuKey() {
        // The following enables the MENU key to work for testing automation
        if (shouldEnableMenuKey()) {
+6 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.internal.policy.impl.keyguard;

import android.app.Activity;
import android.app.ActivityManager;
import android.appwidget.AppWidgetManager;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
@@ -240,6 +241,11 @@ public class KeyguardViewManager {
            if (options.getBoolean(LockPatternUtils.KEYGUARD_SHOW_SECURITY_CHALLENGE)) {
                mKeyguardView.showNextSecurityScreenIfPresent();
            }
            int widgetToShow = options.getInt(LockPatternUtils.KEYGUARD_SHOW_APPWIDGET,
                    AppWidgetManager.INVALID_APPWIDGET_ID);
            if (widgetToShow != AppWidgetManager.INVALID_APPWIDGET_ID) {
                mKeyguardView.goToWidget(widgetToShow);
            }
        }
    }

+0 −4
Original line number Diff line number Diff line
@@ -147,10 +147,6 @@ 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;