Merge "DO NOT MERGE Fix bug when pressing the add user cancel button results in a black screen Test: Tested on Mojave Bug: 80187163 Change-Id: Ie46c228dea9de71b97a276f7e4f2d60fe98649b6" into pi-dev

This commit is contained in:
TreeHugger Robot
2018-05-23 21:25:00 +00:00
committed by Android (Google) Code Review
4 changed files with 25 additions and 13 deletions

View File

@@ -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"

View File

@@ -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"

View File

@@ -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>

View File

@@ -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;
@@ -27,7 +28,6 @@ import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.UserHandle;
import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
import android.support.v7.widget.RecyclerView;
@@ -167,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();
@@ -201,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;
}
@@ -228,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)
@@ -240,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();
@@ -260,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);
}
}
}