package Ġcom . application . ar che lon . screens . survey . new _ event . in und ation _ or _ w ash Ċ Ċ import Ġandroid . app . DatePicker Dialog . On Date Set Listener Ċ import Ġandroid . app . Time Picker Dialog . On Time Set Listener Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . application . ar che lon . R Ċ import Ġcom . application . ar che lon . databinding . Fragment New Event In und ation Or W ash Binding Ċ import Ġcom . application . ar che lon . interfaces . I On Back Pressed Ċ import Ġcom . application . ar che lon . screens . survey . New Survey Activity Ċ import Ġcom . application . ar che lon . screens . survey . New Survey ViewModel Ċ import Ġcom . application . ar che lon . utils . Time Pick ing Util Ċ import Ġkotlinx . android . synt hetic . main . fragment _ new _ event _ in und ation _ or _ w ash . view .* Ċ Ċ /** Ċ Ġ* ĠEvent In und ation Or W ash Fragment Ċ Ġ* ĠThis Ġis Ġthe Ġfragment Ġrepresenting Ġthe Ġdata Ġfor Ġa Ġnew ĠIn und ation Ġor ĠW ash Ġmodel . Ċ Ġ*/ Ċ Ċ class ĠEvent In und ation Or W ash Fragment Ġ: ĠFragment (), ĠView . OnClickListener , ĠI On Back Pressed Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Layout : ĠView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsurvey ViewModel : ĠNew Survey ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġin und ation Or W ash ViewModel : ĠEvent In und ation Or W ash ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġactivity ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsurvey ViewModel Ġ= ĠViewModel Provider ( this ). get ( New Survey ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġmodel Ġis Ġonly Ġscoped Ġto Ġthis Ġfragment . ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġused Ġto Ġfeed Ġmodel Ġdata Ġto Ġthe ĠNew Survey ViewModel Ġwhen Ġan Ġevent Ġis Ġupdated / added . ĊĠĠĠĠĠĠĠ Ġin und ation Or W ash ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider ( this ). get ( Event In und ation Or W ash ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠFragment New Event In und ation Or W ash Binding Ġ= ĠData Binding Util . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . fragment _ new _ event _ in und ation _ or _ w ash , Ġcontainer , Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbinding . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . event ViewModel Ġ= Ġin und ation Or W ash ViewModel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . lifecycle Owner Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview Layout Ġ= Ġbinding . root ĊĠĠĠĠĠĠĠ Ġsurvey ViewModel . setCurrent Title ( view Layout . context . getString ( R . string . new _ survey _ event _ in und ation _ or _ w ash )) ĊĊĠĠĠĠĠĠĠ Ġprepare Listeners () ĊĠĠĠĠĠĠĠ Ġreturn Ġview Layout ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . event DatePicker Button Ġ-> Ġhandle Action Pick Date () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . event Time Picker Button Ġ-> Ġhandle Action Pick Time () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . event Take Photo Button Ġ-> Ġhandle Action Photo () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . cancel Entry Button Ġ-> Ġhandle Cancel Entry () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . confirm Entry Button Ġ-> Ġhandle Confirm Entry () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġview Layout . event DatePicker Button . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġview Layout . event Time Picker Button . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġview Layout . event Take Photo Button . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġview Layout . cancel Entry Button . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġview Layout . confirm Entry Button . setOnClickListener ( this ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Action Photo () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNot Ġmuch Ġelse Ġto Ġdo Ġnow Ġas Ġthe ĠAPI Ġdoes Ġnot Ġhandle Ġanything Ġrelated Ġto Ġphotos Ġexcept Ġfor Ġidentifiers . ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġcan Ġhandle Ġthe Ġfile Ġhere Ġif Ġthis Ġis Ġever Ġimplemented . ĊĠĠĠĠĠĠĠ Ġ// ĠFor Ġnow Ġjust Ġshow Ġa ĠUI Ġmessage Ġand Ġgenerate Ġthe Ġidentifier . ĊĠĠĠĠĠĠĠ ĠToast . makeText ( view Layout . context , Ġ"** Sh utter ĠSounds ** Ġa Ġpic Ġwas Ġtaken ", ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠ Ġin und ation Or W ash ViewModel . set Photo Identifier For Capt ured Image () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġhandle Action Pick Date () Ġ{ ĊĠĠĠĠĠĠĠ ĠTime Pick ing Util . action Pick Date For Context ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Layout . context , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOn Date Set Listener Ġ{ Ġ_, Ġyear , Ġmonth OfYear , Ġday OfMonth Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin und ation Or W ash ViewModel . setDate For Event DateTime ( year , Ġmonth OfYear , Ġday OfMonth ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Action Pick Time () Ġ{ ĊĠĠĠĠĠĠĠ ĠTime Pick ing Util . action Pick Time For Context ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Layout . context , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOn Time Set Listener Ġ{ Ġ_, Ġhour OfDay , Ġminute Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin und ation Or W ash ViewModel . setTime For Event DateTime ( hour OfDay , Ġminute ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Confirm Entry () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Take Ġthis Ġmodel 's Ġdata , Ġand Ġset Ġit Ġon Ġthe ĠSurvey Model Ġso Ġit Ġcan Ġbe Ġpart Ġof Ġthe Ġen closing Ġsurvey . ĊĠĠĠĠĠĠĠ Ġ// This Ġway Ġdata Ġwill Ġbe Ġpushed Ġonly Ġat Ġthe Ġpoint Ġthe Ġwhole Ġsurvey Ġis Ġsaved . ĊĠĠĠĠĠĠĠ Ġsurvey ViewModel . add Event To Survey ( in und ation Or W ash ViewModel . getCurrent Event Model Data ()) ĊĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Layout . context , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . event _ saved , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠNew Survey Activity ). finish Survey Event () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Cancel Entry () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠNew Survey Activity ). show Confirmation For Discard Event () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Event In und ation Or W ash Fragment " ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠEvent In und ation Or W ash Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEvent In und ation Or W ash Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġhandle Cancel Entry () ĊĠĠĠ Ġ} Ċ }