/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠS yg ic Ġa . s . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠThis Ġproject Ġis Ġlicensed Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . sy g ic . maps . u ikit . views . common Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . annotation . String Res Ċ import Ġcom . sy g ic . maps . u ikit . views . R Ċ import Ġcom . sy g ic . maps . u ikit . views . databinding . Layout Advanced Info View Internal Binding Ċ Ċ /** Ċ Ġ* ĠA Ġ[ Advanced Info View ] Ġis Ġan Ġeasily Ġcustom izable Ġcomponent Ġto Ġdisplay Ġa Ġvariety Ġof Ġinformation Ġstates Ġ( info , Ġerror , Ġempty Ġetc .) Ċ Ġ* Ċ Ġ* ĠContent Ġand Ġvisibility Ġof Ġeach Ġindividual Ġparts Ġcan Ġbe Ġchanged Ġwith Ġthe Ġ_ image Source _, Ġ_ title Text _, Ġ_ suggestion Text _ Ċ Ġ* Ġor Ġ_ action ButtonText _ Ġattribute . Ċ Ġ*/ Ċ @ Suppress (" unused ", Ġ" Member Visibility Can Be Private ") Ċ class ĠAdvanced Info View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġdef Style Res : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠLinearLayout ( context , Ġattrs , Ġdef Style Attr , Ġdef Style Res ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbinding Ġ= ĠLayout Advanced Info View Internal Binding . inflate ( LayoutInflater . from ( context ), Ġthis , Ġtrue ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġorientation Ġ= ĠV ERT ICAL ĊĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . CENTER ĊĊĠĠĠĠĠĠĠ Ġattrs ?. let Ġ{ Ġattribute Set Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Re cycle ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Set , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Advanced Info View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdef Style Attr , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getResource Id ( R . style able . Advanced Info View _ image Source , ĠNO _ ID ). let Ġ{ Ġresource Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resourceId Ġ!= ĠNO _ ID ) Ġset Image Resource ( resourceId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getResource Id ( R . style able . Advanced Info View _ image Description , ĠNO _ ID ). let Ġ{ Ġresource Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resourceId Ġ!= ĠNO _ ID ) Ġset Image Description ( resourceId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getResource Id ( R . style able . Advanced Info View _ title Text , ĠNO _ ID ). let Ġ{ Ġresource Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resourceId Ġ!= ĠNO _ ID ) ĠsetTitle Text ( resourceId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getResource Id ( R . style able . Advanced Info View _ suggestion Text , ĠNO _ ID ). let Ġ{ Ġresource Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resourceId Ġ!= ĠNO _ ID ) Ġset Suggestion Text ( resourceId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getResource Id ( R . style able . Advanced Info View _ action ButtonText , ĠNO _ ID ). let Ġ{ Ġresource Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resourceId Ġ!= ĠNO _ ID ) Ġset Action ButtonText ( resourceId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Image Resource (@ Drawable Res Ġdrawable Res : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . icon . setImage Resource ( drawable Res ) ĊĠĠĠĠĠĠĠ Ġbinding . icon . visibility Ġ= ĠVIS IBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Image Drawable ( drawable : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( drawable Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . icon . visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . icon . setImage Drawable ( drawable ) ĊĠĠĠĠĠĠĠ Ġbinding . icon . visibility Ġ= ĠVIS IBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Image Description (@ String Res Ġdescription Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ Ġset Image Description ( it . getString ( description Id )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Image Description ( description : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( description . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . icon . content Description Ġ= Ġdescription ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetTitle Text (@ String Res Ġtitle Text Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ ĠsetTitle Text ( it . getString ( title Text Id )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetTitle Text ( title Text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( title Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . title Text . visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . title Text . text Ġ= Ġtitle Text ĊĠĠĠĠĠĠĠ Ġbinding . title Text . visibility Ġ= ĠVIS IBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Suggestion Text (@ String Res Ġsuggestion Text Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ Ġset Suggestion Text ( it . getString ( suggestion Text Id )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Suggestion Text ( suggestion Text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( suggestion Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . suggestion Text . visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . suggestion Text . text Ġ= Ġsuggestion Text ĊĠĠĠĠĠĠĠ Ġbinding . suggestion Text . visibility Ġ= ĠVIS IBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Action ButtonText (@ String Res Ġaction ButtonText Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ Ġset Action ButtonText ( it . getString ( action ButtonText Id )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Action ButtonText ( action ButtonText : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( action ButtonText . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . action Button . visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . action Button . text Ġ= Ġaction ButtonText ĊĠĠĠĠĠĠĠ Ġbinding . action Button . visibility Ġ= ĠVIS IBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset OnClickListener ( listener : ĠOn ClickListener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . action Button . setOnClickListener ( listener ) ĊĠĠĠ Ġ} Ċ }