From 4e31442a72935218f0b2a4a96ee665e332f95925 Mon Sep 17 00:00:00 2001 From: Yasin Kilicdere Date: Fri, 4 Mar 2022 18:20:29 +0000 Subject: [PATCH] Update UI to show feedback while creating Guest from Settings. Make UM.createGuest call async and show "Creating new guest" dialog during. Bug: 219741250 Test: Manual Change-Id: I7e3497fef283a4c13719a12b962866f88e9e5a50 --- .../android/settings/users/UserSettings.java | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 64a65a4b405..6c90ee162c2 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -523,6 +523,30 @@ public class UserSettings extends SettingsPreferenceFragment startActivity(intent); } + private void onAddGuestClicked() { + final UserCreatingDialog guestCreatingDialog = + new UserCreatingDialog(getActivity(), /* isGuest= */ true); + guestCreatingDialog.show(); + + ThreadUtils.postOnBackgroundThread(() -> { + mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_USER_GUEST_ADD); + Trace.beginSection("UserSettings.addGuest"); + final UserInfo guest = mUserManager.createGuest(getContext()); + Trace.endSection(); + + ThreadUtils.postOnMainThread(() -> { + guestCreatingDialog.dismiss(); + if (guest == null) { + Toast.makeText(getContext(), + com.android.settingslib.R.string.add_guest_failed, + Toast.LENGTH_SHORT).show(); + return; + } + openUserDetails(guest, true); + }); + }); + } + private void onRemoveUserClicked(int userId) { synchronized (mUserLock) { if (mRemovingUserId == -1 && !mAddingUser) { @@ -1258,17 +1282,7 @@ public class UserSettings extends SettingsPreferenceFragment return true; } else if (pref == mAddGuest) { mAddGuest.setEnabled(false); // prevent multiple tap issue - mMetricsFeatureProvider.action(getActivity(), SettingsEnums.ACTION_USER_GUEST_ADD); - Trace.beginSection("UserSettings.addGuest"); - UserInfo guest = mUserManager.createGuest(getContext()); - Trace.endSection(); - if (guest == null) { - Toast.makeText(getContext(), - com.android.settingslib.R.string.add_user_failed, - Toast.LENGTH_SHORT).show(); - return true; - } - openUserDetails(guest, true); + onAddGuestClicked(); return true; } return false;