package Ġcom . example . geo q . ui . activities Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . location . Location Ċ import Ġandroid . location . Location Listener Ċ import Ġandroid . location . Location Manager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . are l lo mobile . mvp . M vp Activity Ċ import Ġcom . are l lo mobile . mvp . presenter . Inject Presenter Ċ import Ġcom . example . geo q . Api . Y an dex ApiService Ċ import Ġcom . example . geo q . R Ċ import Ġcom . example . geo q . models . Outer Models . Y an dex Ċ import Ġcom . example . geo q . mv ps . Present ers . Create Quest Presenter Ċ import Ġcom . example . geo q . mv ps . views . Create Quest View Ċ import Ġdagger . android . Android Injection Ċ import Ġio . reactivex . Single Observer Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġkotlinx . android . synt hetic . main . activity _ create _ quest .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠCreate Quest Activity Ġ: ĠM vp Activity (), ĠCreate Quest View Ġ{ ĊĊĠĠĠ Ġ@ Inject Presenter ĊĠĠĠ Ġlateinit Ġvar Ġcreate Quest Presenter : ĠCreate Quest Presenter ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġapi : ĠY an dex ApiService ĊĊĠĠĠ Ġprivate Ġvar Ġlocation Manager : ĠLocation Manager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġm Composite Disposable Ġ= ĠComposite Disposable () ĊĠĠĠ Ġ// late init Ġvar Ġapi : ĠY an dex ApiService ĊĠĠĠ Ġprivate Ġvar Ġlong t : ĠDouble ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlat : ĠDouble ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġusername : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval ĠMY _ PERMISSION S _ REQUEST _ CO AR SE _ LOCATION Ġ= Ġ 3 1 5 4 ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ create _ quest ) ĊĠĠĠĠĠĠĠ Ġlocation Manager Ġ= Ġget System Service ( Context . LOCATION _ SERVICE ) Ġas ĠLocation Manager ? ĊĠĠĠĠĠĠĠ ĠAndroid Injection . inject ( this ) ĊĠĠĠĠĠĠĠ Ġusername Ġ= Ġintent . extras . get (" username "). toString () ĊĠĠĠĠĠĠĠ Ġbtn _ get Geo Code . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Quest Presenter . on Get Location Button Clicked () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbtn _ create Q _ next . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Quest Presenter . onNext Button Clicked () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperform Add Steps () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ed _ quest _ name . text . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġor Ġed _ quest _ description . text . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġor Ġed _ start _ point . text . isEmpty () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġ" ÐŁ Ð¾Ð¶ Ð°Ð» Ñĥ Ð¹ ÑģÑĤ Ð° ĠÐ·Ð°Ð¿ Ð¾Ð»Ð½ Ð¸ÑĤÐµ ĠÐ²ÑģÐµ ĠÐ¿Ð¾Ð» Ñı ", ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠAdd Step To Quest Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" Quest Name ", Ġed _ quest _ name . text ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" Quest Description ", Ġed _ quest _ description . text ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" Quest Start Point Address ", Ġed _ start _ point . text ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" long t itude ", Ġlong t ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" username ", Ġusername ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" latitude ", Ġlat ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . anim . slide _ in _ right , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . anim . slide _ out _ left ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") ĊĠĠĠ Ġfun Ġhandle Request () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ed _ start _ point . text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Manager ?. request Location Updates ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocation Manager . NETWORK _ PROVIDER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Listener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Location ("$ long t ,$ lat ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Location ( ed _ start _ point . text . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperform Getting Location () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Manifest . permission . ACCESS _ CO AR SE _ LOCATION ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PERMISSION S _ REQUEST _ CO AR SE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġhandle Request () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ Ġpermissions : ĠArray < String >, Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMY _ PERMISSION S _ REQUEST _ CO AR SE _ LOCATION Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( grant Results . isNotEmpty () Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ÐŁ Ð¾Ð¶ Ð°Ð» Ñĥ Ð¹ ÑģÑĤ Ð° ĠÑĢÐ°Ð· ÑĢ ÐµÑĪ Ð¸ÑĤÐµ ĠÐ¸ÑģÐ¿Ð¾Ð»ÑĮÐ·Ð¾Ð² Ð°Ð½Ð¸Ðµ ĠÐ³ Ðµ Ð¾Ð» Ð¾Ðº Ð°ÑĨÐ¸Ð¸ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Location ( geo Param : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapi . get Geo Code Information ( geo Param ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠSingle Observer < Y an dex > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( t : ĠY an dex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . response . geo Object Collection . feature Member . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. geo Object . metaData Property . geo coder MetaData . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġed _ start _ point . setText ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloc Ġ= Ġt . response . geo Object Collection . feature Member . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. geo Object . point . pos . split (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong t Ġ= Ġloc [ 0 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlat Ġ= Ġloc [ 1 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" A br ac ad ab ra ", Ġ" something Ġwent Ġwrong ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Composite Disposable . add ( d ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlocation Listener : ĠLocation Listener Ġ= Ġobject Ġ: ĠLocation Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Location Changed ( location : ĠLocation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlat Ġ= Ġlocation . latitude ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlong t Ġ= Ġlocation . longitude ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Status Changed ( provider : ĠString , Ġstatus : ĠInt , Ġextras : ĠBundle ) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Provider Enabled ( provider : ĠString ) Ġ{} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Provider Disabled ( provider : ĠString ) Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Composite Disposable . is Disposed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Composite Disposable . dispose () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfinish () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . finish () ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . anim . slide _ in _ left , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . anim . slide _ out _ right ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ