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

Commit 18cfa9ab authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove user switcher when multiple users is disabled"

parents 2cf9ee7f 0f46c342
Loading
Loading
Loading
Loading
+3 −20
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEX

import android.content.Context;
import android.content.Intent;
import android.content.pm.UserInfo;
import android.content.res.Configuration;
import android.database.ContentObserver;
import android.graphics.PorterDuff.Mode;
@@ -320,29 +319,13 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
        mSettingsContainer.findViewById(R.id.tuner_icon).setVisibility(
                TunerService.isTunerEnabled(mContext) ? View.VISIBLE : View.INVISIBLE);
        final boolean isDemo = UserManager.isDeviceInDemoMode(mContext);
        mMultiUserSwitch.setVisibility(showUserSwitcher(isDemo) ? View.VISIBLE : View.INVISIBLE);
        mMultiUserSwitch.setVisibility(showUserSwitcher() ? View.VISIBLE : View.INVISIBLE);
        mEditContainer.setVisibility(isDemo || !mExpanded ? View.INVISIBLE : View.VISIBLE);
        mSettingsButton.setVisibility(isDemo || !mExpanded ? View.INVISIBLE : View.VISIBLE);
    }

    private boolean showUserSwitcher(boolean isDemo) {
        if (!mExpanded || isDemo || !UserManager.supportsMultipleUsers()) {
            return false;
        }
        UserManager userManager = UserManager.get(mContext);
        if (userManager.hasUserRestriction(UserManager.DISALLOW_USER_SWITCH)) {
            return false;
        }
        int switchableUserCount = 0;
        for (UserInfo user : userManager.getUsers(true)) {
            if (user.supportsSwitchToByUser()) {
                ++switchableUserCount;
                if (switchableUserCount > 1) {
                    return true;
                }
            }
        }
        return getResources().getBoolean(R.bool.qs_show_user_switcher_for_single_user);
    private boolean showUserSwitcher() {
        return mExpanded && mMultiUserSwitch.isMultiUserEnabled();
    }

    private void updateListeners() {
+3 −3
Original line number Diff line number Diff line
@@ -187,9 +187,9 @@ public class KeyguardStatusBarView extends RelativeLayout
        }
        if (mKeyguardUserSwitcher == null) {
            // If we have no keyguard switcher, the screen width is under 600dp. In this case,
            // we don't show the multi-user avatar unless there is more than 1 user on the device.
            if (mUserSwitcherController != null
                    && mUserSwitcherController.getSwitchableUserCount() > 1) {
            // we only show the multi-user switch if it's enabled through UserManager as well as
            // by the user.
            if (mMultiUserSwitch.isMultiUserEnabled()) {
                mMultiUserSwitch.setVisibility(View.VISIBLE);
            } else {
                mMultiUserSwitch.setVisibility(View.GONE);
+35 −25
Original line number Diff line number Diff line
@@ -16,10 +16,10 @@

package com.android.systemui.statusbar.phone;

import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.Intent;
import android.os.UserManager;
import android.provider.ContactsContract;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
@@ -33,7 +33,6 @@ import com.android.systemui.Dependency;
import com.android.systemui.Prefs;
import com.android.systemui.Prefs.Key;
import com.android.systemui.R;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.qs.DetailAdapter;
import com.android.systemui.qs.QSPanel;
import com.android.systemui.statusbar.policy.KeyguardUserSwitcher;
@@ -95,6 +94,26 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
        registerListener();
    }

    public boolean isMultiUserEnabled() {
        // Short-circuiting from UserManager. Needs to be extracted because of SystemUI boolean flag
        // qs_show_user_switcher_for_single_user

        final boolean userSwitcherEnabled = Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.USER_SWITCHER_ENABLED, 1) != 0;

        if (!UserManager.supportsMultipleUsers()
                || mUserManager.hasUserRestriction(UserManager.DISALLOW_USER_SWITCH)
                || UserManager.isDeviceInDemoMode(mContext)
                || !userSwitcherEnabled) {
            return false;
        }

        final boolean guestEnabled = !mContext.getSystemService(DevicePolicyManager.class)
                .getGuestUserDisabled(null);
        return mUserSwitcherController.getSwitchableUserCount() > 1 || guestEnabled
                || mContext.getResources().getBoolean(R.bool.qs_show_user_switcher_for_single_user);
    }

    private void registerListener() {
        if (mUserManager.isUserSwitcherEnabled() && mUserListener == null) {

@@ -118,7 +137,6 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener

    @Override
    public void onClick(View v) {
        if (mUserManager.isUserSwitcherEnabled()) {
        if (mKeyguardMode) {
            if (mKeyguardUserSwitcher != null) {
                mKeyguardUserSwitcher.show(true /* animate */);
@@ -134,14 +152,6 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
                    getUserDetailAdapter(),
                    mTmpInt2);
        }
        } else {
            if (mQsPanel != null) {
                Intent intent = ContactsContract.QuickContact.composeQuickContactsIntent(
                        getContext(), v, ContactsContract.Profile.CONTENT_URI,
                        ContactsContract.QuickContact.MODE_LARGE, null);
                Dependency.get(ActivityStarter.class).postStartActivityDismissingKeyguard(intent, 0);
            }
        }
    }

    @Override
+1 −1
Original line number Diff line number Diff line
@@ -403,7 +403,7 @@ public class UserSwitcherController implements Dumpable {
        final int N = mUsers.size();
        for (int i = 0; i < N; ++i) {
            UserRecord record = mUsers.get(i);
            if (record.info != null && record.info.supportsSwitchTo()) {
            if (record.info != null && record.info.supportsSwitchToByUser()) {
                count++;
            }
        }