package Ġcom . jav ad ude . mov iest ool bar Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Movie ViewModel 3 >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSTART ĠNEW ĠFOR ĠTO OL BAR ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById < Toolbar >( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġ// ĠEND ĠNEW ĠFOR ĠTO OL BAR ĊĊĠĠĠĠĠĠĠ Ġval Ġall Movies Ġ= ĠfindViewById < TextView >( R . id . all _ movies ) ĊĠĠĠĠĠĠĠ Ġval Ġall Act ors Ġ= ĠfindViewById < TextView >( R . id . all _ actors ) ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠfindViewById < TextView >( R . id . name ) ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= ĠfindViewById < TextView >( R . id . title ) ĊĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= ĠfindViewById < TextView >( R . id . description ) ĊĠĠĠĠĠĠĠ Ġval Ġfil mo graphy Ġ= ĠfindViewById < TextView >( R . id . fil mo graphy ) ĊĠĠĠĠĠĠĠ Ġval Ġcast Ġ= ĠfindViewById < TextView >( R . id . cast ) ĊĊĠĠĠĠĠĠĠ Ġfun ĠInt . onClick ( listener Ġ: Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < View >( this ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠR . id . button _ actor _ 1 . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . selected Actor Id . value Ġ= Ġ" a 1 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . button _ actor _ 2 . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . selected Actor Id . value Ġ= Ġ" a 2 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . button _ movie _ 1 . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . selected Movie Id . value Ġ= Ġ" m 1 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . button _ movie _ 2 . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . selected Movie Id . value Ġ= Ġ" m 2 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . button _ delete _ actor _ 1 . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . delete Actor (" a 1 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . button _ delete _ actor _ 2 . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . delete Actor (" a 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . button _ delete _ movie _ 1 . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . delete Movie (" m 1 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . button _ delete _ movie _ 2 . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . delete Movie (" m 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . button _ delete _ movie _ 3 . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . delete Movie (" m 3 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . message . observe ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfil mo graphy . text Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . all Movies . observe ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Movies . text Ġ= Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . join ToString ("\ n ") Ġ{ movie Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovie . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġ" no Ġmovies Ġin Ġdatabase " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . all Act ors . observe ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Act ors . text Ġ= Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . join ToString ("\ n ") Ġ{ actor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactor . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġ" no Ġactors Ġin Ġdatabase " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . selected Movie . observe ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . text Ġ= Ġit ?. title Ġ?: Ġ"( no Ġmovie Ġselected )" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . text Ġ= Ġit ?. description Ġ?: Ġ"( no Ġmovie Ġselected )" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . selected Actor . observe ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname . text Ġ= Ġit ?. name Ġ?: Ġ"( no Ġactor Ġselected )" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . cast 2 . observe ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcast . text Ġ= Ġit . join ToString ("\ n ") Ġ{ role Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ role . role Name }: Ġ${ role . actor . name }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . fil mo graphy . observe ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfil mo graphy . text Ġ= Ġit . join ToString ("\ n ") Ġ{ movie Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovie . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠSTART ĠNEW ĠFOR ĠTO OL BAR ĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġnext Movie Number Ġ= Ġ 1 0 ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ) Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ create _ movie Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . add Movie ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMovie (" m $ next Movie Number ", Ġ" Movie Ġ$ next Movie Number ", Ġ" Description Ġ$ next Movie Number "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRole (" m $ next Movie Number ", Ġ" a 1 ", Ġ" Random ĠHero Ġ 1 ", Ġ 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRole (" m $ next Movie Number ", Ġ" a 2 ", Ġ" Random ĠHero Ġ 2 ", Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Movie Number ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> super . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠEND ĠNEW ĠFOR ĠTO OL BAR Ċ Ċ } Ċ