package Ġcom . inverse . un official . prox ert v . ui . details Ċ Ċ import Ġandroid . app . Fragment Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 1 7 . lean back . widget . Item Bridge Adapter Ċ import Ġandroid . support . v 1 7 . lean back . widget . Vertical GridView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . View Tree Observer Ċ import Ġcom . inverse . un official . prox ert v . R Ċ import Ġcom . inverse . un official . prox ert v . base . App Ċ import Ġcom . inverse . un official . prox ert v . base . Crash Reporting Ċ import Ġcom . inverse . un official . prox ert v . model . Series Ċ import Ġcom . inverse . un official . prox ert v . model . Series List Ċ import Ġorg . jetbrains . ank o . with Arguments Ċ import Ġrx . Subscription Ċ import Ġrx . android . schedul ers . Android Schedulers Ċ import Ġrx . schedul ers . Schedulers Ċ Ċ /** Ċ Ġ* ĠFragment Ġto Ġshow Ġa Ġright Ġside Ġoption Ġlist . ĠThe Ġlet Ġside Ġis Ġtransparent Ġto Ġkeep Ġthe Ġfocus Ġfrom Ġgetting Ġlost . Ċ Ġ*/ Ċ class ĠSide Menu Fragment Ġ: ĠFragment (), ĠSeries List Selection Listener Ġ{ ĊĠĠĠ Ġprivate Ġval Ġrepository Ġ= ĠApp . component . get Pro xer Repository () ĊĊĠĠĠ Ġprivate Ġval Ġoptions Adapter Ġ= ĠSeries List Option Adapter ( this ) ĊĠĠĠ Ġprivate Ġvar Ġlist State Subscription : ĠSubscription ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġupdate Subscription : ĠSubscription ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġseries : ĠSeries ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgrid View : ĠVertical GridView ĊĊĠĠĠ Ġprivate Ġval Ġfocus Listener Ġ= ĠView Tree Observer . On Global Focus ChangeListener Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ(! grid View . has Focus ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager . pop Back Stack () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġseries Ġ= Ġarguments . get Parcelable ( ARG _ SER IES ) ĊĊĠĠĠĠĠĠĠ Ġlist State Subscription Ġ= Ġrepository . observer Series List State ( series . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġstate : ĠSeries List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Adapter . currentState Ġ= Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Adapter . notify Item Range Changed ( 0 , Ġoptions Adapter . size ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup , ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ side _ menu , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġgrid View Ġ= Ġview . findViewById ( R . id . side _ menu _ items _ grid ) Ġas ĠVertical GridView ĊĊĠĠĠĠĠĠĠ Ġval Ġbridge Adapter Ġ= ĠItem Bridge Adapter ( options Adapter ) ĊĠĠĠĠĠĠĠ Ġgrid View . adapter Ġ= Ġbridge Adapter ĊĊĠĠĠĠĠĠĠ Ġview . view Tree Observer . add On Global Focus ChangeListener ( focus Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . view Tree Observer . remove On Global Focus ChangeListener ( focus Listener ) ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġlist State Subscription ?. unsubscribe () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġgrid View . request Focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlist Selected ( series List : ĠSeries List ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( series List Ġ!= Ġoptions Adapter . currentState ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Subscription ?. unsubscribe () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Adapter . loading List Ġ= Ġseries List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Adapter . notify Item Range Changed ( 0 , Ġoptions Adapter . size ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Subscription Ġ= Ġrepository . move Series ToList ( series , Ġseries List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Adapter . loading List Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Adapter . notify Item Range Changed ( 0 , Ġoptions Adapter . size ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCrash Reporting . log Exception ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Adapter . loading List Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Adapter . notify Item Range Changed ( 0 , Ġoptions Adapter . size ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( series : ĠSeries ): ĠSide Menu Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSide Menu Fragment (). with Arguments ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠARG _ SER IES Ġto Ġseries ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ SER IES Ġ= Ġ" ARG _ SER IES " ĊĠĠĠ Ġ} Ċ }