package Ġid . fro go box . foot ball apps . mvp . team Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Network Info Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġid . fro go box . foot ball apps . R Ċ import Ġid . fro go box . foot ball apps . R . drawable . ic _ add _ to _ favorites Ċ import Ġid . fro go box . foot ball apps . R . drawable . ic _ added _ to _ favorites Ċ import Ġid . fro go box . foot ball apps . models . Favorite Team Ċ import Ġid . fro go box . foot ball apps . models . Team Ċ import Ġid . fro go box . foot ball apps . mvp . favorite . Favorite Team Detail Presenter Ċ import Ġid . fro go box . foot ball apps . utils . Bundle Helper . team Id Helper Ċ import Ġid . fro go box . foot ball apps . utils . Bundle Helper . team Overview Helper Ċ import Ġid . fro go box . foot ball apps . utils . Pager Adapter Ċ import Ġid . fro go box . foot ball apps . utils . TestContext Provider Ċ import Ġid . fro go box . foot ball apps . utils . invisible Ċ import Ġid . fro go box . foot ball apps . utils . visible Ċ import Ġkotlinx . android . synt hetic . main . activity _ team _ detail .* Ċ Ċ class ĠTeam Detail Activity Ġ: ĠAppCompatActivity (), ĠTeam Callback < Team > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġteams : ĠMutable List < Team > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpresenter : ĠTeam Presenter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcr ud Presenter Detail : ĠF avorite Team Detail Presenter ĊĠĠĠ Ġprivate Ġvar Ġactive Network : ĠNetwork Info ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġid : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġmenu Item : ĠMenu ? Ġ= Ġnull ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTRING _ EXTRA _ TEAM Ġ= Ġ" string _ extra _ team " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTRING _ EXTRA _ FA V OR ITE Ġ= Ġ" string _ extra _ fav " ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ team _ detail ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. elevation Ġ= Ġ 0 f ĊĊĠĠĠĠĠĠĠ Ġval Ġpager Adapter Ġ= ĠP ager Adapter ( support FragmentManager ) ĊĠĠĠĠĠĠĠ Ġpager Adapter . add Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTeam Overview Fragment (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . tab _ team _ overview ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġview pager _ team . adapter Ġ= Ġpager Adapter ĊĠĠĠĠĠĠĠ Ġtab layout _ team . setup With ViewPager ( view pager _ team ) ĊĊĠĠĠĠĠĠĠ Ġval Ġconnectivity Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠ Ġactive Network Ġ= Ġconnectivity Manager . active Network Info ĊĠĠĠĠĠĠĠ Ġcr ud Presenter Detail Ġ= ĠF avorite Team Detail Presenter ( this , Ġteams , Ġswipe Refresh _ team Detail ) ĊĠĠĠĠĠĠĠ Ġshow Detail Data () ĊĊĠĠĠĠĠĠĠ Ġswipe Refresh _ team Detail . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar _ team Detail . invisible () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Detail Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Detail Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnected : ĠBoolean Ġ= Ġactive Network ?. isConnected Ġ== Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( STRING _ EXTRA _ TEAM )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Team Ġ= Ġintent . get Parcelable Extra < Team >( STRING _ EXTRA _ TEAM ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġteam ID Ġ= Ġdata Team . team Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġteam Over View Ġ= Ġdata Team . team Description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġteam Id Helper Ġ= Ġteam ID . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġteam Overview Helper Ġ= Ġteam Over View . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġteam ID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcr ud Presenter Detail . favorite State ( team ID ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( connected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter Ġ= ĠTeam Presenter ( this , ĠTest Context Provider ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Team Detail ById ( team ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" No ĠInternet ĠConnection ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( intent . has Extra ( STRING _ EXTRA _ FA V OR ITE )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Team Favorite Ġ= Ġintent . get Parcelable Extra < Favorite Team >( STRING _ EXTRA _ FA V OR ITE ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġteam Favorite ID Ġ= Ġdata Team Favorite . team Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġteam Favorite Over View Ġ= Ġdata Team Favorite . team Description ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġteam Id Helper Ġ= Ġteam Favorite ID . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġteam Overview Helper Ġ= Ġteam Favorite Over View . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġteam Favorite ID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcr ud Presenter Detail . favorite State ( team Favorite ID ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( connected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter Ġ= ĠTeam Presenter ( this , ĠTest Context Provider ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Team Detail ById ( team Favorite ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" No ĠInternet ĠConnection ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġteams . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext view _ detail _ team _ name . text Ġ= Ġteams [ i ]. team Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext view _ detail _ team _ year . text Ġ= Ġteams [ i ]. team For med Year ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext view _ detail _ team _ st adium . text Ġ= Ġteams [ i ]. team St adium ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load ( teams [ i ]. team Badge ). into ( image view _ detail _ team _ badge ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Favorite () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( crud Presenter Detail . is Favorite ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item ?. getItem ( 0 )?. icon Ġ= ĠContext Compat . get Drawable ( this , Ġic _ added _ to _ favorites ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item ?. getItem ( 0 )?. icon Ġ= ĠContext Compat . get Drawable ( this , Ġic _ add _ to _ favorites ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ favorite , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġmenu Item Ġ= Ġmenu ĊĠĠĠĠĠĠĠ Ġset Favorite () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . add _ to _ favorite Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( crud Presenter Detail . is Favorite ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcr ud Presenter Detail . remove From Favorite ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcr ud Presenter Detail . addTo Favorite () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcr ud Presenter Detail . is Favorite Ġ= Ġ! crud Presenter Detail . is Favorite ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Favorite () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Loading () Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar _ team Detail . visible () ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. hide () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhide Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar _ team Detail . invisible () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Result ( data : ĠList < Team >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh _ team Detail . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġteams . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġteams . addAll ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport ActionBar ?. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Failed ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġmessage , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ