package Ġcom . ing resse . design . ui . button Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . widget . LinearLayout Ċ import Ġcom . ing resse . design . R Ċ import Ġcom . ing resse . design . helper . animate Background Ċ import Ġcom . ing resse . design . helper . animate Color Ċ import Ġcom . ing resse . design . helper . setVisible Ċ import Ġkotlinx . android . synt hetic . main . ds _ event _ session _ btn . view .* Ċ Ċ class ĠD SE vent Session Button ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: ĠLinearLayout ( context , Ġattrs ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġweek Day : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġdate : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġhour : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġenabled : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġis Passport : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġpassport Name : ĠString Ġ= Ġresources . getString ( R . string . passport ) ĊĊĠĠĠ Ġprivate Ġval Ġenabled Color Res : ĠInt Ġ= ĠR . color . ocean _ light ĊĠĠĠ Ġprivate Ġval Ġdisabled Color Res : ĠInt Ġ= ĠR . color . mer cury _ 1 0 ĊĠĠĠ Ġprivate Ġval Ġselected Color Res : ĠInt Ġ= ĠR . color . white ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinf late ( context , ĠR . layout . ds _ event _ session _ btn , Ġthis ) ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġcontext . theme . obtain Styled Attributes ( attrs , ĠR . style able . D SE vent Session Button , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġis Passport Ġ= Ġarray . getBoolean ( R . style able . D SE vent Session Button _ is Passport , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġupdate Layout () ĊĠĠĠĠĠĠĠ Ġupdate BackgroundColor () ĊĠĠĠĠĠĠĠ Ġupdate TextColor () ĊĠĠĠĠĠĠĠ Ġupdate Texts () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Week Day ( week Day : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . week Day Ġ= Ġweek Day ĊĠĠĠĠĠĠĠ Ġupdate Texts () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Date ( date : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . date Ġ= Ġdate ĊĠĠĠĠĠĠĠ Ġupdate Texts () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Hour ( hour : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . hour Ġ= Ġhour ĊĠĠĠĠĠĠĠ Ġupdate Texts () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Passport Name ( passport Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . passport Name Ġ= Ġpassport Name ĊĠĠĠĠĠĠĠ Ġupdate Texts () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMethod Ġto Ġset Ġview Ġto Ġdate Ġmode ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġweek Day Ġ- Ġsession Ġdate Ġweek Ġday ĊĠĠĠĠ Ġ* Ġ@ param Ġdate Ġ- Ġsession Ġdate ĊĠĠĠĠ Ġ* Ġ@ param Ġhour Ġ- Ġsession Ġhour ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Session Date ( week Day : ĠString , Ġdate : ĠString , Ġhour : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . week Day Ġ= Ġweek Day ĊĠĠĠĠĠĠĠ Ġthis . date Ġ= Ġdate ĊĠĠĠĠĠĠĠ Ġthis . hour Ġ= Ġhour ĊĠĠĠĠĠĠĠ Ġis Passport ( false ) ĊĠĠĠĠĠĠĠ Ġupdate Texts () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMethod Ġto Ġset Ġview Ġto Ġpassport Ġmode ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpassport Name Ġ- Ġattribute Ġto Ġset Ġpassport Ġname Ġto Ġlabel ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Session Passport ( passport Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Passport Name ( passport Name ) ĊĠĠĠĠĠĠĠ Ġis Passport ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetSelected ( isSelected : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setSelected ( isSelected ) ĊĠĠĠĠĠĠĠ Ġupdate State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Enabled ( isEnabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setEnabled ( isEnabled ) ĊĠĠĠĠĠĠĠ Ġenabled Ġ= Ġis Enabled ĊĠĠĠĠĠĠĠ Ġupdate State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Passport ( is Passport : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . is Passport Ġ= Ġis Passport ĊĠĠĠĠĠĠĠ Ġupdate Layout () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset OnClick ( listener : Ġ() Ġ-> ĠUnit ) Ġ= Ġset OnClickListener Ġ{ Ġ Ġif Ġ( isEnabled ) Ġlistener () Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate State () Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate TextColor () ĊĠĠĠĠĠĠĠ Ġupdate BackgroundColor () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Texts () Ġ{ ĊĠĠĠĠĠĠĠ Ġlbl _ passport _ name . text Ġ= Ġpassport Name ĊĠĠĠĠĠĠĠ Ġlbl _ week _ day . text Ġ= Ġweek Day ĊĠĠĠĠĠĠĠ Ġlbl _ date . text Ġ= Ġdate ĊĠĠĠĠĠĠĠ Ġlbl _ hour . text Ġ= Ġhour ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġlbl _ passport _ name . setVisible ( is Passport ) ĊĠĠĠĠĠĠĠ Ġlbl _ passport _ description . setVisible ( is Passport ) ĊĠĠĠĠĠĠĠ Ġlbl _ week _ day . setVisible (! is Passport ) ĊĠĠĠĠĠĠĠ Ġlbl _ date . setVisible (! is Passport ) ĊĠĠĠĠĠĠĠ Ġlbl _ hour . setVisible (! is Passport ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate BackgroundColor () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbackground Res Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! enabled Ġ-> ĠR . drawable . ds _ event _ session _ disabled _ bg ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ&& Ġis Selected Ġ-> ĠR . drawable . ds _ event _ session _ selected _ bg ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . drawable . ds _ event _ session _ enabled _ bg ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlayout _ ds _ event _ session . animate Background ( background Res , Ġcontext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget TextColor (): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! enabled Ġ-> Ġdisabled Color Res ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled Ġ&& Ġis Selected Ġ-> Ġselected Color Res ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġenabled Color Res ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate TextColor () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Color Ġ= Ġget TextColor () ĊĊĠĠĠĠĠĠĠ Ġlbl _ passport _ name . animate Color ( currentColor , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġlbl _ passport _ description . animate Color ( currentColor , Ġcontext ) ĊĊĠĠĠĠĠĠĠ Ġlbl _ week _ day . animate Color ( currentColor , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġlbl _ date . animate Color ( currentColor , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġlbl _ hour . animate Color ( currentColor , Ġcontext ) ĊĠĠĠ Ġ} Ċ }