package Ġcom . git fit . android . ui . home . home . add Activity Ċ Ċ import Ġandroid . app . DatePicker Dialog Ċ import Ġandroid . app . Time Picker Dialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . git fit . android . App Constants . Companion . ACTIVITY _ CO FF EE Ċ import Ġcom . git fit . android . App Constants . Companion . ACTIVITY _ GAME _ CONSOLE _ BREAK Ċ import Ġcom . git fit . android . App Constants . Companion . ACTIVITY _ TABLE _ TEN N IS Ċ import Ġcom . git fit . android . R Ċ import Ġcom . git fit . android . databinding . Fragment Dialog Add Activity Binding Ċ import Ġcom . git fit . android . ui . base . dialog . Base Dialog Fragment Ċ import Ġkotlinx . android . synt hetic . main . fragment _ dialog _ add _ activity . m Activity Type DropDown Ċ import Ġkotlinx . android . synt hetic . main . fragment _ dialog _ add _ activity . m Date EditText Ċ import Ġkotlinx . android . synt hetic . main . fragment _ dialog _ add _ activity . m Time EditText Ċ import Ġkotlinx . android . synt hetic . main . fragment _ dialog _ add _ activity . value _ text _ layout Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ class ĠAdd Activity Dialog Fragment Ġ: ĠBase Dialog Fragment (), ĠAdd Activity Dialog Navigator Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġadd Activity ViewModel : ĠAdd Activity ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġadd Activity ViewModel . set Navigator ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠFragment Dialog Add Activity Binding Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Binding Util . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinflater , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . fragment _ dialog _ add _ activity , Ġcontainer , Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= Ġadd Activity ViewModel ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Activity Types DropDown () ĊĠĠĠĠĠĠĠ Ġset Activity Type Observer () ĊĠĠĠĠĠĠĠ Ġset Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Activity Type Observer () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Activity ViewModel . activity Type . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue _ text _ layout . hint Ġ= Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠACT IVITY _ GAME _ CONSOLE _ BREAK Ġ-> ĠgetString ( R . string . duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠACT IVITY _ CO FF EE Ġ-> ĠgetString ( R . string . c ups _ of _ coffee ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠACT IVITY _ TABLE _ TEN N IS Ġ-> ĠgetString ( R . string . duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠgetString ( R . string . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Activity Types DropDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Types Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . activity _ dr ink ing _ coffee ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . activity _ table _ ten nis ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . activity _ console _ game ) ĊĠĠĠĠĠĠĠ Ġ). sorted Array () ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArray Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . dropdown _ menu _ popup _ item , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Types ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġm Activity Type DropDown . setAdapter ( adapter ) ĊĊĠĠĠĠĠĠĠ Ġselect First Item In DropDown () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselect First Item In DropDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġm Activity Type DropDown . adapter . getItem ( 0 ) Ġas ĠString ĊĠĠĠĠĠĠĠ Ġm Activity Type DropDown . setText ( item , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġupdate Activity Type ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Activity Type DropDown . setOn ItemClickListener Ġ{ Ġadapter View , Ġ_, Ġposition , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġadapter View . getItem At Position ( position ) Ġas ĠString ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Activity Type ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Date EditText . setOn Focus ChangeListener Ġ{ Ġ_, Ġhas Focus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Activity ViewModel . on Date EditText Click ( has Focus ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Time EditText . setOn Focus ChangeListener Ġ{ Ġ_, Ġhas Focus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Activity ViewModel . on Time EditText Click ( has Focus ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Activity Type ( item : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Activity ViewModel . activity Type . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . activity _ dr ink ing _ coffee ) Ġ-> ĠACT IVITY _ CO FF EE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . activity _ table _ ten nis ) Ġ-> ĠACT IVITY _ TABLE _ TEN N IS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . activity _ console _ game ) Ġ-> ĠACT IVITY _ GAME _ CONSOLE _ BREAK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠException (" Unknown Ġactivity Ġselected !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġdismiss Dialog () ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . action _ navigation _ add _ activity _ to _ navigation _ home ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdismiss Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow DatePicker () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠdateTime Ġ= Ġadd Activity ViewModel . dateTime . value !! ĊĠĠĠĠĠĠĠ Ġval Ġdate Picker Dialog Ġ= ĠDate Picker Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext !! , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDate Picker Dialog . On Date Set Listener Ġ{ Ġ_, Ġselected Year , Ġselected Month , Ġselected Day OfMonth Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Activity ViewModel . save Selected Date ( selected Year , Ġselected Month , Ġselected Day OfMonth ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime . year , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime . month Value Ġ- Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime . day OfMonth ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġdate Picker Dialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Time Picker () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠdateTime Ġ= Ġadd Activity ViewModel . dateTime . value !! ĊĠĠĠĠĠĠĠ Ġval Ġtime Picker Dialog Ġ= ĠTime Picker Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext !! , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTime Picker Dialog . On Time Set Listener Ġ{ Ġ_, Ġselected Hour , Ġselected Minute Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Activity ViewModel . save Selected Time ( selected Hour , Ġselected Minute ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime . hour , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime . minute , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtime Picker Dialog . show () ĊĠĠĠ Ġ} Ċ }