package Ġdev . t rot ro h ailer . driver . main Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . ActionBar Drawer Toggle Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . net . to Uri Ċ import Ġandroidx . core . view . Gravity Compat Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġcom . google . android . material . navigation . Navigation View Ċ import Ġdev . t rot ro h ailer . driver . R Ċ import Ġdev . t rot ro h ailer . driver . about . About Fragment Ċ import Ġdev . t rot ro h ailer . driver . databinding . Activity Home Binding Ċ import Ġdev . t rot ro h ailer . driver . ear nings . E arning s Fragment Ċ import Ġdev . t rot ro h ailer . driver . profile . Profile Fragment Ċ import Ġdev . t rot ro h ailer . driver . tri ps . Tri ps Fragment Ċ import Ġdev . t rot ro h ailer . driver . util . Navigation Host Ċ import Ġdev . t rot ro h ailer . driver . view model . Driver ViewModel Ċ import Ġdev . t rot ro h ailer . shared . base . Base Activity Ċ import Ġdev . t rot ro h ailer . shared . glide . load Ċ import Ġdev . t rot ro h ailer . shared . util . should Close Drawer From Back Press Ċ import Ġdev . t rot ro h ailer . shared . widget . No op Window Insets Listener Ċ import Ġorg . k oin . android . ext . android . get Ċ Ċ class ĠHome Activity Ġ: ĠBase Activity (), ĠNavigation Host , ĊĠĠĠ ĠNavigation View . On Navigation ItemSelected Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Home Binding ĊĠĠĠ Ġprivate Ġvar Ġcurrent Nav Id Ġ= ĠNAV _ ID _ NONE ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ home ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ home ) ĊĠĠĠĠĠĠĠ Ġsetup Nav Host ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Nav Host ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . content Container . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION ĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġthe Ġcontent ĠViewGroup Ġignore Ġin sets Ġso Ġthat Ġit Ġdoes Ġnot Ġuse Ġthe Ġdefault Ġpadding ĊĠĠĠĠĠĠĠ Ġbinding . content Container . setOn Apply Window Insets Listener ( No op Window Insets Listener ) ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). replace ( R . id . content _ container , ĠHome Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĊĠĠĠĠĠĠĠ Ġ// ĠToggle Ġhandler ĊĠĠĠĠĠĠĠ Ġval Ġtoggle Ġ= ĠAction Bar Drawer Toggle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . drawer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . toolbar , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . open _ drawer , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . close _ drawer ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbinding . drawer . add Drawer Listener ( toggle ) ĊĠĠĠĠĠĠĠ Ġtoggle . sync State () ĊĠĠĠĠĠĠĠ Ġbinding . nav View . set Navigation ItemSelected Listener ( this ) ĊĠĠĠĠĠĠĠ Ġbinding . nav View . setChecked Item ( binding . nav View . menu . find Item ( R . id . navigation _ home )) ĊĊĠĠĠĠĠĠĠ Ġwith ( binding . nav View . getHeader View ( 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠviewModel : ĠDriver ViewModel Ġ= Ġget () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . driver . observe ( this @ Home Activity , ĠObserver Ġ{ Ġdriver Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . findViewById < ImageView >( R . id . user _ avatar ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload ( driver . avatar ?. to Uri (), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . findViewById < TextView >( R . id . user _ name ). text Ġ= Ġdriver . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister Toolbar With Navigation ( toolbar : ĠToolbar ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Bar Configuration Ġ= ĠApp Bar Configuration ( TOP _ LEVEL _ DEST IN ATIONS , Ġbinding . drawer ) ĊĠĠĠĠĠĠĠ Ġ// toolbar . setup With Nav Controller ( nav Controller , Ġapp Bar Configuration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Restore InstanceState ( savedInstanceState : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Restore InstanceState ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġcurrent Nav Id Ġ= Ġbinding . nav View . checked Item ?. itemId Ġ?: ĠNAV _ ID _ NONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthe Ġdrawer Ġis Ġopen , Ġthe Ġbehavior Ġchanges Ġbased Ġon Ġthe ĠAPI Ġlevel . ĊĠĠĠĠĠĠĠĠ Ġ* ĠWhen Ġgesture Ġnav Ġis Ġenabled Ġ( Q + ), Ġwe Ġwant Ġback Ġto Ġexit Ġwhen Ġthe Ġdrawer Ġis Ġopen . ĊĠĠĠĠĠĠĠĠ Ġ* ĠWhen Ġbutton Ġnavigation Ġis Ġenabled Ġ( on ĠQ Ġor Ġpre - Q ) Ġwe Ġwant Ġto Ġclose Ġthe Ġdrawer Ġon Ġback . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġif Ġ( binding . drawer . is Drawer Open ( binding . nav View ) Ġ&& Ġbinding . drawer . should Close Drawer From Back Press ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose Drawer () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclose Drawer () Ġ= Ġbinding . drawer . close Drawer ( Gravity Compat . START ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĠKey Ġfor Ġan Ġint Ġextra Ġdefining Ġthe Ġinitial Ġnavigation Ġtarget . Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ NAV IG ATION _ ID Ġ= Ġ" extra . NAV IG ATION _ ID " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNAV _ ID _ NONE Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTOP _ LEVEL _ DEST IN ATIONS Ġ= Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ home , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ tri ps , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ ear ning , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ settings , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ about ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Navigation ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . toolbar . title Ġ= Ġitem . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . content _ container , ĠHome Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ tri ps Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . toolbar . title Ġ= Ġitem . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . content _ container , ĠTri ps Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ ear ning Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . toolbar . title Ġ= Ġitem . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . content _ container , ĠE arning s Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . toolbar . title Ġ= Ġitem . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . content _ container , ĠProfile Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ about Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . toolbar . title Ġ= Ġitem . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . content _ container , ĠAbout Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġclose Drawer () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ Ċ } Ċ