package Ġcom . eng ency . black jack Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . ActionBar Drawer Toggle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . view . Gravity Compat Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . eng ency . black jack . stores . Product Store Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġcom . google . android . material . navigation . Navigation View ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠNavigation View . On Navigation ItemSelected Listener , ĠOn Request Data Update Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġlogged In : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproperties : ĠGroup Property Manager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproduct Store : ĠProduct Store ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtv Points : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġll Main Container : ĠLinearLayout ĊĊĠĠĠ Ġprivate Ġval Ġfragment Products : ĠProduct Overview Ġ= ĠProduct Overview () ĊĠĠĠ Ġprivate Ġval Ġfragment Scores : ĠScore Overview Ġ= ĠScore Overview () ĊĊĠĠĠ Ġprivate Ġvar Ġfragment Active : ĠFragment ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdrawer Layout : ĠDraw er Layout ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġdata Update Receiver : ĠData Update Receiver Ġ= ĠData Update Receiver () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġthis . properties Ġ= ĠGroup Property Manager ( application Context ) ĊĠĠĠĠĠĠĠ Ġthis . product Store Ġ= ĠProduct Store ( application Context ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( this . properties . has (" token ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogged In Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen View () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Products . setOn Refresh Data ( this ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogged In Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Login Activity . new Intent ( this )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( logged In ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Points () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Filter Ġ= ĠIntent Filter (" refresh ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Receiver ( data Update Receiver , Ġintent Filter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġif Ġ( logged In ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunregister Receiver ( data Update Receiver ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen View () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar : ĠToolbar Ġ= ĠfindViewById ( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġdrawer Layout Ġ= ĠfindViewById ( R . id . drawer _ layout ) ĊĠĠĠĠĠĠĠ Ġval Ġnav View : ĠNavigation View Ġ= ĠfindViewById ( R . id . nav _ view ) ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġtv Points Ġ= ĠfindViewById ( R . id . tv _ points ) ĊĠĠĠĠĠĠĠ Ġll Main Container Ġ= ĠfindViewById ( R . id . ll _ main _ container ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġopen Ġcorrect Ġfragment ĊĊĠĠĠĠĠĠĠ Ġopen Fragment ( fragment Active Ġ?: Ġfragment Products ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfab : ĠFloating ActionButton Ġ= ĠfindViewById ( R . id . fab ) ĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠBar code Scanner Activity . new Intent ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtoggle Ġ= ĠAction Bar Drawer Toggle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġdrawer Layout , Ġtoolbar , ĠR . string . navigation _ drawer _ open , ĠR . string . navigation _ drawer _ close ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġdrawer Layout !!. add Drawer Listener ( toggle ) ĊĠĠĠĠĠĠĠ Ġtoggle . sync State () ĊĊĠĠĠĠĠĠĠ Ġnav View . set Navigation ItemSelected Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġnavigation Ġheader Ġprops ĊĠĠĠĠĠĠĠ Ġval Ġnavigation View Ġ= ĠfindViewById < View >( R . id . nav _ view ) Ġas ĠNavigation View ĊĠĠĠĠĠĠĠ Ġval Ġheader View Ġ= Ġnavigation View . getHeader View ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġtv GroupName Ġ= Ġheader View . findViewById ( R . id . tv _ group _ name ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġtv GroupName . text Ġ= Ġproperties . get (" name ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Points () Ġ{ ĊĠĠĠĠĠĠĠ Ġtv Points . text Ġ= ĠString . format ( resources . getString ( R . string . points _ amount ), Ġproperties . get (" points ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( drawer Layout !!. is Drawer Open ( Gravity Compat . START )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer Layout !!. close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Navigation ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġnavigation Ġview Ġitem Ġclicks Ġhere . ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ products Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Fragment ( fragment Products ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ scores Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Fragment ( fragment Scores ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ logout Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperties . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Login Activity . new Intent ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdrawer Layout !!. close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Fragment ( fragment : ĠFragment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ!== Ġthis . fragment Active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Transaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . fragments . forEach Ġ{ Ġc Fragment Ġ-> Ġfragment Transaction . remove ( c Fragment ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Transaction . add ( R . id . ll _ main _ container , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Transaction . commit () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . fragment Active Ġ= Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonUpdate Requested ( cascade : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" F CM ", Ġ" update Ġyeah ") ĊĊĠĠĠĠĠĠĠ Ġproperties . reload () ĊĠĠĠĠĠĠĠ Ġtv Points . text Ġ= ĠString . format ( resources . getString ( R . string . points _ amount ), Ġproperties . get (" points ")) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( cascade ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Products . on Update Requested () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Intent ( context : ĠContext ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIntent ( context , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ