package Ġcom . j pb . scratch t appy Ċ Ċ import Ġandroid . app . Pending Intent . getActivity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ 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 Ġandroidx . preference . Preference Manager Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġcom . google . android . material . navigation . Navigation View Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Bar Configuration : ĠApp Bar Configuration ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck First Run () ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar : ĠToolbar Ġ= ĠfindViewById ( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfab : ĠFloating ActionButton Ġ= ĠfindViewById ( R . id . fab ) ĊĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , Ġ" Tap , ĠT ap , ĠT ap !", ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction (" Action ", Ġnull Ġ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ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 2 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ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 _ gallery , ĠR . id . nav _ slide show ), Ġdrawer Layout ) ĊĠĠĠĠĠĠĠ Ġsetup ActionBar With Nav Controller ( nav Controller , Ġapp Bar Configuration ) ĊĠĠĠĠĠĠĠ Ġnav View . setup With Nav Controller ( nav Controller ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġ ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmenu Inflater : ĠMenu Inflater Ġ= Ġget Menu Inflater () ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== ĠR . id . vir ion ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGo ing Ġfrom ĠMainActivity Ġto ĠNotes Editor Activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( getApplicationContext (), ĠV irus Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== ĠR . id . setting ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGo ing Ġfrom ĠMainActivity Ġto ĠNotes Editor Activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( getApplicationContext (), ĠSettings :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġfind Nav Controller ( R . id . nav _ host _ fragment 2 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnav Controller . navigate Up ( app Bar Configuration ) Ġ|| Ġsuper . on Support Navigate Up () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġcheck First Run () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠP REF S _ NAME Ġ= Ġ" My Prefs File " ĊĠĠĠĠĠĠĠ Ġval ĠP REF _ VERSION _ CODE _ KEY Ġ= Ġ" version _ code " ĊĠĠĠĠĠĠĠ Ġval ĠDO ES NT _ EXIST Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġcurrent Ġversion Ġcode ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Version Code : ĠInt Ġ= ĠBuild Config . VERSION _ CODE ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġsaved Ġversion Ġcode ĊĠĠĠĠĠĠĠ Ġval Ġprefs : ĠSharedPreferences Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġsaved Version Code Ġ= Ġprefs . getInt ( PRE F _ VERSION _ CODE _ KEY , ĠDO ES NT _ EXIST ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġfor Ġfirst Ġrun Ġor Ġupgrade ĊĠĠĠĠĠĠĠ Ġif Ġ( current Version Code Ġ== Ġsaved Version Code ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġjust Ġa Ġnormal Ġrun ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( saved Version Code Ġ== ĠDO ES NT _ EXIST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( application Context , ĠIntro Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠThis Ġis Ġa Ġnew Ġinstall Ġ( or Ġthe Ġuser Ġcleared Ġthe Ġshared Ġpreferences ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( current Version Code Ġ> Ġsaved Version Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( application Context , ĠUpdate Intro Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠThis Ġis Ġan Ġupgrade ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġthe Ġshared Ġpreferences Ġwith Ġthe Ġcurrent Ġversion Ġcode ĊĠĠĠĠĠĠĠ Ġprefs . edit (). put Int ( PRE F _ VERSION _ CODE _ KEY , Ġcurrent Version Code ). apply () ĊĠĠĠ Ġ} Ċ }