package Ġde . st ef an med ack . cc ct v . ui . main Ċ Ċ import Ġandroid . arch . lifecycle . ViewModel Provider Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 1 7 . lean back . app . Browse Fragment Ċ import Ġandroid . support . v 1 7 . lean back . app . Browse Support Fragment Ċ import Ġandroid . support . v 1 7 . lean back . widget .* Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġdagger . android . support . Android Support Injection Ċ import Ġde . st ef an med ack . cc ct v . R Ċ import Ġde . st ef an med ack . cc ct v . model . Resource Ċ import Ġde . st ef an med ack . cc ct v . ui . about . About Fragment Ċ import Ġde . st ef an med ack . cc ct v . ui . main . Main Fragment Factory . Companion . KEY _ AB OUT _ PAGE Ċ import Ġde . st ef an med ack . cc ct v . ui . main . Main Fragment Factory . Companion . KEY _ AB OUT _ SECTION Ċ import Ġde . st ef an med ack . cc ct v . ui . main . Main Fragment Factory . Companion . KEY _ LIBRARY _ SECTION Ċ import Ġde . st ef an med ack . cc ct v . ui . main . Main Fragment Factory . Companion . KEY _ LIBRARY _ PAGE Ċ import Ġde . st ef an med ack . cc ct v . ui . main . Main Fragment Factory . Companion . KEY _ STREAM ING _ PAGE Ċ import Ġde . st ef an med ack . cc ct v . ui . main . Main Fragment Factory . Companion . KEY _ STREAM ING _ SECTION Ċ import Ġde . st ef an med ack . cc ct v . ui . search . Search Activity Ċ import Ġde . st ef an med ack . cc ct v . util . CON FER ENCE _ GROUP _ TRANSL ATIONS Ċ import Ġde . st ef an med ack . cc ct v . util . plus Assign Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . rx kotlin . subscribe By Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠMain Fragment Ġ: ĠB rowse Support Fragment () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠMain ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Providers . of ( this , ĠviewModel Factory ). get ( Main ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdis pos ables Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠAndroid Support Injection . inject ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġprepare Entr ance Transition () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġsetup Ui ( view . context ) ĊĠĠĠĠĠĠĠ Ġbind ViewModel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis pos ables . clear () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Ui ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġheaders State Ġ= ĠB rowse Fragment . HEADERS _ ENABLED ĊĠĠĠĠĠĠĠ Ġis Headers Transition On Back Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġbadge Drawable Ġ= ĠContext Compat . get Drawable ( context , ĠR . drawable . vo ct oc at ) ĊĊĠĠĠĠĠĠĠ Ġset On Search Clicked Listener Ġ{ Ġactivity ?. startActivity ( Intent ( activity , ĠSearch Activity :: class . java )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġmain Fragment Registry . register Fragment ( Page Row :: class . java , ĠMain Fragment Factory ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis pos ables . add ( viewModel . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Next Ġ= Ġ:: render , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġ{ Ġit . printStackTrace () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender ( main Ui Model : ĠMain ViewModel . Main Ui Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( main Ui Model . conference Group Resource ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠArray Object Adapter ( List Row Presenter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( adapter Ġas ? ĠArray Object Adapter )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+= ĠSection Row ( Header Item ( Main Fragment Factory . KEY _ HOME _ SECTION , ĠgetString ( R . string . main _ home _ header ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+= ĠPage Row ( Header Item ( Main Fragment Factory . KEY _ HOME _ PAGE , ĠgetString ( R . string . main _ home _ header ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( main Ui Model . offers Resource Ġis ĠResource . Success Ġ&& Ġmain Ui Model . offers Resource . data . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+= ĠSection Row ( Header Item ( KEY _ STREAM ING _ SECTION , ĠgetString ( R . string . main _ streams _ header ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+= Ġmain Ui Model . offers Resource . data . map Ġ{ ĠPage Row ( Header Item ( KEY _ STREAM ING _ PAGE , Ġit . conference )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+= ĠSection Row ( Header Item ( KEY _ LIBRARY _ SECTION , ĠgetString ( R . string . main _ library _ header ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+= Ġmain Ui Model . conference Group Resource . data . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPage Row ( Header Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCON FER ENCE _ GROUP _ TRANSL ATIONS [ it ]?. to Long () Ġ?: ĠKEY _ LIBRARY _ PAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( CON FER ENCE _ GROUP _ TRANSL ATIONS [ it ] Ġ?: ĠR . string . cg _ other ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+= ĠDiv ider Row () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+= ĠSection Row ( Header Item ( KEY _ AB OUT _ SECTION , ĠgetString ( R . string . main _ more _ header ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+= ĠPage Row ( Header Item ( KEY _ AB OUT _ PAGE , ĠgetString ( R . string . main _ about _ app ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Error Ġ-> ĠToast . makeText ( activity , Ġmain Ui Model . conference Group Resource . msg , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstart Entr ance Transition () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġenable Ġthe Ġmain Ġmenu Ġanimation Ġwhen Ġclicking ĠKEY CODE _ DP AD _ LEFT Ġor ĠKEY CODE _ DP AD _ UP Ġon Ġthe Ġabout Ġpage ĊĠĠĠ Ġfun Ġon KeyDown ( keyCode : ĠInt ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Scroll To Headers On KeyDown ( keyCode ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġstart Headers Transition ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshould Scroll To Headers On KeyDown ( keyCode : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġadapter Ġ!= Ġnull Ġ&& Ġselected Position Ġ== Ġadapter . size () Ġ- Ġ 1 Ġ// Ġis Ġlast Ġmain Ġmenu Ġitem Ġselected Ġ( About Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! is Showing Headers Ġ// Ġis Ġleft Ġside Ġbar Ġnot Ġshown ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( check Left Key ( keyCode ) Ġ|| Ġcheck Up Key ( keyCode )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġcase Ġ 1 ) ĠLEFT Ġis Ġpressed Ġand Ġno Ġadapter Ġinside ĠAbout Fragment Ġneeds Ġto Ġscroll Ġleft ĊĠĠĠ Ġprivate Ġfun Ġcheck Left Key ( keyCode : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠkeyCode Ġ== ĠKeyEvent . KEYCODE _ DP AD _ LEFT Ġ&& Ġ( main Fragment Ġas ĠAbout Fragment ). should Key Left Event Trigger Back Animation ĊĊĠĠĠ Ġ// Ġcase Ġ 2 ) ĠUP Ġis Ġpressed Ġand Ġthe Ġscroll Ġposition Ġof ĠAbout Fragment Ġis Ġthe Ġinitial Ġone ĊĠĠĠ Ġprivate Ġfun Ġcheck Up Key ( keyCode : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠkeyCode Ġ== ĠKeyEvent . KEYCODE _ DP AD _ UP Ġ&& Ġ( main Fragment Ġas ĠAbout Fragment ). should KeyUp Event Trigger Back Animation Ċ Ċ } Ċ