package Ġcom . s ba . notes Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . Navigation Ċ import Ġcom . s ba . notes . database . Note Save ViewModel Ċ import Ġcom . s ba . notes . database . Notes Ċ import Ġcom . s ba . notes . databinding . Fragment Edit Note Binding Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* ĊĊ Ċ class ĠEdit Note Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ edit _ note , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnotes Save ViewModel : ĠNote Save ViewModel ĊĠĠĠ Ġprivate Ġvar Ġf bind : ĠFragment Edit Note Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġnote : ĠNotes ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠFragment Edit Note Binding . bind ( view ) ĊĠĠĠĠĠĠĠ Ġf bind Ġ= Ġbinding ĊĠĠĠĠĠĠĠ Ġnotes Save ViewModel Ġ= ĠViewModel Provider ( this ). get ( Note Save ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnote Ġ= ĠEdit Note Fragment Args . from Bundle ( it ). update Note ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . title Edit text . setText ( note ?. title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . desc EditText . setText ( note ?. description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( note Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . last EditText . text Ġ= Ġset Date ( note !!. date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// if Ġ( note Ġ== Ġnull ) ĊĠĠĠĠĠĠĠ Ġ// binding . last EditText . text =" Edited Ġ" Ġ+ SimpleDateFormat (" MMM Ġdd , yyyy ĠHH : mm "). format ( Date ( System . currentTimeMillis ())) ĊĊĊĠĠĠĠĠĠĠ Ġbinding . save FAB . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġbinding . title Edit text . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesc Ġ= Ġbinding . desc EditText . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( title . isBlank () Ġand Ġdesc . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" Title Ġand ĠNote Ġis ĠEmpty ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Note Ġ= ĠNotes ( title Ġ= Ġtitle , Ġdescription Ġ= Ġdesc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( note Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotes Save ViewModel . insert Note ( m Note ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" Note ĠSaved !! ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Note . note Id Ġ= Ġnote !!. note Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Note . date Ġ= ĠSystem . currentTimeMillis () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotes Save ViewModel . update Note ( m Note ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" Note ĠUpdated !! ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ Ġit 1 Ġ-> Ġhide Keyboard ( it 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation . find Nav Controller ( view ). navigate Up () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Date ( date : ĠLong ): ĠCharSequence ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Milli Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġval Ġresult : String ĊĠĠĠĠĠĠĠ Ġval Ġsdf Ġ= ĠSimpleDateFormat (" MMM Ġdd ") ĊĠĠĠĠĠĠĠ Ġval Ġactual Date Ġ= ĠDate ( date ) ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Date Ġ= ĠDate ( current Milli ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sdf . format ( current Date ). toString () Ġ!= Ġsdf . format ( actual Date ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ=" Edited Ġ". plus ( sdf . format ( actual Date )) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ=" Edited Ġ". plus ( SimpleDateFormat (" hh : mm Ġa "). format ( actual Date )) ĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Keyboard ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Manager Ġ= Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġif Ġno Ġview Ġhas Ġfocus : ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Focused View Ġ= Ġactivity . current Focus ĊĠĠĠĠĠĠĠ Ġif Ġ( current Focused View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Manager . hide Soft Input From Window ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Focused View . window Token , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Method Manager . HIDE _ NOT _ ALWAYS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġf bind Ġ= Ġnull ĊĠĠĠ Ġ} Ċ } Ċ