package Ġme . cyber . n uk le os . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġandroid . support . v 4 . app . Fragment Pager Adapter Ċ import Ġandroid . support . v 4 . view . ViewPager Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . MenuItem Ċ import Ġdagger . android . Android Injection Ċ import Ġdagger . android . Android Injector Ċ import Ġdagger . android . Dispatch ing Android Injector Ċ import Ġdagger . android . support . Has Support Fragment Injector Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġme . cyber . n uk le os . ui . charts . Charts Fragment Ċ import Ġme . cyber . n uk le os . ui . control . Sensor Control Fragment Ċ import Ġme . cyber . n uk le os . ui . find . Find Sensor Fragment Ċ import Ġme . cyber . n uk le os . ui . predict . Predict Fragment Ċ import Ġme . cyber . n uk le us . R Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠHas Support Fragment Injector Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġfragment Dispatch ing Android Injector : ĠDispatch ing Android Injector < Fragment > ĊĊĠĠĠ Ġprivate Ġvar Ġnavigation Blocked Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġsupport Fragment Injector (): ĠAndroid Injector < Fragment > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfragment Dispatch ing Android Injector ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠAndroid Injection . inject ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( findViewById ( R . id . new _ toolbar )) ĊĊĠĠĠĠĠĠĠ Ġval Ġfragment List Ġ= ĠlistOf < Fragment >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFind Sensor Fragment . newInstance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSensor Control Fragment . newInstance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChart s Fragment . newInstance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPredict Fragment . newInstance () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġview _ pager . adapter Ġ= ĠMy Adapter ( support FragmentManager , Ġfragment List ) ĊĠĠĠĠĠĠĠ Ġview _ pager . off screen Page Limit Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġview _ pager . add On Page ChangeListener ( object Ġ: ĠView Pager . On Page ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġprev MenuItem : ĠMenuItem ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prev MenuItem Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev MenuItem ?. isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom _ navigation . menu . getItem ( 0 ). isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom _ navigation . menu . getItem ( position ). isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev MenuItem Ġ= Ġbottom _ navigation . menu . getItem ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbottom _ navigation . setOn Navigation ItemSelected Listener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! navigation Blocked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item _ scan Ġ-> Ġview _ pager . currentItem Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item _ control Ġ-> Ġview _ pager . currentItem Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item _ graph Ġ-> Ġview _ pager . currentItem Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item _ predict Ġ-> Ġview _ pager . currentItem Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To Page ( page Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview _ pager . currentItem Ġ= Ġpage Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġblock Navig a ion ( blocked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigation Blocked Ġ= Ġblocked ĊĠĠĠĠĠĠĠ Ġview _ pager . paging Enabled Ġ= Ġ! blocked ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠMy Adapter ( fm : ĠFragment Manager , Ġprivate Ġval Ġfragment List : ĠList < Fragment >) Ġ: ĠFragment Pager Adapter ( fm ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment List . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment List [ position ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }