package Ġcu . f ia i . uci . som os uci . ui . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġcu . f ia i . uci . som os uci . R Ċ import Ġcu . f ia i . uci . som os uci . adapters . Sections Pager Adapter Ċ import Ġcu . f ia i . uci . som os uci . view models . Main ViewModel Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ course _ vp .* Ċ Ċ class ĠCourse VP Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmain ViewModel : ĠMain ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnav Controller : ĠNav Controller ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġmain ViewModel Ġ= ĠViewModel Provider ( require Activity ()). get ( Main ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġmain ViewModel . actual Fragment . value Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ course _ vp , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġconfig View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfig View () Ġ{ ĊĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġfind Nav Controller () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( main ViewModel . selected Course . question 1 Ġ== Ġnull ) Ġnav Controller . pop Back Stack ( R . id . main Fragment , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġelse Ġset Course Info () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Course Info (){ ĊĠĠĠĠĠĠĠ Ġ_ view Pager . adapter Ġ= ĠSe ctions Pager Adapter ( child FragmentManager ) ĊĠĠĠĠĠĠĠ Ġ_ vp Indicator . setup With ViewPager (_ view Pager ) ĊĠĠĠĠĠĠĠ Ġ_ vp Indicator . add On Page ChangeListener ( view Listener ) ĊĊĠĠĠĠĠĠĠ Ġmain ViewModel . selected Course . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( course ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . backgroundColor Ġ= ĠR . color . color Primary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . foreground Color Ġ= ĠR . color . color Accent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . rol Ġ= ĠgetString ( R . string . c _ ici ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . backgroundColor Ġ= ĠR . color . ib i Dark ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . foreground Color Ġ= ĠR . color . ib i Light ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . rol Ġ= ĠgetString ( R . string . c _ ib i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . backgroundColor Ġ= ĠR . color . cs Dark ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . foreground Color Ġ= ĠR . color . cs Light ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . rol Ġ= ĠgetString ( R . string . c _ cs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . backgroundColor Ġ= ĠR . color . red Dark ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . foreground Color Ġ= ĠR . color . red Light ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain ViewModel . rol Ġ= ĠgetString ( R . string . c _ red ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrequire Activity (). window . status Bar Color Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( require Activity (), Ġmain ViewModel . backgroundColor ) ĊĊĠĠĠĠĠĠĠ Ġrequire Activity (). toolbar . set BackgroundColor ( Context Compat . getColor ( require Activity (), Ġmain ViewModel . foreground Color )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġview Listener : ĠView Pager . On Page ChangeListener Ġ= Ġobject Ġ: ĠView Pager . On Page ChangeListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( i : ĠInt , Ġv : ĠFloat , Ġi 1 : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( i : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( i : ĠInt ) Ġ{} ĊĠĠĠ Ġ} Ċ }