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

Commit c9f6d383 authored by Bryan Eyler's avatar Bryan Eyler Committed by android-build-merger
Browse files

Merge "Use first letter of user for icons." into oc-mr1-dev

am: 30f9d275

Change-Id: I4863e25aaf36df1fcd89925475762f60a3218915
parents 4348f0e5 30f9d275
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@
<resources>
    <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">#FAFAFA</color> <!-- Grey 50 -->
    <color name="car_user_switcher_no_user_image_fgcolor">#212121</color> <!-- Grey 900 -->
    <color name="car_start_driving_background">#FAFAFA</color> <!-- Grey 50 -->
    <color name="car_start_driving_text">#212121</color> <!-- Grey 900 -->
</resources>
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@

    <dimen name="car_fullscreen_user_pod_margin_side">44dp</dimen>
    <dimen name="car_fullscreen_user_pod_margin_above_text">24dp</dimen>
    <dimen name="car_fullscreen_user_pod_icon_text_size">96dp</dimen>
    <dimen name="car_fullscreen_user_pod_image_avatar_width">192dp</dimen>
    <dimen name="car_fullscreen_user_pod_image_avatar_height">192dp</dimen>
    <dimen name="car_fullscreen_user_pod_text_size">40sp</dimen> <!-- B1 -->
+46 −9
Original line number Diff line number Diff line
@@ -17,8 +17,13 @@
package com.android.systemui.statusbar.car;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Align;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.os.UserHandle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
@@ -138,13 +143,41 @@ public class UserGridView extends ViewPager {
            return pods;
        }

        private Drawable getUserIcon(Context context, UserSwitcherController.UserRecord record) {
            if (record.isAddUser) {
                Drawable icon = context.getDrawable(R.drawable.ic_add_circle_qs);
                icon.setTint(Color.WHITE);
                return icon;
            }
            return UserIcons.getDefaultUserIcon(record.resolveId(), /* light= */ true);
        /**
         * Returns the default user icon.  This icon is a circle with a letter in it.  The letter is
         * the first character in the username.
         *
         * @param userName the username of the user for which the icon is to be created
         */
        private Bitmap getDefaultUserIcon(CharSequence userName) {
            CharSequence displayText = userName.subSequence(0, 1);
            Bitmap out = Bitmap.createBitmap(mPodWidth, mPodWidth, Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(out);

            // Draw the circle background.
            GradientDrawable shape = new GradientDrawable();
            shape.setShape(GradientDrawable.RADIAL_GRADIENT);
            shape.setGradientRadius(1.0f);
            shape.setColor(getContext().getColor(R.color.car_user_switcher_no_user_image_bgcolor));
            shape.setBounds(0, 0, mPodWidth, mPodWidth);
            shape.draw(canvas);

            // Draw the letter in the center.
            Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
            paint.setColor(getContext().getColor(R.color.car_user_switcher_no_user_image_fgcolor));
            paint.setTextAlign(Align.CENTER);
            paint.setTextSize(getResources().getDimensionPixelSize(
                    R.dimen.car_fullscreen_user_pod_icon_text_size));
            Paint.FontMetricsInt metrics = paint.getFontMetricsInt();
            // The Y coordinate is measured by taking half the height of the pod, but that would
            // draw the character putting the bottom of the font in the middle of the pod.  To
            // correct this, half the difference between the top and bottom distance metrics of the
            // font gives the offset of the font.  Bottom is a positive value, top is negative, so
            // the different is actually a sum.  The "half" operation is then factored out.
            canvas.drawText(displayText.toString(),
                    mPodWidth / 2, (mPodWidth - (metrics.bottom + metrics.top)) / 2, paint);

            return out;
        }

        private View makeUserPod(LayoutInflater inflater, Context context,
@@ -161,8 +194,12 @@ public class UserGridView extends ViewPager {
            }

            ImageView iconView = (ImageView) view.findViewById(R.id.user_avatar);
            if (record == null || record.picture == null) {
                iconView.setImageDrawable(getUserIcon(context, record));
            if (record == null || (record.picture == null && !record.isAddUser)) {
                iconView.setImageBitmap(getDefaultUserIcon(nameView.getText()));
            } else if (record.isAddUser) {
                Drawable icon = context.getDrawable(R.drawable.ic_add_circle_qs);
                icon.setTint(context.getColor(R.color.car_user_switcher_no_user_image_bgcolor));
                iconView.setImageDrawable(icon);
            } else {
                iconView.setImageBitmap(record.picture);
            }