package Ġcz . dm n . cps ka . ui . fl ights Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġcom . brand ongo get ap . sticky headers . Sticky LayoutManager Ċ import Ġcz . dm n . cps ka . R Ċ import Ġcz . dm n . cps ka . data . api . Flight Data Ċ import Ġcz . dm n . cps ka . databinding . Coord Fl ights Binding Ċ import Ġcz . dm n . cps ka . di . Per Activity Ċ import Ġcz . dm n . cps ka . di . By Activity Ċ import Ġcz . dm n . cps ka . mvp . Tabbed Coordinator Ċ import Ġcz . dm n . cps ka . ui . ItemClickListener Ċ import Ġdagger . Lazy Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġio . reactivex . subjects . Subject Ċ import Ġjavax . inject . Inject Ċ Ċ @ Per Activity Ċ class ĠF lights Coordinator Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġ@ By Activity Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġadapter Lazy : ĠLazy < Fl ights Adapter >, ĊĠĠĠ Ġ@ By Activity Ġprivate Ġval Ġmenu Inflater : ĠMenu Inflater Ċ ) Ġ: ĠTab bed Coordinator < Fl ights M vp . View , ĠF lights M vp . Presenter , ĠCoord Fl ights Binding >(), ĠF lights M vp . View , ĠItem ClickListener < Flight Data > Ġ{ ĊĊĠĠĠ Ġval Ġadapter Ġby Ġlazy Ġ{ Ġadapter Lazy . get () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġbinding . list Fl ights . layout Manager Ġ= ĠSt icky LayoutManager ( context , Ġadapter ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . elev ate Headers ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . list Fl ights . add On Scroll Listener ( paging Scroll Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow ( data : ĠList < Pair < Flight Data , ĠBoolean >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . replace ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġerror ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( binding . root , Ġmessage , ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwarning ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( binding . root , Ġmessage , ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġloading : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġadapter . loading ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . loading Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġrequest Next Page Ġ= ĠPublish Subject . create < Any >() ĊĊĠĠĠ Ġoverride Ġval Ġrequest Refresh Ġ= ĠPublish Subject . create < Any >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . fl ights _ options , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( menuItem : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( menuItem . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . refresh Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Refresh . onNext ( Any ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġrequest Open Flight : ĠSubject < Flight Data > Ġ= ĠPublish Subject . create () ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Clicked ( item : ĠFlight Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Open Flight . onNext ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpaging Scroll Listener Ġ= Ġobject Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView ?, Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dy Ġ< Ġ 0 ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Position Ġ= Ġ( re cyclerView !!. layout Manager Ġas ĠLinearLayoutManager ). find Last Visible Item Position () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠT riggers Ġan Ġevent Ġwhen Ġthe Ġlast Ġcard Ġor Ġthe Ġloader Ġindicator Ġis Ġvisible . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Position Ġ>= Ġadapter . item Count Ġ- Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Next Page . onNext ( Any ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }