Remove owner and logout views from KeyguardStatusView
information is moved to the keyguard indication area Test: manual Fixes: 183708476 Change-Id: I95b229c71006c43aabf5147d1cc6f6c838b8cc85
This commit is contained in:
@@ -35,43 +35,11 @@
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:orientation="vertical">
|
||||
<TextView
|
||||
android:id="@+id/logout"
|
||||
android:layout_height="@dimen/logout_button_layout_height"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginBottom="@dimen/logout_button_margin_bottom"
|
||||
android:gravity="center"
|
||||
android:paddingLeft="@dimen/logout_button_padding_horizontal"
|
||||
android:paddingRight="@dimen/logout_button_padding_horizontal"
|
||||
android:background="@drawable/logout_button_background"
|
||||
android:fontFamily="@*android:string/config_bodyFontFamilyMedium"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="13sp"
|
||||
android:text="@*android:string/global_action_logout" />
|
||||
|
||||
<include
|
||||
layout="@layout/keyguard_clock_switch"
|
||||
android:id="@+id/keyguard_clock_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/owner_info"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/date_owner_info_margin"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:textColor="?attr/wallpaperTextColorSecondary"
|
||||
android:textSize="@dimen/widget_label_font_size"
|
||||
android:letterSpacing="0.05"
|
||||
android:ellipsize="marquee"
|
||||
android:singleLine="true" />
|
||||
<FrameLayout
|
||||
android:id="@+id/status_view_media_container"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -20,17 +20,10 @@ import android.app.ActivityManager;
|
||||
import android.app.IActivityManager;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.os.Handler;
|
||||
import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.GridLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
|
||||
@@ -45,26 +38,18 @@ import java.util.Set;
|
||||
/**
|
||||
* View consisting of:
|
||||
* - keyguard clock
|
||||
* - logout button (on certain managed devices)
|
||||
* - owner information (if set)
|
||||
* - media player (split shade mode only)
|
||||
*/
|
||||
public class KeyguardStatusView extends GridLayout {
|
||||
private static final boolean DEBUG = KeyguardConstants.DEBUG;
|
||||
private static final String TAG = "KeyguardStatusView";
|
||||
private static final int MARQUEE_DELAY_MS = 2000;
|
||||
|
||||
private final LockPatternUtils mLockPatternUtils;
|
||||
private final IActivityManager mIActivityManager;
|
||||
|
||||
private ViewGroup mStatusViewContainer;
|
||||
private TextView mLogoutView;
|
||||
private KeyguardClockSwitch mClockView;
|
||||
private TextView mOwnerInfo;
|
||||
private boolean mCanShowOwnerInfo = true; // by default, try to show the owner information here
|
||||
private KeyguardSliceView mKeyguardSlice;
|
||||
private Runnable mPendingMarqueeStart;
|
||||
private Handler mHandler;
|
||||
private View mMediaHostContainer;
|
||||
|
||||
private float mDarkAmount = 0;
|
||||
@@ -91,64 +76,17 @@ public class KeyguardStatusView extends GridLayout {
|
||||
super(context, attrs, defStyle);
|
||||
mIActivityManager = ActivityManager.getService();
|
||||
mLockPatternUtils = new LockPatternUtils(getContext());
|
||||
mHandler = new Handler();
|
||||
onDensityOrFontScaleChanged();
|
||||
}
|
||||
|
||||
void setEnableMarquee(boolean enabled) {
|
||||
if (DEBUG) Log.v(TAG, "Schedule setEnableMarquee: " + (enabled ? "Enable" : "Disable"));
|
||||
if (enabled) {
|
||||
if (mPendingMarqueeStart == null) {
|
||||
mPendingMarqueeStart = () -> {
|
||||
setEnableMarqueeImpl(true);
|
||||
mPendingMarqueeStart = null;
|
||||
};
|
||||
mHandler.postDelayed(mPendingMarqueeStart, MARQUEE_DELAY_MS);
|
||||
}
|
||||
} else {
|
||||
if (mPendingMarqueeStart != null) {
|
||||
mHandler.removeCallbacks(mPendingMarqueeStart);
|
||||
mPendingMarqueeStart = null;
|
||||
}
|
||||
setEnableMarqueeImpl(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void setEnableMarqueeImpl(boolean enabled) {
|
||||
if (DEBUG) Log.v(TAG, (enabled ? "Enable" : "Disable") + " transport text marquee");
|
||||
if (mOwnerInfo != null) mOwnerInfo.setSelected(enabled);
|
||||
}
|
||||
|
||||
void setCanShowOwnerInfo(boolean canShowOwnerInfo) {
|
||||
mCanShowOwnerInfo = canShowOwnerInfo;
|
||||
mOwnerInfo = findViewById(R.id.owner_info);
|
||||
if (mOwnerInfo != null) {
|
||||
if (mCanShowOwnerInfo) {
|
||||
mOwnerInfo.setVisibility(VISIBLE);
|
||||
updateOwnerInfo();
|
||||
} else {
|
||||
mOwnerInfo.setVisibility(GONE);
|
||||
mOwnerInfo = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFinishInflate() {
|
||||
super.onFinishInflate();
|
||||
mStatusViewContainer = findViewById(R.id.status_view_container);
|
||||
mLogoutView = findViewById(R.id.logout);
|
||||
if (mLogoutView != null) {
|
||||
mLogoutView.setOnClickListener(this::onLogoutClicked);
|
||||
}
|
||||
|
||||
mClockView = findViewById(R.id.keyguard_clock_container);
|
||||
if (KeyguardClockAccessibilityDelegate.isNeeded(mContext)) {
|
||||
mClockView.setAccessibilityDelegate(new KeyguardClockAccessibilityDelegate(mContext));
|
||||
}
|
||||
if (mCanShowOwnerInfo) {
|
||||
mOwnerInfo = findViewById(R.id.owner_info);
|
||||
}
|
||||
|
||||
mKeyguardSlice = findViewById(R.id.keyguard_status_area);
|
||||
mTextColor = mClockView.getCurrentTextColor();
|
||||
@@ -158,7 +96,6 @@ public class KeyguardStatusView extends GridLayout {
|
||||
|
||||
mMediaHostContainer = findViewById(R.id.status_view_media_container);
|
||||
|
||||
updateOwnerInfo();
|
||||
updateDark();
|
||||
}
|
||||
|
||||
@@ -173,60 +110,6 @@ public class KeyguardStatusView extends GridLayout {
|
||||
mShowingHeader = hasHeader;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
||||
super.onLayout(changed, left, top, right, bottom);
|
||||
layoutOwnerInfo();
|
||||
}
|
||||
|
||||
int getLogoutButtonHeight() {
|
||||
if (mLogoutView == null) {
|
||||
return 0;
|
||||
}
|
||||
return mLogoutView.getVisibility() == VISIBLE ? mLogoutView.getHeight() : 0;
|
||||
}
|
||||
|
||||
int getOwnerInfoHeight() {
|
||||
if (mOwnerInfo == null) {
|
||||
return 0;
|
||||
}
|
||||
return mOwnerInfo.getVisibility() == VISIBLE ? mOwnerInfo.getHeight() : 0;
|
||||
}
|
||||
|
||||
void updateLogoutView(boolean shouldShowLogout) {
|
||||
if (mLogoutView == null) {
|
||||
return;
|
||||
}
|
||||
mLogoutView.setVisibility(shouldShowLogout ? VISIBLE : GONE);
|
||||
// Logout button will stay in language of user 0 if we don't set that manually.
|
||||
mLogoutView.setText(mContext.getResources().getString(
|
||||
com.android.internal.R.string.global_action_logout));
|
||||
}
|
||||
|
||||
void onDensityOrFontScaleChanged() {
|
||||
if (mOwnerInfo != null) {
|
||||
mOwnerInfo.setTextSize(TypedValue.COMPLEX_UNIT_PX,
|
||||
getResources().getDimensionPixelSize(
|
||||
com.android.systemui.R.dimen.widget_label_font_size));
|
||||
loadBottomMargin();
|
||||
}
|
||||
}
|
||||
|
||||
void updateOwnerInfo() {
|
||||
if (mOwnerInfo == null) return;
|
||||
String info = mLockPatternUtils.getDeviceOwnerInfo();
|
||||
if (info == null) {
|
||||
// Use the current user owner information if enabled.
|
||||
final boolean ownerInfoEnabled = mLockPatternUtils.isOwnerInfoEnabled(
|
||||
KeyguardUpdateMonitor.getCurrentUser());
|
||||
if (ownerInfoEnabled) {
|
||||
info = mLockPatternUtils.getOwnerInfo(KeyguardUpdateMonitor.getCurrentUser());
|
||||
}
|
||||
}
|
||||
mOwnerInfo.setText(info);
|
||||
updateDark();
|
||||
}
|
||||
|
||||
void setDarkAmount(float darkAmount) {
|
||||
if (mDarkAmount == darkAmount) {
|
||||
return;
|
||||
@@ -238,17 +121,6 @@ public class KeyguardStatusView extends GridLayout {
|
||||
}
|
||||
|
||||
void updateDark() {
|
||||
boolean dark = mDarkAmount == 1;
|
||||
if (mLogoutView != null) {
|
||||
mLogoutView.setAlpha(dark ? 0 : 1);
|
||||
}
|
||||
|
||||
if (mOwnerInfo != null) {
|
||||
boolean hasText = !TextUtils.isEmpty(mOwnerInfo.getText());
|
||||
mOwnerInfo.setVisibility(hasText ? VISIBLE : GONE);
|
||||
layoutOwnerInfo();
|
||||
}
|
||||
|
||||
final int blendedTextColor = ColorUtils.blendARGB(mTextColor, Color.WHITE, mDarkAmount);
|
||||
mKeyguardSlice.setDarkAmount(mDarkAmount);
|
||||
mClockView.setTextColor(blendedTextColor);
|
||||
@@ -277,13 +149,8 @@ public class KeyguardStatusView extends GridLayout {
|
||||
|
||||
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
|
||||
pw.println("KeyguardStatusView:");
|
||||
pw.println(" mOwnerInfo: " + (mOwnerInfo == null
|
||||
? "null" : mOwnerInfo.getVisibility() == VISIBLE));
|
||||
pw.println(" mDarkAmount: " + mDarkAmount);
|
||||
pw.println(" mTextColor: " + Integer.toHexString(mTextColor));
|
||||
if (mLogoutView != null) {
|
||||
pw.println(" logout visible: " + (mLogoutView.getVisibility() == VISIBLE));
|
||||
}
|
||||
if (mClockView != null) {
|
||||
mClockView.dump(fd, pw, args);
|
||||
}
|
||||
@@ -297,28 +164,4 @@ public class KeyguardStatusView extends GridLayout {
|
||||
mIconTopMarginWithHeader = getResources().getDimensionPixelSize(
|
||||
R.dimen.widget_vertical_padding_with_header);
|
||||
}
|
||||
|
||||
private void layoutOwnerInfo() {
|
||||
if (mOwnerInfo != null && mOwnerInfo.getVisibility() != GONE) {
|
||||
// Animate owner info during wake-up transition
|
||||
mOwnerInfo.setAlpha(1f - mDarkAmount);
|
||||
|
||||
float ratio = mDarkAmount;
|
||||
// Calculate how much of it we should crop in order to have a smooth transition
|
||||
int collapsed = mOwnerInfo.getTop() - mOwnerInfo.getPaddingTop();
|
||||
int expanded = mOwnerInfo.getBottom() + mOwnerInfo.getPaddingBottom();
|
||||
int toRemove = (int) ((expanded - collapsed) * ratio);
|
||||
setBottom(getMeasuredHeight() - toRemove);
|
||||
}
|
||||
}
|
||||
|
||||
private void onLogoutClicked(View view) {
|
||||
int currentUserId = KeyguardUpdateMonitor.getCurrentUser();
|
||||
try {
|
||||
mIActivityManager.switchUser(UserHandle.USER_SYSTEM);
|
||||
mIActivityManager.stopUser(currentUserId, true /*force*/, null);
|
||||
} catch (RemoteException re) {
|
||||
Log.e(TAG, "Failed to logout user", re);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.android.keyguard;
|
||||
|
||||
import android.graphics.Rect;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Slog;
|
||||
|
||||
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
|
||||
@@ -97,8 +96,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
|
||||
@Override
|
||||
public void onInit() {
|
||||
mKeyguardClockSwitchController.init();
|
||||
mView.setEnableMarquee(mKeyguardUpdateMonitor.isDeviceInteractive());
|
||||
mView.updateLogoutView(shouldShowLogout());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -142,20 +139,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
|
||||
return mKeyguardClockSwitchController.hasCustomClock();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the height of the logout button.
|
||||
*/
|
||||
public int getLogoutButtonHeight() {
|
||||
return mView.getLogoutButtonHeight();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the height of the owner information view.
|
||||
*/
|
||||
public int getOwnerInfoHeight() {
|
||||
return mView.getOwnerInfoHeight();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set keyguard status view alpha.
|
||||
*/
|
||||
@@ -254,11 +237,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
|
||||
mKeyguardClockSwitchController.refresh();
|
||||
}
|
||||
|
||||
private boolean shouldShowLogout() {
|
||||
return mKeyguardUpdateMonitor.isLogoutEnabled()
|
||||
&& KeyguardUpdateMonitor.getCurrentUser() != UserHandle.USER_SYSTEM;
|
||||
}
|
||||
|
||||
private final ConfigurationController.ConfigurationListener mConfigurationListener =
|
||||
new ConfigurationController.ConfigurationListener() {
|
||||
@Override
|
||||
@@ -269,7 +247,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
|
||||
@Override
|
||||
public void onDensityOrFontScaleChanged() {
|
||||
mKeyguardClockSwitchController.onDensityOrFontScaleChanged();
|
||||
mView.onDensityOrFontScaleChanged();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -277,8 +254,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
|
||||
@Override
|
||||
public void onLockScreenModeChanged(int mode) {
|
||||
mKeyguardSliceViewController.updateLockScreenMode(mode);
|
||||
mView.setCanShowOwnerInfo(false);
|
||||
mView.updateLogoutView(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -301,31 +276,12 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
|
||||
if (showing) {
|
||||
if (DEBUG) Slog.v(TAG, "refresh statusview showing:" + showing);
|
||||
refreshTime();
|
||||
mView.updateOwnerInfo();
|
||||
mView.updateLogoutView(shouldShowLogout());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartedWakingUp() {
|
||||
mView.setEnableMarquee(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinishedGoingToSleep(int why) {
|
||||
mView.setEnableMarquee(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserSwitchComplete(int userId) {
|
||||
mKeyguardClockSwitchController.refreshFormat();
|
||||
mView.updateOwnerInfo();
|
||||
mView.updateLogoutView(shouldShowLogout());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLogoutEnabledChanged() {
|
||||
mView.updateLogoutView(shouldShowLogout());
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1322,8 +1322,7 @@ public class NotificationPanelViewController extends PanelViewController {
|
||||
mNotificationStackScrollLayoutController.getHeight()
|
||||
- minPadding
|
||||
- shelfSize
|
||||
- bottomPadding
|
||||
- mKeyguardStatusViewController.getLogoutButtonHeight();
|
||||
- bottomPadding;
|
||||
|
||||
int count = 0;
|
||||
ExpandableView previousView = null;
|
||||
|
||||
Reference in New Issue
Block a user