package Ġcom . slo upy com . sh aper . view Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . recyclerview . widget . Item Touch Helper Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . sh ah ry ar . day bar . Day Bar Ċ import Ġcom . sh ah ry ar . day bar . Day Bar Chip Ċ import Ġcom . slo upy com . sh aper . R Ċ import Ġcom . slo upy com . sh aper . databinding . Activity Main Binding Ċ import Ġcom . slo upy com . sh aper . model . Task Ċ import Ġcom . slo upy com . sh aper . model . adapter . Swipe ToDelete CallBack Ċ import Ġcom . slo upy com . sh aper . model . adapter . Task Adapter Ċ import Ġcom . slo upy com . sh aper . utils . Util Ċ import Ġcom . slo upy com . sh aper . view model . MainActivity ViewModel Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠDay Bar . On Day Changed Listener Ġ{ ĊĊĠĠĠ Ġ/** Values **/ ĊĠĠĠ Ġprivate Ġvar Ġm Binding : ĠActivity Main Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġadapter Ġ= ĠTask Adapter ( this ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// Data Ġbinding ĊĠĠĠĠĠĠĠ Ġm Binding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġm Binding ?. viewModel Ġ= ĠMainActivity ViewModel ( application ) ĊĠĠĠĠĠĠĠ Ġm Binding ?. lifecycle Owner Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġ// Setup ĠDay Bar Ġlistener ĊĠĠĠĠĠĠĠ Ġday Bar ?. setOn Day Changed Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġsetup RecyclerView () ĊĊĠĠĠĠĠĠĠ Ġm Binding ?. viewModel ?. busy Days ?. observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġday Bar . set Indication By Day ( Util (). get Busy Week Days From Date Index ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO : Ġissue Ġ-> ĠIndic ation Ġis Ġnot Ġremoved Ġwhen Ġbusy Day Ġis Ġremoved ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġre cyclerView _ today Due . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġ// Setup Ġon Ġitem Ġswipe Ġlistener ĊĠĠĠĠĠĠĠ ĠItem Touch Helper ( Swipe ToDelete CallBack ( adapter )). attach To RecyclerView ( re cyclerView _ today Due ) ĊĊĠĠĠĠĠĠĠ Ġadapter . setOn Task State Listener ( object Ġ: ĠTask Adapter . Task State Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Task StateChanged ( task : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding ?. viewModel ?. on Task StateChanged ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Task Item Deleted ( task : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding ?. viewModel ?. delete Task Item ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Item Deleted Sn ackBar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Task Item Delete Undo ( task : ĠTask ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding ?. viewModel ?. undo Delete Task Item ( task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ob serve Ġlive Data Ġin Ġorder Ġto Ġupdate Ġre cyclerView ĊĠĠĠĠĠĠĠ Ġm Binding ?. viewModel ?. live Data Mer ger ?. observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . data Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Change ĠF AB Ġvisibility Ġon Ġre cyclerView Ġscroll ĊĠĠĠĠĠĠĠ Ġre cyclerView _ today Due . add On Scroll Listener ( object Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Sc rolled ( re cyclerView , Ġdx , Ġdy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dy Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠScroll ĠDown ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( floating ActionButton . is Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfloating ActionButton . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( dy Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠScroll ĠUp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! floating ActionButton . is Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfloating ActionButton . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet ĠonClick Ġmethod Ġfor Ġbuttons ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠonClick ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . floating ActionButton Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdd Task Bottom Sheet (). show ( support FragmentManager , Ġ" Add Task Bottom Sheet ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . image Button _ settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings Bottom Sheet (). show ( support FragmentManager , Ġ" Settings Bottom Sheet ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Item Deleted Sn ackBar () Ġ{ ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( floating ActionButton , ĠgetText ( R . string . delete _ task ), ĠSn ackbar . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Anchor View ( floating ActionButton ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setBackground Tint ( getColor ( R . color . color Secondary )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTextColor ( getColor ( R . color . color On Secondary )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction ( getString ( R . string . undo )) Ġ{ Ġadapter . undo Remove () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction TextColor ( getColor ( R . color . color On Secondary )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġselected Ġday Ġfrom ĠDay Bar Ġchanges ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Selected Day Changed ( index : ĠInt , Ġdate : ĠHashMap < String , ĠString >, Ġchip : ĠDay Bar Chip ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Binding ?. viewModel ?. day Changed ( index ) ĊĠĠĠ Ġ} Ċ Ċ }