/* Ċ Ġ* ĠCopyright Ġ( c ) ĠMicrosoft ĠCorporation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . microsoft . office u if abric . persona Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Handler Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . support . v 4 . graphics . drawable . Rounded Bitmap Drawable Factory Ċ import Ġandroid . support . v 7 . widget . AppCompat ImageView Ċ import Ġandroid . util . Attribute Set Ċ import Ġcom . microsoft . office u if abric . R Ċ Ċ /** Ċ Ġ* Ġ[ Avatar View ] Ġis Ġa Ġcustom ĠImageView Ġthat Ġdisplays Ġthe Ġinitial s Ġof Ġa Ġperson Ġon Ġtop Ġof Ġa Ġcolored Ġcircular Ċ Ġ* Ġbackground . ĠThe Ġinitial s Ġare Ġextracted Ġfrom Ġtheir Ġname Ġor Ġemail . ĠThe Ġcolor Ġof Ġthe Ġcircular Ċ Ġ* Ġbackground Ġis Ġcomputed Ġfrom Ġthe Ġname Ġand Ġis Ġbased Ġon Ġan Ġarray Ġof Ġcolors . Ċ Ġ*/ Ċ open Ġclass ĠAvatar View Ġ: ĠAppCompat ImageView Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġdefault Avatar Size Ġ= ĠAvatar Size . LARGE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( attrs Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġstyled Attrs Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Avatar View ) ĊĠĠĠĠĠĠĠ Ġval Ġavatar Size Ordinal Ġ= Ġstyled Attrs . getInt ( R . style able . Avatar View _ avatar Size , Ġdefault Avatar Size . ordinal ) ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġstyled Attrs . getString ( R . style able . Avatar View _ name ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġemail Ġ= Ġstyled Attrs . getString ( R . style able . Avatar View _ email ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġavatar Size Ġ= ĠAvatar Size . values ()[ avatar Size Ordinal ] ĊĊĠĠĠĠĠĠĠ Ġval Ġavatar Image ResourceId Ġ= Ġstyled Attrs . getResource Id ( R . style able . Avatar View _ avatar Image Drawable , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( avatar Image ResourceId Ġ> Ġ 0 Ġ&& Ġresources . getResource TypeName ( avatar Image ResourceId ) Ġ== Ġ" drawable ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavatar Image Drawable Ġ= Ġstyled Attrs . get Drawable ( R . style able . Avatar View _ avatar Image Drawable ) ĊĊĠĠĠĠĠĠĠ Ġstyled Attrs . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ avatar Size ] Ġis Ġa Ġreference Ġto Ġa Ġdim en . Ġ[ avatar Display Size ] Ġis Ġthe Ġconverted Ġint Ġvalue ĊĠĠĠĠ Ġ* Ġthat Ġis Ġused Ġto Ġset Ġ[ Avatar View ]' s Ġlayout Ġheight Ġand Ġwidth . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġavatar Size : ĠAvatar Size Ġ= Ġdefault Avatar Size ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavatar Display Size Ġ= Ġvalue . getDisplay Value ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġname : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitial s . set Info ( name , Ġemail ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġemail : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitial s . set Info ( name , Ġemail ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġavatar Image Bitmap : ĠBitmap ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Bitmap ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġavatar Image Drawable : ĠDrawable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Drawable ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġavatar Image ResourceId : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ?. let Ġ{ Ġset Image Resource ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġavatar Image Uri : ĠUri ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Image URI ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġinitial s Ġ= ĠInitial s Drawable ( context ) ĊĠĠĠ Ġprivate Ġvar Ġavatar Display Size Ġ= Ġdefault Avatar Size . getDisplay Value ( context ) ĊĊĠĠĠ Ġoverride Ġfun Ġdraw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinitial s . bounds Ġ= ĠRect ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠ Ġinitial s . draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġsuper . draw ( canvas ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Image Drawable ( drawable : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( drawable Ġis ĠBitmap Drawable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Bitmap ( drawable . bitmap ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . setImage Drawable ( drawable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Image Bitmap ( bitmap : ĠBitmap ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( bitmap Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġrounded Bitmap Drawable Ġ= ĠRo unded Bitmap Drawable Factory . create ( resources , Ġbitmap ) ĊĠĠĠĠĠĠĠ Ġrounded Bitmap Drawable . is Circular Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġsuper . setImage Drawable ( rounded Bitmap Drawable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Image Resource ( res Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap Factory . decode Resource ( resources , Ġres Id ) ĊĠĠĠĠĠĠĠ Ġset Image Bitmap ( bitmap ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Image URI ( uri : ĠUri ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( uri Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠMedia Store . Images . Media . get Bitmap ( context . content Resolver , Ġuri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Bitmap ( bitmap ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolve Size And State ( avatar Display Size , Ġwidth Measure Spec , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolve Size And State ( avatar Display Size , Ġheight Measure Spec , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( w : ĠInt , Ġh : ĠInt , Ġold w : ĠInt , Ġold h : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Params . width Ġ= Ġavatar Display Size ĊĠĠĠĠĠĠĠ Ġlayout Params . height Ġ= Ġavatar Display Size ĊĠĠĠĠĠĠĠ ĠHandler (). post Ġ{ Ġrequest Layout () Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Size Changed ( w , Ġh , Ġold w , Ġold h ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠTODO : ĠSee Ġif Ġthis Ġcan Ġbe Ġused Ġanywhere Ċ fun ĠAvatar View . set Avatar ( avatar : ĠI Avatar ) Ġ{ ĊĠĠĠ Ġname Ġ= Ġavatar . name ĊĠĠĠ Ġemail Ġ= Ġavatar . email ĊĠĠĠ Ġavatar Image Bitmap Ġ= Ġavatar . avatar Image Bitmap ĊĠĠĠ Ġavatar Image Drawable Ġ= Ġavatar . avatar Image Drawable ĊĠĠĠ Ġavatar Image ResourceId Ġ= Ġavatar . avatar Image ResourceId ĊĠĠĠ Ġavatar Image Uri Ġ= Ġavatar . avatar Image Uri Ċ }