package Ġcom . undef . fit app . ui . di ary čĊč Ċ import Ġandroid . content . Intent č Ċ import Ġandroid . os . Bundle č Ċ import Ġandroid . text . Editable č Ċ import Ġandroid . text . Text Watcher č Ċ import Ġandroid . view . View č Ċ import Ġandroid . widget . EditText č Ċ import Ġandroid . widget . TextView č Ċ import Ġandroidx . appcompat . app . AppCompatActivity č Ċ import Ġandroidx . appcompat . widget . Toolbar č Ċ import Ġandroidx . lifecycle . Observer č Ċ import Ġandroidx . lifecycle . ViewModel Providers č Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager č Ċ import Ġandroidx . recyclerview . widget . RecyclerView č Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog č Ċ import Ġcom . af ol le st ad . material dialogs . custom view . custom View č Ċ import Ġcom . undef . fit app . R č Ċ import Ġcom . undef . fit app . api . model . Food č Ċ import Ġcom . undef . fit app . api . repositories . My Calendar č Ċ import Ġcom . undef . fit app . api . repositories . UserData Repository č Ċ import Ġcom . undef . fit app . api . service . Connection Data č Ċ import Ġcom . undef . fit app . api . service . Connection Data . post Exercise ToServer č Ċ import Ġcom . undef . fit app . custom . ME ListAdapter č Ċ import Ġcom . undef . fit app . custom . ME ListAdapter . On ME ListItem ClickListener č Ċ import Ġcom . undef . fit app . custom . Search Mode č Ċ import Ġcom . undef . fit app . ui . di ary . view model . Search Mn E ViewModel č Ċ import Ġkotlinx . android . synt hetic . main . activity _ search _ mn _ e .* č Ċ import Ġkotlinx . coroutines . Coroutine Scope č Ċ import Ġkotlinx . coroutines . Dispatch ers č Ċ import Ġkotlinx . coroutines . launch č Ċ import Ġretrofit 2 . await Response č Ċ import Ġjava . text . SimpleDateFormat č Ċ import Ġjava . util .* č Ċ import Ġkotlin . collections . HashMap čĊčĊč Ċ class ĠSearch Mn E Activity () Ġ: ĠAppCompatActivity (), ĠOn ME ListItem ClickListener Ġ{ čĊĠĠĠ Ġ// Search ĠMe al Ġand ĠExercise ĠActivity čĊčĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cyclerView : ĠRecyclerView čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Adapter : ĠRecyclerView . Adapter < *> čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Manager : ĠRecyclerView . LayoutManager čĊčĊčĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠSearch Mn E ViewModel čĊčĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch Mode : ĠSearch Mode čĊčĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadd Date : ĠString čĊčĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) čĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ search _ mn _ e ) čĊĠĠĠĠĠĠĠ Ġval Ġtool bars : ĠToolbar Ġ= ĠfindViewById ( R . id . toolbar On Search ) čĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( tool bars ) čĊĠĠĠĠĠĠĠ Ġif ( support ActionBar Ġ!= Ġnull ){ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Home As Up Enabled ( true ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Show Home Enabled ( true ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ// init ital ize Ġsearch Mode čĊĠĠĠĠĠĠĠ Ġif ( intent . extras Ġ!= Ġnull ){ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( intent . has Extra (" search _ mode ")){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Mode Ġ= Ġintent . get Serializable Extra (" search _ mode ") Ġas ĠSearch Mode čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( intent . has Extra (" add _ date ")){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Date Ġ= Ġintent . getString Extra (" add _ date ") !! čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ} čĊčĊčĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this ). get ( Search Mn E ViewModel :: class . java ) čĊĠĠĠĠĠĠĠ Ġre cyclerView Ġ= ĠfindViewById ( R . id . rv Result ME ) čĊĠĠĠĠĠĠĠ Ġview Manager Ġ= ĠLinearLayoutManager ( this ) čĊčĊčĊĠĠĠĠĠĠĠ Ġif ( search Mode Ġ== ĠSearch Mode . ME AL ){ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Ġtitle Ġof Ġtoolbar čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Search ĠMe al " čĊčĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . food SearchResults . observe ( this , ĠObserver Ġ{ Ġsr Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Adapter Ġ= ĠME ListAdapter ( sr , Ġsearch Mode , this ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġview Manager čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġview Adapter čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠĠĠĠĠ Ġ} else { čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Search ĠExercise " čĊčĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . exercise SearchResults . observe ( this , ĠObserver Ġ{ Ġsr Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Adapter Ġ= ĠME ListAdapter ( sr , Ġsearch Mode , Ġthis ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġview Manager čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġview Adapter čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊčĊĠĠĠĠĠĠĠ Ġbtn Search Mn E . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . get SearchResult ( search Mode , 5 , Ġet Search ME . text . toString ()) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ} čĊčĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon ME ListItem Click ( position : ĠInt , Ġview : ĠView ) Ġ{ čĊĠĠĠĠĠĠĠ Ġwhen ( search Mode ){ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Mode . ME AL Ġ-> Ġif ( viewModel . food SearchResults . value != Ġnull ){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= ĠviewModel . food SearchResults . value ! ![ position ] čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Toast . makeText ( this , Ġf . name , ĠToast . LENGTH _ SHORT ). show () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠEdit Me al Activity :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . put Parcelable (" selected _ food ", f Ġas ĠFood ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" my Bundle ", bundle ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" add _ date ", Ġadd Date ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Mode . EX ER CI SE Ġ-> Ġif ( viewModel . exercise SearchResults . value != Ġnull ){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ha Ġexerc is era Ġk att int ok Ġk eres Ã© sk or Ġmeg jel ik Ġegy Ġdialog Ġbox Ġegy Ġbe v itel i Ġme zÅĳ vel ĠÃ©s Ġegy Ġid Åĳ m Ã© rt Ã© ke g ys Ã© ge ket Ġt art al maz Ã³ Ġspinner čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexercise Ġ= ĠviewModel . exercise SearchResults . value ! ![ position ] čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠMaterial Dialog ( this ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. no Auto Dismiss () Ġ// dialog Ġdoesn 't Ġdis appear Ġwhen Ġtouch Ġoutside Ġof Ġthe Ġdialog čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. custom View ( R . layout . dialog _ edit _ exercise ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Burn ed Ġ= Ġdialog . findViewById < TextView >( R . id . tv Dialog Exercise Burn ed K cal s ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Ġexc ers ise . description čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . findViewById < TextView >( R . id . tv Dialog Exercise Description ). text Ġ= Ġexercise . getTitle () čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . findViewById < EditText >( R . id . et Dialog Exercise Minutes ). add TextChanged Listener ( object Ġ: čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Watcher Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{} čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// item . Duration Ġ* Ġ( item . Met Num Ġ* Ġweight Ġ* Ġ 3 . 5 ) Ġ/ Ġ 2 0 0 . 0 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( s . toString ()!= Ġ""){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġburn ed K cal s Ġ= Ġ( s . toString (). toDouble () Ġ* Ġexercise . met Num Ġ* ĠUser Data Repository . logged User . weight Ġ* Ġ 3 . 5 ) Ġ/ Ġ 2 0 0 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Burn ed . text Ġ= Ġ"${ burn ed K cal s } Ġk cal s Ġburn ed " čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊč ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . findViewById < EditText >( R . id . et Dialog Exercise Timestamp ). setText ( My Calendar . get Hour And Minutes ()) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . findViewById < TextView >( R . id . tv Dialog Exercise Date ). text Ġ= Ġadd Date čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . findViewById < TextView >( R . id . btn Exercise Dialog Add ). setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! dialog . findViewById < EditText >( R . id . et Dialog Exercise Minutes ). text . isNull OrEmpty () Ġ&& Ġ! dialog . findViewById < EditText >( R . id . et Dialog Exercise Timestamp ). text . isNull OrEmpty ()){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* { čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Person _ ID ": Ġ 1 , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Met s _ ID ": Ġ 1 0 0 3 , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Date ": Ġ" 2 0 2 0 - 0 4 - 0 4 T 1 6 : 2 4 : 5 9 . 2 9 7 Z ", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Duration ": Ġ 1 0 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġadd Ġtime Ġto Ġdate čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimpleDateFormat (" yyyy - MM - dd "). parse ( add Date ). to Calendar (). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis !!. set ( Calendar . HOUR _ OF _ DAY , Ġet Edit Me al TimeStamp . text . toString (). split (": ")[ 0 ]. toInt ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis !!. set ( Calendar . MINUTE , Ġet Edit Me al TimeStamp . text . toString (). split (": ")[ 1 ]. toInt ()) Ġ} !!. time ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . IO ). launch { čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstatusCode Ġ= čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Exercise ToServer ( UserData Repository . logged User . id , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexercise . id , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ add Date } T ${ dialog . findViewById < EditText >( R . id . et Dialog Exercise Timestamp ). text . toString ()} : 0 0 ", čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . findViewById < EditText >( R . id . et Dialog Exercise Minutes ). text . toString (). toDouble ()) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( statusCode Ġ== Ġ 1 ){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// s ik eres Ġinsert čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊčĊčĊč ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . findViewById < TextView >( R . id . btn Exercise Dialog Cancel ). setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show Ġ() čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ} čĊčĊ čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġon Back Pressed () čĊĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠ Ġ} č Ċ } čĊ