/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠSh rey as ĠPat il Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġdev . sh rey as pat il . not y . simple app . view Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġandroidx . lifecycle . as LiveData Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġandroidx . navigation . ui . navigate Up Ċ import Ġandroidx . navigation . ui . on Nav Destination Selected Ċ import Ġandroidx . navigation . ui . setup ActionBar With Nav Controller Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġdev . sh rey as pat il . not y . simple app . R Ċ import Ġdev . sh rey as pat il . not y . core . preference . Preference Manager Ċ import Ġdev . sh rey as pat il . not y . simple app . databinding . MainActivity Binding Ċ import Ġdev . sh rey as pat il . not y . utils . ext . hide Ċ import Ġdev . sh rey as pat il . not y . utils . ext . show Ċ import Ġjavax . inject . Inject Ċ Ċ @ Android EntryPoint Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpreference Manager : ĠPreference Manager ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Bar Configuration : ĠApp Bar Configuration ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Theme ( R . style . App Theme ) Ġ// ĠSet ĠApp Theme Ġbefore Ġsetting Ġcontent Ġview . ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠMainActivity Binding . inflate ( layout Inflater ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( binding . top AppBar ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnav Host Fragment : ĠNav Host Fragment Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Fragment ById ( R . id . nav _ host _ fragment ) Ġas ĠNav Host Fragment ? Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġobserve Nav Elements ( binding , Ġnav Host Fragment . nav Controller ) ĊĊĠĠĠĠĠĠĠ Ġwith ( nav Host Fragment . nav Controller ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Bar Configuration Ġ= ĠApp Bar Configuration ( graph ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup ActionBar With Nav Controller ( this , Ġapp Bar Configuration ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġobserve Ui Mode Preferences () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Ui Mode Preferences () Ġ{ ĊĠĠĠĠĠĠĠ Ġpreference Manager . ui Mode Flow . as LiveData (). observe ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġui Mode Ġ= Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> ĠAppCompat Delegate . MODE _ N IGHT _ YES ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> ĠAppCompat Delegate . MODE _ N IGHT _ NO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( ui Mode ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ) Ġ= Ġitem . on Nav Destination Selected ( ĊĠĠĠĠĠĠĠ Ġfind Nav Controller ( R . id . nav _ host _ fragment ) ĊĠĠĠ Ġ) Ġ|| Ġsuper . on Options ItemSelected ( item ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up () Ġ= Ġfind Nav Controller ( R . id . nav _ host _ fragment ) ĊĠĠĠĠĠĠĠ Ġ. navigate Up ( app Bar Configuration ) ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Nav Elements ( ĊĠĠĠĠĠĠĠ Ġbinding : ĠMainActivity Binding , ĊĠĠĠĠĠĠĠ Ġnav Controller : ĠNav Controller ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnav Controller . add On Destination Changed Listener Ġ{ Ġ_, Ġdestination , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( destination . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . login Fragment Ġ-> Ġbinding . top AppBar . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . register Fragment Ġ-> Ġbinding . top AppBar . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġbinding . top AppBar . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ