package Ġcom . fr an ck rj . j va . topic Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġcom . fr an ck rj . j va . R Ċ import Ġcom . fr an ck rj . j va . base . Base Activity Ċ import Ġcom . fr an ck rj . j va . pag enav . Navigation Utils Ċ import Ġcom . fr an ck rj . j va . pag enav . Page Navigation Helper Ċ import Ġcom . google . android . material . app bar . AppBar Layout Ċ Ċ class ĠView Topic Activity Ġ: ĠBase Activity () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ TOPIC _ URL : ĠString Ġ= Ġ" EXTRA _ TOPIC _ URL " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPAGE _ TO _ GO : ĠString Ġ= Ġ" PAGE _ TO _ GO " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSAVE _ TOPIC _ URL : ĠString Ġ= Ġ" SAVE _ TOPIC _ URL " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSAVE _ LAST _ PAGE _ NUMBER : ĠString Ġ= Ġ" SAVE _ LAST _ PAGE _ NUMBER " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtopic ViewModel : ĠTopic ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ view topic ) ĊĊĠĠĠĠĠĠĠ Ġval Ġarrow Back Button : ĠImageView Ġ= ĠfindViewById ( R . id . arrow _ back _ button _ view topic ) ĊĠĠĠĠĠĠĠ Ġval Ġtopic ViewPager : ĠView Pager Ġ= ĠfindViewById ( R . id . topic _ pager _ view topic ) ĊĠĠĠĠĠĠĠ Ġval Ġtopic Navigation Ġ= ĠPage Navigation Helper ( topic ViewPager , Ġ{ ĠView Topic Page Fragment () Ġ}, Ġsupport FragmentManager ) ĊĠĠĠĠĠĠĠ Ġtopic ViewModel Ġ= ĠViewModel Providers . of ( this ). get ( Topic ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġinit Sys bars ( findViewById ( R . id . status bar _ background _ view topic )) ĊĊĠĠĠĠĠĠĠ Ġinit Col lapsible Toolbar ( findViewById ( R . id . toolbar _ layout _ view topic ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById ( R . id . toolbar _ card _ view topic ), ĠfindViewById ( R . id . title _ text _ toolbar _ view topic ), ĠfindViewById ( R . id . subtitle _ text _ toolbar _ view topic )) ĊĠĠĠĠĠĠĠ Ġtopic ViewModel . init Col lapsible Toolbar Infos ( findViewById ( R . id . app bar _ layout _ view topic ), Ġtopic ViewPager ) ĊĊĠĠĠĠĠĠĠ Ġarrow Back Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠNavigation Utils . init ContentView Pager Navigation ( this , Ġtopic ViewPager , Ġtopic Navigation , Ġtopic ViewModel ) ĊĊĠĠĠĠĠĠĠ Ġtopic ViewModel . get Forum And Topic Name (). observe ( this , ĠObserver Ġ{ Ġforum And Topic Name Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( forum And Topic Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Toolbar Title ( forum And Topic Name . topic Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Toolbar Sub Title ( getString ( R . string . on Forum , Ġforum And Topic Name . forum Name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpossible New Topic Url : ĠString Ġ= Ġintent ?. getString Extra ( EXTRA _ TOPIC _ URL ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpossible New Page To Go : ĠInt Ġ= Ġintent ?. getInt Extra ( PAGE _ TO _ GO , Ġ- 1 ) Ġ?: Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( possible New Topic Url . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( possible New Page To Go Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtopic ViewModel . set Url For Topic With Page ( possible New Topic Url , Ġpossible New Page To Go ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtopic ViewModel . set Url For Topic ( possible New Topic Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtopic ViewModel . restore Old State ( savedInstanceState . getString ( SAVE _ TOPIC _ URL , Ġ""), ĠsavedInstanceState . getInt ( SAVE _ LAST _ PAGE _ NUMBER , Ġ- 1 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġout State . putString ( SAVE _ TOPIC _ URL , Ġtopic ViewModel . topic Url ) ĊĠĠĠĠĠĠĠ Ġout State . put Int ( SAVE _ LAST _ PAGE _ NUMBER , Ġtopic ViewModel . getLast Page Number (). value Ġ?: Ġ- 1 ) ĊĠĠĠ Ġ} Ċ } Ċ