package Ġfi . t uni . sin ipel to . l ask u vel ho . ui . activity Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . View Ċ import Ġandroid . widget .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġfi . t uni . sin ipel to . l ask u vel ho . R Ċ import Ġfi . t uni . sin ipel to . l ask u vel ho . data . model . Invoice Type Ċ import Ġjava . util .* Ċ Ċ class ĠNew Invoice Activity Ġ: ĠAppCompatActivity (), ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpay ee Input : ĠEditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtype Input : ĠSp inner ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġamount Input : ĠEditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdue Input : ĠDate Picker ĊĊĠĠĠ Ġprivate Ġvar Ġselected Type : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ add _ new _ invoice ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠConfigure Ġdrop - down Ġmenu Ġfor Ġinvoice Ġtypes ĊĠĠĠĠĠĠĠ Ġval Ġtype Adapter : ĠArray Adapter < Invoice Type > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArray Adapter ( this , Ġandroid . R . layout . simple _ spinner _ dropdown _ item ) ĊĠĠĠĠĠĠĠ Ġtype Adapter . addAll ( Invoice Type . get Objects (). sorted By Ġ{ Ġx Ġ-> Ġx . toString () Ġ}) ĊĊĠĠĠĠĠĠĠ Ġtype Input Ġ= ĠfindViewById ( R . id . invoice Type Spinner ) ĊĠĠĠĠĠĠĠ Ġtype Input . adapter Ġ= Ġtype Adapter ĊĠĠĠĠĠĠĠ Ġtype Input . on ItemSelected Listener Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġpay ee Input Ġ= ĠfindViewById ( R . id . pay ee EditText ) ĊĠĠĠĠĠĠĠ Ġamount Input Ġ= ĠfindViewById ( R . id . amount EditText ) ĊĠĠĠĠĠĠĠ Ġdue Input Ġ= ĠfindViewById ( R . id . due DatePicker ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbutton Ġ= ĠfindViewById < Button >( R . id . add Btn ) ĊĠĠĠĠĠĠĠ Ġbutton . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreply Intent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( validate Inputs ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpay ee Ġ= Ġpay ee Input . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġamount Input . text . toString (). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcal . set ( due Input . year , Ġdue Input . month , Ġdue Input . day OfMonth ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreply Intent . putExtra ( EXTRA _ PAY EE , Ġpay ee ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreply Intent . putExtra ( EXTRA _ AMOUNT , Ġamount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreply Intent . putExtra ( EXTRA _ TYPE , Ġselected Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreply Intent . putExtra ( EXTRA _ D UE , Ġcal . time . time ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġreply Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ C ANCE LED , Ġreply Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCheck Ġthat Ġall Ġinput Ġfields Ġare Ġset Ġand Ġvalues Ġwithin Ġtheir Ġvalid i Ġlimits ĊĠĠĠ Ġprivate Ġfun Ġvalidate Inputs (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( pay ee Input . text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ getString ( R . string . empty _ field )} : ĠS aa ja ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( amount Input . text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ getString ( R . string . empty _ field )} : ĠM Ã¤ Ã¤r Ã¤ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Type Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( amount Input . text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ getString ( R . string . empty _ field )} : ĠT yy ppi ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠThis Ġmethod Ġis Ġcalled Ġwhen Ġa Ġdropdown Ġmenu Ġitem Ġis Ġselected Ġby Ġthe Ġuser ĊĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View < *> ?, Ġview : ĠView ?, Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġparent ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsel Ġ= Ġit . getItem At Position ( position ) Ġas ĠInvoice Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Type Ġ= ĠInvoice Type . get Invoice TypeCode ById ( sel . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTh si Ġis Ġcalled Ġif Ġno Ġitem Ġis Ġselected Ġfrom Ġthe Ġdropdown Ġmenu ĊĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View < *> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Type Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġback Button Handle (@ Suppress (" UNUSED _ PARAMETER ") Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġreply Ġto Ġcanceled Ġand Ġgo Ġback Ġto Ġmain Ġview ĊĠĠĠĠĠĠĠ Ġval Ġreply Intent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ C ANCE LED , Ġreply Intent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ PAY EE Ġ= Ġ" fi . t uni . sin ipel to . l ask u vel ho . EXTRA _ PAY EE " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ TYPE Ġ= Ġ" fi . t uni . sin ipel to . l ask u vel ho . EXTRA _ TYPE " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ AMOUNT Ġ= Ġ" fi . t uni . sin ipel to . l ask u vel ho . EXTRA _ AMOUNT " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ D UE Ġ= Ġ" fi . t uni . sin ipel to . l ask u vel ho . EXTRA _ D UE " ĊĠĠĠ Ġ} Ċ }