package Ġorg . wikipedia . watch list Ċ Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġorg . wikipedia . R Ċ import Ġorg . wikipedia . activity . Fragment Util Ċ import Ġorg . wikipedia . databinding . Dialog Watch list Expiry Binding Ċ import Ġorg . wikipedia . page . Extended Bottom Sheet Dialog Fragment Ċ import Ġorg . wikipedia . util . Dim en Util Ċ Ċ class ĠWatch list Expiry Dialog Ġ: ĠExtended Bottom Sheet Dialog Fragment () Ġ{ ĊĊĠĠĠ Ġinterface ĠCallback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Expiry Select ( expiry : ĠWatch list Expiry ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠDialog Watch list Expiry Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġexpiry : ĠWatch list Expiry ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġexpiry Options : ĠArray < View > ĊĠĠĠ Ġprivate Ġval Ġexpiry List Ġ= ĠarrayOf ( Watch list Expiry . NE VER , ĠWatch list Expiry . ONE _ WEEK , ĠWatch list Expiry . ONE _ MONTH , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWatch list Expiry . TH REE _ MONTH , ĠWatch list Expiry . SIX _ MONTH ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠDialog Watch list Expiry Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġexpiry Ġ= Ġrequire Arguments (). get Serializable ( ARG _ EXPI RY ) Ġas ĠWatch list Expiry ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġexpiry Options Ġ= ĠarrayOf ( binding . watch list Expiry Permanent , Ġbinding . watch list Expiry One Week , Ġbinding . watch list Expiry One Month , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . watch list Expiry Three Months , Ġbinding . watch list Expiry Six Months ) ĊĠĠĠĠĠĠĠ Ġsetup Listeners () ĊĠĠĠĠĠĠĠ Ġreset All Options () ĊĠĠĠĠĠĠĠ Ġselect Option ( expiry ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ ĠBottom Sheet Behavior . from ( require View (). parent Ġas ĠView ). peek Height Ġ= ĠDim en Util . rounded Dp To Px ( Dim en Util . get Dimension ( R . dim en . nav Tab Dialog Peek Height )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpiry Options . forEach Indexed Ġ{ Ġindex , Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . tag Ġ= Ġexpiry List [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOnClickListener ( Expiry Option ClickListener ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselect Option ( expiry : ĠWatch list Expiry ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexpiry Options . find Ġ{ Ġit . tag Ġ== Ġexpiry Ġ} ?. let Ġ{ Ġupdate Option View ( it , Ġtrue ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset All Options () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpiry Options . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Option View ( it , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Option View ( view : ĠView , Ġenabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . find View With Tag < TextView >(" text "). type face Ġ= Ġif Ġ( enabled ) ĠType face . DEFAULT _ BOLD Ġelse ĠType face . DEFAULT ĊĠĠĠĠĠĠĠ Ġview . find View With Tag < ImageView >(" check "). visibility Ġ= Ġif Ġ( enabled ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcallback (): ĠCallback ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFragment Util . get Callback ( this , ĠCallback :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠExp iry Option ClickListener Ġ: ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset All Options () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Option View ( view , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ()?. on Expiry Select ( view . tag Ġas ĠWatch list Expiry ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ EXPI RY Ġ= Ġ" expiry " ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( expiry : ĠWatch list Expiry ): ĠWatch list Expiry Dialog Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠWatch list Expiry Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . arguments Ġ= Ġbundle Of ( ARG _ EXPI RY Ġto Ġexpiry ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdialog ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ