package Ġcom . example . room _ database . ui ĊĊ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroidx . navigation . Navigation Ċ Ċ import Ġcom . example . room _ database . R Ċ import Ġcom . example . room _ database . database . Note Ċ import Ġcom . example . room _ database . database . Note Database Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add _ note .* Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠAdd Note Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġnote : ĠNote ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ add _ note , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// for Ġarguments Ġpass ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnote Ġ= ĠAdd Note Fragment Args . from Bundle ( it ). note ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ text _ title . setText ( note ?. title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ text _ note . setText ( note ?. note ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfloating _ save . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote _ title Ġ= Ġedit _ text _ title . text . toString (). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnote _ body Ġ= Ġedit _ text _ note . text . toString (). trim () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( note _ title . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ text _ title . error Ġ= Ġ" title Ġrequired " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ text _ title . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( note _ body . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ text _ note . error Ġ= Ġ" note Ġrequired " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit _ text _ note . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// with Ġcoroutine ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// without ĠonClick Ġto Ġupdate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* val Ġnote Ġ= ĠNote ( note _ title , Ġnote _ body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNote Database ( it ). get Note Dao (). add Note ( note ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . toast (" Note ĠSaved ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠAdd Note Fragment Directions . action Save Note () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation . find Nav Controller ( view ). navigate ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// with ĠonClick Ġto Ġupdate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotes Ġ= ĠNote ( note _ title , Ġnote _ body ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( note Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNote Database ( it ). get Note Dao (). add Note ( notes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . toast (" Note ĠSaved ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotes . id Ġ= Ġnote !!. id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNote Database ( it ). get Note Dao (). update Note ( notes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . toast (" Note ĠUpdated ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠAdd Note Fragment Directions . action Save Note () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation . find Nav Controller ( view ). navigate ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// without Ġcoroutine ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* val Ġnote Ġ= ĠNote ( note _ title , Ġnote _ body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Note ( note ) */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Note (){ ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle (" Are Ġyou Ġsure ?") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Message (" You Ġcannot Ġundo Ġthis Ġoperation ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Button (" Yes "){ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNote Database ( context ). get Note Dao (). delete Note ( note !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠAdd Note Fragment Directions . action Save Note () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation . find Nav Controller ( view !! ). navigate ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Negative Button (" No "){ Ġ_, Ġ_ Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. create (). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( item . itemId ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . delete Ġ-> Ġif ( note Ġ!= Ġnull ) Ġdelete Note () Ġelse Ġcontext ?. toast (" Cannot ĠDeleted ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// without Ġcoroutine Ġscope ĊĠĠĠĠĠĠĠ Ġ/* private Ġfun Ġsave Note ( note : ĠNote ){ ĊĠĠĠĠĠĠĠ Ġclass ĠSave Note Ġ: ĠAsync Task < Void , ĠVoid , ĠVoid > (){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġparams : ĠVoid ?): ĠVoid ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNote Database ( activity !! ). get Note Dao (). add Note ( note ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠVoid ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Post Execute ( result ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" Note ĠSaved ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠSave Note (). execute () ĊĠĠĠ Ġ}*/ Ċ } Ċ