package Ġcom . del ac rix m organ . wishlist . android . long form Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . widget . Frame Layout Ċ import Ġcom . del ac rix m organ . wishlist . android . R Ċ import Ġcom . del ac rix m organ . wishlist . android . common . Form Protocol Ċ import Ġcom . del ac rix m organ . wishlist . android . common . Listener Protocol Ċ import Ġcom . del ac rix m organ . wishlist . android . common . cent sTo Dollar Ċ import Ġcom . del ac rix m organ . wishlist . android . common . view . Number Form Ċ import Ġcom . del ac rix m organ . wishlist . android . data . model .* Ċ import Ġkotlinx . android . synt hetic . main . layout _ food _ long _ form . view .* Ċ import Ġjava . util .* Ċ Ċ class ĠFood Long Form ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: ĠFrame Layout ( context , Ġattrs ), ĊĠĠĠ ĠForm Protocol < Budget >, ĠNumber Form . Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbudget : ĠBudget ĊĊĠĠĠ Ġprivate Ġvar Ġtransaction : ĠTransaction ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlistener : ĠLong Form Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinf late ( context , ĠR . layout . layout _ food _ long _ form , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfigure ( model : ĠBudget ?, Ġlistener : ĠListener Protocol ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmodel ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbudget Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener Ġas ĠLong Form Listener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmodel (): ĠBudget ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbudget ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction Ġ= ĠTransaction ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġamount Transaction Ġ= ĠMoney ( 0 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Food ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbudget Uuid Ġ= Ġbudget . uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb ud getType Ġ= Ġbudget . type ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsummary Model Ġ= ĠSummary Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbudget , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Left Ġthis Ġmonth " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfood Model Ġ= ĠFood Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMoney ( 6 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMoney ( 8 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMoney ( 1 5 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnumber Form Money Ġ= ĠMoney ( 0 . 0 ) ĊĊĠĠĠĠĠĠĠ Ġsummary Form . configure ( summary Model ) ĊĠĠĠĠĠĠĠ Ġfood Form . configure ( food Model ) ĊĠĠĠĠĠĠĠ Ġnumber Form . configure ( number Form Money , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġfood Form . setOn CheckedChanged Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmoney Ġ= Ġfood Model . money Options [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Form . configure AndUpdate Summary ( money ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠNumber Form . Listener ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġoverride Ġfun Ġon Amount Updated ( amount In C ents : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction ?. amount Transaction ?. amount Ġ= Ġamount In C ents . cent sTo Dollar () ĊĠĠĠĠĠĠĠ Ġsummary Form . update Amount ( budget , Ġtransaction ) ĊĠĠĠĠĠĠĠ Ġfood Form . reset ViewGroup State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonSubmit ted ( amount In C ents : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( food Form ?. model ()?. location Ġ== Ġnull Ġ|| Ġfood Form ?. model ()?. location ?. isBlank () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Food " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfood Form ?. model ()?. location ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtransaction ?. name Ġ= Ġname . toString () ĊĠĠĠĠĠĠĠ Ġtransaction ?. createdAt Ġ= ĠDate () ĊĠĠĠĠĠĠĠ Ġtransaction ?. amount Transaction ?. amount Ġ= Ġamount In C ents . cent sTo Dollar () ĊĠĠĠĠĠĠĠ Ġlistener ?. on Long Form Submitted ( require NotNull ( transaction )) ĊĠĠĠ Ġ} Ċ }