/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠSch ib st ed ĠProducts Ġ& ĠTechnology ĠAS . ĠLicensed Ġunder Ġthe Ġterms Ġof Ġthe ĠMIT Ġlicense . ĠSee ĠLICENSE Ġin Ġthe Ġproject Ġroot . Ċ Ġ*/ Ċ Ċ package Ġcom . sch ib st ed . account . ui . login . screen . information Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . LinearLayout Ċ import Ġcom . sch ib st ed . account . common . tracking . Tracking Data Ċ import Ġcom . sch ib st ed . account . model . error . Client Error Ċ import Ġcom . sch ib st ed . account . ui . R Ċ import Ġcom . sch ib st ed . account . ui . login . Base Login Activity Ċ import Ġcom . sch ib st ed . account . ui . ui . Flow Fragment Ċ import Ġcom . sch ib st ed . account . ui . ui . Input Field Ċ import Ġcom . sch ib st ed . account . ui . ui . component . Birth day Input View Ċ import Ġcom . sch ib st ed . account . ui . ui . component . Input Field View Ċ import Ġcom . sch ib st ed . account . ui . ui . rule . Validation Rule Ċ import Ġkotlinx . android . synt hetic . main . sch acc _ required _ fields _ layout .* Ċ Ċ class ĠRequired Fields Fragment Ġ: ĠFlow Fragment < Required Fields Contract . Presenter >(), ĠRequired Fields Contract . View Ġ{ ĊĠĠĠ Ġoverride Ġval ĠisActive : ĠBoolean Ġget () Ġ= Ġis Added ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrequired Fields Presenter : ĠRequired Fields Contract . Presenter ĊĠĠĠ Ġprivate Ġval Ġgenerated Fields : ĠMutable Map < String , ĠInput Field > Ġ= Ġmutable Map Of () ĊĠĠĠ Ġlateinit Ġvar Ġmissing Field : ĠSet < String > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . sch acc _ required _ fields _ layout , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġprimary Action View Ġ= Ġview . findViewById ( R . id . required _ fields _ button _ continue ) ĊĠĠĠĠĠĠĠ Ġprimary Action View . setOnClickListener Ġ{ Ġupdate Missing Fields () Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġvar Ġlast View : ĠInput Field View ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ ĠRequired Fields . values (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmissing Field . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( contains ( it . fields Value )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenerated View Ġ= Ġgenerate Field ( it . fields Value , Ġit . title Res , Ġit . validation Rule ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfields _ container . addView ( generated View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerated Fields [ it . fields Value ] Ġ= Ġgenerated View ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast View Ġ= Ġgenerated View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlast View ?. set I me Action ( Editor Info . IME _ ACTION _ NEXT , Ġ{ Ġ_, Ġaction Id , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ NEXT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Missing Fields () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set I me Action Ġfalse ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Missing Fields () Ġ{ ĊĠĠĠĠĠĠĠ ĠBase Login Activity . tracker ?. event Interaction ( Tracking Data . Interaction Type . SEND , ĠTracking Data . Screen . REQUIRED _ FIELDS ) ĊĠĠĠĠĠĠĠ Ġrequired Fields Presenter . update Missing Fields ( generated Fields ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Field ( fieldName : ĠString , Ġtitle Res : ĠInt , Ġvalidation Rule : ĠValidation Rule ): ĠInput Field View Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgenerated View : ĠInput Field View Ġ= Ġif Ġ( fieldName Ġ== ĠRequired Fields . B IR TH DAY . fields Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB irth day Input View ( context ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Field View . Builder ( context , Ġvalidation Rule ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set InputType ( Editor Info . TYPE _ CLASS _ TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setError ( R . string . sch acc _ required _ fields _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( title Res ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠLinearLayout . LayoutParams ( LinearLayout . LayoutParams . MATCH _ PARENT , ĠLinearLayout . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġparams . set Margins ( 0 , Ġ 0 , Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTyped Value . apply Dimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTyped Value . COMPLEX _ UNIT _ DIP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINFORMATION _ FIELD _ M ARGIN _ BOTTOM , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . display Metrics ). toInt ()) ĊĊĠĠĠĠĠĠĠ Ġgenerated View . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠ Ġreturn Ġgenerated View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhide Errors () Ġ{ ĊĠĠĠĠĠĠĠ Ġgenerated Fields . forEach Ġ{ Ġit . value . hide Error View () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Presenter ( presenter : ĠRequired Fields Contract . Presenter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequired Fields Presenter Ġ= Ġpresenter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Error Dialog ( error : ĠClient Error , ĠerrorMessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġdisplay Error Dialog ( error , ĠerrorMessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠRequired Fields Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠRequired Fields Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠINFORMATION _ FIELD _ M ARGIN _ BOTTOM Ġ= Ġ 2 8 F ĊĠĠĠ Ġ} Ċ } Ċ