package Ġorg . sage b ion etwork s . research . mp ower . tracking . fragment Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompat Dialog Fragment Ċ import Ġandroid . support . v 7 . widget . Divider Item Decoration Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġkotlinx . android . synt hetic . main . dialog _ med ication _ day . day _ selection _ back Ċ import Ġkotlinx . android . synt hetic . main . dialog _ med ication _ day . day _ selection _ save Ċ import Ġkotlinx . android . synt hetic . main . dialog _ med ication _ day . day _ selection _ title Ċ import Ġkotlinx . android . synt hetic . main . dialog _ med ication _ day . med ication _ day _ recycler Ċ import Ġkotlinx . android . synt hetic . main . list _ item _ day . view . day _ text Ċ import Ġorg . sage b ion etwork s . research . mp ower . R Ċ import Ġorg . sage b ion etwork s . research . mp ower . R . layout Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . util . Arrays Ċ Ċ class ĠMed ication Day Fragment Ġ: ĠAppCompat Dialog Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠLOGGER Ġ= ĠLoggerFactory . getLogger ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMed ication Day Fragment :: class . java ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠARG _ SCHED _ ID Ġ= Ġ" ARG _ SCHED _ ID " ĊĠĠĠĠĠĠĠ Ġval ĠARG _ NAME Ġ= Ġ" ARG _ NAME " ĊĠĠĠĠĠĠĠ Ġval ĠARG _ TIME Ġ= Ġ" ARG _ TIME " ĊĠĠĠĠĠĠĠ Ġval ĠARG _ DAYS Ġ= Ġ" ARG _ DAYS " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( id : ĠString , Ġname : ĠString , Ġtime : ĠString , Ġdays : ĠString ?): ĠMed ication Day Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠMed ication Day Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString ( ARG _ SCHED _ ID , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString ( ARG _ NAME , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString ( ARG _ TIME , Ġtime ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . putString ( ARG _ DAYS , Ġdays ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġcustom View : ĠView ĊĠĠĠ Ġlateinit Ġvar Ġlistener : ĠDay Selected Listener ĊĠĠĠ Ġlateinit Ġvar Ġselected Days : ĠMutable List < String > ĊĠĠĠ Ġlateinit Ġvar Ġsched Id : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġname : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġtime : ĠString ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġdays Ġ: ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arguments Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsched Id Ġ= Ġarguments !!. getString ( ARG _ SCHED _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġarguments !!. getString ( ARG _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= Ġarguments !!. getString ( ARG _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdays Ġ= Ġarguments !!. getString ( ARG _ DAYS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . warn (" No Ġarguments Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Default " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= Ġ" 9 : 1 5 ĠPM " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsched Id Ġ= ĠsavedInstanceState . getString ( ARG _ SCHED _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠsavedInstanceState . getString ( ARG _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= ĠsavedInstanceState . getString ( ARG _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdays Ġ= ĠsavedInstanceState . getString ( ARG _ DAYS ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġselected Days Ġ= Ġif Ġ( days Ġ!= Ġnull ) Ġdays . split ("," ). to Mutable List () Ġelse Ġmutable ListOf () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ ĠLOGGER . debug (" onCreate View () ") ĊĠĠĠĠĠĠĠ Ġreturn Ġcustom View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Dialog ( savedInstanceState : ĠBundle ?): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ ĠLOGGER . debug (" onCreate Dialog () ") ĊĊĠĠĠĠĠĠĠ Ġvar Ġinflater : ĠLayoutInflater Ġ= Ġactivity !!. layout Inflater ĊĠĠĠĠĠĠĠ Ġcustom View Ġ= Ġinflater . inflate ( R . layout . dialog _ med ication _ day , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠAlertDialog . Builder ( context !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( custom View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ ĠLOGGER . debug (" on View Created () ") ĊĊĠĠĠĠĠĠĠ Ġday _ selection _ title . text Ġ= ĠgetString ( R . string . med ication _ day _ selection _ title , Ġname , Ġtime ) ĊĠĠĠĠĠĠĠ Ġvar Ġre cycler Ġ= Ġmedic ation _ day _ recycler ĊĠĠĠĠĠĠĠ Ġre cycler . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġre cycler . adapter Ġ= ĠDay Adapter ( get Days (), Ġcontext !! ) ĊĠĠĠĠĠĠĠ Ġre cycler . addItem Decoration ( Divider Item Decoration ( context , ĠDiv ider Item Decoration . VERTICAL )) ĊĊĠĠĠĠĠĠĠ Ġday _ selection _ back . setOnClickListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġday _ selection _ save . setOnClickListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Day Selected ( sched Id , Ġselected Days . join ToString ("," )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġout State . putString ( ARG _ SCHED _ ID , Ġsched Id ) ĊĠĠĠĠĠĠĠ Ġout State . putString ( ARG _ NAME , Ġname ) ĊĠĠĠĠĠĠĠ Ġout State . putString ( ARG _ TIME , Ġtime ) ĊĠĠĠĠĠĠĠ Ġout State . putString ( ARG _ DAYS , Ġselected Days . join ToString ("," )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Days (): ĠArrayList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠArrayList < String >( Arrays . asList (* resources . getString Array ( R . array . days _ of _ the _ week ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠDay Adapter ( val Ġitems : ĠArrayList < String >, Ġval Ġcontext : ĠContext ) Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView . Adapter < Day ViewHolder >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitems . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠDay ViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDay ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ). inflate ( layout . list _ item _ day , Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠDay ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġitems [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . tv Day . text Ġ= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Days . contains ( text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . root . setBackground Resource ( R . color . roy al 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . root . setBackground Resource ( R . color . app White ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . root . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Days . contains ( text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Days . remove ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setBackground Resource ( R . color . app White ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Days . add ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setBackground Resource ( R . color . roy al 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠDay Selected Listener Ġ{ ĊĠĠĠ Ġfun Ġon Day Selected ( schedule Identifier : ĠString , Ġdays : ĠString ) Ċ } Ċ Ċ class ĠDay ViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠ Ġvar Ġroot Ġ= Ġview ĊĠĠĠ Ġval Ġtv Day Ġ= Ġview . day _ text Ċ }