package Ġguide me . vol unte ers . ui . fragments . vol unteer . details . users Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . app . Fragment Pager Adapter Ċ import Ġandroid . text . Html Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġguide me . vol unte ers . R Ċ import Ġguide me . vol unte ers . domain . Privilege Ċ import Ġguide me . vol unte ers . domain . Vol unteer Ċ import Ġguide me . vol unte ers . helpers . Container Ċ import Ġguide me . vol unte ers . helpers . datas ervices . datasource . User DataSource Ċ import Ġguide me . vol unte ers . helpers . datas ervices . errors . ErrorMessage Ċ import Ġguide me . vol unte ers . helpers . datas ervices . errors . ErrorType Ċ import Ġguide me . vol unte ers . ui . fragments . base . Base Fragment Ċ import Ġguide me . vol unte ers . ui . fragments . base . Fragment Configuration Ċ import Ġguide me . vol unte ers . ui . fragments . vol unteer . details . Vol unteer Project List Fragment Ċ import Ġio . reactivex . rx kotlin . subscribe By Ċ import Ġkotlinx . android . synt hetic . main . vol unteer _ details _ account .* Ċ import Ġkotlinx . android . synt hetic . main . vol unteer _ details _ fragment .* Ċ Ċ class ĠVol unteer Details Fragment Ġ: ĠBase Fragment < Vol unteer Details Presenter >(), ĠI Vol unteer Details Fragment Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠV OL UN TE ER _ ARG Ġ= Ġ" vol unteer " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġaction Edit : ĠMenuItem ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġaction Delete : ĠMenuItem ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter Ġ= ĠVol unteer Details Presenter ( this ) ĊĠĠĠĠĠĠĠ Ġconfiguration Ġ= ĠFragment Configuration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Layout ( R . layout . vol unteer _ details _ fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Menu ( R . menu . vol unte ers _ details _ menu ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show Back Arrow () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ Ġval Ġvol unteer Ġ= Ġpresenter ?. vol unteer ĊĠĠĠĠĠĠĠ Ġif Ġ( vol unteer Ġ== Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠContainer . database . get Vol unte ers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġ-> Ġit . id Ġ== Ġvol unteer . id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe By Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Next Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter ?. vol unteer Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonComplete Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate View () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction Bar . hide Options () ĊĠĠĠĠĠĠĠ Ġval Ġvol unteer Ġ= Ġpresenter ?. vol unteer ĊĠĠĠĠĠĠĠ Ġif Ġ( vol unteer Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpresenter ?. vol unteer ?. let Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġv . person . addresses . entries . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsub Header Ġ= Ġv . person . email ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( address Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Header Ġ+= ĠgetString ( R . string . person _ short _ description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Header Ġ= Ġsub Header . replace ("% city ", Ġaddress . value . city ). replace ("% zip ", Ġaddress . value . zip ). replace ("% street ", Ġaddress . value . street ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Bar . setTitle ("${ v . person . name } Ġ${ v . person . surname }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Sub Header ?. text Ġ= ĠHtml . from Html ( sub Header ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Header ?. text Ġ= Ġ"${ v . person . name } Ġ${ v . person . surname }" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . person . avatar Image Uri . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . with ( context ). load ( v . person . avatar Image Uri ). into ( iv Image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Short Description ?. text Ġ= Ġv . person . person ality Description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Description ?. text Ġ= Ġv . person . description ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser DataSource Ġ= ĠContainer . dataSource Container . getDataSource ( User DataSource . ID ) Ġas ĠUser DataSource ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser DataSource ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . item . observable . subscribe By ( onNext Ġ= Ġ{ ĠcurrentUser Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisible Ġ= ĠcurrentUser . person . privilege Ġ== ĠPriv ilege . ADMIN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Edit ?. isVisible Ġ= Ġvisible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Delete ?. isVisible Ġ= Ġvisible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview Pager ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . adapter Ġ= Ġobject Ġ: ĠFragment Pager Adapter ( child FragmentManager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠFragment ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpresenter ?. vol unteer ?. let Ġ{ Ġvol unteer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfragment : ĠFragment ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġfragment Ġ= ĠVol unteer Details Account Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġfragment Ġ= ĠVol unteer Project List Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . put Serializable (" vol unteer ", Ġvol unteer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment ?. arguments Ġ= Ġbundle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ let Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Page Title ( position : ĠInt ): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġreturn ĠgetString ( R . string . details _ label ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġreturn ĠgetString ( R . string . projects _ label ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsl iding Tab Layout ?. set ViewPager ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Arguments ( args : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set Arguments ( args ) ĊĠĠĠĠĠĠĠ Ġpresenter ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . vol unteer Ġ= Ġargs ?. get ( VOL UN TE ER _ ARG ) Ġas ĠVol unteer ? ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?, Ġinflater : ĠMenu Inflater ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĊĠĠĠĠĠĠĠ Ġaction Edit Ġ= Ġmenu ?. find Item ( R . id . action _ edit ) ĊĠĠĠĠĠĠĠ Ġaction Delete Ġ= Ġmenu ?. find Item ( R . id . action _ delete ) ĊĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġpresenter ?. vol unteer ĊĠĠĠĠĠĠĠ Ġif Ġ( v Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġaction Delete ?. setOn MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContainer . database . delete Vol unteer ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe By ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Activity . go Back () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Activity . show Error ( ErrorMessage ( ErrorType . DELETE _ FAILED , Ġ" Delete ĠVol unteer Ġfailed ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġaction Edit ?. setOn MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Activity . open Edit UserDetails ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }