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

Commit c1cc9fef authored by Jason Monk's avatar Jason Monk
Browse files

Allow clicking on guest user

This is needed since the user switch will be hidden by default in
QS and will show up once multi-user has been activated in some way.

Test: click on guest
Bug: 37152893
Change-Id: I351a5d95e9e8a5e47e388d9f0611924b077754da
parent 4e34839a
Loading
Loading
Loading
Loading
+19 −3
Original line number Diff line number Diff line
@@ -725,6 +725,7 @@ public class UserSettings extends SettingsPreferenceFragment
        final boolean voiceCapable = Utils.isVoiceCapable(context);
        final ArrayList<Integer> missingIcons = new ArrayList<>();
        final ArrayList<UserPreference> userPreferences = new ArrayList<>();
        int guestId = UserPreference.USERID_GUEST_DEFAULTS;
        userPreferences.add(mMePreference);

        for (UserInfo user : users) {
@@ -738,6 +739,7 @@ public class UserSettings extends SettingsPreferenceFragment
                pref = mMePreference;
            } else if (user.isGuest()) {
                // Skip over Guest. We add generic Guest settings after this loop
                guestId = user.id;
                continue;
            } else {
                // With Telephony:
@@ -814,9 +816,23 @@ public class UserSettings extends SettingsPreferenceFragment
            userPreferences.add(pref);
            pref.setDisabledByAdmin(
                    mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null);
            if (!pref.isDisabledByAdmin()) {
                pref.setSelectable(false);
            int finalGuestId = guestId;
            pref.setOnPreferenceClickListener(preference -> {
                int id = finalGuestId;
                if (id == UserPreference.USERID_GUEST_DEFAULTS) {
                    UserInfo guest = mUserManager.createGuest(
                            getContext(), preference.getTitle().toString());
                    if (guest != null) {
                        id = guest.id;
                    }
                }
                try {
                    ActivityManager.getService().switchUser(id);
                } catch (RemoteException e) {
                    e.rethrowFromSystemServer();
                }
                return true;
            });
        }

        // Sort list of users by serialNum