package Ġbr . com . fi ere ck . acade m ia . ui . exercise . edit Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . activity . view Models Ċ import Ġbr . com . fi ere ck . acade m ia . R Ċ import Ġbr . com . fi ere ck . acade m ia . databinding . Exercise Edit Activity Binding Ċ import Ġcom . bump tech . glide . G lide Ċ Ċ private Ġconst Ġval ĠKEY _ ID _ WORK OUT Ġ= Ġ" key _ id _ work out " Ċ private Ġconst Ġval ĠKEY _ ID _ EX ER CI SE Ġ= Ġ" key _ id _ exercise " Ċ Ċ class ĠExercise Edit Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠExercise Edit Activity Binding ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠExercise Edit ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġval Ġrequest Image Capture Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġimage Bitmap : ĠBitmap ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġid Exercise : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġid Work out : ĠString ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠExercise Edit Activity Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġbinding . root ĊĠĠĠĠĠĠĠ ĠsetContentView ( view ) ĊĊĠĠĠĠĠĠĠ Ġid Exercise Ġ= Ġintent . extras ?. getString ( KEY _ ID _ EX ER CI SE ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġid Work out Ġ= Ġintent . extras ?. getString ( KEY _ ID _ WORK OUT ) Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠ ĠviewModel . get Exercise ( id Work out , Ġid Exercise ) ĊĊĠĠĠĠĠĠĠ Ġsetup Observer s () ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. title Ġ= ĠgetString ( R . string . edit _ exercise ) ĊĊĠĠĠĠĠĠĠ Ġbinding . button Save . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . edit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Work out , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Exercise , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . edit Name Exercise . text . toString (). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . edit Note Exercise . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Bitmap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . exercise _ edit _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . icon _ edit _ photo Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtake Picture Intent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Observer s () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . success Get Exercise LiveData . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . edit Note Exercise . setText ( it . note ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . edit Name Exercise . setText ( it . name Exercise ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . url Image Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetImage ( it . url Image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . error Get Exercise LiveData . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġit , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . success Edit Exercise LiveData . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . error Edit Exercise LiveData . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġit , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtake Picture Intent () Ġ{ ĊĠĠĠĠĠĠĠ ĠIntent ( Media Store . ACTION _ IMAGE _ CAPTURE ). also Ġ{ Ġtake Picture Intent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtake Picture Intent . resolve Activity ( package Manager )?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( take Picture Intent , Ġrequest Image Capture ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== Ġrequest Image Capture Ġ&& ĠresultCode Ġ== ĠRESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Bitmap Ġ= Ġdata ?. extras ?. get (" data ") Ġas ĠBitmap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . image Exercise . setImage Bitmap ( image Bitmap ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetImage ( url Image : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠG lide . with ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( url Image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . image Exercise ) ĊĠĠĠ Ġ} Ċ }