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

Commit a7096003 authored by Aarthi Balachander's avatar Aarthi Balachander
Browse files

Fix bug when pressing the add user cancel button results in a black screen

Test: Tested on Mojave
Bug: 80187163
Change-Id: Ie46c228dea9de71b97a276f7e4f2d60fe98649b6
parent 3bb9562f
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -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"
+1 −0
Original line number Diff line number Diff line
@@ -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"
+1 −0
Original line number Diff line number Diff line
@@ -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>
+23 −10
Original line number Diff line number Diff line
@@ -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 (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);
                }
            if (which == BUTTON_POSITIVE) {
                new AddNewUserTask().execute(mNewUserName);
            }
        }