Merge "Refactoring the User Switcher layout files to use dimensions in dimens_car.xml and colors_car.xml so that overlays will be easier. Also, added a dialog when adding a user. Fixed the issue where coming back to the user picker makes the buttons unresponsive" into pi-dev

This commit is contained in:
TreeHugger Robot
2018-04-22 04:06:59 +00:00
committed by Android (Google) Code Review
9 changed files with 86 additions and 60 deletions

View File

@@ -3,10 +3,10 @@
<item>
<shape android:shape="oval">
<solid
android:color="@color/car_dark_blue_grey_600"/>
android:color="@color/car_user_switcher_add_user_background_color"/>
<size
android:width="@dimen/car_fullscreen_user_pod_image_avatar_width"
android:height="@dimen/car_fullscreen_user_pod_image_avatar_height"/>
android:width="@dimen/car_user_switcher_image_avatar_size"
android:height="@dimen/car_user_switcher_image_avatar_size"/>
</shape>
</item>
<item

View File

@@ -4,6 +4,6 @@
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/car_body1_light"
android:fillColor="@color/car_user_switcher_add_user_add_sign_color"
android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
</vector>

View File

@@ -16,30 +16,31 @@
-->
<RelativeLayout
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:clipChildren="false"
android:alpha="0"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="fill_horizontal">
android:orientation="vertical"
android:gravity="center"
>
<ImageView android:id="@+id/user_avatar"
android:layout_centerHorizontal="true"
android:layout_width="@dimen/car_fullscreen_user_pod_image_avatar_width"
android:layout_height="@dimen/car_fullscreen_user_pod_image_avatar_height"
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"
/>
<TextView android:id="@+id/user_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/car_padding_4"
android:textSize="@dimen/car_body1_size"
android:textColor="@color/car_body1_light"
android:layout_marginTop="@dimen/car_user_switcher_vertical_spacing_between_name_and_avatar"
android:textSize="@dimen/car_user_switcher_name_text_size"
android:textColor="@color/car_user_switcher_name_text_color"
android:ellipsize="end"
android:singleLine="true"
android:gravity="center"
android:layout_below="@id/user_avatar"/>
android:gravity="center"/>
</RelativeLayout>
</LinearLayout>

View File

@@ -19,32 +19,29 @@
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/car_card_dark"
android:background="@color/car_user_switcher_background_color"
android:visibility="gone">
<RelativeLayout
<LinearLayout
android:id="@+id/container"
android:background="@color/car_card_dark"
android:background="@color/car_user_switcher_background_color"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/car_status_bar_header"
android:theme="@android:style/Theme"
android:layout_alignParentTop="true"/>
<!-- TODO: add app:verticallyCenterListContent="true" when car support lib is updated -->
<com.android.systemui.statusbar.car.UserGridRecyclerView
android:id="@+id/user_grid"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/header"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
app:verticallyCenterListContent="true"
app:dayNightStyle="force_night"
app:showPagedListViewDivider="false"
app:gutter="both"
app:itemSpacing="@dimen/car_padding_5"/>
app:itemSpacing="@dimen/car_user_switcher_vertical_spacing_between_users"/>
</RelativeLayout>
</LinearLayout>
</FrameLayout>

View File

@@ -31,23 +31,18 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/user_switcher_container"
android:layout_marginStart="@dimen/car_margin"
android:layout_marginEnd="@dimen/car_margin"
android:clipChildren="false"
android:layout_width="match_parent"
android:layout_height="@dimen/car_user_switcher_container_height">
<com.android.systemui.statusbar.car.UserGridRecyclerView
android:id="@+id/user_grid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:dayNightStyle="force_night"
app:showPagedListViewDivider="false"
app:gutter="both"
app:itemSpacing="@dimen/car_padding_4"/>
app:itemSpacing="@dimen/car_user_switcher_vertical_spacing_between_users"/>
</RelativeLayout>

View File

@@ -18,14 +18,11 @@
-->
<resources>
<color name="car_qs_background_primary">#263238</color> <!-- Blue Gray 900 -->
<color name="car_user_switcher_progress_bgcolor">#00000000</color> <!-- Transparent -->
<color name="car_user_switcher_progress_fgcolor">#80CBC4</color> <!-- Teal 200 -->
<color name="car_user_switcher_no_user_image_bgcolor">@color/car_grey_50</color>
<color name="car_user_switcher_no_user_image_fgcolor">@color/car_grey_900</color>
<color name="car_start_driving_background">@color/car_grey_50</color>
<color name="car_start_driving_text">@color/car_grey_900</color>
<color name="car_qs_footer_user_name_color">@color/car_grey_50</color>
<color name="car_grey_50">#FAFAFA</color>
<color name="car_grey_900">#212121</color>
<!-- colors for user switcher -->
<color name="car_user_switcher_background_color">@color/car_card_dark</color>
<color name="car_user_switcher_name_text_color">@color/car_body1_light</color>
<color name="car_user_switcher_add_user_background_color">@color/car_dark_blue_grey_600</color>
<color name="car_user_switcher_add_user_add_sign_color">@color/car_body1_light</color>
</resources>

View File

@@ -16,12 +16,11 @@
*/
-->
<resources>
<!-- TODO replace with car support lib sizes when available -->
<dimen name="car_fullscreen_user_pod_icon_text_size">64sp</dimen>
<dimen name="car_fullscreen_user_pod_width">243dp</dimen>
<dimen name="car_fullscreen_user_pod_height">356dp</dimen>
<dimen name="car_fullscreen_user_pod_image_avatar_width">96dp</dimen>
<dimen name="car_fullscreen_user_pod_image_avatar_height">96dp</dimen>
<!-- dimensions for the car user switcher -->
<dimen name="car_user_switcher_name_text_size">@dimen/car_body1_size</dimen>
<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_navigation_button_width">64dp</dimen>
<dimen name="car_navigation_bar_width">760dp</dimen>
@@ -43,5 +42,4 @@
<!-- This must be the negative of car_user_switcher_container_height for the animation. -->
<dimen name="car_user_switcher_container_anim_height">-420dp</dimen>
<dimen name="car_body2_size">26sp</dimen>
</resources>

View File

@@ -23,4 +23,8 @@
<string name="car_add_user">Add User</string>
<!-- Default name of the new user created. [CHAR LIMIT=30] -->
<string name="car_new_user">New User</string>
<!-- Message to inform user that creation of new user requires that user to set up their space. [CHAR LIMIT=100] -->
<string name="user_add_user_message_setup">When you add a new user, that person needs to set up their space.</string>
<!-- Message to inform user that the newly created user will have permissions to update apps for all other users. [CHAR LIMIT=100] -->
<string name="user_add_user_message_update">Any user can update apps for all other users.</string>
</resources>

View File

@@ -16,9 +16,14 @@
package com.android.systemui.statusbar.car;
import static android.content.DialogInterface.BUTTON_POSITIVE;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.UserInfo;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.os.AsyncTask;
@@ -37,6 +42,7 @@ import com.android.internal.util.UserIcons;
import com.android.settingslib.users.UserManagerHelper;
import com.android.systemui.R;
import com.android.systemui.statusbar.phone.SystemUIDialog;
import java.util.ArrayList;
import java.util.List;
@@ -147,13 +153,17 @@ public class UserGridRecyclerView extends PagedListView implements
/**
* Adapter to populate the grid layout with the available user profiles
*/
public final class UserAdapter extends RecyclerView.Adapter<UserAdapter.UserAdapterViewHolder> {
public final class UserAdapter extends RecyclerView.Adapter<UserAdapter.UserAdapterViewHolder>
implements Dialog.OnClickListener {
private final Context mContext;
private List<UserRecord> mUsers;
private final Resources mRes;
private final String mGuestName;
private final String mNewUserName;
private AlertDialog mDialog;
// View that holds the add user button. Used to enable/disable the view
private View mAddUserView;
public UserAdapter(Context context, List<UserRecord> users) {
mRes = context.getResources();
@@ -190,9 +200,6 @@ public class UserGridRecyclerView extends PagedListView implements
return;
}
// Disable button so it cannot be clicked multiple times
holder.mView.setEnabled(false);
// Notify the listener which user was selected
if (mUserSelectionListener != null) {
mUserSelectionListener.onUserSelected(userRecord);
@@ -204,12 +211,28 @@ public class UserGridRecyclerView extends PagedListView implements
return;
}
// If the user wants to add a user, start task to add new user
// If the user wants to add a user, show dialog to confirm adding a user
if (userRecord.mIsAddUser) {
new AddNewUserTask().execute(mNewUserName);
// Disable button so it cannot be clicked multiple times
mAddUserView = holder.mView;
mAddUserView.setEnabled(false);
String message = mRes.getString(R.string.user_add_user_message_setup)
.concat(System.getProperty("line.separator"))
.concat(System.getProperty("line.separator"))
.concat(mRes.getString(R.string.user_add_user_message_update));
mDialog = new Builder(mContext, R.style.Theme_Car_Dark_Dialog_Alert)
.setTitle(R.string.user_add_user_title)
.setMessage(message)
.setNegativeButton(android.R.string.cancel, this)
.setPositiveButton(android.R.string.ok, this)
.create();
// Sets window flags for the SysUI dialog
SystemUIDialog.applyFlags(mDialog);
mDialog.show();
return;
}
// If the user doesn't want to be a guest or add a user, switch to the user selected
mUserManagerHelper.switchToUser(userRecord.mInfo);
});
@@ -219,17 +242,28 @@ public class UserGridRecyclerView extends PagedListView implements
private Bitmap getUserRecordIcon(UserRecord userRecord) {
if (userRecord.mIsStartGuestSession) {
return UserIcons.convertToBitmap(UserIcons.getDefaultUserIcon(
mContext.getResources(), UserHandle.USER_NULL, false));
mContext.getResources(), UserHandle.USER_NULL, false));
}
if (userRecord.mIsAddUser) {
return UserIcons.convertToBitmap(mContext
.getDrawable(R.drawable.car_add_circle_round));
.getDrawable(R.drawable.car_add_circle_round));
}
return mUserManagerHelper.getUserIcon(userRecord.mInfo);
}
@Override
public void onClick(DialogInterface dialog, int which) {
// Enable the add button
if (mAddUserView != null) {
mAddUserView.setEnabled(true);
}
if (which == BUTTON_POSITIVE) {
new AddNewUserTask().execute(mNewUserName);
}
}
private class AddNewUserTask extends AsyncTask<String, Void, UserInfo> {
@Override