package Ġcom . at c . planner . presentation . map Ċ Ċ import Ġandroid . location . Location Ċ import Ġcom . at c . planner . R Ċ import Ġcom . at c . planner . commons . Bitmap Provider Ċ import Ġcom . at c . planner . commons . Location Provider Ċ import Ġcom . at c . planner . commons . String Provider Ċ import Ġcom . at c . planner . data . model . local . Place Ċ import Ġcom . at c . planner . di . scopes . Fragment Scope Ċ import Ġcom . at c . planner . extension . as LatLng Ċ import Ġcom . at c . planner . extension . to Lat Long Ċ import Ġcom . at c . planner . presentation . base . Base M vp Presenter Ċ import Ġcom . at c . planner . presentation . place _ details . Place Details Bundle Ċ import Ġcom . github . aj alt . tim ber kt . Tim ber . e Ċ import Ġcom . google . android . gms . location . Location Listener Ċ import Ġcom . google . android . gms . maps . model . Bitmap Descriptor Factory Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġcom . google . android . gms . maps . model . Marker Options Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjava . io . Serializable Ċ import Ġjavax . inject . Inject ĊĊ Ċ @ Fragment Scope Ċ class ĠMap Presenter Ġ@ Inject Ġconstructor ( private Ġval Ġstring Provider : ĠString Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġlocation Provider : ĠLocation Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġbitmap Provider : ĠBitmap Provider ) ĊĠĠĠ Ġ: ĠBase M vp Presenter < MapView >(), ĠLocation Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Location : ĠLat Lng ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġis Map Ready Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( data : ĠSerializable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. ask For Location Permission () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdetach View ( retain Instance : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation Provider . remove Listener ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . detach View ( retain Instance ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Permissions Granted () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Permissions Ref used () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. show AlertDialog ( string Provider . getString ( R . string . location _ permission _ ref used _ dialog _ title ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Provider . getString ( R . string . location _ permission _ ref used _ dialog _ content )) ĊĠĠĠĠĠĠĠ Ġview ?. ask For Location Permission () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Map Ready () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Map Ready Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġcheck Current Location () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Current Location () Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation Provider . getLast Location ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Location Ġ= Ġit ?. to Lat Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Current Location () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Provider . addListener ( this ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ:: e ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Location Changed ( p 0 : ĠLocation ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Location Ġ= Ġp 0 ?. to Lat Long () ĊĠĠĠĠĠĠĠ Ġshow Current Location () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Current Location () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Location ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Current Location ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. zoom To Fit All Markers () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon SetData ( items : ĠList < Place >) Ġ{ ĊĠĠĠĠĠĠĠ Ġhandle Places ( items ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Add Data ( items : ĠList < Place >) Ġ{ ĊĠĠĠĠĠĠĠ Ġhandle Places ( items ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Places ( items : ĠList < Place >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Map Ready ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . create < Pair < Marker Options , ĠPlace >> Ġ{ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcounter Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġitems . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmarker Options Ġ= ĠMarker Options () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplace Location Ġ= Ġitems [ index ]. location ?. as LatLng () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( place Location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker Options . position ( place Location ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Provider . get Rounded Bitmap ( items [ index ]. thumbnail Url , ĠR . drawable . error _ marker , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker Options . icon ( Bitmap Descriptor Factory . from Bitmap ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onNext ( Pair ( marker Options , Ġitems [ index ])) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( counter Ġ== Ġitems . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker Options . icon ( Bitmap Descriptor Factory . from Bitmap ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onNext ( Pair ( marker Options , Ġitems [ index ])) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( counter Ġ== Ġitems . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġ( marker Options , Ġplace ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. add Marker ( marker Options , Ġplace ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ:: e , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Current Location () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. zoom To Fit All Markers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Item Click ( place : ĠPlace ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. goTo Place Details ( Place Details Bundle ( place )) ĊĠĠĠ Ġ} Ċ }