/* Ċ Ġ* Ġ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 . navigation . speed Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Call Super Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġcom . sy g ic . maps . u ikit . views . R Ċ import Ġcom . sy g ic . maps . u ikit . views . common . extensions . getColor Ċ import Ġcom . sy g ic . maps . u ikit . views . common . extensions . getColor From Attr Ċ import Ġcom . sy g ic . maps . u ikit . views . databinding . Layout Current Speed Internal Binding Ċ Ċ /** Ċ Ġ* ĠA Ġ[ Current Speed View ] Ġis Ġdesigned Ġto Ġbe Ġused Ġas Ġan Ġvisual Ġpresentation Ġcomponent Ġfor Ġthe Ġactual Ġspeed Ġvalue . ĠIt Ċ Ġ* Ġcontains Ġtwo Ġ[ TextView ] Ġfor Ġspeed Ġvalue Ġand Ġunit . ĠIt Ġalso Ġincludes Ġa Ġ[ Speed Progress View ] Ġthat Ġcan Ġbe Ġcontrolled Ċ Ġ* Ġusing Ġthe Ġ[ set Speed Progress ] Ġmethod . Ċ Ġ* Ċ Ġ* ĠThe Ġ[ Current Speed View ] Ġdesign Ġcan Ġbe Ġcompletely Ġchanged Ġwith Ġthe Ġcustom Ġ_ current Speed View Style _ Ġor Ġthe Ġattributes Ċ Ġ* Ġas Ġ_ background _, Ġ_ navigation TextColor Primary _ Ġor Ġ_ navigation TextColor Secondary _ Ġcan Ġbe Ġused . Ċ Ġ*/ Ċ @ Suppress (" unused ", Ġ" Member Visibility Can Be Private ") Ċ open Ġclass ĠCurrent Speed View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= ĠR . attr . current Speed View Style , ĊĠĠĠ Ġdef Style Res : ĠInt Ġ= ĠR . style . S yg ic Current Speed View Style Ċ ) Ġ: ĠConstraint Layout ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbinding Ġ= ĠLayout Current Speed Internal Binding . inflate ( LayoutInflater . from ( context ), Ġthis , Ġtrue ) ĊĊĠĠĠ Ġprivate Ġvar Ġlayout Margin : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġlayout Margin Top : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġlayout Margin Bottom : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġlayout Margin Start : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġlayout Margin End : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġval Ġwhite Color Ġ= Ġget Color ( R . color . white ) ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġval Ġred Color Ġ= Ġget Color ( R . color . brick _ red ) ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġval Ġnavigation BackgroundColor Ġ= Ġget Color From Attr ( R . attr . navigation BackgroundColor ) ĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġval Ġnavigation TextColor Primary Ġ= Ġget Color From Attr ( R . attr . navigation TextColor Primary ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġis Clickable Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġattrs ?. let Ġ{ Ġattribute Set Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Re cycle ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Set , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Current Speed View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdef Style Attr , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdef Style Res ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Background Resource ( it . getResource Id ( R . style able . Current Speed View _ android _ background , 0 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelevation Ġ= Ġit . get Dimension Pixel Size ( R . style able . Current Speed View _ android _ elevation , Ġ 0 ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Margin Ġ= Ġit . get Dimension Pixel Size ( R . style able . Current Speed View _ android _ layout _ margin , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Margin Top Ġ= Ġit . get Dimension Pixel Size ( R . style able . Current Speed View _ android _ layout _ margin Top , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Margin Bottom Ġ= Ġit . get Dimension Pixel Size ( R . style able . Current Speed View _ android _ layout _ margin Bottom , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Margin Start Ġ= Ġit . get Dimension Pixel Size ( R . style able . Current Speed View _ android _ layout _ margin Start , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Margin End Ġ= Ġit . get Dimension Pixel Size ( R . style able . Current Speed View _ android _ layout _ margin End , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Attached To Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached To Window () ĊĊĠĠĠĠĠĠĠ Ġwith (( layout Params Ġas ĠMargin LayoutParams )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( layout Margin Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Margins ( layout Margin , Ġlayout Margin , Ġlayout Margin , Ġlayout Margin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Margins ( layout Margin Start , Ġlayout Margin Top , Ġlayout Margin End , Ġlayout Margin Bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġcurrent Ġspeed Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcurrent Speed Value Ġ[ Int ] Ġthe Ġcurrent Ġspeed Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Speed Value ( current Speed Value : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . current Speed Value TextView . text Ġ= Ġ( if Ġ( current Speed Value Ġ> Ġ 0 ) Ġcurrent Speed Value Ġelse Ġ 0 ). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġcurrent Ġspeed Ġprogress . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcurrent Speed Progress Ġ[ Float ] Ġthe Ġcurrent Ġspeed Ġprogress . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Speed Progress ( current Speed Progress : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . current Speed Progress View . progress Ġ= Ġcurrent Speed Progress ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġcurrent Ġspeed Ġunit . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcurrent Speed Unit Ġ[ String ] Ġthe Ġcurrent Ġspeed Ġunit . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Speed Unit ( current Speed Unit : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . current Speed Unit TextView . text Ġ= Ġcurrent Speed Unit ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġactual Ġspeed ing Ġstate Ġ( if Ġthe Ġcurrent Ġspeed Ġis Ġhigher Ġthan Ġthe Ġcurrent Ġspeed Ġlimit Ġvalue Ġor Ġnot ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġis Speed ing Ġ[ Boolean ] Ġtrue Ġto Ġsets Ġif Ġcurrently Ġspeed ing , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠsetIs Speed ing ( is Speed ing : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . current Speed Progress View . visibility Ġ= Ġif Ġ( is Speed ing ) ĠG ONE Ġelse ĠVIS IBLE ĊĠĠĠĠĠĠĠ Ġbinding . current Speed Value TextView . setTextColor ( if Ġ( is Speed ing ) Ġwhite Color Ġelse Ġnavigation TextColor Primary ) ĊĠĠĠĠĠĠĠ Ġbinding . current Speed Unit TextView . setTextColor ( if Ġ( is Speed ing ) Ġwhite Color Ġelse Ġnavigation TextColor Primary ) ĊĠĠĠĠĠĠĠ Ġbackground Tint List Ġ= ĠColor State List . valueOf ( if Ġ( is Speed ing ) Ġred Color Ġelse Ġnavigation BackgroundColor ) ĊĠĠĠ Ġ} Ċ }