package Ġcom . example . keyboard . feature . Category Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġcom . example . keyboard . R Ċ import Ġcom . example . keyboard . api . DB ServiceImpl Ċ import Ġcom . example . keyboard . data . Category Ċ import Ġcom . example . keyboard . data . Get Status Ċ import Ġcom . example . keyboard . feature . Singleton . UserInfo Ċ import Ġkotlinx . android . synt hetic . main . activity _ category _ create . etc Edit Txt Ċ import Ġkotlinx . android . synt hetic . main . activity _ category _ create . title Edit Txt Ċ import Ġkotlinx . android . synt hetic . main . activity _ category _ manage .* Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġretrofit 2 . Call Ċ Ċ class ĠCategory Manage Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġis Can Change Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġbefore Category Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ category _ manage ) ĊĠĠĠĠĠĠĠ Ġbefore Category Ġ= Ġintent . getString Extra (" category ") ĊĠĠĠĠĠĠĠ Ġvar Ġbefore E tc Ġ= Ġintent . getString Extra (" etc ") ĊĊĠĠĠĠĠĠĠ Ġtitle Edit Txt . setText ( before Category ) ĊĠĠĠĠĠĠĠ Ġetc Edit Txt . setText ( before E tc ) ĊĊĠĠĠĠĠĠĠ Ġsave Btn . setOnClickListener ( save Btn ClickListener ) ĊĠĠĠĠĠĠĠ Ġedit Btn . setOnClickListener ( edit Btn ClickListener ) ĊĠĠĠĠĠĠĠ Ġdelete Btn . setOnClickListener ( delete Btn ClickListener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsave Btn ClickListener : ĠView . OnClickListener Ġ= ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcategory Ġ= Ġtitle Edit Txt . text . toString () ĊĠĠĠĠĠĠĠ Ġvar Ġetc Ġ= Ġetc Edit Txt . text . toString () ĊĊĠĠĠĠĠĠĠ Ġvar Ġdata Ġ= ĠCategory ( category , etc , UserInfo . id , before Category ) ĊĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠstatusCode Ġ= Ġupdate Category ( data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( statusCode . equals (" success ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context ," ì¹´ íħ Į ê³ł ë¦¬ ĠìĹħ ë į°ìĿ´ íĬ¸ ìĹĲ Ġìĭ¤ íĮ ¨ íķĺ ìĺ Ģ ìĬµëĭĪëĭ¤ .", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġupdate Category ( item : ĠCategory ): ĠString { ĊĠĠĠĠĠĠĠ Ġvar Ġcall : ĠCall < Get Status > Ġ= ĠDB ServiceImpl . service . category Update ( item ) ĊĠĠĠĠĠĠĠ Ġvar ĠstatusCode Ġ= Ġ" default " ĊĊĠĠĠĠĠĠĠ Ġvar Ġjob Ġ= ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġcall . execute () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode Ġ= Ġresult . body () !!. status ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġjob . join () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠstatusCode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġedit Btn ClickListener : ĠView . OnClickListener Ġ= ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! is Can Change ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Can Change Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Btn . text Ġ= Ġ" ìĪĺ ìłķ ĠOFF " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Can Change Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Btn . text Ġ= Ġ" ìĪĺ ìłķ ĠON " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtoggle EditText ( is Can Change ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtoggle EditText ( flag : ĠBoolean ){ ĊĠĠĠĠĠĠĠ Ġtitle Edit Txt . isEnabled Ġ= Ġflag ĊĠĠĠĠĠĠĠ Ġetc Edit Txt . isEnabled Ġ= Ġflag ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdelete Btn ClickListener : ĠView . OnClickListener Ġ= ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcategory Ġ= Ġtitle Edit Txt . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġetc Ġ= Ġetc Edit Txt . text . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdata Ġ= ĠCategory ( category , etc , UserInfo . id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdelete Status Ġ= Ġdelete Category ( data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( delete Status . equals (" success ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context ," ìĤ Ń ìłľ ìĹĲ Ġìĭ¤ íĮ ¨ íķĺ ìĺ Ģ ìĬµëĭĪëĭ¤ .", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġdelete Category ( item : ĠCategory ): ĠString { ĊĠĠĠĠĠĠĠ Ġval Ġcall : ĠCall < Get Status > Ġ= ĠDB ServiceImpl . service . category Delete ( item ) ĊĠĠĠĠĠĠĠ Ġvar ĠstatusCode Ġ= Ġ" default " ĊĊĠĠĠĠĠĠĠ Ġvar Ġjob Ġ= ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġcall . execute () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode Ġ= Ġresult . body () !!. status ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġjob . join () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠstatusCode ĊĠĠĠ Ġ} Ċ } Ċ