package Ġcom . example . a qua Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Menu Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġandroidx . navigation . ui . navigate Up Ċ import Ġandroidx . navigation . ui . setup ActionBar With Nav Controller Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġcom . google . android . material . navigation . Navigation View ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Bar Configuration : ĠApp Bar Configuration ĊĠĠĠ Ġlateinit Ġvar Ġshared ViewModel Ġ: ĠShared ViewModel ĊĠĠĠ Ġval ĠMy PREFER ENCES Ġ= Ġ" My Prefs " ĊĠĠĠ Ġlateinit Ġvar Ġshared preferences : ĠSharedPreferences ĊĠĠĠ Ġval Ġtemp Ġ= Ġ" current temp er atur " ĊĠĠĠ Ġval Ġquality Ġ= Ġ" quality " ĊĠĠĠ Ġval Ġph Ġ= Ġ" c urren tp h " ĊĠĠĠ Ġval Ġwater Ġ= Ġ" water level " ĊĠĠĠ Ġval Ġal ge a Ġ= Ġ" al ge a " ĊĠĠĠ Ġval Ġmint emp Ġ= Ġ" mint emp " ĊĠĠĠ Ġval Ġmax temp Ġ= Ġ" max temp " ĊĠĠĠ Ġval Ġmin ph Ġ= Ġ" min ph " ĊĠĠĠ Ġval Ġmax ph Ġ= Ġ" max ph " ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar : ĠToolbar Ġ= ĠfindViewById ( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġshared preferences Ġ= Ġget SharedPreferences ( My PREFER ENCES , ĠContext . MODE _ PRIVATE ); ĊĠĠĠĠĠĠĠ Ġshared ViewModel Ġ= ĠViewModel Provider ( this ). get ( Shared ViewModel :: class . java ) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġdrawer Layout : ĠDraw er Layout Ġ= ĠfindViewById ( R . id . drawer _ layout ) ĊĠĠĠĠĠĠĠ Ġval Ġnav View : ĠNavigation View Ġ= ĠfindViewById ( R . id . nav _ view ) ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġfind Nav Controller ( R . id . nav _ host _ fragment ) ĊĠĠĠĠĠĠĠ Ġ// ĠPass ing Ġeach Ġmenu ĠID Ġas Ġa Ġset Ġof ĠI ds Ġbecause Ġeach ĊĠĠĠĠĠĠĠ Ġ// Ġmenu Ġshould Ġbe Ġconsidered Ġas Ġtop Ġlevel Ġdest inations . ĊĠĠĠĠĠĠĠ Ġapp Bar Configuration Ġ= ĠApp Bar Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ home , ĠR . id . nav _ temp er atur , ĠR . id . nav _ p H , ĠR . id . nav _ water level ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġdrawer Layout ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsetup ActionBar With Nav Controller ( nav Controller , Ġapp Bar Configuration ) ĊĠĠĠĠĠĠĠ Ġnav View . setup With Nav Controller ( nav Controller ) ĊĊĠĠĠĠĠĠĠ Ġload Model () ĊĠĠĠĠĠĠĠ Ġobserve Model () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġmenu ; Ġthis Ġadds Ġitems Ġto Ġthe Ġaction Ġbar Ġif Ġit Ġis Ġpresent . ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġfind Nav Controller ( R . id . nav _ host _ fragment ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnav Controller . navigate Up ( app Bar Configuration ) Ġ|| Ġsuper . on Support Navigate Up () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġload Model () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmid temp Ġ= Ġshared preferences . getInt ( temp , Ġ 2 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġmid quality Ġ= Ġshared preferences . getInt ( quality , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġmid ph Ġ= Ġshared preferences . get Float ( ph , Ġ 7 . 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġmid water Ġ= Ġshared preferences . getInt ( water , Ġ- 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġmid al ge a Ġ= Ġshared preferences . get Float ( al ge a , Ġ 0 . 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġmid mint emp Ġ= Ġshared preferences . getInt ( mint emp , Ġ 2 5 ) ĊĠĠĠĠĠĠĠ ĠLog . d (" mint emp 3 ", Ġmid mint emp . toString ()) ĊĠĠĠĠĠĠĠ Ġval Ġmid max temp Ġ= Ġshared preferences . getInt ( max temp , Ġ 2 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġmid min ph Ġ= Ġshared preferences . get Float ( min ph , Ġ 7 . 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġmid max ph Ġ= Ġshared preferences . get Float ( max ph , Ġ 7 . 0 f ) ĊĠĠĠĠĠĠĠ Ġshared ViewModel . set All Value ( mid temp , Ġmid quality , Ġmid ph , Ġmid water , Ġmid al ge a , Ġmid mint emp , Ġmid max temp , Ġmid min ph , Ġmid max ph ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġobserve Model () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġshared ViewModel . quality . observe Fore ver ( Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Int ( quality , Ġit ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġshared ViewModel . c urren tp h . observe Fore ver ( Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Float ( ph , Ġit ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġshared ViewModel . current temp er atur . observe Fore ver ( Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Int ( temp , Ġit ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġshared ViewModel . water level . observe Fore ver ( Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Int ( water , Ġit ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġshared ViewModel . al ge a . observe Fore ver ( Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Float ( al ge a , Ġit ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġshared ViewModel . mint emp . observe Fore ver ( Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" mint emp 1 ", Ġit . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Int ( mint emp , Ġit ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġshared ViewModel . max temp . observe Fore ver ( Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Int ( max temp , Ġit ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġshared ViewModel . min ph . observe Fore ver ( Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Float ( min ph , Ġit ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġshared ViewModel . max ph . observe Fore ver ( Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Float ( max ph , Ġit ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Int ( name : ĠString , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġshared preferences . edit () ĊĠĠĠĠĠĠĠ Ġeditor . put Int ( name , value ) ĊĠĠĠĠĠĠĠ Ġeditor . commit () ĊĠĠĠĠĠĠĠ ĠLog . d (" mint emp 2 ", Ġvalue . toString ()) ĊĠĠĠĠĠĠĠ ĠLog . d (" f rap ref ", Ġshared preferences . getInt ( mint emp , Ġ 2 5 ). toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Float ( name : ĠString , Ġvalue : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġshared preferences . edit () ĊĠĠĠĠĠĠĠ Ġeditor . put Float ( name , value ) ĊĠĠĠĠĠĠĠ Ġeditor . commit () ĊĠĠĠ Ġ} Ċ Ċ }