package Ġca . j ose ph ro que . bow ling comp anion Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Tab Layout Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġandroid . support . v 4 . app . Fragment Pager Adapter Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġca . j ose ph ro que . bow ling comp anion . bow lers . B ow ler Ċ import Ġca . j ose ph ro que . bow ling comp anion . common . Android Ċ import Ġca . j ose ph ro que . bow ling comp anion . common . fragments . Base Fragment Ċ import Ġca . j ose ph ro que . bow ling comp anion . common . interfaces . I Ident ifiable Ċ import Ġca . j ose ph ro que . bow ling comp anion . common . fragments . List Fragment Ċ import Ġca . j ose ph ro que . bow ling comp anion . common . fragments . Tabbed Fragment Ċ import Ġca . j ose ph ro que . bow ling comp anion . games . Game Controller Fragment Ċ import Ġca . j ose ph ro que . bow ling comp anion . games . Series Provider Ċ import Ġca . j ose ph ro que . bow ling comp anion . le ag ues . League Ċ import Ġca . j ose ph ro que . bow ling comp anion . le ag ues . League Dialog Ċ import Ġca . j ose ph ro que . bow ling comp anion . le ag ues . League List Fragment Ċ import Ġca . j ose ph ro que . bow ling comp anion . series . Series Ċ import Ġca . j ose ph ro que . bow ling comp anion . series . Series List Fragment Ċ import Ġca . j ose ph ro que . bow ling comp anion . statistics . interfaces . I Statistics Context Ċ import Ġca . j ose ph ro que . bow ling comp anion . statistics . provider . Statistics Provider Ċ import Ġca . j ose ph ro que . bow ling comp anion . utils . Analytics Ċ import Ġkotlinx . coroutines . experimental . launch Ċ Ċ /** Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠJose ph ĠRo que Ċ Ġ* Ċ Ġ* ĠA Ġfragment Ġwith Ġtabs Ġto Ġswitch Ġbetween Ġa Ġ[ League List Fragment ] Ġshowing Ġle ag ues , Ġand Ġa Ċ Ġ* Ġ[ League List Fragment ] Ġshowing Ġevents . Ċ Ġ*/ Ċ class ĠLeague Event Tabbed Fragment Ġ: ĠTab bed Fragment (), ĊĠĠĠĠĠĠĠ ĠList Fragment . List Fragment Delegate , ĊĠĠĠĠĠĠĠ ĠLeague Dialog . League Dialog Delegate , ĊĠĠĠĠĠĠĠ ĠI Statistics Context Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" League Event Tab Fragment " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ BO W LER Ġ= Ġ"${ TAG }_ bow ler " ĊĊĠĠĠĠĠĠĠ Ġenum Ġclass ĠTab Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLe ag ues , ĠEvents ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġmap Ġ= ĠTab . values (). associate By ( Tab :: ordinal ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġfrom Int ( type : ĠInt ) Ġ= Ġmap [ type ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget Title (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLe ag ues Ġ-> ĠR . string . le ag ues ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvents Ġ-> ĠR . string . events ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( bow ler : ĠB ow ler ): ĠLeague Event Tabbed Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠLeague Event Tabbed Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= ĠBundle (). apply Ġ{ Ġput Parcelable ( ARG _ BO W LER , Ġb ow ler ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġstatistics Providers : ĠList < Statistics Provider > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġb ow ler Ġ= Ġb ow ler ĊĠĠĠĠĠĠĠ Ġreturn @ lazy Ġif Ġ( bow ler Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray ListOf < Statistics Provider >( Statistics Provider . B ow ler Statistics ( bow ler )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty List < Statistics Provider >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġb ow ler : ĠB ow ler ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġle ague Fragment : ĠLeague List Fragment ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfind Fragment By Position ( Tab . Le ag ues . ordinal ) Ġas ? ĠLeague List Fragment ĊĊĠĠĠ Ġprivate Ġval Ġevent Fragment : ĠLeague List Fragment ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfind Fragment By Position ( Tab . Events . ordinal ) Ġas ? ĠLeague List Fragment ĊĊĠĠĠ Ġ// ĠMARK : ĠLeague Event Tabbed Fragment ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġb ow ler Ġ= Ġarguments ?. get Parcelable ( ARG _ BO W LER ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠMARK : ĠBase Fragment ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Toolbar Title () Ġ{ ĊĠĠĠĠĠĠĠ Ġb ow ler ?. let Ġ{ Ġnavigation Activity ?. set Toolbar Title ( it . name ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠMARK : ĠTab bed Fragment ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Pager Adapter ( tab Count : ĠInt ): ĠFragment Pager Adapter Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLeague Event Pager Adapter ( child FragmentManager , Ġtab Count , Ġb ow ler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Tabs ( tab Layout : ĠTab Layout ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( tab Ġin ĠTab . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab Layout . add Tab ( tab Layout . new Tab (). setText ( tab . getTitle ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Tab Switch ( new Tab : ĠInt ) Ġ{} ĊĊĠĠĠ Ġ// ĠMARK : ĠI Floating ActionButton Handler ĊĊĠĠĠ Ġoverride Ġfun Ġget Fab Image (): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . drawable . ic _ add ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Fab Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( Tab . from Int ( current Tab )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTab . Le ag ues Ġ-> Ġprompt Add Or Edit League ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTab . Events Ġ-> Ġprompt Add Or Edit League ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException ("$ current Tab Ġis Ġnot Ġa Ġvalid Ġtab Ġfor ĠLeague Event Tabbed Fragment ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠMARK : ĠList Fragment Delegate ĊĊĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( item : ĠI Ident ifiable , Ġlong Press : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item Ġis ĠLeague ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( long Press ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprompt Add Or Edit League ( item . is Event , Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Series ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAnalytics . track Select League ( item . is Pract ice , Ġitem . is Event ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" League Event Tabbed Fragment Ġcan Ġonly Ġhandle ĠLeague Ġand Ġitem Ġis Ġ$ item ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Deleted ( item : ĠI Ident ifiable ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAnalytics . track Delete League () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠMARK : ĠLeague Dialog Delegate ĊĊĠĠĠ Ġoverride Ġfun Ġon Finish League ( league : ĠLeague ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġif Ġ( league . is Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Fragment ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġle ague Fragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfragment ?. refresh List ( league ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonDelete League ( league : ĠLeague ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġif Ġ( league . is Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Fragment ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġle ague Fragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfragment ?. refresh List ( league ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠMARK : ĠPrivate Ġfunctions ĊĊĠĠĠ Ġprivate Ġfun Ġprompt Add Or Edit League ( is Event : ĠBoolean , Ġle ague : ĠLeague ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġb ow ler Ġ= Ġb ow ler Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġnew Fragment Ġ= ĠLeague Dialog . newInstance ( bow ler , Ġle ague , Ġis Event ) ĊĠĠĠĠĠĠĠ Ġfragment Navigation ?. push Dialog Fragment ( new Fragment ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Series ( league : ĠLeague ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( league . is Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Event ( league ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Fragment Ġ= ĠSeries List Fragment . newInstance ( league ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Navigation ?. push Fragment ( new Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlaunch Event ( league : ĠLeague ) Ġ{ ĊĠĠĠĠĠĠĠ Ġassert ( league . is Event ) Ġ{ Ġ" You Ġcan Ġonly Ġcall Ġlaunch Event Ġwith ... Ġevents ." Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġlaunch ( Android ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Series Ġ= ĠSeries . fetch All ( context , Ġle ague ). await (). first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Fragment Ġ= ĠGame Controller Fragment . newInstance ( Series Provider . B ow ler Series ( event Series , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Navigation ?. push Fragment ( new Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠMARK : ĠLeague Event Pager Adapter ĊĊĠĠĠ Ġclass ĠLeague Event Pager Adapter ( ĊĠĠĠĠĠĠĠ Ġfragment Manager : ĠFragment Manager , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtab Count : ĠInt , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġb ow ler : ĠB ow ler ? ĊĠĠĠ Ġ) Ġ: ĠFragment Pager Adapter ( fragment Manager ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count () Ġ= Ġtab Count ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠBase Fragment ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb ow ler ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( Tab . from Int ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTab . Le ag ues Ġ-> ĠLeague List Fragment . newInstance ( bow ler , ĠLeague List Fragment . Companion . Show . Le ag ues ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTab . Events Ġ-> ĠLeague List Fragment . newInstance ( bow ler , ĠLeague List Fragment . Companion . Show . Events ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ