package Ġcom . map swith me . maps . base Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . media . Audio Manager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroidx . annotation . Call Super Ċ import Ġandroidx . annotation . Color Res Ċ import Ġandroidx . annotation . Style Res Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . map swith me . maps . M wm Application Ċ import Ġcom . map swith me . maps . R Ċ import Ġcom . map swith me . maps . Splash Activity Ċ import Ġcom . map swith me . util .* Ċ import Ġcom . map swith me . util . log . LoggerFactory Ċ Ċ abstract Ġclass ĠBase M wm Fragment Activity Ġ: ĠAppCompatActivity (), ĠBase Activity Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Base Delegate Ġ= ĠBase Activity Delegate ( this ) ĊĠĠĠ Ġprivate Ġvar Ġm Safe Created Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġfun Ġget (): ĠActivity Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Style Res ĊĠĠĠ Ġoverride Ġfun Ġget Theme ResourceId ( theme : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Theme Utils . is Default Theme ( theme )) Ġreturn ĠR . style . M wm Theme ĊĠĠĠĠĠĠĠ Ġif Ġ( Theme Utils . is Night Theme ( theme )) Ġreturn ĠR . style . M wm Theme _ Night ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Attempt Ġto Ġapply Ġunsupported Ġtheme : Ġ$ theme ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShows Ġsplash Ġscreen Ġand Ġinitializes Ġthe Ġcore Ġin Ġcase Ġwhen Ġit Ġwas Ġnot Ġinitialized . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠDo Ġnot Ġoverride Ġthis Ġmethod ! ĊĠĠĠĠ Ġ* ĠUse Ġ[. on Safe Create ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Base Delegate . onCreate () ĊĠĠĠĠĠĠĠ Ġ// ĠAn Ġintent Ġthat Ġwas Ġskipped Ġdue Ġto Ġcore Ġwasn 't Ġinitialized Ġhas Ġto Ġbe Ġused Ċ // Ġas Ġa Ġtarget Ġintent Ġfor Ġthis Ġactivity , Ġotherwise Ġall Ġinput Ġextras Ġwill Ġbe Ġlost Ċ // Ġin Ġa Ġsplash Ġactivity Ġloop . ĊĠĠĠĠĠĠĠ Ġval Ġinitial Intent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . get Parcelable Extra < Intent >( Splash Activity . EXTRA _ INITIAL _ INT ENT ) ĊĠĠĠĠĠĠĠ Ġif Ġ( initial Intent Ġ!= Ġnull ) Ġintent Ġ= Ġinitial Intent ĊĠĠĠĠĠĠĠ Ġif Ġ(! M wm Application . get (). are Platform And Core Initialized () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ! Permissions Utils . is External Storage Granted () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgo To Splash Screen ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġon Safe Create ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġsafe Ġmethod Ġinstead Ġof Ġ[. onCreate ]. ĊĠĠĠĠ Ġ* ĠWhen Ġthis Ġmethod Ġis Ġcalled , Ġthe Ġcore Ġis Ġalready Ġinitialized . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġprotected Ġopen Ġfun Ġon Safe Create ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġvolume Control Stream Ġ= ĠAudio Manager . STREAM _ M US IC ĊĠĠĠĠĠĠĠ Ġval Ġlayout Id Ġ= Ġcontent Layout Res Id ĊĠĠĠĠĠĠĠ Ġif Ġ( layout Id Ġ!= Ġ 0 ) ĠsetContentView ( layout Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( use Transparent StatusBar ()) ĠUi Utils . setup StatusBar ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( use Color StatusBar ()) ĠUi Utils . setup Color StatusBar ( this , Ġstatus Bar Color ) ĊĠĠĠĠĠĠĠ Ġ// ĠUse Ġfull - screen Ġon ĠKind le ĠFire Ġonly ĊĠĠĠĠĠĠĠ Ġif Ġ( Utils . is Amazon Device ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ FULL SCREEN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . clear Flags ( WindowManager . LayoutParams . FLAG _ FORCE _ NOT _ FULL SCREEN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġattach Default Fragment () ĊĠĠĠĠĠĠĠ Ġm Base Delegate . on Safe Create () ĊĠĠĠĠĠĠĠ Ġm Safe Created Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprotected Ġval Ġstatus Bar Color : ĠInt ĊĠĠĠĠĠĠĠ Ġ@ Color Res Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtheme Ġ= ĠConfig . getCurrent Ui Theme () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Theme Utils . is Default Theme ( theme )) Ġreturn ĠR . color . bg _ status bar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Theme Utils . is Night Theme ( theme )) Ġreturn ĠR . color . bg _ status bar _ night ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Attempt Ġto Ġapply Ġunsupported Ġtheme : Ġ$ theme ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġuse Color StatusBar (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġuse Transparent StatusBar (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon New Intent ( intent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on New Intent ( intent ) ĊĠĠĠĠĠĠĠ Ġm Base Delegate . on New Intent ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Post Create ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Post Create ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġm Base Delegate . on Post Create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġm Base Delegate . on Destroy () ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Safe Created ) Ġreturn ĊĠĠĠĠĠĠĠ Ġon Safe Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġsafe Ġmethod Ġinstead Ġof Ġ[. on Destroy ]. ĊĠĠĠĠ Ġ* ĠWhen Ġthis Ġmethod Ġis Ġcalled , Ġthe Ġcore Ġis Ġalready Ġinitialized Ġand ĊĠĠĠĠ Ġ* Ġ[. on Safe Create ] Ġwas Ġcalled . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġprotected Ġopen Ġfun Ġon Safe Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Base Delegate . on Safe Destroy () ĊĠĠĠĠĠĠĠ Ġm Safe Created Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġm Base Delegate . onStart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġm Base Delegate . on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== Ġandroid . R . id . home ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Home Option ItemSelected () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġon Home Option ItemSelected () Ġ{ ĊĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif Ġ(! Permissions Utils . is External Storage Granted ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgo To Splash Screen ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Base Delegate . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Post Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Post Resume () ĊĠĠĠĠĠĠĠ Ġm Base Delegate . on Post Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġm Base Delegate . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġval Ġtoolbar : ĠToolbar ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠfindViewById < View >( R . id . toolbar ) Ġas ĠToolbar ĊĊĠĠĠ Ġprotected Ġfun Ġdisplay Toolbar As ActionBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Class Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġfragment Class !!. name ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġmanager . find Fragment By Tag ( name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( on Back Pressed Internal ( fragment )) Ġreturn ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Back Pressed Internal ( current Fragment : ĠFragment ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= Ġcurrent Fragment Ġas ĠOn Back Press Listener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass CastException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogger Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoggerFactory . INSTANCE . getLogger ( LoggerFactory . Type . MISC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Ġ= Ġthis . java Class . simple Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . i ( tag , Ġ" Fragment Ġ'$ current Fragment ' Ġdoesn 't Ġhandle Ġback Ġpress Ġby Ġitself .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOverride Ġto Ġset Ġcustom Ġcontent Ġview . ĊĠĠĠĠ Ġ* Ġ@ return Ġlayout Ġres Id . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġval Ġcontent Layout Res Id : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ 0 ĊĊĠĠĠ Ġprotected Ġfun Ġattach Default Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= Ġfragment Class ĊĠĠĠĠĠĠĠ Ġif Ġ( clazz Ġ!= Ġnull ) Ġreplace Fragment ( clazz , Ġintent . extras , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReplace Ġattached Ġfragment Ġwith Ġthe Ġnew Ġone . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġreplace Fragment ( ĊĠĠĠĠĠĠĠ Ġfragment Class : ĠClass < out ĠFragment ? >, ĊĠĠĠĠĠĠĠ Ġargs : ĠBundle ?, ĊĠĠĠĠĠĠĠ Ġcompletion Listener : ĠRunnable ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Id Ġ= Ġfragment Content Res Id ĊĠĠĠĠĠĠĠ Ġcheck (!( res Id Ġ<= Ġ 0 Ġ|| ĠfindViewById < View ? >( res Id ) Ġ== Ġnull )) Ġ{ Ġ" Fragment Ġcan 't Ġbe Ġadded , Ġsince Ġget Fragment Content Res Id () Ġisn 't Ġimplemented Ġor Ġreturns Ġwrong Ġresource Id ." Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġfragment Class . name ĊĠĠĠĠĠĠĠ Ġval Ġpotential Instance Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . find Fragment By Tag ( name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( potential Instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFragment . instantiate ( this , Ġname , Ġargs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( res Id , Ġfragment , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Allow ing State Loss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . execute Pending Transactions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion Listener ?. run () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOverride Ġto Ġautomatically Ġattach Ġfragment Ġin ĠonCreate . ĠTag Ġapplied Ġto Ġfragment Ġin Ġback Ġstack Ġis Ġset Ġto Ġfragment Ġname , Ġtoo . ĊĠĠĠĠ Ġ* ĠWARNING Ġ: Ġif Ġcustom Ġlayout Ġfor Ġactivity Ġis Ġset , Ġget Fragment Content Res Id () Ġmust Ġbe Ġimplemented , Ġtoo . ĊĠĠĠĠ Ġ* Ġ@ return Ġclass Ġof Ġthe Ġfragment , Ġeg ĠFragment Class . getClass () ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġval Ġfragment Class : ĠClass < out ĠFragment >? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġresource Ġid Ġfor Ġthe Ġfragment . ĠThat Ġmust Ġbe Ġimplemented Ġto Ġreturn Ġcorrect Ġresource Ġid , Ġif Ġcustom Ġlayout Ġis Ġset . ĊĠĠĠĠ Ġ* Ġ@ return Ġresource Id Ġfor Ġthe Ġfragment ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġval Ġfragment Content Res Id : ĠInt ĊĠĠĠĠĠĠĠ Ġprotected Ġget () Ġ= Ġandroid . R . id . content ĊĊĠĠĠ Ġprivate Ġfun Ġgo To Splash Screen ( initial Intent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠSpl ash Activity . start ( this , Ġjava Class , Ġinitial Intent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ }