package Ġcom . k ier an . win ni peg bus . activities Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . provider . Settings Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ Ċ import Ġcom . google . android . gms . ads . Ad Request Ċ import Ġcom . google . android . gms . ads . Ad View Ċ import Ġcom . k ier an . win ni peg bus . Activity Manager Ċ import Ġcom . k ier an . win ni peg bus . R Ċ import Ġcom . k ier an . win ni peg bus . data . SQLite F avour ites Repository Ċ import Ġcom . k ier an . win ni peg bus backend . Transit ServiceProvider Ċ import Ġcom . k ier an . win ni peg bus backend . common . F avour ite Stop Ċ import Ġcom . k ier an . win ni peg bus backend . enums . F avour ites List Sort Type Ċ import Ġcom . k ier an . win ni peg bus backend . exceptions . RateLimit ed Exception Ċ import Ġcom . k ier an . win ni peg bus backend . exceptions . Transit Data NotFoundException Ċ import Ġcom . k ier an . win ni peg bus backend . fav our ites . F avour ites Service Ċ import Ġcom . k ier an . win ni peg bus backend . interfaces . Transit Service Ċ // import Ġcom . roll bar . android . Roll bar Ċ Ċ import Ġjava . io . IOException Ċ Ċ abstract Ġclass ĠBase Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġad View : ĠAd View ? Ġ= Ġnull ĊĠĠĠ Ġprotected Ġvar Ġad View Res Id Ġ= Ġ 0 ĊĊĠĠĠ Ġprotected Ġval Ġcontext : ĠContext ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis ĊĊĠĠĠ Ġval Ġtheme Res Id : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtheme Id Ġ= Ġprefs . getString ( getString ( R . string . pref _ key _ theme ), Ġ" 0 ") ?. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( theme Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠR . style . Dark ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠR . style . Light ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠR . style . Rt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . style . Dark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġval Ġtime Setting : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠgetTime Setting ( this ) ĊĊĠĠĠ Ġval Ġis Online : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcm Ġ= Ġget System Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnet Info Ġ= Ġcm . active Network Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnet Info Ġ!= Ġnull Ġ&& Ġnet Info . isConnected Or Connecting ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis Location Enabled : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlocation Mode Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Providers : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Location Enabled : ĠBoolean ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Mode Ġ= ĠSettings . Secure . getInt ( content Resolver , ĠSettings . Secure . LOCATION _ MODE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠSettings . Setting NotFoundException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoll bar . instance ()?. error ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Location Enabled Ġ= Ġlocation Mode Ġ!= ĠSettings . Secure . LOCATION _ MODE _ OFF ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Providers Ġ= ĠSettings . Secure . getString ( content Resolver , ĠSettings . Secure . LOCATION _ PRO VID ERS _ ALLOWED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Location Enabled Ġ= Ġ! TextUtils . isEmpty ( location Providers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġis Location Enabled Ġ&& ĠContext Compat . check Self Permission ( this , ĠManifest . permission . ACCESS _ F INE _ LOCATION ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġsort Preference : ĠF avour ites List Sort Type ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠF avour ites List Sort Type . get Enum ( prefs . getString ( getString ( R . string . pref _ fav our ites _ sort ), Ġ" 0 ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġval Ġtransit Service : ĠTrans it Service Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠTrans it ServiceProvider . get Transit Service () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġval Ġfavour ites Service : ĠF avour ites Service Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġget F avour ites Service ( transit Service . get Ag ency Id ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Theme ( theme Res Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( files DirPath Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiles DirPath Ġ= Ġfiles Dir . path ĊĠĠĠĠĠĠĠ ĠActivity Manager . add Activity ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Restart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Restart () ĊĠĠĠĠĠĠĠ Ġinitialize Ads If Enabled () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġif Ġ( ad View Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġad View !!. pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif Ġ( ad View Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġad View !!. resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġdestroy Ad View () ĊĠĠĠĠĠĠĠ ĠActivity Manager . remove Activity ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Settings () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠSettings Activity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen F avour ites () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠF avour ites Activity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Settings () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinitialize Ads If Enabled () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ad View Ġ== Ġnull Ġ&& Ġad View Res Id Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġad View Ġ= ĠfindViewById < View >( ad View Res Id ) Ġas ĠAd View ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ad View Ġ!= Ġnull Ġ&& Ġ! ad View !!. isLoading Ġ&& Ġ! ads Disabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġad View !!. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Ad () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestroy Ad View () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Ad () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġad Request Ġ= ĠAd Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġad View !!. load Ad ( ad Request . build ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠRoll bar . instance ()?. error ( ex , Ġ" Error ĠInitial izing Ġad view ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdestroy Ad View () Ġ{ ĊĠĠĠĠĠĠĠ Ġad View ?. visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġad View ?. destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Boolean Setting Enabled ( key : ĠString , ĠdefaultValue : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġreturn Ġprefs . getBoolean ( key , ĠdefaultValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġads Disabled (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġreturn Ġprefs . getBoolean (" pref _ disable _ ads ", Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Stop Times ( stop : ĠF avour ite Stop ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠStop Times Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Stop Times Activity . STOP , Ġstop ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Long To aster ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġmessage , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġshow Long To aster (@ String Res Ġres Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠgetString ( res Id ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Short To aster ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġmessage , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġshow Short To aster (@ String Res Ġres Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠgetString ( res Id ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġset TextView Text ( id : ĠInt , Ġtext : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠfindViewById < View >( id ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( view Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( view Ġas ĠTextView ). text Ġ= Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġhandle Exception ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Id : ĠInt Ġ= Ġwhen Ġ( ex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRate Limit ed Exception Ġ-> ĠR . string . too _ many _ queries _ error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIOException Ġ-> ĠR . string . network _ error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTrans it Data NotFoundException Ġ-> ĠR . string . data _ not _ found ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . unknown _ error ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġshow Short To aster ( res Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget F avour ites Service ( agency Id : ĠLong ): ĠF avour ites Service Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfavour ites Repository Ġ= ĠSQLite F avour ites Repository . getInstance ( this ) ĊĠĠĠĠĠĠĠ Ġreturn ĠF avour ites Service . getInstance ( fav our ites Repository , Ġagency Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfiles DirPath : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetTime Setting ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġprefs . getBoolean (" pref _ use _ 2 4 hr _ time ", Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ