package Ġjp . co . sor am its u . map . presentation . places . add Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . activity . result . contract . Activity Result Contract Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . transition .* Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġjp . co . sor am its u . map . R Ċ import Ġjp . co . sor am its u . map . ext . to Position Ċ import Ġjp . co . sor am its u . map . presentation . places . add . image . Photo Fragment Ċ import Ġjp . co . sor am its u . map . presentation . places . add . image . Photo Sh ower Ċ import Ġjp . co . sor am its u . map . presentation . places . add . schedule . Add Schedule Fragment Ċ import Ġjp . co . sor am its u . map . presentation . places . add . schedule . Place Proposal ViewModel Ċ import Ġjp . co . sor am its u . map . presentation . places . add . schedule . Screen Ċ Ċ class ĠPro pose Place Activity Ġ: ĊĠĠĠ ĠAppCompatActivity ( R . layout . sm _ activity _ place _ proposal ), ĠPhoto Sh ower Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġplace Proposal ViewModel : ĠPlace Proposal ViewModel ĊĊĠĠĠ Ġ@ Experimental Std lib Api ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġplace Proposal ViewModel Ġ= ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider . New Instance Factory () ĊĠĠĠĠĠĠĠ Ġ) [ Place Proposal ViewModel :: class . java ] ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġintent . extras ?. get Parcelable < LatLng >( EXTRA _ POSITION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġintent . extras ?. getString ( EXTRA _ ADDRESS ). or Empty () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace Proposal ViewModel . address Ġ= Ġaddress ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace Proposal ViewModel . position Ġ= Ġposition . to Position () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . container , ĠPlace Proposal Fragment (), Ġ" Place Proposal Fragment ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġplace Proposal ViewModel . screen . observe ( this ) Ġ{ Ġscreen Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( screen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠScreen . Place Proposal Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . container , ĠPlace Proposal Fragment (), Ġ" Place Proposal Fragment ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠScreen . Change Position Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . container , ĠSelect Point On Map Fragment (), Ġ" Select Point On Map ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠScreen . Add Schedule Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . container , ĠAdd Schedule Fragment (), Ġ" Schedule Fragment ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Photo ( photo Uri : ĠUri , Ġshared View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġphoto Fragment Ġ= ĠPhoto Fragment . newInstance ( photo Uri ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared Element Enter Transition Ġ= ĠShared Photo Transition () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenter Transition Ġ= ĠF ade () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared Element Return Transition Ġ= ĠShared Photo Transition () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Shared Element ( shared View , Ġshared View . transition Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtodo : Ġuse Ġreplace Ġwhen Ġsource Ġfragment 's Ġscroll Ġposition Ġand Ġdata Ġwill Ġbe Ġstored ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . container , Ġphoto Fragment , Ġ" Photo Fragment ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠShared Photo Transition Ġ: ĠTransition Set () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġordering Ġ= ĠORDER ING _ TO GET HER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Transition ( Change Bounds ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Transition ( Change Transform ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Transition ( Change Image Transform ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠContract Ġ: ĠActivity Result Contract < Contract . Params , ĠBoolean >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠParams ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġposition : ĠLat Lng , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġaddress : ĠString ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Intent ( context : ĠContext , Ġinput : ĠParams ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIntent ( context , ĠPro pose Place Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( EXTRA _ POSITION , Ġinput . position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( EXTRA _ ADDRESS , Ġinput . address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġparse Result ( result Code : ĠInt , Ġintent : ĠIntent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠresultCode Ġ== ĠActivity . RESULT _ OK ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA _ POSITION Ġ= Ġ" jp . co . sor am its u . map . presentation . places . add . Position " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA _ ADDRESS Ġ= Ġ" jp . co . sor am its u . map . presentation . places . add . Address " ĊĠĠĠ Ġ} Ċ } Ċ