package Ġui . fragments čĊč Ċ import Ġandroid . Manifest č Ċ import Ġandroid . annotation . Target Api č Ċ import Ġandroid . app . AlertDialog č Ċ import Ġandroid . content . Context č Ċ import Ġandroid . content . DialogInterface č Ċ import Ġandroid . content . Intent č Ċ import Ġandroid . content . pm . PackageManager č Ċ import Ġandroid . graphics . Color č Ċ import Ġandroid . graphics . Point č Ċ import Ġandroid . graphics . Port er D uff č Ċ import Ġandroid . graphics . Port er D uff Color Filter č Ċ import Ġandroid . graphics . drawable . Drawable č Ċ import Ġandroid . net . Uri č Ċ import Ġandroid . os . Build č Ċ import Ġandroid . provider . Settings č Ċ import Ġandroid . text . Editable č Ċ import Ġandroid . text . Text Watcher č Ċ import Ġandroid . util . Log č Ċ import Ġandroid . util . Typed Value č Ċ import Ġandroid . view . Gravity č Ċ import Ġandroid . view . View č Ċ import Ġandroid . widget .* č Ċ import Ġandroidx . annotation . Requires Api č Ċ import Ġandroidx . core . view . margin Bottom č Ċ import Ġandroidx . recyclerview . widget . RecyclerView č Ċ import Ġcom . y aya . map . R č Ċ import Ġsupport . action bar . ActionBar č Ċ import Ġsupport . action bar . Base Fragment č Ċ import Ġsupport . action bar . Menu Drawable č Ċ import Ġsupport . Layout Helper č Ċ import Ġsupport . Locale Controller č Ċ import Ġsupport . Notification Center č Ċ import Ġsupport . Theme č Ċ import Ġsupport . component . Android Utilities č Ċ import Ġsupport . component . Hint EditText č Ċ import Ġui . activities . Launch Activity č Ċ import Ġui . activities . Location Controller č Ċ import Ġui . activities . Station Finder č Ċ import Ġui . adapters . Drawer Layout Adapter č Ċ import Ġui . cells . s ata ion Cells . Single Station Cell č Ċ import Ġui . cells . s ata ion Cells . Station Cell č Ċ import Ġui . lines .* č Ċ import Ġui . views . Guide View č Ċ import Ġui . views . Zoom Layout č Ċ import Ġutils . Metro Util č Ċ import Ġjava . util .* čĊč Ċ /** čĊ Ġ* ĠCreated Ġby Ġy aya - mh Ġon Ġ 7 / 1 5 / 2 0 1 8 Ġ 0 9 : 0 2 ĠAM čĊ Ġ*/ č Ċ class ĠMap Fragment Ġ: ĠBase Fragment (), ĠNotification Center . Notification Center Delegate Ġ{ čĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġinfo Height : ĠFloat Ġ= Ġ 0 . 0 f č Ċ // ĠĠĠĠĠĠĠ Ġvar Ġdatabase Ġ= ĠSQLite Database ( File ( Constants . DB _ PATH Ġ+ ĠFile . separator Ġ+ ĠConstants . DB _ NAME ). absolute Path ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġinterface ĠMap Search Listener Ġ{ čĊĠĠĠĠĠĠĠ Ġfun Ġon Text Change ( edit Text : ĠEditText ) Ġ{ čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊčĊĠĠĠ Ġprivate Ġvar Ġis Road View ed : ĠBoolean Ġ= Ġfalse čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgo TextView : ĠHint EditText čĊĠĠĠ Ġprivate Ġvar Ġis Ro ating Started Ġ= Ġfalse čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdirection Button Container : ĠFrame Layout čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġside Menu : ĠRecyclerView čĊĠĠĠ Ġprivate Ġvar Ġcheck Permission Ġ= Ġtrue čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġguide View : ĠGuide View čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgo ImageView : ĠImageView čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġstation Finder : ĠStation Finder čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlat TextView : ĠTextView čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlong TextView : ĠTextView čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbottom View : ĠLinearLayout čĊĠĠĠ Ġprivate Ġvar Ġclicked Cell : ĠStation Cell ? Ġ= Ġnull čĊĠĠĠ Ġvar Ġsource Cell : ĠStation Cell ? Ġ= Ġnull čĊĠĠĠ Ġvar Ġdest Cell : ĠStation Cell ? Ġ= Ġnull čĊčĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . M ) čĊĠĠĠ Ġoverride Ġfun Ġon Fragment Create (): ĠBoolean Ġ{ č Ċ // ĠĠĠĠĠĠĠ ĠMet ro Util . copy Databases From Assets () čĊĠĠĠĠĠĠĠ ĠNotification Center . getInstance () !!. set Allowed Notifications D uting Animation ( int ArrayOf ( Notification Center . cell Clicked , ĠNotification Center . live Locations Changed )) čĊĠĠĠĠĠĠĠ ĠNotification Center . getInstance () !!. add Observer ( this , ĠNotification Center . live Locations Changed ) čĊĠĠĠĠĠĠĠ ĠNotification Center . getInstance () !!. add Observer ( this , ĠNotification Center . cell Clicked ) čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ> Ġ 2 3 Ġ&& Ġ( Launch Activity . application Context . check Self Permission ( Manifest . permission . ACCESS _ CO AR SE _ LOCATION ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| ĠLaunch Activity . application Context . check Self Permission ( Manifest . permission . ACCESS _ F INE _ LOCATION ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġask For Permissions () čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocation Controller . getInstance () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġcreate View ( context : ĠContext ?): ĠView ? Ġ{ čĊĠĠĠĠĠĠĠ ĠMet ro Util . lines . clear () čĊčĊĠĠĠĠĠĠĠ Ġaction Bar !!. set Back Button Drawable ( Menu Drawable ()) čĊĠĠĠĠĠĠĠ Ġaction Bar !!. title Ġ= ĠLocale Controller . getString (" app _ name ", ĠR . string . app _ name ) čĊĠĠĠĠĠĠĠ Ġaction Bar !!. action Bar Menu On Item Click Ġ= Ġobject Ġ: ĠAction Bar . Companion . ActionBar Menu On Item Click () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( id : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Layout e !!. drawer Layout Container !!. open Drawer ( false ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġaction Bar !!. set Allow Overlay Title ( true ) čĊčĊĠĠĠĠĠĠĠ Ġfragment View Ġ= ĠZoom Layout ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ Ġfragment View !!. set BackgroundColor ( Theme . getColor ( Theme . key _ metro _ background )) čĊčĊĠĠĠĠĠĠĠ Ġ( side Menu . adapter Ġas ĠDraw er Layout Adapter ). reset Items () čĊĠĠĠĠĠĠĠ Ġside Menu . adapter !!. notify DataSet Changed () čĊčĊĠĠĠĠĠĠĠ Ġadd Lines ( fragment View Ġas ĠZoom Layout ) čĊĠĠĠĠĠĠĠ Ġbottom View Ġ= Ġadd Bottom View ( Launch Activity . application Context , Ġfragment View Ġas ĠZoom Layout ) čĊĠĠĠĠĠĠĠ Ġadd Guide View ( fragment View Ġas ĠZoom Layout , ĠLaunch Activity . application Context ) čĊčĊčĊĠĠĠĠĠĠĠ Ġadd Direction Button ( fragment View Ġas ĠZoom Layout ) čĊĠĠĠĠĠĠĠ Ġstation Finder Ġ= ĠStation Finder ( fragment View Ġas ĠZoom Layout ) čĊčĊĠĠĠĠĠĠĠ Ġreturn Ġfragment View čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġadd Direction Button ( fragment View : ĠZoom Layout ) Ġ{ čĊĠĠĠĠĠĠĠ Ġdirection Button Container Ġ= ĠFrame Layout ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ Ġdirection Button Container . visibility Ġ= ĠView . VISIBLE čĊĠĠĠĠĠĠĠ Ġval Ġfloating Button Ġ= ĠImageView ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ Ġfloating Button . scale Type Ġ= ĠImageView . Scale Type . CENTER čĊĠĠĠĠĠĠĠ Ġval Ġdrawable : ĠDrawable Ġ= ĠTheme . create Simple Selector Circle Drawable ( Android Utilities . dp ( 5 6 f ), ĠTheme . getColor ( Theme . key _ ch ats _ action Background ), ĠTheme . getColor ( Theme . key _ ch ats _ action Pressed Background )) !! čĊčĊĠĠĠĠĠĠĠ Ġfloating Button . background Ġ= Ġdrawable čĊĠĠĠĠĠĠĠ Ġfloating Button . color Filter Ġ= ĠPort er D uff Color Filter ( Theme . getColor ( Theme . key _ ch ats _ action Icon ), ĠPort er D uff . Mode . MULTI PLY ) čĊĠĠĠĠĠĠĠ Ġfloating Button . setImage Resource ( R . drawable . ic _ directions ) čĊčĊĠĠĠĠĠĠĠ Ġdirection Button Container . addView ( floating Button , ĠLayout Helper . create Frame ( if Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 1 ) Ġ 5 6 Ġelse Ġ 6 0 , Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 1 ) Ġ 5 6 f Ġelse Ġ 6 0 f , ĠGr avity . LEFT Ġor ĠGr avity . TOP , Ġ 1 0 f , Ġ 0 f , Ġ 1 0 F , Ġ 0 f )) čĊĠĠĠĠĠĠĠ Ġfragment View . addView ( direction Button Container , ĠLayout Helper . create Frame (( if Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 1 ) Ġ 5 6 Ġelse Ġ 6 0 ) Ġ+ Ġ 2 0 , Ġ(( if Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 1 ) Ġ 5 6 Ġelse Ġ 6 0 ) Ġ+ Ġ 1 4 ). toFloat (), Ġ( /* if Ġ( Locale Controller . is RTL ) ĠGr avity . LEFT Ġelse */ ĠGr avity . RIGHT ) Ġor ĠGr avity . BOTTOM , Ġif Ġ( Locale Controller . is RTL ) Ġ 4 f Ġelse Ġ 0 f , Ġ 0 f , Ġif Ġ( Locale Controller . is RTL ) Ġ 0 f Ġelse Ġ 4 f , Ġ 0 f )) čĊĠĠĠĠĠĠĠ Ġdirection Button Container . setOnClickListener Ġ{ Ġv : ĠView Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Road View ed ){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Road View ed Ġ= Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstation Finder . remove Guide Line () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Cell !!. remove Location View () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest Cell !!. remove Location View () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Ro ating Started Ġ= Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . visibility Ġ= ĠView . GONE čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom View . visibility Ġ= ĠView . VISIBLE čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Ro ating Started Ġ= Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊčĊĠĠĠ Ġprivate Ġfun Ġadd Guide View ( frame Layout : ĠZoom Layout , Ġcontext : ĠContext ) Ġ{ čĊĠĠĠĠĠĠĠ Ġguide View Ġ= ĠGuide View ( context ) čĊĠĠĠĠĠĠĠ Ġframe Layout . addView ( guide View , ĠLayout Helper . create Frame ( Layout Helper . WRAP _ CONTENT , ĠLayout Helper . WRAP _ CONTENT . toFloat (), ĠGr avity . BOTTOM Ġor ĠGr avity . LEFT , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 f , Ġ 1 5 f , Ġ 2 0 f , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Height Ġ/ ĠAndroid Utilities . density Ġ+ ĠAndroid Utilities . dp ( 5 f ))) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġadd Bottom View ( context : ĠContext ?, Ġframe Layout : ĠZoom Layout ): ĠLinearLayout Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġlinear Layout Ġ= ĠLinearLayout ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ Ġlinear Layout . orientation Ġ= ĠLinearLayout . HORIZONTAL čĊĠĠĠĠĠĠĠ Ġlinear Layout . layout Direction Ġ= ĠLinearLayout . LAYOUT _ DIRECTION _ LTR čĊĠĠĠĠĠĠĠ Ġlinear Layout . set BackgroundColor ( Theme . getColor ( Theme . key _ ch ats _ action Background )) čĊčĊĠĠĠĠĠĠĠ Ġgo ImageView Ġ= ĠImageView ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ Ġgo ImageView . setImage Resource ( R . drawable . ic _ double _ arrow ) čĊĠĠĠĠĠĠĠ Ġgo ImageView . color Filter Ġ= ĠPort er D uff Color Filter ( Theme . getColor ( Theme . key _ chat _ message Panel Voice Pressed ), ĠPort er D uff . Mode . MULTI PLY ) č Ċ // ĠĠĠĠĠĠĠ Ġgo ImageView . set BackgroundColor ( Theme . getColor ( Theme . key _ contacts _ invite Background )) čĊĠĠĠĠĠĠĠ Ġval Ġgo Image LayoutParams Ġ= ĠLinearLayout . LayoutParams ( 0 , ĠAndroid Utilities . dp ( 3 0 f ), Ġ 1 . 0 f ) čĊĠĠĠĠĠĠĠ Ġgo Image LayoutParams . set Margins ( 0 , ĠAndroid Utilities . dp ( 7 f ), ĠAndroid Utilities . dp ( 5 f ), Ġ 0 ) čĊĠĠĠĠĠĠĠ Ġgo ImageView . layout Params Ġ= Ġgo Image LayoutParams čĊčĊĠĠĠĠĠĠĠ Ġgo TextView Ġ= ĠHint EditText ( context ) čĊĠĠĠĠĠĠĠ Ġgo TextView . hint Ġ= ĠLocale Controller . getString (" Source ", ĠR . string . source ) čĊĠĠĠĠĠĠĠ Ġgo TextView . set Alpha Numeric Filter () č Ċ // ĠĠĠĠĠĠĠ Ġgo TextView . set Single Line ( true ) čĊĠĠĠĠĠĠĠ Ġgo TextView . set Hint Color ( Theme . getColor ( Theme . key _ T aj r ish _ line )) čĊĠĠĠĠĠĠĠ Ġgo TextView . set BackgroundColor ( Theme . getColor ( Theme . key _ ch ats _ action Background )) čĊĠĠĠĠĠĠĠ Ġgo TextView . setTextColor ( Theme . getColor ( Theme . key _ contacts _ invite Text )) čĊĠĠĠĠĠĠĠ Ġgo TextView . gravity Ġ= ĠGr avity . CENTER čĊĠĠĠĠĠĠĠ Ġgo TextView . setText Size ( Typed Value . COMPLEX _ UNIT _ DIP , Ġ 1 3 f ) čĊĠĠĠĠĠĠĠ Ġgo TextView . type face Ġ= ĠAndroid Utilities . getType face (" fonts / r medium . ttf ") čĊĠĠĠĠĠĠĠ Ġgo TextView . set Padding ( Android Utilities . dp ( 1 7 F ), ĠAndroid Utilities . dp ( 9 F ), ĠAndroid Utilities . dp ( 1 7 F ), ĠAndroid Utilities . dp ( 9 F )) čĊĠĠĠĠĠĠĠ Ġgo TextView . visibility Ġ= ĠView . VISIBLE čĊĠĠĠĠĠĠĠ Ġinfo Height Ġ= Ġ( go TextView . line Height Ġ+ ĠAndroid Utilities . dp ( go TextView . gravity . toFloat ())). toFloat () čĊĠĠĠĠĠĠĠ Ġval ĠtextView LayoutParams Ġ= ĠLinearLayout . LayoutParams ( 0 , ĠAndroid Utilities . dp ( 4 2 f ), Ġ 7 . 0 f ) čĊĠĠĠĠĠĠĠ Ġgo TextView . layout Params Ġ= ĠtextView LayoutParams čĊčĊĠĠĠĠĠĠĠ Ġlinear Layout . addView ( go TextView ) čĊĠĠĠĠĠĠĠ Ġlinear Layout . addView ( go ImageView ) čĊčĊĠĠĠĠĠĠĠ Ġgo TextView . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstation Finder . on Text Change ( go TextView ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊčĊĠĠĠĠĠĠĠ Ġ}) čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( source Cell Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Cell !!. remove Location View () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( dest Cell Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest Cell !!. remove Location View () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġgo ImageView . setOnClickListener Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( go TextView . text . isBlank ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( Launch Activity . application Context , Ġ" enter Ġstation ", ĠToast . LENGTH _ SHORT ). show () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstation Name Ġ= Ġgo TextView . text . toString (). trim () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Ġ= ĠMet ro Util . getCell ( station Name ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cell Ġ!= Ġnull ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrouting ( cell ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( Launch Activity . application Context , Ġ" false Ġstation ", ĠToast . LENGTH _ SHORT ). show () čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġframe Layout . addView ( linear Layout , ĠLayout Helper . create Frame ( Layout Helper . MATCH _ PARENT , ĠLayout Helper . WRAP _ CONTENT . toFloat (), ĠGr avity . BOTTOM , Ġ 0 f , Ġ 0 f , 0 f , Ġ 3 f )) čĊĠĠĠĠĠĠĠ Ġlinear Layout . visibility Ġ= ĠView . IN VISIBLE čĊĠĠĠĠĠĠĠ Ġreturn Ġlinear Layout čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġrouting ( cell : ĠStation Cell ) Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( go TextView . hint Ġ== ĠLocale Controller . getString (" Source ", ĠR . string . source )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġgo TextView . hint Ġ= ĠLocale Controller . getString (" dest ent ation ", ĠR . string . dest ent ation ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( source Cell Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Cell !!. remove Location View () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Cell Ġ= Ġcell čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dest Cell Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest Cell !!. remove Location View () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest Cell Ġ= Ġcell čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom View . visibility Ġ= ĠView . GONE čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Button Container . visibility Ġ= ĠView . VISIBLE čĊĠĠĠĠĠĠĠĠĠĠĠ Ġstation Finder . find Road ( source Cell !! , Ġdest Cell !! ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġgo TextView . hint Ġ= ĠLocale Controller . getString (" source ", ĠR . string . source ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Road View ed Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġcell . add Location View () čĊĠĠĠĠĠĠĠ Ġgo TextView . setText ("") čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġadd Lines ( frame Layout : ĠZoom Layout ) Ġ{ čĊĠĠĠĠĠĠĠ Ġadd Line ( frame Layout , ĠT aj r ish Line ( Launch Activity . application Context )) čĊĠĠĠĠĠĠĠ Ġadd Line ( frame Layout , ĠFar hang s ara Line ( Launch Activity . application Context )) čĊĠĠĠĠĠĠĠ Ġadd Line ( frame Layout , ĠAz ade gan Line ( Launch Activity . application Context )) čĊĠĠĠĠĠĠĠ Ġadd Line ( frame Layout , ĠK ol ah d oo z Line ( Launch Activity . application Context )) čĊĠĠĠĠĠĠĠ Ġadd Line ( frame Layout , ĠFar hang s ara Sub Line ( Launch Activity . application Context )) čĊĠĠĠĠĠĠĠ Ġadd Line ( frame Layout , ĠA bd ol az im Line ( Launch Activity . application Context )) čĊĠĠĠĠĠĠĠ Ġadd Line ( frame Layout , ĠT ak ht i Line ( Launch Activity . application Context )) čĊĠĠĠĠĠĠĠ Ġadd Line ( frame Layout , ĠT aj r ish Sub Line ( Launch Activity . application Context )) čĊĠĠĠĠĠĠĠ Ġadd Line ( frame Layout , ĠK ol ah d oo z Sub Line ( Launch Activity . application Context )) čĊĠĠĠĠĠĠĠ Ġadd Line ( frame Layout , ĠAz ade gan Sub Line ( Launch Activity . application Context )) čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġadd Line ( frame Layout : ĠZoom Layout , Ġmet ro Line : ĠMet ro Line ) Ġ{ čĊĠĠĠĠĠĠĠ Ġframe Layout . addView ( metro Line , ĠLayout Helper . create Frame ( Layout Helper . MATCH _ PARENT , ĠLayout Helper . MATCH _ PARENT , ĠGr avity . CENTER )) čĊĠĠĠĠĠĠĠ ĠMet ro Util . lines . add ( metro Line ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġvar Ġvalue Ġ= ĠPair ( 1 2 3 , Ġ 1 2 2 ) čĊĠĠĠ Ġvar Ġfirst Time Ġ= Ġtrue čĊčĊĠĠĠ Ġoverride Ġfun Ġon Fragment Destroy () Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . on Fragment Destroy () čĊĠĠĠĠĠĠĠ ĠMet ro Util . lines . clear () čĊĠĠĠĠĠĠĠ ĠNotification Center . getInstance () !!. remove Observer ( Launch Activity . application Context , ĠNotification Center . live Locations Changed ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġcell Clicked ( station Name : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġcell Ġ= ĠMet ro Util . getCell ( station Name ) čĊĠĠĠĠĠĠĠ Ġif Ġ( clicked Cell Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clicked Cell !!. is Guide View ed ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclicked Cell !!. remove Guide Property () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( is Ro ating Started Ġ&& Ġ! is Road View ed ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrouting ( cell !! ) čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clicked Cell Ġ!= Ġnull Ġ&& Ġclicked Cell !!. station Name Ġ== Ġcell !!. station Name ) Ġreturn čĊĠĠĠĠĠĠĠĠĠĠĠ Ġclicked Cell Ġ= Ġcell čĊĠĠĠĠĠĠĠĠĠĠĠ Ġclicked Cell !!. is Guide View ed Ġ= Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġclicked Cell !!. add Guide Property () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġdid Received Notification ( id : ĠInt , Ġvar arg Ġargs : ĠAny ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠNotification Center . cell Clicked ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstation Name Ġ= Ġargs [ 0 ] Ġas ĠString čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcell Clicked ( station Name ) čĊčĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠNotification Center . live Locations Changed ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠLocation Controller . getInstance () !!. last Known Location č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġlat TextView . text Ġ= Ġlocation !!. latitude . toString () č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġlong TextView . text Ġ= Ġlocation !!. longitude . toString () č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsupport . component . Android Utilities . shake View ( lat TextView , Ġ 4 f , Ġ 0 ) č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsupport . component . Android Utilities . shake View ( long TextView , Ġ 4 f , Ġ 0 ) č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" location : Ġ"+ Ġvalue ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt aj r ish Line List Ġ= ĠMet ro Util . get Metro Line ( Locale Controller . getString (" ta jr ish ", ĠR . string . ta jr ish )) ?. stations List čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġt aj r ish Line List !!. size ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value . first Ġ> Ġt aj r ish Line List [ i ]. lat Ġ&& Ġvalue . first Ġ< Ġt aj r ish Line List [ i Ġ+ Ġ 1 ]. lat čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġvalue . second Ġ> Ġt aj r ish Line List [ i ]. long Ġ&& Ġvalue . second Ġ< Ġt aj r ish Line List [ i Ġ+ Ġ 1 ]. long ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstation Line Ġ= ĠMet ro Util . get Metro Line ( Locale Controller . getString (" ta jr ish ", ĠR . string . ta jr ish )) !!. lines List [ i Ġ- Ġ 1 ] čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" location M ", Ġt aj r ish Line List [ i ]. station Name ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" location M ", Ġstation Line . toString ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Map X Ġ= ĠLocation Controller . getInstance () !!. location Map ( value . first . toDouble (), Ġ 0 . toDouble (), Ġ 1 0 0 . toDouble (), Ġstation Line . left . toFloat (), Ġstation Line . right . toFloat ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Map Y Ġ= ĠLocation Controller . getInstance () !!. location Map ( value . second . toDouble (), Ġ 0 . toDouble (), Ġ 1 0 0 . toDouble (), Ġstation Line . top . toFloat (), Ġstation Line . bottom . toFloat ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" location M ", ĠPoint ( location Map X . toInt (), Ġlocation Map Y . toInt ()). toString ()) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first Time ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Time Ġ= Ġfalse č Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlocation Cell Ġ= ĠLocation Cell ( PointF ( location Map X . toFloat (), Ġlocation Map Y . toFloat ())) č Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Cell . draw ( Canvas ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Ġ= ĠSingle Station Cell ( Launch Activity . application Context , Ġ" temp ", Ġ/* location Map X . toInt () */ 1 0 0 f , Ġ/* location Map Y . toInt () */ 5 0 0 f , ĠColor . rgb ( 1 0 0 , Ġ 2 5 0 , Ġ 6 0 )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcell . station Name Ġ= Ġ" your Location " čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( fragment View Ġas ĠZoom Layout ). addView ( cell , ĠLayout Helper . create Frame ( 5 0 , Ġ 5 0 f , ĠGr avity . LEFT , Ġ( location Map X . toFloat () Ġ- ĠAndroid Utilities . dp ( 3 0 f )) Ġ/ ĠAndroid Utilities . density , Ġ( location Map Y . toFloat () Ġ- ĠAndroid Utilities . dp ( 3 0 f )) Ġ/ ĠAndroid Utilities . density , Ġ 0 f , Ġ 0 f )) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* cell . layout (* //* location Map X Ġ- Ġsupport . component . Android Utilities . dp ( 2 f )). toInt (), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( location Map Y Ġ- Ġsupport . component . Android Utilities . dp ( 2 f )). toInt (), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( location Map X Ġ+ Ġsupport . component . Android Utilities . dp ( 2 f )). toInt (), čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( location Map Y Ġ+ Ġsupport . component . Android Utilities . dp ( 2 f )). toInt (* //* 3 0 0 , Ġ 2 5 0 , Ġ 4 0 0 , Ġ 5 0 0 ) */ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( fragment View Ġas ĠZoom Layout ). invalidate () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġset Side Menu ( re cyclerView : ĠRecyclerView ) Ġ{ čĊĠĠĠĠĠĠĠ Ġside Menu Ġ= Ġre cyclerView čĊĠĠĠĠĠĠĠ Ġside Menu . set BackgroundColor ( support . Theme . getColor ( support . Theme . key _ ch ats _ menu Background )) č Ċ // ĠĠĠĠĠĠĠĠ Ġside Menu . set G low Color ( support . Theme . getColor ( support . Theme . key _ ch ats _ menu Background )) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġshow Permission Alert ( by Button : ĠBoolean ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ Ġbuilder . setTitle ( Launch Activity . application Context . getString ( R . string . AppName )) čĊĠĠĠĠĠĠĠ Ġif Ġ( by Button ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setMessage ( Launch Activity . application Context . getString ( R . string . Permission No Location Position )) čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setMessage ( Launch Activity . application Context . getString ( R . string . Permission No Location )) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġbuilder . set Negative Button ( Launch Activity . application Context . getString ( R . string . Permission Open Settings ) čĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Settings . ACTION _ APPLICATION _ DETAILS _ SETTINGS ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse (" package :" Ġ+ ĠLaunch Activity . application Context . packageName ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLaunch Activity . application Context . startActivity ( intent ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġbuilder . set Positive Button ( Launch Activity . application Context . getString ( R . string . OK ), Ġnull ) čĊĠĠĠĠĠĠĠ Ġbuilder . show () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . on Resume () čĊĠĠĠĠĠĠĠ Ġif Ġ( check Permission Ġ&& ĠBuild . VERSION . SDK _ INT Ġ>= Ġ 2 3 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Permission Ġ= Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġask For Permissions () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊčĊĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . M ) čĊĠĠĠ Ġprivate Ġfun Ġask For Permissions () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= ĠLaunch Activity . application Context čĊĠĠĠĠĠĠĠ Ġval Ġpermission Ġ= ĠArrayList < String >() čĊĠĠĠĠĠĠĠ Ġif Ġ( activity . check Self Permission ( Manifest . permission . ACCESS _ CO AR SE _ LOCATION ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġactivity . check Self Permission ( Manifest . permission . ACCESS _ F INE _ LOCATION ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġactivity . check Self Permission ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermission . add ( Manifest . permission . ACCESS _ CO AR SE _ LOCATION ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermission . add ( Manifest . permission . ACCESS _ F INE _ LOCATION ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermission . add ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġpermission . to Typed Array () čĊĠĠĠĠĠĠĠ Ġtry Ġ{ č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. request Permissions ( items , Ġ 1 ) čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result Fragment ( request Code : ĠInt , Ġpermissions : ĠArray < String ?> ?, Ġgrant Results : ĠInt Array ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== Ġ 1 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions !!. indices čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrant Results !!. size Ġ> Ġit Ġ&& Ġgrant Results [ it ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED Ġ&& Ġ( permissions [ it ] Ġ== ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġpermissions [ it ] Ġ== ĠManifest . permission . ACCESS _ F INE _ LOCATION ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĠLocation Controller . getInstance () Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġadd Location View ( frame Layout : ĠZoom Layout ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġlinear Layout Ġ= ĠLinearLayout ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ Ġlinear Layout . orientation Ġ= ĠLinearLayout . VERTICAL čĊĠĠĠĠĠĠĠ Ġlinear Layout . gravity Ġ= ĠGr avity . CENTER čĊĠĠĠĠĠĠĠ Ġlinear Layout . layout Direction Ġ= ĠLinearLayout . LAYOUT _ DIRECTION _ LTR čĊčĊĠĠĠĠĠĠĠ Ġlat TextView Ġ= ĠTextView ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ Ġlat TextView . set BackgroundColor ( Theme . getColor ( Theme . key _ contacts _ invite Background )) čĊĠĠĠĠĠĠĠ Ġlat TextView . setTextColor ( Theme . getColor ( Theme . key _ contacts _ invite Text )) čĊĠĠĠĠĠĠĠ Ġlat TextView . gravity Ġ= ĠGr avity . CENTER čĊĠĠĠĠĠĠĠ Ġlat TextView . setText Size ( Typed Value . COMPLEX _ UNIT _ DIP , Ġ 1 3 f ) čĊĠĠĠĠĠĠĠ Ġlat TextView . type face Ġ= ĠAndroid Utilities . getType face (" fonts / r medium . ttf ") čĊčĊĠĠĠĠĠĠĠ Ġlong TextView Ġ= ĠTextView ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ Ġlong TextView . set BackgroundColor ( Theme . getColor ( Theme . key _ kol ah d oo z _ line )) čĊĠĠĠĠĠĠĠ Ġlong TextView . setTextColor ( Theme . getColor ( Theme . key _ contacts _ invite Text )) čĊĠĠĠĠĠĠĠ Ġlong TextView . gravity Ġ= ĠGr avity . CENTER čĊĠĠĠĠĠĠĠ Ġlong TextView . setText Size ( Typed Value . COMPLEX _ UNIT _ DIP , Ġ 1 3 f ) čĊĠĠĠĠĠĠĠ Ġlong TextView . type face Ġ= ĠAndroid Utilities . getType face (" fonts / r medium . ttf ") čĊčĊĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= ĠTextView ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġ" LAT " čĊĠĠĠĠĠĠĠ ĠtextView . gravity Ġ= ĠGr avity . CENTER čĊĠĠĠĠĠĠĠ ĠtextView . setText Size ( Typed Value . COMPLEX _ UNIT _ DIP , Ġ 1 0 f ) čĊĠĠĠĠĠĠĠ ĠtextView . type face Ġ= ĠAndroid Utilities . getType face (" fonts / r medium . ttf ") čĊĠĠĠĠĠĠĠ ĠtextView . set Padding ( Android Utilities . dp ( 1 7 F ), ĠAndroid Utilities . dp ( 9 F ), ĠAndroid Utilities . dp ( 1 7 F ), ĠAndroid Utilities . dp ( 9 F )) čĊĠĠĠĠĠĠĠ Ġlinear Layout . addView ( textView , ĠLayout Helper . create Frame ( Layout Helper . MATCH _ PARENT , ĠAndroid Utilities . dp ( 2 0 f ). toFloat ())) čĊĠĠĠĠĠĠĠ Ġlinear Layout . addView ( lat TextView , ĠLayout Helper . create Frame ( Layout Helper . MATCH _ PARENT , ĠAndroid Utilities . dp ( 2 0 f ). toFloat ())) čĊčĊĠĠĠĠĠĠĠ Ġval ĠtextView 2 Ġ= ĠTextView ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ ĠtextView 2 . text Ġ= Ġ" LONG " čĊĠĠĠĠĠĠĠ ĠtextView 2 . setText Size ( Typed Value . COMPLEX _ UNIT _ DIP , Ġ 1 0 f ) čĊĠĠĠĠĠĠĠ ĠtextView 2 . type face Ġ= ĠAndroid Utilities . getType face (" fonts / r medium . ttf ") čĊĠĠĠĠĠĠĠ ĠtextView 2 . set Padding ( Android Utilities . dp ( 1 7 F ), ĠAndroid Utilities . dp ( 9 F ), ĠAndroid Utilities . dp ( 1 7 F ), ĠAndroid Utilities . dp ( 9 F )) čĊĠĠĠĠĠĠĠ ĠtextView 2 . gravity Ġ= ĠGr avity . CENTER čĊĠĠĠĠĠĠĠ Ġlinear Layout . addView ( textView 2 , ĠLayout Helper . create Frame ( Layout Helper . MATCH _ PARENT , ĠAndroid Utilities . dp ( 2 0 f ). toFloat ())) čĊĠĠĠĠĠĠĠ Ġlinear Layout . addView ( long TextView , ĠLayout Helper . create Frame ( Layout Helper . MATCH _ PARENT , ĠAndroid Utilities . dp ( 2 0 f ). toFloat ())) čĊčĊĠĠĠĠĠĠĠ Ġval Ġstop Button Ġ= ĠButton ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ Ġval Ġstart Button Ġ= ĠButton ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ Ġstart Button . text Ġ= Ġ" start " čĊĠĠĠĠĠĠĠ Ġstart Button . gravity Ġ= ĠGr avity . CENTER čĊĠĠĠĠĠĠĠ Ġstart Button . set Padding ( Android Utilities . dp ( 1 7 F ), ĠAndroid Utilities . dp ( 9 F ), ĠAndroid Utilities . dp ( 1 7 F ), ĠAndroid Utilities . dp ( 9 F )) čĊĠĠĠĠĠĠĠ Ġstart Button . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocation Controller . getInstance () !!. start () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Button . isEnabled Ġ= Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Button . isEnabled Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġval Ġlinear Layout 1 Ġ= ĠLinearLayout ( Launch Activity . application Context ) čĊĠĠĠĠĠĠĠ Ġlinear Layout 1 . orientation Ġ= ĠLinearLayout . HORIZONTAL čĊĠĠĠĠĠĠĠ Ġlinear Layout 1 . gravity Ġ= ĠGr avity . CENTER čĊĠĠĠĠĠĠĠ Ġlinear Layout 1 . layout Direction Ġ= ĠLinearLayout . LAYOUT _ DIRECTION _ LTR čĊĠĠĠĠĠĠĠ Ġlinear Layout 1 . addView ( start Button , ĠLayout Helper . create Frame ( Layout Helper . WRAP _ CONTENT , ĠAndroid Utilities . dp ( 2 0 f ). toFloat ())) čĊĠĠĠĠĠĠĠ Ġstop Button . text Ġ= Ġ" stop " čĊĠĠĠĠĠĠĠ Ġstop Button . isEnabled Ġ= Ġfalse čĊĠĠĠĠĠĠĠ Ġstop Button . set Padding ( Android Utilities . dp ( 1 7 F ), ĠAndroid Utilities . dp ( 9 F ), ĠAndroid Utilities . dp ( 1 7 F ), ĠAndroid Utilities . dp ( 9 F )) čĊĠĠĠĠĠĠĠ Ġstop Button . gravity Ġ= ĠGr avity . CENTER čĊĠĠĠĠĠĠĠ Ġstop Button . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocation Controller . getInstance () !!. stop ( true ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Button . isEnabled Ġ= Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Button . isEnabled Ġ= Ġfalse čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġlinear Layout 1 . addView ( stop Button , ĠLayout Helper . create Frame ( Layout Helper . WRAP _ CONTENT , ĠAndroid Utilities . dp ( 2 0 f ). toFloat ())) čĊĠĠĠĠĠĠĠ Ġlinear Layout . addView ( linear Layout 1 , ĠLayout Helper . create Frame ( Layout Helper . MATCH _ PARENT , ĠLayout Helper . WRAP _ CONTENT . toFloat ())) čĊčĊĠĠĠĠĠĠĠ Ġ( fragment View Ġas ĠZoom Layout ). addView ( linear Layout , ĠLayout Helper . create Frame ( Layout Helper . MATCH _ PARENT , ĠLayout Helper . WRAP _ CONTENT , ĠGr avity . CENTER )) čĊĠĠĠ Ġ} čĊč Ċ }