package Ġcom . per u apps . ch ristopher _ el ias . ui . fragments . home Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġcom . per u apps . ch ristopher _ el ias . BR Ċ import Ġcom . per u apps . ch ristopher _ el ias . R Ċ import Ġcom . per u apps . ch ristopher _ el ias . databinding . Fragment Home Binding Ċ import Ġcom . per u apps . ch ristopher _ el ias . entity . Place Ċ import Ġcom . per u apps . ch ristopher _ el ias . services . Location Service Ċ import Ġcom . per u apps . ch ristopher _ el ias . ui . base . Base Fragment Ċ import Ġcom . per u apps . ch ristopher _ el ias . ui . compound . Location Permissions Dialog Ċ import Ġcom . per u apps . ch ristopher _ el ias . ui . fragments . profile . Profile Ċ import Ġjava . util . ArrayList Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠCh ristopher ĠE li as Ġon Ġ 2 9 - may - 2 0 1 9 Ċ Ġ* Ġch ristopher . mike . 9 6 @ gmail . com ĊĊ Ġ* ĠL ima , ĠPer Ãº Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ Ċ class ĠHome Ġ: ĠBase Fragment < Fragment Home Binding , ĠHome ViewModel >(), ĠHome Navigator Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠHome ViewModel ĊĊĠĠĠ Ġ// region ĠBase ĊĠĠĠ Ġoverride Ġfun Ġget Layout Id () Ġ= ĠR . layout . fragment _ home ĊĊĠĠĠ Ġoverride Ġfun Ġget Binding Variable () Ġ= ĠBR . home ViewModel ĊĊĠĠĠ Ġoverride Ġfun Ġget ViewModel (): ĠHome ViewModel Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this , ĠviewModel Factory ). get ( Home ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn ĠviewModel ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel . set Navigator ( this ) ĊĠĠĠĠĠĠĠ Ġsubscribe To LiveData () ĊĠĠĠĠĠĠĠ Ġshow Permissions Dialog () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ Ġif ( grant Results . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results . any Ġ{ Ġit Ġ== ĠPackage Manager . PERMISSION _ GRAN TED Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. start Service ( Intent ( activity , ĠLocation Service :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠHandle Ġobserve Ġfragment Ġlifecycle Ġand Ġhandle Ġorientation Ġchanges ĊĠĠĠ Ġprivate Ġfun Ġsubscribe To LiveData () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . places . observe ( this , ĠObserver < ArrayList < Place >> { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . add Places ToList ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Permissions Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO (" Show Ġthis Ġonly Ġat Ġthe Ġfirst Ġtime ") ĊĠĠĠĠĠĠĠ ĠLocation Permissions Dialog ( context !! ){ Ġok Pressed , Ġdialog View Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ok Pressed ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Location Permission () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog View . dismiss () ĊĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠWe Ġneed Ġthe Ġuser Ġgranted Ġthe Ġpermissions Ġand Ġsend Ġhis / her Ġlocation Ġin Ġthe Ġbackground . ĊĠĠĠ Ġprivate Ġfun Ġrequest Location Permission () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( check Location Permissions Granted ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. start Service ( Intent ( activity , ĠLocation Service :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// region ĠNavigator ĊĠĠĠ Ġoverride Ġfun Ġshow Profile View () Ġ{ ĊĠĠĠĠĠĠĠ Ġreplace Fragment ( Profile (), ĠR . id . container Frame Layout , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Message ( message : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Toast ( message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Message From Resource ( string Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Toast ( string Id ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion Ċ }