package Ġcom . bon nj al al . s ow it mapbox test . ui . main Ċ Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . bon nj al al . s ow it mapbox test . model . Polygon Model Ċ import Ġcom . bon nj al al . s ow it mapbox test . repository . Polygon Repository Ċ import Ġcom . mapbox . geojson . Point Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠMain ViewModel ( private Ġval Ġrepository : ĠPolygon Repository ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet ĠAll Ġstored Ġpoly gons ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġall Poly gons : ĠLive Data < List < Polygon Model >> Ġ= Ġrepository . all Poly gons . as LiveData () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġinsert Ġnew Ġpolygon Ġdata ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinsert ( polygon Model : ĠPolygon Model ) Ġ= ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . insert ( polygon Model ) ĊĠĠĠĠĠĠĠ Ġ// select Spinner Position (- 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġdelete Ġa Ġpolygon Ġitem ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdelete ( polygon Model : ĠPolygon Model ) Ġ= ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . delete ( polygon Model ) ĊĠĠĠĠĠĠĠ Ġselect Spinner Position ( 0 ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġval Ġmutable SelectedItem Ġ= ĠMutable LiveData < Polygon Model >() ĊĊĠĠĠ Ġval Ġselected Item : ĠLive Data < Polygon Model > Ġget () Ġ= Ġmutable SelectedItem ĊĊĠĠĠ Ġfun Ġselect Item ( item : ĠPolygon Model ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable SelectedItem . value Ġ= Ġitem !! ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġprivate Ġval Ġmutable All Item Ġ= ĠMutable LiveData < ArrayList < Point >>() ĊĠĠĠ Ġval Ġmap List Point : ĠLive Data < ArrayList < Point >> Ġget () Ġ= Ġmutable All Item ĊĊĠĠĠ Ġfun Ġset Map List Point ( map List : ĠArrayList < Point >) Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable All Item . value Ġ= Ġmap List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmutable Spinner Selected Position Ġ= ĠMutable LiveData < Int >() ĊĊĠĠĠ Ġval Ġspinner Selected Position : ĠLive Data < Int > Ġget () Ġ= Ġmutable Spinner Selected Position ĊĊĠĠĠ Ġfun Ġselect Spinner Position ( position : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable Spinner Selected Position . value Ġ= Ġposition !! ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠMain ViewModel Factory ( private Ġval Ġrepository : ĠPolygon Repository ) Ġ: ĠViewModel Provider . Factory Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel > Ġcreate ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( model Class . isAssignableFrom ( Main ViewModel :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMain ViewModel ( repository ) Ġas ĠT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Unknown ĠViewModel Ġclass ") ĊĠĠĠ Ġ} Ċ } Ċ