package Ġcom . ax el _ stein . glu co se _ tracker . ui . edit . edit _ ins ul in Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . navigation . nav Args Ċ import Ġcom . ax el _ stein . glu co se _ tracker . R Ċ import Ġcom . ax el _ stein . glu co se _ tracker . databinding . Activity Edit Ins ul in Binding Ċ import Ġcom . ax el _ stein . glu co se _ tracker . ui . dialogs . Confirm Dialog Ċ import Ġcom . ax el _ stein . glu co se _ tracker . ui . edit . edit _ ins ul in _ log . Edit Ins ul in Log Activity Args Ċ import Ġcom . ax el _ stein . glu co se _ tracker . utils . hide Keyboard Ċ import Ġcom . ax el _ stein . glu co se _ tracker . utils . ui .* Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . android . material . sn ackbar . Snackbar . LENGTH _ SHORT Ċ Ċ class ĠEdit Ins ul in Activity Ġ: ĠAppCompatActivity (), ĠConfirm Dialog . On Confirm Listener Ġ{ ĊĠĠĠ Ġprivate Ġval Ġargs : ĠEdit Ins ul in Log Activity Args Ġby Ġnav Args () ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠEdit Ins ul in ViewModel Ġby Ġview Models Ġ{ ĠEdit Ins ul in Factory ( this , Ġargs . id ) Ġ} ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Edit Ins ul in Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Edit Ins ul in Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġsetup Toolbar () ĊĠĠĠĠĠĠĠ Ġsetup Editor () ĊĠĠĠĠĠĠĠ Ġsetup Type Spinner () ĊĊĠĠĠĠĠĠĠ Ġset View Visible ( args . id Ġ!= Ġ 0 L , Ġbinding . btn Toggle Active ) ĊĠĠĠĠĠĠĠ Ġbinding . btn Toggle Active . setOnClickListener Ġ{ ĠviewModel . toggle Active () Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . active LiveData . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Toggle Active . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Text ( if Ġ( it ) ĠR . string . action _ suspend _ med ication _ t aking Ġelse ĠR . string . action _ resume _ med ication _ t aking ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon Resource ( if Ġ( it ) ĠR . drawable . icon _ pause Ġelse ĠR . drawable . icon _ play ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . showMessage LiveData . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġit . getContent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( msg Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( binding . root , Ġmsg , ĠLEN GTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . action Finish LiveData . observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . handle Event () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Toolbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( binding . toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Show Title Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġbinding . toolbar . set Navigation OnClickListener Ġ{ Ġfinish () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Editor () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . edit Title . setup Editor Ġ{ Ġtext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . setTitle ( text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . title LiveData . observe ( this , Ġ{ Ġtext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . edit Title . set Editor Text ( text ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . error Empty Title LiveData . observe ( this , Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . input Layout Title . show Empty FieldError ( error ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Type Spinner () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . type Spinner . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Focus ChangeListener Ġ{ Ġ_, Ġhas Focus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Focus ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard ( this @ Edit Ins ul in Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow DropDown () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . type Spinner . setup Spinner ( binding . input Layout Type ) Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . setType ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . type Spinner . set Spinner Items ( resources . getString Array ( R . array . ins ul in _ types )) ĊĊĠĠĠĠĠĠĠ ĠviewModel . type LiveData . observe ( this , Ġ{ Ġtype Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . type Spinner . set Spinner Selection ( type ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . activity _ editor , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġmenu ?. find Item ( R . id . menu _ delete )?. isVisible Ġ= Ġargs . id Ġ!= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ save Ġ-> ĠviewModel . save () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ delete Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfirm Dialog . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( R . string . dialog _ title _ confirm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. message ( R . string . dialog _ msg _ delete _ ins ul in ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. positive Btn Text ( R . string . action _ delete ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. negative Btn Text ( R . string . action _ cancel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Confirm ( tag : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . delete () ĊĠĠĠ Ġ} Ċ }