package Ġteam 1 6 . easy tracker Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . ActionBar Drawer Toggle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . view . forEach Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . google . android . material . navigation . Navigation View ĊĊ Ċ class ĠHome Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġval Ġdashboard Fragment Ġ= ĠDashboard Fragment () ĊĠĠĠ Ġval Ġtrack ings Fragment Ġ= ĠTrack ings Fragment () ĊĠĠĠ Ġval Ġbluetooth Devices Fragment Ġ= ĠBluetooth Devices Fragment () ĊĠĠĠ Ġval Ġcompany Fragment Ġ= ĠCompany Fragment () ĊĠĠĠ Ġval Ġprofile Fragment Ġ= ĠProfile Fragment () ĊĠĠĠ Ġval Ġcompany Admin Fragment Ġ= ĠCompany Admin Fragment () ĊĠĠĠ Ġval Ġcreate Company Fragment Ġ= ĠCreate Company Fragment () ĊĊĠĠĠ Ġlateinit Ġvar Ġcurrent Fragment : ĠFragment ĊĊĠĠĠ Ġlateinit Ġvar Ġnavigation View Ġ: ĠNavigation View ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . home activity ) ĊĊĠĠĠĠĠĠĠ ĠMy Application . update Resources ( this ) ĊĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace ( R . id . fl Fragment , Ġdashboard Fragment , Ġ" TAG _ DASH BOARD ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Fragment Ġ= Ġdashboard Fragment ĊĊĠĠĠĠĠĠĠ Ġval Ġstring builder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġstring builder . append (( My Application . logged In Worker ?. firstName ?. get ( 0 ) Ġ?: Ġ"")) ĊĠĠĠĠĠĠĠ Ġstring builder . append (( My Application . logged In Worker ?. lastName ?. get ( 0 ) Ġ?: Ġ"")) ĊĊĠĠĠĠĠĠĠ Ġval Ġdrawer Layout Ġ= ĠfindViewById < Drawer Layout >( R . id . drawer Layout ) ĊĠĠĠĠĠĠĠ Ġnavigation View Ġ= ĠfindViewById ( R . id . navigation View ) ĊĠĠĠĠĠĠĠ Ġval Ġtop AppBar Ġ= ĠfindViewById < Toolbar >( R . id . top AppBar ) ĊĊĠĠĠĠĠĠĠ Ġval Ġheader Ġ= Ġnavigation View . getHeader View ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġheader Name Ġ= Ġheader . findViewById < TextView >( R . id . tv Nav Header Name ) ĊĠĠĠĠĠĠĠ Ġheader Name . text Ġ= ĠMy Application . logged In Worker ?. firstName Ġ+ Ġ" Ġ" Ġ+ ĠMy Application . logged In Worker ?. lastName ĊĊĠĠĠĠĠĠĠ Ġval Ġheader Button Ġ= Ġheader . findViewById < Button >( R . id . btn Nav Header Profile ) ĊĠĠĠĠĠĠĠ Ġheader Button . text Ġ= Ġstring builder . toString () ĊĠĠĠĠĠĠĠ Ġheader Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetCurrent Fragment ( profile Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation View . menu . forEach Ġ{ Ġmenu Item Ġ-> Ġmenu Item . isChecked Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Name . setTextColor ( Color . parse Color ("# 1 6 8 AAD ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer Layout . close Drawer ( Gravity . LEFT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( top AppBar ) ĊĊĠĠĠĠĠĠĠ Ġval Ġaction Bar Drawer Toggle Ġ= ĠAction Bar Drawer Toggle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer Layout , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop AppBar , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . open Drawer , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . close Drawer ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġdrawer Layout . add Drawer Listener ( action Bar Drawer Toggle ) ĊĠĠĠĠĠĠĠ Ġaction Bar Drawer Toggle . sync State () ĊĠĠĠĠĠĠĠ Ġaction Bar Drawer Toggle . is Drawer Indicator Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġnavigation View . set Navigation ItemSelected Listener Ġ{ Ġmenu Item Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader Name . setTextColor ( Color . BLACK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( menuItem . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item Dashboard Ġ-> ĠsetCurrent Fragment ( dashboard Fragment , Ġ" TAG _ DASH BOARD ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item Track ings Ġ-> ĠsetCurrent Fragment ( track ings Fragment , Ġ" TAG _ TRACK INGS ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item Bluetooth Devices Ġ-> ĠsetCurrent Fragment ( bluetooth Devices Fragment , Ġ" TAG _ BL U ETO OTH DEVICES ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item Create Company Ġ-> ĠsetCurrent Fragment ( create Company Fragment , Ġ" TAG _ CREATE COMP ANY ", Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item Overview Ġ-> ĠsetCurrent Fragment ( company Fragment , Ġ" TAG _ OVER VIEW ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item Add Employee Ġ-> ĠsetCurrent Fragment ( company Admin Fragment , Ġ" TAG _ AD DE MP LOY EE ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item Logout Ġ-> Ġlogout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer Layout . close Drawer ( Gravity . LEFT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmenu Items Ġ= Ġnavigation View . menu ĊĠĠĠĠĠĠĠ Ġif Ġ( My Application . logged In Worker ?. company Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Items . find Item ( R . id . item Add Employee ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Items . find Item ( R . id . item Overview ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Items . find Item ( R . id . item Add Employee ). isVisible Ġ= ĠMy Application . logged In Worker ?. admin !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Items . find Item ( R . id . item Create Company ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmenu Items . find Item ( R . id . item Dashboard ). isChecked Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠMy Application . menu Ġ= Ġmenu ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Fragment . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetCurrent Fragment ( fragment : ĠFragment , Ġtag : ĠString Ġ= Ġ"", ĠaddTo Back Stack : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace ( R . id . fl Fragment , Ġfragment , Ġtag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( addTo Back Stack ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Back Stack ( tag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Fragment Ġ= Ġfragment ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlogout () Ġ{ ĊĠĠĠĠĠĠĠ ĠMy Application . logged In Worker Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠLogin Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ CLEAR _ TOP Ġor ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġdouble Back To Exit Ġ= Ġfalse ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") Ġ// Handler Ġshould Ġnot Ġbe Ġused Ġanymore ĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif ( support FragmentManager . back Stack Entry Count Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( double Back To Exit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Back To Exit Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Please Ġclick ĠBACK Ġagain Ġto Ġexit ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ Ġdouble Back To Exit Ġ= Ġfalse Ġ}, Ġ 2 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Ġ= Ġnavigation View . getHeader View ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader . findViewById < TextView >( R . id . tv Nav Header Name ). setTextColor ( Color . BLACK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( dashboard Fragment . isVisible ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation View . menu . find Item ( R . id . item Dashboard ). isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( track ings Fragment . isVisible ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation View . menu . find Item ( R . id . item Track ings ). isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( company Fragment . isVisible ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation View . menu . find Item ( R . id . item Overview ). isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( company Admin Fragment . isVisible ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation View . menu . find Item ( R . id . item Add Employee ). isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( create Company Fragment . isVisible ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation View . menu . find Item ( R . id . item Create Company ). isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( profile Fragment . isVisible ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation View . menu . forEach Ġ{ Ġmenu Item Ġ-> Ġmenu Item . isChecked Ġ= Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . findViewById < TextView >( R . id . tv Nav Header Name ). setTextColor ( Color . parse Color ( R . color . color Primary . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ Ġpermissions : ĠArray < out ĠString >, ĊĠĠĠĠĠĠĠ Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġcurrent Fragment . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} Ċ } Ċ