package Ġde . ad ors ys . mobile Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . google . android . material . text field . TextInput EditText Ċ import Ġde . ad ors ys . mobile . data . Person Ċ import Ġde . ad ors ys . mobile . data . Person Repository Ċ import Ġjava . util .* ĊĊ Ċ class ĠEdit Person Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfirst name EditText : ĠText Input EditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsecond name EditText : ĠText Input EditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcompany EditText : ĠText Input EditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġemail EditText : ĠText Input EditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġaddress EditText : ĠText Input EditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġphone EditText : ĠText Input EditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġurl EditText : ĠText Input EditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġphoto EditText : ĠText Input EditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsave Button : ĠButton ĊĊĠĠĠ Ġprivate Ġvar Ġexecute Mode : ĠString ? Ġ= Ġnull ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ edit _ profil ) ĊĊĠĠĠĠĠĠĠ Ġfirst name EditText Ġ= ĠfindViewById ( R . id . firstname _ text _ input ) ĊĠĠĠĠĠĠĠ Ġsecond name EditText Ġ= ĠfindViewById ( R . id . second name _ text _ input ) ĊĠĠĠĠĠĠĠ Ġcompany EditText Ġ= ĠfindViewById ( R . id . company _ text _ input ) ĊĠĠĠĠĠĠĠ Ġemail EditText Ġ= ĠfindViewById ( R . id . email _ text _ input ) ĊĠĠĠĠĠĠĠ Ġaddress EditText Ġ= ĠfindViewById ( R . id . address _ text _ input ) ĊĠĠĠĠĠĠĠ Ġphone EditText Ġ= ĠfindViewById ( R . id . phone _ text _ input ) ĊĠĠĠĠĠĠĠ Ġurl EditText Ġ= ĠfindViewById ( R . id . url _ text _ input ) ĊĠĠĠĠĠĠĠ Ġphoto EditText Ġ= ĠfindViewById ( R . id . photo _ text _ input ) ĊĠĠĠĠĠĠĠ Ġsave Button Ġ= ĠfindViewById ( R . id . save Button ) ĊĊĠĠĠĠĠĠĠ Ġval Ġperson Ġ= Ġintent . get Parcelable Extra < Person >( EXTRA _ PERSON ) ĊĠĠĠĠĠĠĠ Ġexecute Mode Ġ= Ġif Ġ( person Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Person Data ( person ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( R . string . edit _ activity _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEXEC UTE _ MODE _ UPDATE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( R . string . new _ person _ activity _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEXEC UTE _ MODE _ WRITE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsave Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( execute Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEXEC UTE _ MODE _ UPDATE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPerson Repository . update Person ( get Person Data ( person )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEXEC UTE _ MODE _ WRITE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPerson Repository . write Person ( get Person Data ( person )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġphoto EditText . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . ACTION _ P ICK , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . INTERNAL _ CONTENT _ URI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). setType (" image / jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType (" image / jpeg "). setType (" image / png "), ĠSELECT _ IMAGE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠSELECT _ IMAGE Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Image : ĠUri Ġ= Ġdata ?. data Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfilePath Column Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Media Store . Images . Media . DATA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor : ĠCursor ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Resolver . query ( selected Image , ĠfilePath Column , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor ?. moveTo First () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcolumnIndex : ĠInt Ġ= Ġcursor ?. getColumnIndex ( filePath Column [ 0 ]) Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpicture Path : ĠString Ġ= Ġcursor ?. getString ( column Index ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor ?. close () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView : ĠImageView Ġ= ĠfindViewById ( R . id . image _ view ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Bitmap ( Bitmap Factory . decode File ( picture Path )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto EditText . setText ( picture Path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Person Data ( person : ĠPerson ?) Ġ= ĠPerson ( ĊĠĠĠĠĠĠĠ Ġperson ?. id Ġ?: ĠUUID . randomUUID (). toString (), ĊĠĠĠĠĠĠĠ Ġif Ġ( firstname EditText . text . toString (). isNotEmpty ()) Ġfirst name EditText . text . toString () Ġelse Ġperson ?. firstName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"", ĊĠĠĠĠĠĠĠ Ġif Ġ( second name EditText . text . toString (). isNotEmpty ()) Ġsecond name EditText . text . toString () Ġelse Ġperson ?. second Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"", ĊĠĠĠĠĠĠĠ Ġif Ġ( phone EditText . text . toString (). isNotEmpty ()) Ġphone EditText . text . toString () Ġelse Ġperson ?. phone ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"", ĊĠĠĠĠĠĠĠ Ġif Ġ( address EditText . text . toString (). isNotEmpty ()) Ġaddress EditText . text . toString () Ġelse Ġperson ?. ad ress ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"", ĊĠĠĠĠĠĠĠ Ġif Ġ( company EditText . text . toString (). isNotEmpty ()) Ġcompany EditText . text . toString () Ġelse Ġperson ?. company ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"", ĊĠĠĠĠĠĠĠ Ġif Ġ( email EditText . text . toString (). isNotEmpty ()) Ġemail EditText . text . toString () Ġelse Ġperson ?. email ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"", ĊĠĠĠĠĠĠĠ Ġif Ġ( url EditText . text . toString (). isNotEmpty ()) Ġurl EditText . text . toString () Ġelse Ġperson ?. url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"", ĊĠĠĠĠĠĠĠ Ġif Ġ( photo EditText . text . toString (). isNotEmpty ()) Ġphoto EditText . text . toString () Ġelse Ġperson ?. imageUrl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġset Person Data ( person : ĠPerson ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfirst name EditText . setText ( person . firstName ) ĊĠĠĠĠĠĠĠ Ġsecond name EditText . setText ( person . second Name ) ĊĠĠĠĠĠĠĠ Ġcompany EditText . setText ( person . company ) ĊĠĠĠĠĠĠĠ Ġemail EditText . setText ( person . email ) ĊĠĠĠĠĠĠĠ Ġaddress EditText . setText ( person . ad ress ) ĊĠĠĠĠĠĠĠ Ġphone EditText . setText ( person . phone ) ĊĠĠĠĠĠĠĠ Ġurl EditText . setText ( person . url ) ĊĠĠĠĠĠĠĠ Ġphoto EditText . setText ( person . imageUrl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEXEC UTE _ MODE _ WRITE Ġ= Ġ" write " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEXEC UTE _ MODE _ UPDATE Ġ= Ġ" update " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA _ PERSON Ġ= Ġ" extra - person " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSELECT _ IMAGE Ġ= Ġ 8 9 9 9 ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Intent ( context : ĠContext , Ġperson : ĠPerson ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( context , ĠEdit Person Activity :: class . java ). putExtra ( EXTRA _ PERSON , Ġperson ) ĊĠĠĠ Ġ} Ċ } Ċ