From bc6e78f9da195af4c3a936bff22773ce867af0aa Mon Sep 17 00:00:00 2001 From: Alexandra Gherghina Date: Wed, 3 Sep 2014 10:22:09 +0100 Subject: [PATCH] Switch to using system-wide default user icons User icons were either User Settings specific, or missing. This makes it consistent with the ones in the new helper class. Bug: 17311038 Change-Id: I20cc1deba989cf7a397c5a8dba41bd91bd62472b --- res/drawable-hdpi/ic_person_white.png | Bin 884 -> 0 bytes res/drawable-mdpi/ic_person_white.png | Bin 695 -> 0 bytes res/drawable-xhdpi/ic_person_white.png | Bin 1042 -> 0 bytes res/drawable-xxhdpi/ic_person_white.png | Bin 1433 -> 0 bytes res/drawable-xxxhdpi/ic_person_white.png | Bin 1925 -> 0 bytes res/drawable/ic_avatar_default_1.xml | 28 ------- res/drawable/ic_avatar_default_2.xml | 28 ------- res/drawable/ic_avatar_default_3.xml | 28 ------- res/drawable/ic_avatar_default_4.xml | 28 ------- res/drawable/ic_avatar_default_5.xml | 28 ------- res/drawable/ic_avatar_default_6.xml | 28 ------- res/drawable/ic_avatar_default_7.xml | 28 ------- res/drawable/ic_avatar_default_8.xml | 28 ------- res/drawable/ic_avatar_guest.xml | 28 ------- res/drawable/ic_default_user.png | Bin 1091 -> 0 bytes res/values/colors.xml | 12 --- .../android/settings/UserSpinnerAdapter.java | 7 +- src/com/android/settings/Utils.java | 13 ++- .../drawable/CircleFramedDrawable.java | 2 +- .../android/settings/users/UserSettings.java | 76 ++++++------------ 20 files changed, 39 insertions(+), 323 deletions(-) delete mode 100644 res/drawable-hdpi/ic_person_white.png delete mode 100644 res/drawable-mdpi/ic_person_white.png delete mode 100644 res/drawable-xhdpi/ic_person_white.png delete mode 100644 res/drawable-xxhdpi/ic_person_white.png delete mode 100644 res/drawable-xxxhdpi/ic_person_white.png delete mode 100644 res/drawable/ic_avatar_default_1.xml delete mode 100644 res/drawable/ic_avatar_default_2.xml delete mode 100644 res/drawable/ic_avatar_default_3.xml delete mode 100644 res/drawable/ic_avatar_default_4.xml delete mode 100644 res/drawable/ic_avatar_default_5.xml delete mode 100644 res/drawable/ic_avatar_default_6.xml delete mode 100644 res/drawable/ic_avatar_default_7.xml delete mode 100644 res/drawable/ic_avatar_default_8.xml delete mode 100644 res/drawable/ic_avatar_guest.xml delete mode 100644 res/drawable/ic_default_user.png diff --git a/res/drawable-hdpi/ic_person_white.png b/res/drawable-hdpi/ic_person_white.png deleted file mode 100644 index 009524aa65f9d7e91d74a6fdfee6d62d358b52da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9>jA5L~c#`DCC7XMsm#F_88EW4Dvpb_@(mE}kxqArXh)M(oYI;vn$vTA4$+*E|LR zR#%M|4^1nkEZHA^V)cb*tV*&?C5}q0qKg*#2wc+KX3tgsSo-bFjk+*tt~IB zvpaw8+&W&Hi^_`)!X~CnpF2(Rkj3TZtuhlB6xahS6{PnpJizAZo}i;7*|76iJ>!+a zBW(?*+!{_k$zXfHb3n8~J}dmuS(zIZmCF?;DM((~uU2`sEon4#2QRlVK)=te?ZEd>3>DYPM8Frg?7QYl(SvRT3BR@RrM_}zfSJnQM(^oi_ zs%_1kEX=T+bC+4UmTZ2qkb~idy)TzAZK}A>xZ`T^Ue|li@|Hf%eZ%L`dRFN36c zUZN+(lKUsU`ylgToBfL`h0wNvc(HQ7VvPFfuSS(KRsFH8c+~ zG_^7`w=yvXa;*#uyr1i?MbVI(pOTqYiCcr!uBn1R4U!-mg7ec#$`gxH85~pclTsBt ca}(23gHjVyDhp4hf>J+&r>mdKI;Vst09UAD9RL6T diff --git a/res/drawable-mdpi/ic_person_white.png b/res/drawable-mdpi/ic_person_white.png deleted file mode 100644 index 563f1d10025f9e0da17df3367f494b6803f24266..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ueoXKL{?^yL>WGgtNdSvKUBvfU(=jY&)Rw?Vc`j@T%cl+mm5W8lSX0iLnz*OI{SC=O!nUD1Lx#cXYMt zo{pZk9L>^ig^tM1%}m|EZOJgDXtw}+f;898BdfG~ZJ8?AKCnFCJFqs%juHr&UDca+WS>z zYFDIk%&u8#xzpmCxphtKcZNGNmYCH|@X;~Z-u_ETjw6IY?9gd3rYR?sR_tlkDq>g{ zEpWVL-&M0ZKmVkS)gR(-F0SYBOR{G&RebK(>CFO+8`Tomh?11Vl2ohYqEsNoU}Ruu zqHAETYiJ%~Xli9>Ze?N&C#5QQ<|d}62BjvZR2H601tlN`Pgg&ebxsLQ0C2qk)&Kwi diff --git a/res/drawable-xhdpi/ic_person_white.png b/res/drawable-xhdpi/ic_person_white.png deleted file mode 100644 index 0200ece72554e483aa5037c2bc2a715b243c8bfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1042 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-G$*l2rk&Wd@@jkv%n*=7)X17vD?XPI|c@(N1iT@AsP4H&fK4O#X;a${cG+C^{!kl ztWFNo*`y{+VqdVpN51oU!*h@G!WWz;ss(Xnta!noxX#IAqLYA1`M!lWZhn5S`Td{w zIZXeST>bgx=FIoEzrH(n$FX0|R?jqM@;R53dGB93KcB^YyJNY?M~}b9G&eVP%`nki zvW?yOUM4pS`+-?;|4o{dM3sCyR$R4i|Kt2Xa|8FCOV8sQk{_^s*p?|c^<;MOubp~I z>`Fr3c1c@rdVGEB)1dm_%d>CmQ6-~`VzYlQ+V=XId-!7cm(Lr8b_X1)oUx)eL;m&R zQbENJeUdLLpRDb;P}bD3%0{d7%0({i{P`)jbv8+@eOtF9yp(N~7Qaf^huyxB@dwM; z_umy0y+5O&A@spA!O%2@1Nob?Rezc4EhxSs`hi>GRq4#>7B~2=y1!;(`Twr(qq@!v zndJ;kZ#Vwps0^yk$dJCfc6V=>>VJQklr_|qhzh=plH;-x;Tu=V=y`=s8{39GIL*Gn)6D$0q!;<&n`?fk}o{jsM${XbyiqD;05fS3S^P#mm zJVMp-h0(?rQ)j5fZi)WXD!JjKHYbN<+OJ)@Iz5poZ2KnbtTDTOK(yDkob8j?#@c;1 zl|JeyrkDJ*KeTCM23t{X)RCZnGH)&}J|5q6zb&5avH#U1TVS$REpd$~Nl7e8wMs5Z z1yT$~28JfO2Ijhk<{^frR)*$QCdNRnm4SixbKSKl8glbfGSez?Yp~iiRS>8_5@bVg rep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4`-emA}^>bP0l+XkK0~ErW diff --git a/res/drawable-xxhdpi/ic_person_white.png b/res/drawable-xxhdpi/ic_person_white.png deleted file mode 100644 index 6a6f0338889ad70b3058d2b4705772e99e7d2f6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1433 zcmZ`(do&8=$!A5?|skvKIeJg^PK0uC(hZ4s3;GW2LM2kWKSSV z(0+TsvXbpS`-&(5>5F(rJOI4Bw{w#!BjHkEWTG`t)~PcoA^N`dWJdsqG6Dcr3;?W4 zPONVL5RL+XDGC5!GXX#&G`r3PCwa*FI1mZI)^_JM6sAfpkWhQiFbV$a3D~t?v6R>a zkO+9Uh=JLMj(2rzHQSiOhf^#x)tmNQP|C}V4S%)oEBCf4VR`2o9i_RXvim2pHggD; zF=R_n`{IZWpb#gbNE+_@{3 za}ITsi8a&l^>RFK@B{z+NCuJJ|~nr21dbV&`kTUd=V-K9G?^nWvZ5 zS)SbK71Y>+t)%?pn4}s+_8zfIcx7U`s7CJ~f-l1^-_eFuL<=%AF{NJoHiR z>dU%X8JzkFZxh8)Vrk=Q#=B*m#EMDjwt0qd{2Zg!dNZ~4QM|_;rnMgaPfqqs7rVaM zuw8{N>Ts&NcVAl9>qjGyQ7nw1jS17#0!6c)T>M;^G*s%m-23o1m&pd1Z@QNZ!oDGUO6f# zXBrcBJYeGm`OAXA^9tYixa8p&(EQO0^{rHUa_ZoHyK8t-*f=d6qHE)sd z*G)xl>9>XJ>{cGE0E0N0U@mX6JaT`zAispG#9@r_l4$iMNMhLHJ4~6E?vaM7{BOpX z2Pqx~lL(T?KhVgoK2nc51{J{?ENnzhVCdkqD;F6V@2IL)38vnX8Rhm0M74s)8n@6E zP4ICGD@e3Fj+o{F-?)=&;9dKgm(7|7jePEH(fCesgwXq!kqcT2gxn8@nzjThEOXZ0 zVLf$t5lJBS>@?&>I&{Wt8~)#@n+hNgz1G_6)<1%AjF==`;xdrYN)-0%eXso4cVgShP9T?68Dl zQ7DHAMCpG7K_Pwt{*nJLz}BUyNCaBj4z3~ojO$c74Z!<__|Wu8LDY*hGL7mNd9|Ik P9gzUZ)`?JNP2v0l)rp7! diff --git a/res/drawable-xxxhdpi/ic_person_white.png b/res/drawable-xxxhdpi/ic_person_white.png deleted file mode 100644 index 9092553e7a4cc912069fa29a94341ed591f85fd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1925 zcmbVNc~BE)6c0jzBOoK9a#US6pm-#^8#c#AQiX(QiUC9vv>w?c8xkc4o5cjsHipqL zo_OCF9TcqQqpz;t17_<^Fjjx22 z7Ac`OjLap8F}aDUn%rp`ObZVC7KpKnX#+-r!U4N6(_|IfCE$CzVtVg6hCtvwgqkJ+ zKLnMoOa`Q8k^uNzK1T!d5I~4=5k86`$Pj=BBhe57Lp+RwAYxP~Mg&0n1Jd3|txlXG zlehb#H3_JvD2o_^Y&IL$7R@!284!YD7zFbm9*;vKIMy5!h1)qME4#yjjIe4*gM~7f zO@PNDt~O^=5|EDc!xfAcrShX;leIljbjlz*Zh;Uk3>l4{d%Z_nsTAVBFg}a6rsh}( zD21?^vq=qI4;{OMOy}@oJD=mD7%GAhVLZ&o=o-YMqIkX(lgA-^VJs~u z+QC(rtQ2n25FNe^wC{GV?5kX{lq7J5u{-{p_P+nBk(@SV#8+wz%aE|jSx78z@kMQREuahYLO7-2r+>GR`YZkSfB;l z`P%=RJcteo@^s24ozrndx1(qKaSmwZ<0KI#dVENFPNrz22XBYXh&ftUX}kHl=|)pt23b{A6}P20XpV!` zz?k<18I-d^*E*rt(Obpd)~SbT?ab#)%30jfwZiKladj&h+E}nAa8dpn)uYZoKJJaq zigxF-{w{X4M2Nc7-Wp#EHK=a9c6+hUcWTI-r2OVoi2>3Vd;Ok}|AXI&dA~L-Rt>es zdA}{4-O_LMn&f{r9u_BYs!yY3{u34O3pFA9eiEuGNIcSbD{#wq;ma>D1Hz~&jx6R+ z4}|I0@OihlFwgX&aoK10GG&8&`^uMSYa*5Bbor&5${iPjozS=pP9?BJIqTfLTF3F= zJChaOn?sY=x~4p2jS46;*<9%bk5t2L?(9m$&2HG=9MTY`Z#MZ?^wu}eyq4m#3VhkA zVR>BDs?%K$uIkyaaY2t43 z-NK^+j`nd0>X$8DS#>Glp@bW+FW)tGGdm(Hp{}WaeLX8@qTeZLD*st%#+o}d7uEo! ztS5oTr&W)4E$Vf1@SA(s;2q7^7wWEBN=h#D_4YknG_zsqM-;Mf(H-rcSr zS01U|SRG#HnBq)ZS@Z@61!d?q{v7W5oviNaL9Yhb{qN`d%F|j|`sd}WyUSbKYHl#^ z2EB7;wDhlF^|^4x39FbQpJ%hM#0gjOT!J>pu}_T-fAx4$kmTv)dow1UIp@x+P4h!c z5k|-KfxeNsgLZ?O?#mM^@6T6EPf~=r17#b_4@&BCyLL@@!pQ0Wh%xh+oL!OTQ=P`y zn`bD?vo?34lF$BGFgAXzu&t2X5ODFn|7ySc&Ybwd0|%MmhleJyTB|SiT&JGn7KC4~ zJ#a7de27KtZh3x-SA3w1(Yt6uqkVK7<)EoUE$WtOyf$+FE!F$ zXO$ - - - - - - - - - - - - diff --git a/res/drawable/ic_avatar_default_2.xml b/res/drawable/ic_avatar_default_2.xml deleted file mode 100644 index 77918a0a77d..00000000000 --- a/res/drawable/ic_avatar_default_2.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - diff --git a/res/drawable/ic_avatar_default_3.xml b/res/drawable/ic_avatar_default_3.xml deleted file mode 100644 index 49fd6c4f3ed..00000000000 --- a/res/drawable/ic_avatar_default_3.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - diff --git a/res/drawable/ic_avatar_default_4.xml b/res/drawable/ic_avatar_default_4.xml deleted file mode 100644 index 6992f902fea..00000000000 --- a/res/drawable/ic_avatar_default_4.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - diff --git a/res/drawable/ic_avatar_default_5.xml b/res/drawable/ic_avatar_default_5.xml deleted file mode 100644 index 2aa0db22655..00000000000 --- a/res/drawable/ic_avatar_default_5.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - diff --git a/res/drawable/ic_avatar_default_6.xml b/res/drawable/ic_avatar_default_6.xml deleted file mode 100644 index 7f9bb327aa2..00000000000 --- a/res/drawable/ic_avatar_default_6.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - diff --git a/res/drawable/ic_avatar_default_7.xml b/res/drawable/ic_avatar_default_7.xml deleted file mode 100644 index 1c1c5f34dc3..00000000000 --- a/res/drawable/ic_avatar_default_7.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - diff --git a/res/drawable/ic_avatar_default_8.xml b/res/drawable/ic_avatar_default_8.xml deleted file mode 100644 index 478454e7802..00000000000 --- a/res/drawable/ic_avatar_default_8.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - diff --git a/res/drawable/ic_avatar_guest.xml b/res/drawable/ic_avatar_guest.xml deleted file mode 100644 index f81fe898ce5..00000000000 --- a/res/drawable/ic_avatar_guest.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - diff --git a/res/drawable/ic_default_user.png b/res/drawable/ic_default_user.png deleted file mode 100644 index ddf797fc9da176f949678611219eae2150766694..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1091 zcmeAS@N?(olHy`uVBq!ia0vp^4Is<`Bp9BB+KB@x&H|6fVj%4S#%?FG?LdNM1&--J zx&e$09vaSKU|^2)ba4!+xb=3{>q$!tI9hAxojqIoe|q%WYkA2+77B*9L+8~8oATXf zP!yl>kLTJK1{((c1I!?otSyyC_UHF_CCE}BH*j7!O@LZW8-tXY_`!NnIA71a= zBmG4)_0{XjFrJ&=w>j~7DF`Xto^;glhW)bH;!W;ai2_Vd7~aj)Tgk~JVa=v+e*!^GJyu-FD{h+2rQy zOHzXcF5G>YTz`8-W~iL+t-G1}>*k(1mMVKNeSi9m9cyII2U!^IxE#}-`FdNOx5vfm z|Faf$)~pz4`olwHQeL3`L6YuZ%YfVKmS>my5J(~#hPnDTbX|R z<~XqJ>;sPXi)JdY$vxQcW<#jj?*{1v3sJeUl#hFyZXP-kb9UA1y-%aWSABJ?H~oC% zOaC!PG zT^=EZ;P3T^8kkEq-dC9MZgaf)3Wk!7|LZy!O18u+YcTly7FlY;o^WTq&QpnoJkA~3 z7a5+hZU|Yxu!}umsxrf_bq%o_c?-Ik{q$z!l^;0CdigKkiCBZX?;Gy0US?oV(X(K< z6Tn>7s^#!q=||`)#*%xjMYZ3T)Tf>mJJ)OOa2J@{R7+eVN>UO_QmvAUQh^kMk%6J1 zuAu=Cg&3MynHX9bSm+vDSr1<%~X^wgl##FWaylc_d9MGT&@*android:color/background_material_dark @*android:color/background_material_light - - #ffe91e63 - #ff3f51b5 - #ff4285f4 - #ff00bcd4 - #ff0f9d58 - #ff8bc34a - #ffff9800 - #ffff5722 - - #ff9e9e9e - #ffe0e0e0 diff --git a/src/com/android/settings/UserSpinnerAdapter.java b/src/com/android/settings/UserSpinnerAdapter.java index 32ef3be47a7..b44caacbe40 100644 --- a/src/com/android/settings/UserSpinnerAdapter.java +++ b/src/com/android/settings/UserSpinnerAdapter.java @@ -31,6 +31,7 @@ import android.widget.ImageView; import android.widget.SpinnerAdapter; import android.widget.TextView; +import com.android.internal.util.UserIcons; import com.android.settings.drawable.CircleFramedDrawable; import com.android.settings.R; @@ -57,7 +58,11 @@ public class UserSpinnerAdapter implements SpinnerAdapter { } else { name = userInfo.name; Bitmap bitmap = um.getUserIcon(userHandle.getIdentifier()); - icon = (bitmap == null) ? null : CircleFramedDrawable.getInstance(context, bitmap); + if (bitmap != null) { + icon = CircleFramedDrawable.getInstance(context, bitmap); + } else { + icon = UserIcons.getDefaultUserIcon(userInfo.id, /* light= */ false); + } } } } diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index 466944d178f..60bf226b0e1 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -70,6 +70,8 @@ import android.view.ViewGroup; import android.widget.ListView; import android.widget.TabWidget; +import com.android.internal.util.ImageUtils; +import com.android.internal.util.UserIcons; import com.android.settings.UserSpinnerAdapter.UserDetails; import com.android.settings.dashboard.DashboardCategory; import com.android.settings.dashboard.DashboardTile; @@ -847,10 +849,13 @@ public final class Utils { * Returns a circular icon for a user. */ public static Drawable getUserIcon(Context context, UserManager um, UserInfo user) { - if (user.iconPath == null) return null; - Bitmap icon = um.getUserIcon(user.id); - if (icon == null) return null; - return CircleFramedDrawable.getInstance(context, icon); + if (user.iconPath != null) { + Bitmap icon = um.getUserIcon(user.id); + if (icon != null) { + return CircleFramedDrawable.getInstance(context, icon); + } + } + return UserIcons.getDefaultUserIcon(user.id, /* light= */ false); } /** diff --git a/src/com/android/settings/drawable/CircleFramedDrawable.java b/src/com/android/settings/drawable/CircleFramedDrawable.java index f68dace3f64..97c96a000f2 100644 --- a/src/com/android/settings/drawable/CircleFramedDrawable.java +++ b/src/com/android/settings/drawable/CircleFramedDrawable.java @@ -107,7 +107,7 @@ public class CircleFramedDrawable extends Drawable { canvas.drawPath(fillPath, mPaint); // mask in the icon where the bitmap is opaque - mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP)); + mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(icon, cropRect, circleRect, mPaint); // prepare paint for frame drawing diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index f5ea6aa715e..0d7b279e2ac 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -16,10 +16,6 @@ package com.android.settings.users; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - import android.accounts.Account; import android.accounts.AccountManager; import android.app.Activity; @@ -37,7 +33,6 @@ import android.content.SharedPreferences; import android.content.pm.UserInfo; import android.content.res.Resources; import android.graphics.Bitmap; -import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; @@ -60,6 +55,7 @@ import android.view.View; import android.view.View.OnClickListener; import android.widget.SimpleAdapter; +import com.android.internal.util.UserIcons; import com.android.internal.widget.LockPatternUtils; import com.android.settings.ChooseLockGeneric; import com.android.settings.OwnerInfoSettings; @@ -70,6 +66,10 @@ import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.drawable.CircleFramedDrawable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + /** * Screen that manages the list of users on the device. * Guest user is an always visible entry, even if the guest is not currently @@ -119,19 +119,6 @@ public class UserSettings extends SettingsPreferenceFragment private static final String KEY_ADD_USER_LONG_MESSAGE_DISPLAYED = "key_add_user_long_message_displayed"; - static final int[] USER_DRAWABLES = { - R.drawable.ic_avatar_default_1, - R.drawable.ic_avatar_default_2, - R.drawable.ic_avatar_default_3, - R.drawable.ic_avatar_default_4, - R.drawable.ic_avatar_default_5, - R.drawable.ic_avatar_default_6, - R.drawable.ic_avatar_default_7, - R.drawable.ic_avatar_default_8 - }; - - private static final int GUEST_DRAWABLE_ID = R.drawable.ic_avatar_guest; - private static final String KEY_TITLE = "title"; private static final String KEY_SUMMARY = "summary"; @@ -154,10 +141,8 @@ public class UserSettings extends SettingsPreferenceFragment private EditUserInfoController mEditUserInfoController = new EditUserInfoController(); - // A place to cache the generated guest avatar - private Drawable mGuestDrawable; // A place to cache the generated default avatar - private Drawable mDefaultAvatarDrawable; + private Drawable mDefaultIconDrawable; private Handler mHandler = new Handler() { @Override @@ -325,7 +310,7 @@ public class UserSettings extends SettingsPreferenceFragment private void loadProfile() { if (mIsGuest) { // No need to load profile information - mMePreference.setIcon(getEncircledGuestDrawable()); + mMePreference.setIcon(getEncircledDefaultIcon()); mMePreference.setTitle(R.string.user_exit_guest_title); return; } @@ -423,9 +408,7 @@ public class UserSettings extends SettingsPreferenceFragment Secure.putIntForUser(getContentResolver(), Secure.LOCATION_MODE, Secure.LOCATION_MODE_OFF, userId); mUserManager.setUserRestriction(UserManager.DISALLOW_SHARE_LOCATION, true, user); - Bitmap bitmap = createBitmapFromDrawable( - USER_DRAWABLES[userId % UserSettings.USER_DRAWABLES.length]); - mUserManager.setUserIcon(userId, bitmap); + assignDefaultPhoto(newUserInfo); // Add shared accounts AccountManager am = AccountManager.get(getActivity()); Account [] accounts = am.getAccounts(); @@ -437,15 +420,6 @@ public class UserSettings extends SettingsPreferenceFragment return newUserInfo; } - private Bitmap createBitmapFromDrawable(int resId) { - Drawable icon = getResources().getDrawable(resId); - icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight()); - Bitmap bitmap = Bitmap.createBitmap(icon.getIntrinsicWidth(), icon.getIntrinsicHeight(), - Bitmap.Config.ARGB_8888); - icon.draw(new Canvas(bitmap)); - return bitmap; - } - private UserInfo createTrustedUser() { UserInfo newUserInfo = mUserManager.createUser( getResources().getString(R.string.user_new_user_name), 0); @@ -787,13 +761,15 @@ public class UserSettings extends SettingsPreferenceFragment } if (user.iconPath != null) { if (mUserIcons.get(user.id) == null) { + // Icon not loaded yet, print a placeholder missingIcons.add(user.id); - pref.setIcon(getEncircledDefaultAvatar()); + pref.setIcon(getEncircledDefaultIcon()); } else { setPhotoId(pref, user); } } else { - pref.setIcon(getEncircledDefaultAvatar()); + // Icon not available yet, print a placeholder + pref.setIcon(getEncircledDefaultIcon()); } } @@ -803,7 +779,7 @@ public class UserSettings extends SettingsPreferenceFragment null, null); pref.setEnabled(false); pref.setTitle(R.string.user_new_user_name); - pref.setIcon(getEncircledDefaultAvatar()); + pref.setIcon(getEncircledDefaultIcon()); mUserListCategory.addPreference(pref); } @@ -826,7 +802,7 @@ public class UserSettings extends SettingsPreferenceFragment mIsOwner && voiceCapable? this : null /* settings icon handler */, null /* delete icon handler */); pref.setTitle(R.string.user_guest); - pref.setIcon(getEncircledGuestDrawable()); + pref.setIcon(getEncircledDefaultIcon()); pref.setOnPreferenceClickListener(this); mUserListCategory.addPreference(pref); } @@ -854,7 +830,8 @@ public class UserSettings extends SettingsPreferenceFragment for (int userId : values[0]) { Bitmap bitmap = mUserManager.getUserIcon(userId); if (bitmap == null) { - bitmap = createBitmapFromDrawable(R.drawable.ic_avatar_default_1); + bitmap = UserIcons.convertToBitmap(UserIcons.getDefaultUserIcon(userId, + /* light= */ false)); } mUserIcons.append(userId, bitmap); } @@ -870,24 +847,17 @@ public class UserSettings extends SettingsPreferenceFragment } private void assignDefaultPhoto(UserInfo user) { - Bitmap bitmap = createBitmapFromDrawable( - USER_DRAWABLES[user.id % UserSettings.USER_DRAWABLES.length]); + Bitmap bitmap = UserIcons.convertToBitmap(UserIcons.getDefaultUserIcon(user.id, + /* light= */ false)); mUserManager.setUserIcon(user.id, bitmap); } - private Drawable getEncircledGuestDrawable() { - if (mGuestDrawable == null) { - mGuestDrawable = encircle(createBitmapFromDrawable(GUEST_DRAWABLE_ID)); + private Drawable getEncircledDefaultIcon() { + if (mDefaultIconDrawable == null) { + mDefaultIconDrawable = encircle(UserIcons.convertToBitmap( + UserIcons.getDefaultUserIcon(UserHandle.USER_NULL, /* light= */ false))); } - return mGuestDrawable; - } - - private Drawable getEncircledDefaultAvatar() { - if (mDefaultAvatarDrawable == null) { - mDefaultAvatarDrawable = - encircle(createBitmapFromDrawable(R.drawable.ic_avatar_default_1)); - } - return mDefaultAvatarDrawable; + return mDefaultIconDrawable; } private void setPhotoId(Preference pref, UserInfo user) {