diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcher.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcher.java index 679584224da7f..a0312bcdee4ad 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcher.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcher.java @@ -36,8 +36,6 @@ public class KeyguardUserSwitcher { private static final String TAG = "KeyguardUserSwitcher"; private static final boolean ALWAYS_ON = false; - private static final String SIMPLE_USER_SWITCHER_GLOBAL_SETTING = - "lockscreenSimpleUserSwitcher"; private final ViewGroup mUserSwitcher; private final KeyguardStatusBarView mStatusBarView; @@ -52,8 +50,7 @@ public class KeyguardUserSwitcher { mStatusBarView.setKeyguardUserSwitcher(this); mAdapter = new Adapter(context, userSwitcherController); mAdapter.registerDataSetObserver(mDataSetObserver); - mSimpleUserSwitcher = Settings.Global.getInt(context.getContentResolver(), - SIMPLE_USER_SWITCHER_GLOBAL_SETTING, 0) != 0; + mSimpleUserSwitcher = userSwitcherController.isSimpleUserSwitcher(); } else { mUserSwitcher = null; mStatusBarView = null; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java index 7c00c7fe074a7..6e3656d9e5d76 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java @@ -32,11 +32,14 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.UserInfo; +import android.database.ContentObserver; import android.graphics.Bitmap; import android.os.AsyncTask; +import android.os.Handler; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; +import android.provider.Settings; import android.util.Log; import android.util.SparseArray; import android.view.View; @@ -57,12 +60,15 @@ public class UserSwitcherController { private static final String TAG = "UserSwitcherController"; private static final boolean DEBUG = false; + private static final String SIMPLE_USER_SWITCHER_GLOBAL_SETTING = + "lockscreenSimpleUserSwitcher"; private final Context mContext; private final UserManager mUserManager; private final ArrayList> mAdapters = new ArrayList<>(); private final GuestResumeSessionReceiver mGuestResumeSessionReceiver = new GuestResumeSessionReceiver(); + private boolean mSimpleUserSwitcher; private ArrayList mUsers = new ArrayList<>(); private Dialog mExitGuestDialog; @@ -80,6 +86,13 @@ public class UserSwitcherController { filter.addAction(Intent.ACTION_USER_STOPPING); mContext.registerReceiverAsUser(mReceiver, UserHandle.OWNER, filter, null /* permission */, null /* scheduler */); + + mSimpleUserSwitcher = Settings.Global.getInt(context.getContentResolver(), + SIMPLE_USER_SWITCHER_GLOBAL_SETTING, 0) != 0; + mContext.getContentResolver().registerContentObserver( + Settings.Global.getUriFor(SIMPLE_USER_SWITCHER_GLOBAL_SETTING), true, + mSimpleUserSwitcherObserver); + refreshUsers(UserHandle.USER_NULL); } @@ -136,11 +149,13 @@ public class UserSwitcherController { } } - if (guestRecord == null) { - records.add(new UserRecord(null /* info */, null /* picture */, - true /* isGuest */, false /* isCurrent */)); - } else { - records.add(guestRecord); + if (!mSimpleUserSwitcher) { + if (guestRecord == null) { + records.add(new UserRecord(null /* info */, null /* picture */, + true /* isGuest */, false /* isCurrent */)); + } else { + records.add(guestRecord); + } } return records; @@ -167,6 +182,10 @@ public class UserSwitcherController { } } + public boolean isSimpleUserSwitcher() { + return mSimpleUserSwitcher; + } + public void switchTo(UserRecord record) { int id; if (record.isGuest && record.info == null) { @@ -253,6 +272,14 @@ public class UserSwitcherController { } }; + private final ContentObserver mSimpleUserSwitcherObserver = new ContentObserver(new Handler()) { + public void onChange(boolean selfChange) { + mSimpleUserSwitcher = Settings.Global.getInt(mContext.getContentResolver(), + SIMPLE_USER_SWITCHER_GLOBAL_SETTING, 0) != 0; + refreshUsers(UserHandle.USER_NULL); + }; + }; + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("UserSwitcherController state:"); pw.println(" mLastNonGuestUser=" + mLastNonGuestUser);