package Ġnet . ais cope . g dd _ app . ui . sample _ completion . metadata čĊč Ċ import Ġandroid . content . Intent č Ċ import Ġandroid . os . Bundle č Ċ import Ġandroid . view . View č Ċ import Ġandroidx . fragment . app . Fragment č Ċ import Ġandroidx . fragment . app . activity ViewModels č Ċ import Ġandroidx . lifecycle . lifecycle Scope č Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager č Ċ import Ġkotlinx . coroutines . launch č Ċ import Ġnet . ais cope . g dd _ app . R č Ċ import Ġnet . ais cope . g dd _ app . databinding . Fragment Metadata Binding č Ċ import Ġnet . ais cope . g dd _ app . extensions . select č Ċ import Ġnet . ais cope . g dd _ app . model . Completed Capture č Ċ import Ġnet . ais cope . g dd _ app . ui . capture . Capture Image Activity č Ċ import Ġnet . ais cope . g dd _ app . ui . mask . Mask Activity č Ċ import Ġnet . ais cope . g dd _ app . ui . metadata . Sample Images Adapter č Ċ import Ġnet . ais cope . g dd _ app . ui . sample _ completion . Sample Completion ViewModel č Ċ import Ġnet . ais cope . g dd _ app . ui . sample _ completion . Sample Form Fragment čĊč Ċ class ĠMetadata Fragment Ġ: ĠSample Form Fragment , ĠFragment ( R . layout . fragment _ metadata ) Ġ{ čĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Metadata Binding ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! čĊĠĠĠ Ġprivate Ġval Ġshared VM : ĠSample Completion ViewModel Ġby Ġactivity ViewModels () čĊčĊĠĠĠ Ġprivate Ġval Ġimages Adapter Ġ= čĊĠĠĠĠĠĠĠ ĠSample Images Adapter ( lifecycle Scope , Ġthis :: on Add Image Clicked , Ġthis :: on Image Clicked ) čĊčĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) čĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Metadata Binding . bind ( view ) čĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata Blood Sample Images . apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . context , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager . HORIZONTAL , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġimages Adapter čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( shared VM ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimages Adapter . set Capt ures ( capt ures ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs me ar TypeId ?. let Ġ{ Ġmetadata Section S me ar Type Radio Group . check ( it ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspecies Value ?. let Ġ{ Ġmetadata Species Spinner . select ( it ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġvalidate AndUpdate VM (): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared VM . s me ar TypeId Ġ= Ġmetadata Section S me ar Type Radio Group . checked RadioButton Id čĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared VM . species Value Ġ= Ġmetadata Species Spinner . selected Item . toString () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared VM . comments Ġ= Ġmetadata Comments Input . text . toString () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ// No Ġvalidation Ġon Ġthis Ġtab čĊĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġon Add Image Clicked () Ġ{ čĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠCapture Image Activity :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCapture Image Activity . EXTRA _ IMAGE _ NAME , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared VM . getCurrent Sample (). next Image Name () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġon Image Clicked ( capture : ĠCompleted Capture ) Ġ{ čĊĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠMask Activity :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Mask Activity . EXTRA _ DI SE ASE _ NAME , Ġshared VM . d isease ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Mask Activity . EXTRA _ IMAGE _ NAME , Ġcapture . image . absolute Path ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Remove Ġfile Ġextension čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmask Name Ġ= Ġcapture . mask . name . remove Suffix (". png ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Mask Activity . EXTRA _ MASK _ NAME , Ġmask Name ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Mask Activity . EXTRA _ MASK _ PATH , Ġcapture . mask . path ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () čĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull čĊĠĠĠ Ġ} č Ċ } čĊ