package Ġka ist . ic lab . abc . foreground . fragment Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġka ist . ic lab . abc . R Ċ import Ġka ist . ic lab . abc . common . ABC Exception Ċ import Ġka ist . ic lab . abc . common . base . Base Fragment Ċ import Ġka ist . ic lab . abc . common . type . Load Status Ċ import Ġka ist . ic lab . abc . common . util .* Ċ import Ġka ist . ic lab . abc . foreground . activity . Experiment Part icipation Activity Ċ import Ġka ist . ic lab . abc . foreground . dialog . Survey Preview Dialog Fragment Ċ import Ġka ist . ic lab . abc . foreground . listener . Error Watcher Ċ import Ġkotlinx . android . synt hetic . main . fragment _ experiment _ base .* Ċ import Ġkotlinx . android . synt hetic . main . view _ experiment _ optional _ info .* ĊĊ Ċ class ĠExperiment Optional Info Fragment Ġ: ĠBase Fragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠExperiment Part icipation Activity . Part icipation ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġurl Watcher : ĠError Watcher ĊĊĠĠĠ Ġinterface ĠOn Optional Info Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Optional Info Submitted ( group Info : ĠString ?, Ġsurvey Url : ĠString ?) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ experiment _ base , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġsetup View () ĊĠĠĠĠĠĠĠ Ġsetup Listener () ĊĠĠĠĠĠĠĠ Ġsetup Observer () ĊĊĠĠĠĠĠĠĠ Ġbind View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup View () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinner View Ġ= Ġlayout Inflater . inflate ( R . layout . view _ experiment _ optional _ info , Ġscroll View , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġsection Item . set ContentView ( inner View ) ĊĊĠĠĠĠĠĠĠ Ġurl Watcher Ġ= ĠError Watcher ( ed t Survey Link , ĠgetString ( R . string . ed t _ error _ url _ invalid )) Ġ{ ĠFormat Utils . validate Url ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġbtn Survey Preview . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSurvey Preview Dialog Fragment . newInstance ( ed t Survey Link . edit Text ?. text ?. toString ()). show ( fragment Manager , ĠTAG ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbutton . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠOn Optional Info Listener )?. on Optional Info Submitted ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Info Ġ= Ġed t Experiment Group . edit Text ?. text ?. toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsurvey Url Ġ= Ġed t Survey Link . edit Text ?. text ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Observer () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( require Activity ()). get ( Experiment Part icipation Activity . Part icipation ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ ĠviewModel . step 2 State . remove Observer s ( this ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . step 2 State . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Survey Preview . isEnabled Ġ= Ġit ?. status Ġ!= ĠLoad Status . RUNNING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġed t Survey Link . isEnabled Ġ= Ġit ?. status Ġ!= ĠLoad Status . RUNNING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġed t Experiment Group . isEnabled Ġ= Ġit ?. status Ġ!= ĠLoad Status . RUNNING ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ?. status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Status . RUNNING Ġ-> Ġbutton . start With Ġ() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Status . SUCCESS Ġ-> Ġbutton . suc ceed With ( false ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠExperiment Part icipation Activity )?. request Next Step ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Status . FAILED Ġ-> Ġbutton . failed With Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Utils . show Toast ( context , Ġwhen ( it . error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠABC Exception Ġ-> Ġit . error . getError String Res () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . error _ general _ error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsection Item . setHeader ( getString ( R . string . label _ enter _ survey _ check )) ĊĠĠĠĠĠĠĠ Ġbutton . text Ġ= ĠgetString ( R . string . btn _ experiment _ save _ and _ next ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġed t Survey Link . edit Text ?. remove TextChanged Listener ( url Watcher ) ĊĠĠĠĠĠĠĠ Ġbutton . setOnClickListener ( null ) ĊĠĠĠĠĠĠĠ Ġbtn Survey Preview . setOnClickListener ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠExperiment Optional Info Fragment () ĊĠĠĠ Ġ} Ċ }