package Ġorg . fire speed . php conf uk u ok a 1 8 . presentation Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . annotation . String Res Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġorg . fire speed . php conf uk u ok a 1 8 . R Ċ import Ġorg . fire speed . php conf uk u ok a 1 8 . databinding . Activity Main Binding Ċ import Ġorg . fire speed . php conf uk u ok a 1 8 . is Event Date Ċ import Ġorg . fire speed . php conf uk u ok a 1 8 . model . Session Ċ import Ġorg . fire speed . php conf uk u ok a 1 8 . presentation . Session Detail Dialog Fragment . Companion . TAG _ SESSION _ DETAIL Ċ import Ġorg . fire speed . php conf uk u ok a 1 8 . view model . Session ViewModel ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĊĠĠĠĠĠĠĠ ĠExplorer Fragment . On Fragment Interaction Listener , ĊĠĠĠĠĠĠĠ ĠTime Table Fragment . On Fragment Interaction Listener , ĊĠĠĠĠĠĠĠ ĠF avorite Fragment . On Fragment Interaction Listener , ĊĠĠĠĠĠĠĠ ĠAbout Fragment . On Fragment Interaction Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĠĠĠ Ġprivate Ġvar Ġexplorer Fragment : ĠExplorer Fragment ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtime Table Fragment : ĠTime Table Fragment ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfavorite Fragment : ĠF avorite Fragment ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġabout Fragment : ĠAbout Fragment ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġopen Detail SessionId : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġexplorer Fragment Ġ= Ġsupport FragmentManager . find Fragment By Tag ( TAG _ EX PL OR ER ) Ġas ĠExplorer Fragment ? ĊĠĠĠĠĠĠĠ Ġtime Table Fragment Ġ= Ġsupport FragmentManager . find Fragment By Tag ( TAG _ TIME _ TABLE ) Ġas ĠTime Table Fragment ? ĊĠĠĠĠĠĠĠ Ġfavorite Fragment Ġ= Ġsupport FragmentManager . find Fragment By Tag ( TAG _ FA V OR ITE ) Ġas ĠF avorite Fragment ? ĊĠĠĠĠĠĠĠ Ġabout Fragment Ġ= Ġsupport FragmentManager . find Fragment By Tag ( TAG _ AB OUT ) Ġas ĠAbout Fragment ? ĊĠĠĠĠĠĠĠ Ġbinding . activity Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġbinding . navigation . setOn Navigation ItemSelected Listener Ġ{ Ġset Fragment ( it . itemId ) Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . navigation . selected ItemId Ġ= ĠsavedInstanceState ?. getInt ( STATE _ MENU ) Ġ?: ĠR . id . navigation _ explorer ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Event Date ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoto Time table () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġval Ġsession ViewModel Ġ= ĠViewModel Providers . of ( this ). get ( Session ViewModel :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetCurrent (). observe ( this @ MainActivity , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. first OrNull Ġ{ Ġit . id Ġ== Ġopen Detail SessionId Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSession Detail Dialog Fragment . newInstance ( it ). show ( support FragmentManager , ĠTAG _ SESSION _ DETAIL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdis posable Ġ= Ġsession ViewModel . getAll Ġ{ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġdis posable ?. dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġdis posable : ĠDis posable ? Ġ= Ġnull ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġout State ?. put Int ( STATE _ MENU , Ġbinding . navigation . selected ItemId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Fragment ( itemId : ĠInt ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ explorer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Main Fragment ( explorer Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠExplorer Fragment . newInstance (), ĠTAG _ EX PL OR ER , ĠR . string . title _ explorer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ time _ table Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Main Fragment ( time Table Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠTime Table Fragment . newInstance (), ĠTAG _ TIME _ TABLE , ĠR . string . title _ time _ table ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ favorite Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Main Fragment ( favorite Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠF avorite Fragment . newInstance (), ĠTAG _ FA V OR ITE , ĠR . string . title _ favorite ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ about Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Main Fragment ( about Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠAbout Fragment . newInstance (), ĠTAG _ AB OUT , ĠR . string . title _ about ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Main Fragment ( fragment : ĠFragment , Ġtag : ĠString , Ġ@ String Res Ġtitle Id : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). replace ( binding . main Fragment . id , Ġfragment , Ġtag ). commit () ĊĠĠĠĠĠĠĠ ĠsetTitle ( title Id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgoto Time table () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . navigation . selected ItemId Ġ= ĠR . id . navigation _ time _ table ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate Intent ( context : ĠContext , Ġopen Session : ĠSession ): ĠIntent Ġ= ĠIntent ( context , ĠMainActivity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= ĠACTION _ OPEN _ SESSION _ DETAIL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( ARGS _ OPEN _ SESSION _ ID , Ġopen Session . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠACTION _ OPEN _ SESSION _ DETAIL Ġ= Ġ" open Session Detail " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARGS _ OPEN _ SESSION _ ID Ġ= Ġ" open SessionId " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTATE _ MENU Ġ= Ġ" menu " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG _ EX PL OR ER Ġ= Ġ" explorer " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG _ TIME _ TABLE Ġ= Ġ" time Table " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG _ FA V OR ITE Ġ= Ġ" favorite " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG _ AB OUT Ġ= Ġ" about " ĊĠĠĠ Ġ} Ċ } Ċ