/* Ċ Ġ* ĠThe Ġcontents Ġof Ġthis Ġfile Ġare Ġsubject Ġto Ġthe ĠOpen MR S ĠPublic ĠLicense Ċ Ġ* ĠVersion Ġ 1 . 0 Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ċ Ġ* Ġcompliance Ġwith Ġthe ĠLicense . ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ġhttp :// license . open m rs . org Ċ Ġ* Ċ Ġ* ĠSoftware Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " Ċ Ġ* Ġbasis , ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĠSee Ġthe Ċ Ġ* ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġrights Ġand Ġlimitations Ċ Ġ* Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) ĠOpen MR S , ĠLLC . Ġ ĠAll ĠRights ĠReserved . Ċ Ġ*/ Ċ package Ġorg . open m rs . mobile . activities . form list Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . annotation . Nullable Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġcom . open m rs . android _ sdk . library . models . Form Create Ċ import Ġcom . open m rs . android _ sdk . library . models . FormData Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . android . material . sn ackbar . Snackbar . Snackbar Layout Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġorg . open m rs . mobile . R Ċ import Ġorg . open m rs . mobile . activities . AC Base Fragment Ċ import Ġorg . open m rs . mobile . activities . form ad mission . Form Ad mission Activity Ċ import Ġorg . open m rs . mobile . activities . form display . Form Display Activity Ċ import Ġcom . open m rs . android _ sdk . library . api . RestApi Ċ import Ġcom . open m rs . android _ sdk . library . api . Rest Service Builder Ċ import Ġorg . open m rs . mobile . databinding . Fragment Form List Binding Ċ import Ġcom . open m rs . android _ sdk . utilities . Application Constants Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . charset . StandardCharsets Ċ Ċ public Ġfinal Ġclass ĠForm List Fragment Ġ: ĠAC Base Fragment < Form List Contract . Presenter ?> (), ĠForm List Contract . View Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Form List Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĠĠĠ Ġprivate Ġvar Ġsn ackbar : ĠSn ackbar ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Nullable ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Form List Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġroot : ĠView Ġ= Ġbinding . root ĊĠĠĠĠĠĠĠ Ġbinding . form list . setOn ItemClickListener ({ Ġparent : ĠAdapter View < *> ?, Ġview : ĠView , Ġposition : ĠInt , Ġid : ĠLong Ġ-> Ġm Presenter !!. list Item Clicked ( position , Ġ( view Ġas ĠTextView ). text . toString ()) Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġroot ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Form List ( forms : ĠArray < String ?> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( forms !!. size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar Ġ= ĠSn ackbar . make ( binding . root , ĠApplication Constants . EMPTY _ STRING , ĠSn ackbar . LENGTH _ IN DEFIN ITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Sn ackBar View Ġ= Ġlayout Inflater . inflate ( R . layout . sn ackbar , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsn ackBar Layout Ġ= Ġsn ackbar !!. view Ġas ĠSn ackbar Layout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackBar Layout . set Padding ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotice Field Ġ= Ġcustom Sn ackBar View . findViewById < TextView >( R . id . sn ackbar _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotice Field . setText ( R . string . sn ackbar _ no _ forms _ found ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdismiss Button Ġ= Ġcustom Sn ackBar View . findViewById < TextView >( R . id . sn ackbar _ action _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype face Ġ= ĠType face . createFrom Asset ( require Activity (). assets , ĠApplication Constants . Type Face Path Constants . ROBOT O _ MEDIUM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Button . type face Ġ= Ġtype face ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Button . setOnClickListener Ġ{ Ġv : ĠView ? Ġ-> Ġsn ackbar !!. dismiss () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackBar Layout . addView ( custom Sn ackBar View , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ackbar !!. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . form list . adapter Ġ= ĠArray Adapter ( require Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . layout . simple _ list _ item _ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . text 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforms ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Form Display Activity ( form Name : ĠString ?, Ġpatient Id : ĠLong ?, Ġvalue Ref String : ĠString ?, Ġencounter Type : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠForm Display Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Application Constants . Bundle Keys . FORM _ NAME , Ġform Name ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Application Constants . Bundle Keys . PAT IENT _ ID _ B UNDLE , Ġpatient Id ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Application Constants . Bundle Keys . VAL U ERE FER ENCE , Ġvalue Ref String ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Application Constants . Bundle Keys . EN COUNTER TYPE , Ġencounter Type ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Ad mission Form Activity ( form Name : ĠString ?, Ġpatient Id : ĠLong ?, Ġencounter Type : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠForm Ad mission Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Application Constants . Bundle Keys . FORM _ NAME , Ġform Name ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Application Constants . Bundle Keys . PAT IENT _ ID _ B UNDLE , Ġpatient Id ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Application Constants . Bundle Keys . EN COUNTER TYPE , Ġencounter Type ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Presenter ( presenter : ĠForm List Contract . Presenter ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Presenter Ġ= Ġpresenter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( api Ġ= ĠBuild . VERSION _ CODES . KIT K AT ) ĊĠĠĠ Ġoverride Ġfun Ġform Create ( uuid : ĠString ?, Ġform Name : ĠString ?): ĠBoolean ? Ġ{ ĊĠĠĠĠĠĠĠ Ġform Create Flag Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġapi Service Ġ= ĠRest Service Builder . create Service ( RestApi :: class . java ) ĊĠĠĠĠĠĠĠ Ġif Ġ( form Name !!. contains (" ad mission ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġload JSON From Asset (" ad mission . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall 2 Ġ= Ġapi Service . form Create ( uuid , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall 2 . enqueue ( object Ġ: ĠCallback < Form Create > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Form Create >, Ġresponse : ĠResponse < Form Create >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful Ġ&& Ġresponse . body () !!. name Ġ== Ġ" json ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Create Flag Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Form Create >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// This Ġmethod Ġis Ġlef Ġblank Ġintention ally ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( form Name . contains (" vit als ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġload JSON From Asset (" vit als 1 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj 2 Ġ= Ġload JSON From Asset (" vit als 2 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall 2 Ġ= Ġapi Service . form Create ( uuid , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall 2 . enqueue ( object Ġ: ĠCallback < Form Create > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Form Create >, Ġresponse : ĠResponse < Form Create >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful Ġ&& Ġresponse . body () !!. name Ġ== Ġ" json ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Create Flag Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Form Create >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// This Ġmethod Ġis Ġlef Ġblank Ġintention ally ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġapi Service . form Create ( uuid , Ġobj 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . enqueue ( object Ġ: ĠCallback < Form Create > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Form Create >, Ġresponse : ĠResponse < Form Create >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful Ġ&& Ġresponse . body () !!. name Ġ== Ġ" json ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Create Flag Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Form Create >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// This Ġmethod Ġis Ġlef Ġblank Ġintention ally ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( form Name . contains (" visit Ġnote ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġload JSON From Asset (" visit _ note . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall 2 Ġ= Ġapi Service . form Create ( uuid , Ġobj ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall 2 . enqueue ( object Ġ: ĠCallback < Form Create > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Form Create >, Ġresponse : ĠResponse < Form Create >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful Ġ&& Ġresponse . body () !!. name Ġ== Ġ" json ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Create Flag Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Form Create >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// This Ġmethod Ġis Ġlef Ġblank Ġintention ally ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġform Create Flag ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( api Ġ= ĠBuild . VERSION _ CODES . KIT K AT ) ĊĠĠĠ Ġprivate Ġfun Ġload JSON From Asset ( filename : ĠString ): ĠFormData ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġjson : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġjson Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ` is ` Ġ= Ġrequire Activity (). assets . open (" forms /$ filename ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġ` is `. available () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `. read ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` is `. close () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString ( buffer , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġobj : ĠJSONObject ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj Ġ= ĠJSONObject ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠFormData () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . name Ġ= Ġobj . getString (" name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . dataType Ġ= Ġobj . getString (" dataType ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . value Reference Ġ= Ġobj . getString (" value Reference ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Error ( form Name : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġerror ( getString ( R . string . no _ such _ form _ name _ error _ message , Ġform Name )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġform Create Flag : ĠBoolean ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠForm List Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠForm List Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }