package Ġpl . edu . wat . android architecture . ui . sheet Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġpl . edu . wat . android architecture . R Ċ import Ġpl . edu . wat . android architecture . data . config . auto Cle ared Ċ import Ġpl . edu . wat . android architecture . databinding . Sheet Fragment Binding Ċ import Ġpl . edu . wat . android architecture . model . entity . Financial Element Ċ import Ġpl . edu . wat . android architecture . model . internal . Status Ċ import Ġpl . edu . wat . android architecture . ui . custom . Confirm Ċ import Ġpl . edu . wat . android architecture . ui . custom . Show ĊĊ Ċ @ Android EntryPoint Ċ class ĠSheet Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġbinding : ĠSheet Fragment Binding Ġby Ġauto Cle ared () ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠSheet ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfinancial Element Adapter : ĠFin ancial Element Adapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠSheet Fragment Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġsheet Id Ġ= Ġrequire Arguments (). getLong (" sheet Id ") ĊĠĠĠĠĠĠĠ Ġval Ġsheet Remote Id Ġ= Ġrequire Arguments (). getLong (" sheet Remote Id ") ĊĠĠĠĠĠĠĠ Ġsheet Id . let Ġ{ ĠviewModel . initWith Id ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġsetup Observer s () ĊĠĠĠĠĠĠĠ Ġsetup Recycler Views () ĊĊĠĠĠĠĠĠĠ Ġbinding . add Income Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ sheets Fragment _ to _ create Financial Element Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle Of ( Ġ" sheet Id " Ġto Ġsheet Id ," sheet Remote Id " Ġto Ġsheet Remote Id , Ġ" isIn come " Ġto Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . add Expense Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ sheets Fragment _ to _ create Financial Element Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle Of (" sheet Id " Ġto Ġsheet Id ," sheet Remote Id " Ġto Ġsheet Remote Id , Ġ" isIn come " Ġto Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Recycler Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġfinancial Element Adapter Ġ= ĠFin ancial Element Adapter () ĊĠĠĠĠĠĠĠ Ġbinding . financial Elements Rv . layout Manager Ġ= ĠLinearLayoutManager ( require Context ()) ĊĠĠĠĠĠĠĠ Ġbinding . financial Elements Rv . adapter Ġ= Ġfinancial Element Adapter ĊĊĠĠĠĠĠĠĠ Ġfinancial Element Adapter . setOn Item Child ClickListener Ġ{ Ġadapter , Ġ_, Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfirm . delete ( require Activity ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . delete ( adapter . getItem ( position ) Ġas ĠFin ancial Element ). observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . data ?. let Ġ{ Ġstatus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShow . info ( require Activity (). main _ content , Ġ" Item Ġhas Ġbeen Ġremoved Ġfrom Ġremote Ġsource Ġsuccessfully !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShow . error ( require Activity (). main _ content , Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Observer s () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . sheet Full . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . title . setText ( it . data !!. sheet . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . description . setText ( it . data . sheet . description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinancial Elements Ġ= Ġ( it . data . income s Ġ+ Ġit . data . exp enses ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinancial Element Adapter . set New Instance ( financial Elements . to Mutable List ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShow . error ( require Activity (). main _ content , Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ