diff options
6 files changed, 113 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java index 5ad8cad8195a..272954df6dd6 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java @@ -104,6 +104,8 @@ public class KeyguardClockSwitch extends RelativeLayout { private boolean mSupportsDarkText; private int[] mColorPalette; + private int mLockScreenMode = KeyguardUpdateMonitor.LOCK_SCREEN_MODE_NORMAL; + public KeyguardClockSwitch(Context context, AttributeSet attrs) { super(context, attrs); @@ -128,6 +130,35 @@ public class KeyguardClockSwitch extends RelativeLayout { return mClockPlugin != null; } + /** + * Update lock screen mode for testing different layouts + */ + public void updateLockScreenMode(int mode) { + mLockScreenMode = mode; + RelativeLayout.LayoutParams statusAreaLP = (RelativeLayout.LayoutParams) + mKeyguardStatusArea.getLayoutParams(); + RelativeLayout.LayoutParams clockLP = (RelativeLayout.LayoutParams) + mSmallClockFrame.getLayoutParams(); + + if (mode == KeyguardUpdateMonitor.LOCK_SCREEN_MODE_LAYOUT_1) { + statusAreaLP.removeRule(RelativeLayout.BELOW); + statusAreaLP.addRule(RelativeLayout.LEFT_OF, R.id.clock_view); + statusAreaLP.addRule(RelativeLayout.ALIGN_PARENT_START); + + clockLP.addRule(RelativeLayout.ALIGN_PARENT_END); + clockLP.width = ViewGroup.LayoutParams.WRAP_CONTENT; + } else { + statusAreaLP.removeRule(RelativeLayout.LEFT_OF); + statusAreaLP.removeRule(RelativeLayout.ALIGN_PARENT_START); + statusAreaLP.addRule(RelativeLayout.BELOW, R.id.clock_view); + + clockLP.removeRule(RelativeLayout.ALIGN_PARENT_END); + clockLP.width = ViewGroup.LayoutParams.MATCH_PARENT; + } + + requestLayout(); + } + @Override protected void onFinishInflate() { super.onFinishInflate(); @@ -363,6 +394,10 @@ public class KeyguardClockSwitch extends RelativeLayout { * these cases. */ void setKeyguardShowingHeader(boolean hasHeader) { + if (mLockScreenMode != KeyguardUpdateMonitor.LOCK_SCREEN_MODE_NORMAL) { + hasHeader = false; + } + if (mShowingHeader == hasHeader) { return; } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java index 6e111745627f..9ef2def04ec1 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java @@ -79,6 +79,11 @@ public class KeyguardStatusView extends GridLayout implements private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() { @Override + public void onLockScreenModeChanged(int mode) { + updateLockScreenMode(mode); + } + + @Override public void onTimeChanged() { refreshTime(); } @@ -255,6 +260,10 @@ public class KeyguardStatusView extends GridLayout implements mClockView.refresh(); } + private void updateLockScreenMode(int mode) { + mClockView.updateLockScreenMode(mode); + } + private void updateTimeZone(TimeZone timeZone) { mClockView.onTimeZoneChanged(timeZone); } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index 8ca3246cc231..1a98c206eb0d 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -180,6 +180,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private static final int MSG_USER_STOPPED = 340; private static final int MSG_USER_REMOVED = 341; private static final int MSG_KEYGUARD_GOING_AWAY = 342; + private static final int MSG_LOCK_SCREEN_MODE = 343; + + public static final int LOCK_SCREEN_MODE_NORMAL = 0; + public static final int LOCK_SCREEN_MODE_LAYOUT_1 = 1; /** Biometric authentication state: Not listening. */ private static final int BIOMETRIC_STATE_STOPPED = 0; @@ -263,6 +267,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private final ArrayList<WeakReference<KeyguardUpdateMonitorCallback>> mCallbacks = Lists.newArrayList(); private ContentObserver mDeviceProvisionedObserver; + private ContentObserver mLockScreenModeObserver; private boolean mSwitchingUser; @@ -286,6 +291,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private boolean mLockIconPressed; private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private final Executor mBackgroundExecutor; + private int mLockScreenMode; /** * Short delay before restarting fingerprint authentication after a successful try. This should @@ -1694,6 +1700,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab case MSG_KEYGUARD_GOING_AWAY: handleKeyguardGoingAway((boolean) msg.obj); break; + case MSG_LOCK_SCREEN_MODE: + handleLockScreenMode(); + break; default: super.handleMessage(msg); break; @@ -1828,6 +1837,23 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab } } } + + updateLockScreenMode(); + mLockScreenModeObserver = new ContentObserver(mHandler) { + @Override + public void onChange(boolean selfChange) { + updateLockScreenMode(); + mHandler.sendEmptyMessage(MSG_LOCK_SCREEN_MODE); + } + }; + mContext.getContentResolver().registerContentObserver( + Settings.Global.getUriFor(Settings.Global.SHOW_NEW_LOCKSCREEN), + false, mLockScreenModeObserver); + } + + private void updateLockScreenMode() { + mLockScreenMode = Settings.Global.getInt(mContext.getContentResolver(), + Settings.Global.SHOW_NEW_LOCKSCREEN, 0); } private final UserSwitchObserver mUserSwitchObserver = new UserSwitchObserver() { @@ -2350,6 +2376,20 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab } /** + * Handle {@link #MSG_LOCK_SCREEN_MODE} + */ + private void handleLockScreenMode() { + Assert.isMainThread(); + if (DEBUG) Log.d(TAG, "handleLockScreenMode(" + mLockScreenMode + ")"); + for (int i = 0; i < mCallbacks.size(); i++) { + KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); + if (cb != null) { + cb.onLockScreenModeChanged(mLockScreenMode); + } + } + } + + /** * Handle (@line #MSG_TIMEZONE_UPDATE} */ private void handleTimeZoneUpdate(String timeZone) { @@ -2668,6 +2708,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab callback.onClockVisibilityChanged(); callback.onKeyguardVisibilityChangedRaw(mKeyguardIsVisible); callback.onTelephonyCapable(mTelephonyCapable); + callback.onLockScreenModeChanged(mLockScreenMode); + for (Entry<Integer, SimData> data : mSimDatas.entrySet()) { final SimData state = data.getValue(); callback.onSimStateChanged(state.subId, state.slotId, state.simState); @@ -2959,6 +3001,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab mContext.getContentResolver().unregisterContentObserver(mDeviceProvisionedObserver); } + if (mLockScreenModeObserver != null) { + mContext.getContentResolver().unregisterContentObserver(mLockScreenModeObserver); + } + try { ActivityManager.getService().unregisterUserSwitchObserver(mUserSwitchObserver); } catch (RemoteException e) { diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java index 12e0ecd011cf..3c5ecebd5990 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java @@ -317,4 +317,9 @@ public class KeyguardUpdateMonitorCallback { */ public void onSecondaryLockscreenRequirementChanged(int userId) { } + /** + * Called to switch lock screen layout/clock layouts + */ + public void onLockScreenModeChanged(int mode) { } + } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java index a3f14ba28dcb..1fdf631a858d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java @@ -23,6 +23,7 @@ import android.content.res.Resources; import android.util.MathUtils; import com.android.keyguard.KeyguardStatusView; +import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.Interpolators; import com.android.systemui.R; @@ -122,6 +123,8 @@ public class KeyguardClockPositionAlgorithm { */ private int mUnlockedStackScrollerPadding; + private int mLockScreenMode; + /** * Refreshes the dimension values. */ @@ -171,6 +174,13 @@ public class KeyguardClockPositionAlgorithm { result.clockX = (int) interpolate(0, burnInPreventionOffsetX(), mDarkAmount); } + /** + * Update lock screen mode for testing different layouts + */ + public void onLockScreenModeChanged(int mode) { + mLockScreenMode = mode; + } + public float getMinStackScrollerPadding() { return mBypassEnabled ? mUnlockedStackScrollerPadding : mMinTopMargin + mKeyguardStatusHeight + mClockNotificationsMargin; @@ -185,6 +195,9 @@ public class KeyguardClockPositionAlgorithm { } private int getExpandedPreferredClockY() { + if (mLockScreenMode != KeyguardUpdateMonitor.LOCK_SCREEN_MODE_NORMAL) { + return mMinTopMargin; + } return (mHasCustomClock && (!mHasVisibleNotifs || mBypassEnabled)) ? getPreferredClockY() : getExpandedClockPosition(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index 3f636ffe3a2f..86d4ac1cb443 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -221,6 +221,11 @@ public class NotificationPanelViewController extends PanelViewController { new KeyguardUpdateMonitorCallback() { @Override + public void onLockScreenModeChanged(int mode) { + mClockPositionAlgorithm.onLockScreenModeChanged(mode); + } + + @Override public void onBiometricAuthenticated(int userId, BiometricSourceType biometricSourceType, boolean isStrongBiometric) { |