package Ġcom . hop ovo . mobile . android . prep exam . app . common . validation Ċ Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . text . method . Password Transformation Method Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . EditText Ċ import Ġcom . google . android . material . text field . TextInput Layout Ċ import Ġtim ber . log . Tim ber Ċ Ċ object ĠEdit TextUtils Ġ{ ĊĊĠĠĠ Ġconst Ġval ĠNAME _ REG ULAR _ EXPRESSION Ġ= Ġ"^ [ \\ u 0 0 C 0 - \\ u 1 FFF \\ u 2 C 0 0 - \\ uD 7 FF \\ w | \\ s | \\ ' |- ]+ $" Ġ// ĠSee : Ġhttps :// stackoverflow . com / a / 1 5 0 0 7 8 / 5 1 8 9 2 0 0 ĊĠĠĠ Ġconst Ġval ĠPASSWORD _ REG ULAR _ EXPRESSION Ġ= Ġ"^ [ \\ w ]{ 6 , }$ " Ġ// ĠFirebase Ġasks Ġfor Ġ 6 Ġcharacters , Ġat Ġleast ĊĠĠĠ Ġconst Ġval ĠNO _ ERROR _ MESSAGE Ġ= Ġ"" ĊĊĠĠĠ Ġfun Ġclear Error ( edit Text : ĠEditText ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( edit Text . parent Ġ!= Ġnull Ġ&& Ġedit Text . parent Ġis ĠText Input Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// (( TextInput Layout ) Ġedit Text . getParent ()). setError Enabled ( false ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( edit Text . parent Ġas ĠText Input Layout ). error Ġ= ĠNO _ ERROR _ MESSAGE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( edit Text . parent Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġedit Text . parent . parent Ġ!= Ġnull Ġ&& Ġedit Text . parent . parent Ġis ĠText Input Layout ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// (( TextInput Layout ) Ġedit Text . getParent (). getParent ()). setError Enabled ( false ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( edit Text . parent . parent Ġas ĠText Input Layout ). error Ġ= ĠNO _ ERROR _ MESSAGE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . error Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Amount ( edit Text : ĠEditText ?): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( edit Text Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCurrency Utils . parse Amount ( getText ( edit Text )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetText ( edit Text : ĠEditText ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġedit Text ?. text ?. toString () Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhandle View Password ( password Field : ĠEditText ?, Ġevent : ĠMotion Event ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( password Field Ġ== Ġnull Ġ|| Ġevent Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġselected Position Ġ= Ġpassword Field . selection End ĊĊĠĠĠĠĠĠĠ Ġif Ġ( event . action Ġ== ĠMotion Event . ACTION _ DOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Field . transformation Method Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( event . action Ġ== ĠMotion Event . ACTION _ UP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Field . transformation Method Ġ= ĠPassword Transformation Method () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpassword Field . setSelection ( selected Position , Ġselected Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠisEmpty ( edit Text : ĠEditText , Ġmessage : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠisEmpty Ġ= Ġtest IsEmpty ( edit Text ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( edit Text . visibility Ġ!= ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetError ( edit Text , Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear Error ( edit Text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠisEmpty ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠisEmpty ( message : ĠString , Ġvar arg Ġedit Texts : ĠEditText ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠisEmpty Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfor Ġ( edit Text Ġin Ġedit Texts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isEmpty ( edit Text , Ġmessage )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisEmpty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠisEmpty ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠisValid ( edit Text Validator : ĠEditText Validator ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠisValid ( edit Text Validator , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠisValid ( edit Text Validator : ĠEditText Validator , Ġclear Error : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠisValid Ġ= Ġedit Text Validator . isValid ĊĠĠĠĠĠĠĠ Ġif Ġ(! isValid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġedit Text Validator . build ErrorMessage () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d ( errorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetError ( edit Text Validator . edit Text , ĠerrorMessage ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( clear Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear Error ( edit Text Validator . edit Text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠisValid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠisValid ( var arg Ġedit Text Validators : ĠEditText Validator ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠisValid Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġfor Ġ( edit Text Validator Ġin Ġedit Text Validators ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisValid Ġ= ĠisValid Ġ&& ĠisValid ( edit Text Validator , ĠisValid ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠisValid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset ( edit Text : ĠEditText ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġedit Text ?. setText ("") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetError ( edit Text : ĠEditText , Ġerror String : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( edit Text . parent Ġ!= Ġnull Ġ&& Ġedit Text . parent Ġis ĠText Input Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( edit Text . parent Ġas ĠText Input Layout ). isError Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( edit Text . parent Ġas ĠText Input Layout ). error Ġ= Ġerror String ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( edit Text . parent Ġ!= Ġnull Ġ&& Ġedit Text . parent . parent Ġ!= Ġnull Ġ&& Ġedit Text . parent . parent Ġis ĠText Input Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( edit Text . parent . parent Ġas ĠText Input Layout ). isError Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( edit Text . parent . parent Ġas ĠText Input Layout ). error Ġ= Ġerror String ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . error Ġ= Ġerror String ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetError ( edit Text : ĠEditText ?, Ġerror String Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( edit Text Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetError ( edit Text , Ġedit Text . resources . getString ( error String Id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest IsEmpty ( edit Text : ĠEditText ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġedit Text Ġ== Ġnull Ġ|| ĠText Utils . isEmpty ( getText ( edit Text )) Ġ&& Ġedit Text . visibility Ġ== ĠView . VISIBLE ĊĠĠĠ Ġ} Ċ } Ċ