package Ġsk ed go . date timer ange picker Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Time Picker Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . text . format . DateFormat Ċ import Ġcom . squareup . time ss quare . Calendar Picker View Ċ import Ġorg . joda . time . DateTime Ċ import Ġsk ed go . date timer ange picker . databinding . DateTime Range Picker Binding Ċ import Ġjava . util .* Ċ Ċ class ĠDateTime Range Picker Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġfun Ġnew Intent ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext ?, ĊĠĠĠĠĠĠĠ Ġtime Zone : ĠTime Zone ?, ĊĠĠĠĠĠĠĠ ĠstartTime In Millis : ĠLong ?, ĊĠĠĠĠĠĠĠ ĠendTime In Millis : ĠLong ?): ĠIntent Ġ{ ĊĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context !! , ĠDateTime Range Picker Activity :: class . java ) ĊĠĠĠĠĠ ĠstartTime In Millis ?. let Ġ{ Ġintent . putExtra ( DateTime Range Picker ViewModel . KEY _ START _ TIME _ IN _ M ILL IS , Ġit ) Ġ} ĊĠĠĠĠĠ ĠendTime In Millis ?. let Ġ{ Ġintent . putExtra ( DateTime Range Picker ViewModel . KEY _ END _ TIME _ IN _ M ILL IS , Ġit ) Ġ} ĊĠĠĠĠĠ Ġintent . putExtra ( DateTime Range Picker ViewModel . KEY _ TIME _ ZONE , Ġtime Zone !!. id ) ĊĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval ĠviewModel : ĠDateTime Range Picker ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠ ĠDateTime Range Picker ViewModel ( Time Formatter ( application Context )) ĊĠ Ġ} ĊĠ Ġprivate Ġval Ġbinding : ĠDateTime Range Picker Binding Ġby Ġlazy Ġ{ ĊĠĠĠ ĠData Binding Util . set ContentView < DateTime Range Picker Binding >( ĊĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠ ĠR . layout . date _ time _ range _ picker ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠ ĠviewModel . handle Args ( intent . extras ) ĊĠĠĠ Ġbinding . set ViewModel ( viewModel ) ĊĊĠĠĠ Ġval Ġtoolbar Ġ= Ġbinding . toolbar ĊĠĠĠ Ġtoolbar . inflate Menu ( R . menu . date _ time _ range _ picker ) ĊĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ Ġv Ġ-> Ġfinish () Ġ} ĊĠĠĠ Ġtoolbar . setOn MenuItem ClickListener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġitem . itemId Ġ== ĠR . id . dateTime Range Picker Done Item Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , ĠviewModel . create Result Intent ()) ĊĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġcalendar Picker View Ġ= Ġbinding . calendar Picker View ĊĠĠĠ Ġcalendar Picker View . init ( viewModel . min Date , ĠviewModel . max Date ) ĊĠĠĠĠĠĠĠ Ġ. in Mode ( Calendar Picker View . Selection Mode . RANGE ) ĊĠĠĠ ĠviewModel . start DateTime . value ?. let Ġ{ Ġcalendar Picker View . select Date ( it . toDate ()) Ġ} ĊĠĠĠ ĠviewModel . end DateTime . value ?. let Ġ{ Ġcalendar Picker View . select Date ( it . toDate ()) Ġ} ĊĊĠĠĠ Ġcalendar Picker View . setOn Date Selected Listener ( object Ġ: ĠCalendar Picker View . On Date Selected Listener Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Date Selected ( date : ĠDate ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . update Selected Dates ( calendar Picker View . selected Dates ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Date Un selected ( date : ĠDate ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . update Selected Dates ( calendar Picker View . selected Dates ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġbinding . pick StartTime View . setOnClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠ Ġshow Time Picker ( viewModel . start DateTime . value , ĠviewModel . on StartTime Selected ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġbinding . pick EndTime View . setOnClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠ Ġshow Time Picker ( viewModel . end DateTime . value , ĠviewModel . on EndTime Selected ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow Time Picker ( ĊĠĠĠĠĠ Ġinitial Time : ĠDateTime , ĊĠĠĠĠĠ Ġlistener : ĠTime Picker Dialog . On Time Set Listener ) Ġ{ ĊĠĠĠ ĠTime Picker Dialog ( ĊĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠ Ġlistener , ĊĠĠĠĠĠĠĠ Ġinitial Time . hour OfDay , ĊĠĠĠĠĠĠĠ Ġinitial Time . minute Of Hour , ĊĠĠĠĠĠĠĠ ĠDate Format . is 2 4 Hour Format ( this ) ĊĠĠĠ Ġ). show () ĊĠ Ġ} Ċ } Ċ