package Ġz mu z ik . ta ib ike . screens . main Ċ Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . fragment . app . Fragment State Pager Adapter Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ import Ġz mu z ik . ta ib ike . R Ċ import Ġz mu z ik . ta ib ike . common . is Location Permission Granted Ċ import Ġz mu z ik . ta ib ike . location . Location Ld Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠBottom Navigation View . On Navigation ItemSelected Listener Ġ{ ĊĊĠĠĠ Ġval ĠREQUEST _ PERMISSION _ LOCATION Ġ= Ġ 1 0 0 ĊĊĠĠĠ Ġval ĠviewModel : ĠMain Screen ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġvar Ġlocation Ld : ĠLocation Ld ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġview Pager . adapter Ġ= ĠPages Adapter ( support FragmentManager ) ĊĠĠĠĠĠĠĠ Ġview Pager . add On Page ChangeListener ( object Ġ: ĠView Pager . On Page ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation . selected ItemId Ġ= Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠR . id . navigation _ map ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . id . navigation _ list ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġnavigation . setOn Navigation ItemSelected Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġlocation Ld Ġ= ĠLocation Ld ( this ). also Ġ{ Ġit . observe ( this , ĠObserver Ġ{ Ġit ?. let Ġ{ ĠviewModel . location Ld . post Value ( it ) Ġ} Ġ}) Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . show Map Event . observe ( this , ĠObserver Ġ{ Ġit ?. let Ġ{ Ġview Pager . currentItem Ġ= Ġ 0 Ġ} Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Location Permission Granted ()) Ġrequest Location Permission () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠviewModel . refresh St ations () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < String >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ PERMISSION _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġgrant Results . isNotEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ld ?. start Location Updates () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Navigation ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ map Ġ-> Ġview Pager . currentItem Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ list Ġ-> Ġview Pager . currentItem Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Location Permission () Ġ= ĠActivity Compat . request Permissions ( this , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( android . Manifest . permission . ACCESS _ F INE _ LOCATION ), ĠREQUEST _ PERMISSION _ LOCATION ) ĊĊĠĠĠ Ġinner Ġclass ĠPages Adapter ( fm : ĠFragment Manager ) Ġ: ĠFragment State Pager Adapter ( fm ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ) Ġ= Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠSt ations Map Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSt ations List Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }