package Ġcom . mu zz ley . app . profiles Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . view pager . widget . Pager Adapter Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . mu zz ley . App Ċ import Ġcom . mu zz ley . R Ċ import Ġcom . mu zz ley . model . profiles . Bundle Ċ import Ġcom . mu zz ley . util . ui . inflate Ċ import Ġcom . mu zz ley . util . ui . load Url Ċ import Ġkotlinx . android . synt hetic . main . tutorial _ activity .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠTutorial Activity Ġ: Ġ ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġbundle Flow : ĠBundle Flow ĊĊĠĠĠ Ġvar Ġbundle : ĠBundle ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġsteps : ĠInt = Ġ 0 ĊĊĠĠĠ Ġoverride ĊĠĠĠ Ġfun ĠonCreate ( savedInstanceState : Ġandroid . os . Bundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠApp . app Component . inject ( this ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . tutorial _ activity ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Home Button Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊ Ċ // ĠĠĠĠĠĠĠ Ġbundle Ġ= Ġintent . get Serializable Extra (" bundle ") Ġas ĠBundle ĊĠĠĠĠĠĠĠ Ġbundle Ġ= Ġbundle Flow . bundle ĊĠĠĠĠĠĠĠ Ġsteps Ġ= Ġbundle ?. tutorial ?. steps ?. size Ġ?: Ġ 0 ĊĊĊĠĠĠĠĠĠĠ Ġview Pager . adapter Ġ= Ġobject : ĠP ager Adapter () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget Count (): ĠInt Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsteps !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġis View From Object ( view : ĠView , Ġobj : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġview Ġ== Ġobj ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġinstantiate Item ( container : ĠViewGroup , Ġposition : ĠInt ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġcontainer . inflate ( R . layout . tutorial _ item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle ?. tutorial ?. steps ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . findViewById < ImageView >( R . id . image ). load Url ( it [ position ]. url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . findViewById < TextView >( R . id . description ). text Ġ= Ġit [ position ]. description ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . addView ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġdestroy Item ( container : ĠViewGroup , Ġposition : ĠInt , Ġobj : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . remove View ( obj Ġas ĠView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget Page Title ( position : ĠInt ): ĠCharSequence Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . tutorial _ step , position + 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠgetString ( R . string . mobile _ step )+" Ġ"+ ( position + 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview Pager . add On Page ChangeListener ( Ġobject : ĠView Pager . On Page ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Buttons And Title () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġindicator . set ViewPager ( view Pager ) ĊĊĊĠĠĠĠĠĠĠ Ġupdate Buttons And Title () ĊĠĠĠĠĠĠĠ ĠarrayOf ( prev , Ġnext , Ġskip ). forEach Ġ{ Ġit . setOnClickListener ( this :: button Click ) Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġpresenter .< Tutorial Presenter . Tutorial View > attach View ( this ) ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġ@ OnClick ([ R . id . prev , ĠR . id . next , ĠR . id . skip ]) ĊĠĠĠ Ġfun Ġbutton Click ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . prev Ġ-> Ġview Pager . currentItem Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . next Ġ-> Ġview Pager . currentItem Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . skip Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle Flow . curr Bundle State Ġ= ĠBundle Flow . Bundle State . tutorial ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBundle Navigator . navigate To ( this , bundle Flow . next Bundle State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Buttons And Title () Ġ{ ĊĠĠĠĠĠĠĠ Ġstep Title . text Ġ= Ġview Pager . adapter ?. getPage Title ( view Pager . currentItem ) ĊĠĠĠĠĠĠĠ Ġval Ġlast Ġ= Ġview Pager . currentItem Ġ== Ġsteps Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġprev . isEnabled Ġ= Ġview Pager . currentItem Ġ> Ġ 0 ĊĠĠĠĠĠĠĠ Ġnext . isEnabled Ġ= Ġ! last ĊĠĠĠĠĠĠĠ Ġskip . setText ( if Ġ( last ) ĠR . string . mobile _ finish Ġelse ĠR . string . mobile _ skip _ tutorial Ġ) ĊĠĠĠĠĠĠĠ Ġskip . setBackground Resource ( if Ġ( last ) ĠR . drawable . selector _ button _ footer Ġelse ĠR . drawable . selector _ button _ rounded _ transparent ) ĊĠĠĠĠĠĠĠ Ġskip . setTextColor ( Context Compat . getColor ( this , if Ġ( last ) ĠR . color . white Ġelse ĠR . color . blue )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride ĊĠĠĠ Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! bundle ?. tutorial ?. url . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . tutorial , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . info ). setEnabled ( bundle ?. tutorial ?. url Ġas Ġboolean ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride ĊĠĠĠ Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġon Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . info Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( Intent . ACTION _ VIEW , ĠUri . parse ( bundle ?. tutorial ?. url ))) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle Flow . info ( this ); ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ Ċ }