From 50c17897434720b4fbb2dae894cac91a305004c2 Mon Sep 17 00:00:00 2001 From: Amin Shaikh Date: Wed, 21 Mar 2018 18:15:22 -0400 Subject: [PATCH] Hide user switcher from QS on phones. Devices < 600dp wide are considered phones. Continue to show the user switcher in the footer if the user has more than one user set up. Change-Id: Ie0e0d12046a8d809340465dafb4a4b16a7ffd34a Fixes: 74198896 Test: visual --- .../SystemUI/res/values-sw600dp/bools.xml | 21 +++++++++++++ packages/SystemUI/res/values/bools.xml | 21 +++++++++++++ .../com/android/systemui/qs/QSFooterImpl.java | 30 ++++++++++++++----- 3 files changed, 64 insertions(+), 8 deletions(-) create mode 100644 packages/SystemUI/res/values-sw600dp/bools.xml create mode 100644 packages/SystemUI/res/values/bools.xml diff --git a/packages/SystemUI/res/values-sw600dp/bools.xml b/packages/SystemUI/res/values-sw600dp/bools.xml new file mode 100644 index 0000000000000..05e38bdb83893 --- /dev/null +++ b/packages/SystemUI/res/values-sw600dp/bools.xml @@ -0,0 +1,21 @@ + + + + + true + diff --git a/packages/SystemUI/res/values/bools.xml b/packages/SystemUI/res/values/bools.xml new file mode 100644 index 0000000000000..499e24e6ecbd2 --- /dev/null +++ b/packages/SystemUI/res/values/bools.xml @@ -0,0 +1,21 @@ + + + + + false + diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java index dbf17455bc9eb..0fa659748f5d6 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java @@ -20,6 +20,7 @@ import static android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS; import android.content.Context; import android.content.Intent; +import android.content.pm.UserInfo; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.graphics.PorterDuff.Mode; @@ -49,7 +50,6 @@ import com.android.systemui.R.dimen; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.qs.TouchAnimator.Builder; -import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.phone.MultiUserSwitch; import com.android.systemui.statusbar.phone.SettingsButton; @@ -257,17 +257,31 @@ public class QSFooterImpl extends FrameLayout implements QSFooter, mSettingsContainer.setVisibility(mQsDisabled ? View.GONE : View.VISIBLE); mSettingsContainer.findViewById(R.id.tuner_icon).setVisibility( TunerService.isTunerEnabled(mContext) ? View.VISIBLE : View.INVISIBLE); - final boolean isDemo = UserManager.isDeviceInDemoMode(mContext); - - - mMultiUserSwitch.setVisibility(mExpanded - && UserManager.get(mContext).isUserSwitcherEnabled() - ? View.VISIBLE : View.INVISIBLE); - + mMultiUserSwitch.setVisibility(showUserSwitcher(isDemo) ? View.VISIBLE : View.INVISIBLE); mEdit.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 void updateListeners() { if (mListening) { mUserInfoController.addCallback(this);