Fix bug when pressing the add user cancel button results in a black screen
Test: Tested on Mojave Bug: 80187163 Change-Id: Ie46c228dea9de71b97a276f7e4f2d60fe98649b6
This commit is contained in:
@@ -23,15 +23,13 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:gravity="center"
|
||||
>
|
||||
android:gravity="center">
|
||||
|
||||
<ImageView android:id="@+id/user_avatar"
|
||||
android:layout_width="@dimen/car_user_switcher_image_avatar_size"
|
||||
android:layout_height="@dimen/car_user_switcher_image_avatar_size"
|
||||
android:background="@drawable/car_button_ripple_background_inverse"
|
||||
android:gravity="center"
|
||||
/>
|
||||
android:gravity="center"/>
|
||||
|
||||
<TextView android:id="@+id/user_name"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
android:id="@+id/user_grid"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="@dimen/car_user_switcher_margin_top"
|
||||
app:verticallyCenterListContent="true"
|
||||
app:dayNightStyle="force_night"
|
||||
app:showPagedListViewDivider="false"
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
<dimen name="car_user_switcher_image_avatar_size">@dimen/car_large_avatar_size</dimen>
|
||||
<dimen name="car_user_switcher_vertical_spacing_between_users">@dimen/car_padding_5</dimen>
|
||||
<dimen name="car_user_switcher_vertical_spacing_between_name_and_avatar">@dimen/car_padding_4</dimen>
|
||||
<dimen name="car_user_switcher_margin_top">@dimen/car_padding_4</dimen>
|
||||
|
||||
<dimen name="car_navigation_button_width">64dp</dimen>
|
||||
<dimen name="car_navigation_bar_width">760dp</dimen>
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.systemui.statusbar.car;
|
||||
|
||||
import static android.content.DialogInterface.BUTTON_NEGATIVE;
|
||||
import static android.content.DialogInterface.BUTTON_POSITIVE;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
@@ -28,7 +29,6 @@ import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.UserHandle;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -37,9 +37,10 @@ import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.car.widget.PagedListView;
|
||||
|
||||
import androidx.core.graphics.drawable.RoundedBitmapDrawable;
|
||||
import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.internal.util.UserIcons;
|
||||
import com.android.settingslib.users.UserManagerHelper;
|
||||
import com.android.systemui.R;
|
||||
@@ -166,6 +167,9 @@ public class UserGridRecyclerView extends PagedListView implements
|
||||
private AlertDialog mDialog;
|
||||
// View that holds the add user button. Used to enable/disable the view
|
||||
private View mAddUserView;
|
||||
// User record for the add user. Need to call notifyUserSelected only if the user
|
||||
// confirms adding a user
|
||||
private UserRecord mAddUserRecord;
|
||||
|
||||
public UserAdapter(Context context, List<UserRecord> users) {
|
||||
mRes = context.getResources();
|
||||
@@ -200,18 +204,16 @@ public class UserGridRecyclerView extends PagedListView implements
|
||||
circleIcon.setCircular(true);
|
||||
holder.mUserAvatarImageView.setImageDrawable(circleIcon);
|
||||
holder.mUserNameTextView.setText(userRecord.mInfo.name);
|
||||
|
||||
holder.mView.setOnClickListener(v -> {
|
||||
if (userRecord == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Notify the listener which user was selected
|
||||
if (mUserSelectionListener != null) {
|
||||
mUserSelectionListener.onUserSelected(userRecord);
|
||||
}
|
||||
|
||||
// If the user selects Guest, start the guest session.
|
||||
if (userRecord.mIsStartGuestSession) {
|
||||
notifyUserSelected(userRecord);
|
||||
mUserManagerHelper.startNewGuestSession(mGuestName);
|
||||
return;
|
||||
}
|
||||
@@ -227,6 +229,7 @@ public class UserGridRecyclerView extends PagedListView implements
|
||||
.concat(System.getProperty("line.separator"))
|
||||
.concat(mRes.getString(R.string.user_add_user_message_update));
|
||||
|
||||
mAddUserRecord = userRecord;
|
||||
mDialog = new Builder(mContext, R.style.Theme_Car_Dark_Dialog_Alert)
|
||||
.setTitle(R.string.user_add_user_title)
|
||||
.setMessage(message)
|
||||
@@ -239,11 +242,19 @@ public class UserGridRecyclerView extends PagedListView implements
|
||||
return;
|
||||
}
|
||||
// If the user doesn't want to be a guest or add a user, switch to the user selected
|
||||
notifyUserSelected(userRecord);
|
||||
mUserManagerHelper.switchToUser(userRecord.mInfo);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void notifyUserSelected(UserRecord userRecord) {
|
||||
// Notify the listener which user was selected
|
||||
if (mUserSelectionListener != null) {
|
||||
mUserSelectionListener.onUserSelected(userRecord);
|
||||
}
|
||||
}
|
||||
|
||||
private Bitmap getUserRecordIcon(UserRecord userRecord) {
|
||||
if (userRecord.mIsStartGuestSession) {
|
||||
return mUserManagerHelper.getGuestDefaultIcon();
|
||||
@@ -259,12 +270,14 @@ public class UserGridRecyclerView extends PagedListView implements
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
// Enable the add button
|
||||
if (mAddUserView != null) {
|
||||
mAddUserView.setEnabled(true);
|
||||
}
|
||||
if (which == BUTTON_POSITIVE) {
|
||||
notifyUserSelected(mAddUserRecord);
|
||||
new AddNewUserTask().execute(mNewUserName);
|
||||
} else if (which == BUTTON_NEGATIVE) {
|
||||
// Enable the add button only if cancel
|
||||
if (mAddUserView != null) {
|
||||
mAddUserView.setEnabled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user