package Ġcom . github . ek ame kas . k oin . transaction . presentation . transaction _ category Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . github . ek ame kas . b aha . common . ext .* Ċ import Ġcom . github . ek ame kas . b aha . core . presentation . activity . Base Activity Data Binding Ċ import Ġcom . github . ek ame kas . b aha . core . presentation . view _ object . State Ċ import Ġcom . github . ek ame kas . b aha . core . presentation . view _ object . State Observer Ċ import Ġcom . github . ek ame kas . k oin . transaction . R Ċ import Ġcom . github . ek ame kas . k oin . transaction . databinding . Activity Transaction Category Binding Ċ import Ġcom . github . ek ame kas . k oin . transaction . presentation . Extra Code Ċ import Ġcom . github . ek ame kas . k oin . transaction . presentation . Request Code Ċ import Ġcom . github . ek ame kas . k oin . transaction . presentation . adapter . Transaction Category Adapter Ċ import Ġcom . github . ek ame kas . k oin . transaction . presentation . transaction _ category . create . Transaction Category Create Activity Ċ import Ġcom . github . ek ame kas . k oin . transaction . presentation . view _ object . Transaction Category VO Ċ import Ġcom . github . ek ame kas . k oin . transaction . presentation . view _ object . to Domain Ċ import Ġcom . github . ek ame kas . k oin . transaction . presentation . view _ object . to VO Ċ Ċ /** Ċ Ġ* ĠActivity Ġto Ġview Ġcategories Ċ Ġ*/ Ċ class ĠTransaction Category Activity : ĠBase Activity Data Binding < Transaction Category ViewModel , ĠActivity Transaction Category Binding >() Ġ{ ĊĊĠĠĠ Ġ// Ġadapter ĊĠĠĠ Ġprivate Ġval Ġtransaction Category Adapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠTransaction Category Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Editable Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ:: on Transaction Category Click ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġstate ĊĠĠĠ Ġprivate Ġvar Ġis On Editable : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġval ĠviewModel Clazz : ĠClass < Transaction Category ViewModel > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠTransaction Category ViewModel :: class . java ĊĠĠĠ Ġoverride Ġval Ġresource Id : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . layout . activity _ transaction _ category ĊĊĠĠĠ Ġoverride Ġfun Ġsetup Binding () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Binding . viewModel Ġ= ĠviewModel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetup Observer s () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . on Transaction Category Get Event . observe ( this , ĠState Observer Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset Ġdata Ġto Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Binding . v Content Loading . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Binding . v Content Loading . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( com . github . ek ame kas . b aha . common . R . string . hint _ get _ operation _ failed _ format , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . label _ transaction _ category ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Progress Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Binding . v Content Loading . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. exhaustive ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . on Transaction Category Select Event . observe ( this , ĠState Observer Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is On Editable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate Transaction Category Creation ( state . data . to VO ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Transaction Category Selected ( state . data . to VO ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Error Ġ-> Ġ{/* nop */ } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Progress Ġ-> Ġ{/* nop */ } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. exhaustive ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . transaction Category . observe ( this , ĠObserver Ġ{ Ġtransaction Category Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Category Adapter . submit List ( transaction Category . map Ġ{ Ġit . to VO () Ġ}. sorted By Ġ{ Ġit . name Ġ}) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetup Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup Ġnavigation ĊĠĠĠĠĠĠĠ Ġdata Binding . v Navigation . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Navigation OnClickListener Ġ{ Ġon Back Pressed () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On MenuItem ClickListener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ edit Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Editable View ( is Editable Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ add Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate Transaction Category Creation () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġsetup Ġtransaction Ġcategory Ġlist Ġview ĊĠĠĠĠĠĠĠ Ġdata Binding . v Content . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Vertical RecyclerView ( this @ Transaction Category Activity , Ġtransaction Category Adapter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdid Setup () Ġ{/* nop */ } ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġwhen ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Code . TRANSACTION _ CATEGORY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. get Parcelable Extra < Transaction Category VO >( Extra Code . TRANSACTION _ CATEGORY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . also Ġ{ Ġtransaction Category Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( transaction Category . is Deleted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . delete Transaction Category ( transaction Category . to Domain ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . put Transaction Category ( transaction Category . to Domain ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( is On Editable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Editable View ( is Editable Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġset Ġview Ġbased Ġon Ġeditable Ġcondition ĊĠĠĠ Ġprivate Ġfun Ġset Editable View ( is Editable : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis On Editable Ġ= Ġis Editable ĊĠĠĠĠĠĠĠ Ġtransaction Category Adapter . set Editable ( is Editable ) ĊĠĠĠĠĠĠĠ Ġdata Binding . v Navigation . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Icon Ġ= Ġif ( is Editable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable ( R . drawable . ic _ navigation _ color _ on _ primary ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable ( R . drawable . ic _ close _ color _ on _ primary ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Item ( R . id . action _ edit ). isVisible Ġ= Ġ! is Editable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Item ( R . id . action _ add ). isVisible Ġ= Ġis Editable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġcallback ĊĠĠĠ Ġprivate Ġfun Ġon Transaction Category Click ( transaction Category : ĠTransaction Category VO ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . get Or Select Transaction Category ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Category Ġ= Ġtransaction Category . to Domain () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġon Transaction Category Selected ( transaction Category : ĠTransaction Category VO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Intent Ġ= ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Extra Code . TRANSACTION _ CATEGORY , Ġtransaction Category ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġresult Intent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġdeleg ator ĊĠĠĠ Ġprivate Ġfun Ġdelegate Transaction Category Creation ( transaction Category : ĠTransaction Category VO ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Intent Ġ= ĠIntent ( this , ĠTransaction Category Create Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĠIntent . FLAG _ ACTIVITY _ SINGLE _ TOP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Extra Code . TRANSACTION _ CATEGORY , Ġtransaction Category ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( request Intent , ĠRequest Code . TRANSACTION _ CATEGORY ) ĊĠĠĠ Ġ} Ċ }