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

Commit f3e46cf3 authored by Beverly's avatar Beverly
Browse files

Remove owner and logout views from KeyguardStatusView

information is moved to the keyguard indication area

Test: manual
Fixes: 183708476
Change-Id: I95b229c71006c43aabf5147d1cc6f6c838b8cc85
parent d8be4517
Loading
Loading
Loading
Loading
+0 −32
Original line number Diff line number Diff line
@@ -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"
+0 −157
Original line number Diff line number Diff line
@@ -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);
        }
    }
}
+0 −44
Original line number Diff line number Diff line
@@ -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());
        }
    };

+1 −2
Original line number Diff line number Diff line
@@ -1322,8 +1322,7 @@ public class NotificationPanelViewController extends PanelViewController {
                mNotificationStackScrollLayoutController.getHeight()
                        - minPadding
                        - shelfSize
                        - bottomPadding
                        - mKeyguardStatusViewController.getLogoutButtonHeight();
                        - bottomPadding;

        int count = 0;
        ExpandableView previousView = null;