package Ġcom . poll ux . digital zoo Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . coordinator layout . widget . Coordinator Layout Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġandroidx . navigation . ui . setup ActionBar With Nav Controller Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġcom . google . android . material . app bar . AppBar Layout Ċ import Ġcom . google . android . material . app bar . AppBar Layout . LayoutParams .* Ċ import Ġcom . poll ux . digital zoo . databinding . Activity Main Binding Ċ import Ġcom . poll ux . digital zoo . util . C Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" MainActivity " Ċ Ċ @ Android EntryPoint Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnav Controller : ĠNav Controller ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Bar Configuration : ĠApp Bar Configuration ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnav Host Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . find Fragment ById ( R . id . nav _ host _ fragment ) Ġas ĠNav Host Fragment ĊĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġnav Host Fragment . find Nav Controller () ĊĊĠĠĠĠĠĠĠ Ġnav Controller . add On Destination Changed Listener Ġ{ Ġ_, Ġdestination , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġbinding . coll ap sing Toolbar Layout . layout Params Ġas ĠApp Bar Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( destination . id Ġ== ĠR . id . animal s Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . bottom Navigation . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . app Bar . set Expanded ( true , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . coll ap sing Toolbar Layout . title Ġ= ĠC . COLL AP SING _ TOOL BAR _ TITLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . bottom Navigation . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . app Bar . set Expanded ( false , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . coll ap sing Toolbar Layout . title Ġ= ĠC . EMPTY _ TITLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( destination . id Ġ== ĠR . id . animal Search Fragment Ġ|| Ġdestination . id Ġ== ĠR . id . add Edit Animal Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . scroll Flags Ġ= ĠSC ROLL _ FLAG _ SCROLL Ġor ĠSC ROLL _ FLAG _ EXIT _ UNT IL _ COLL AP SED Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSC ROLL _ FLAG _ SNAP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . scroll Flags Ġ= ĠSC ROLL _ FLAG _ SCROLL Ġor ĠSC ROLL _ FLAG _ SNAP Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSC ROLL _ FLAG _ ENTER _ ALWAYS Ġor ĠSC ROLL _ FLAG _ ENTER _ ALWAYS _ COLL AP SED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdisable Drag () ĊĊĠĠĠĠĠĠĠ Ġapp Bar Configuration Ġ= ĠApp Bar Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// nav Controller . graph ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . animal s Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . add Edit Animal Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . login Fragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// set Support ActionBar ( binding . toolbar ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( binding . toolbar Home ) ĊĠĠĠĠĠĠĠ Ġsetup ActionBar With Nav Controller ( nav Controller , Ġapp Bar Configuration ) ĊĊĠĠĠĠĠĠĠ Ġbinding . bottom Navigation . setup With Nav Controller ( nav Controller ) ĊĠĠĠĠĠĠĠ Ġbinding . bottom Navigation . setOn Navigation Item Re selected Listener Ġ{ Ġ} Ġ// Ġquick Ġ& Ġdirty ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisable Drag () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġbinding . app Bar . layout Params Ġas ĠCoord inator Layout . LayoutParams ĊĠĠĠĠĠĠĠ Ġif Ġ( params . behavior Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . behavior Ġ= ĠApp Bar Layout . Behavior () ĊĠĠĠĠĠĠĠ Ġval Ġbehaviour Ġ= Ġparams . behavior Ġas ĠApp Bar Layout . Behavior ĊĠĠĠĠĠĠĠ Ġbehaviour . set Drag Callback ( object Ġ: ĠApp Bar Layout . Behavior . Drag Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcan Drag ( app Bar Layout : ĠApp Bar Layout ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnav Controller . navigate Up () Ġ|| Ġsuper . on Support Navigate Up () ĊĠĠĠ Ġ} Ċ }