package Ġcom . car to . advanced . kotlin . sections . geo coding Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġcom . car to . advanced . kotlin . sections . base . activities . Package Download Base Activity Ċ import Ġcom . car to . advanced . kotlin . sections . base . views . Base Geo coding View Ċ import Ġcom . car to . advanced . kotlin . utils . Utils Ċ import Ġcom . car to . geo coding .* Ċ import Ġcom . car to . package manager . Car to PackageManager Ċ import Ġcom . car to . ui . Map Click Info Ċ import Ġcom . car to . ui . Map EventListener Ċ import Ġorg . jetbrains . ank o . do Async Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġa are undo Ġon Ġ 1 1 / 0 7 / 2 0 1 7 . Ċ Ġ*/ Ċ class ĠGeo coding Activity Ġ: ĠPackage Download Base Activity () Ġ{ ĊĊĠĠĠ Ġvar Ġservice : ĠGeo coding Service ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġcontent View Ġ= ĠGeo coding View ( this ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( content View ) ĊĊĠĠĠĠĠĠĠ Ġwindow . set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ STATE _ HIDDEN ) ĊĠĠĠĠĠĠĠ Ġwindow . set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ ADJ UST _ NOTH ING ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= ĠUtils . create Directory ( this , Ġ" geo coding packages ") ĊĠĠĠĠĠĠĠ Ġcontent View ?. manager Ġ= ĠCar to PackageManager ( Base Geo coding View . SOURCE , Ġfolder ) ĊĊĠĠĠĠĠĠĠ Ġset Online Mode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġchange Listener Ġ= Ġobject : ĠText Watcher Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtext Ġ= Ġs !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( text . toString () Ġ== Ġ"")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. show Table () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ( content View Ġas ? ĠGeo coding View ) !!. input Field . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauto Complete Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgeo code ( text , Ġauto Complete ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpackage Download Complete () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. show Search Bar () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĊĠĠĠĠĠĠĠ Ġcontent View ?. map ?. map EventListener Ġ= Ġobject Ġ: ĠMap EventListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Map Clicked ( map Click Info : ĠMap Click Info ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent View ?. close Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. hide Table () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. input Field . add TextChanged Listener ( change Listener ) ĊĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. input Field . setOn Editor ActionListener () Ġ{ Ġ_, Ġaction Id , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( action Id Ġ== ĠEditor Info . IME _ ACTION _ DONE ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Editing Ended ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. result Table . setOn ItemClickListener Ġ{ Ġ_, Ġ_, Ġposition , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Result ( results !!. get ( position ) !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Editing Ended ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĊĠĠĠĠĠĠĠ Ġcontent View ?. map ?. map EventListener Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. input Field . remove TextChanged Listener ( change Listener ) ĊĊĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. result Table . on ItemClickListener Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. input Field . on Focus ChangeListener Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Editing Ended ( geo code : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent View ?. close Keyboard () ĊĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. hide Table () ĊĠĠĠĠĠĠĠ Ġif Ġ( geo code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ( content View Ġas ? ĠGeo coding View ) !!. input Field . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauto Complete Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgeo code ( text , Ġauto Complete ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. clear Input () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġsearch Queue Size : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġaddresses Ġ= Ġmutable ListOf < Geo coding Result >() ĊĠĠĠ Ġvar Ġresults : ĠGeo coding Result Vector ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġgeo code ( text : ĠString , Ġautocomplete : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsearch Queue Size Ġ+= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( search Queue Size Ġ- Ġ 1 Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCancel Ġthe Ġrequest Ġif Ġwe Ġhave Ġadditional Ġpending Ġrequests Ġqueued ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Geo coding : Ġrequest Ġpending , Ġskipping Ġcurrent ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ do Async ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Queue Size Ġ-= Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠGeo coding Request ( content View ?. projection , Ġtext ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( service Ġis ĠPackage Manager Geo coding Service ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( service Ġas ĠPackage Manager Geo coding Service ). is Autocomplete Ġ= Ġautocomplete ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( service Ġas ĠMap Box Online Geo coding Service ). is Autocomplete Ġ= Ġautocomplete ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults Ġ= Ġservice !!. calculate Addresses ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġresults !!. size () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIn Ġautocomplete Ġmode Ġjust Ġfill Ġthe Ġautocomplete Ġaddress Ġlist Ġand Ġreload Ġtable view ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIn Ġfull Ġgeo code Ġmode , Ġshow Ġthe Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( autocomplete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddresses . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. count Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġresults ?. get ( i . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddresses . add ( result !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. update ( addresses ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Result ( results ?. get ( 0 ) !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Result ( result : ĠGeo coding Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġresult . get Pretty Address () ĊĠĠĠĠĠĠĠ Ġval Ġgo To Position Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. show Result ( result , Ġtitle , Ġdescription , Ġgo To Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Online Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġservice Ġ= ĠMap Box Online Geo coding Service ( Base Geo coding View . MAP BOX _ TOKEN ) ĊĠĠĠĠĠĠĠ Ġupdate UI Based On Mode And Available Packages ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Offline Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġservice Ġ= ĠPackage Manager Geo coding Service ( content View ?. manager ) ĊĠĠĠĠĠĠĠ Ġupdate UI Based On Mode And Available Packages ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate UI Based On Mode And Available Packages ( is Online : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Online ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. show Search Bar () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( content View ?. has Local Packages () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent View ?. show Local Packages () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. show Search Bar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( content View Ġas ? ĠGeo coding View ) !!. show Banner Instead Of Search Bar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ