package Ġio . payment high way . sdk . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . util . Attribute Set Ċ import Ġio . payment high way . sdk . Card Brand Ċ import Ġio . payment high way . sdk . R Ċ import Ġio . payment high way . sdk . model . Card Data Ċ Ċ internal Ġconst Ġval ĠDefault CV CL ength Ġ= Ġ 3 Ċ Ċ /** Ċ Ġ* ĠSpecial ized Ġtext Ġfield Ġfor Ġcollecting Ġsecurity Ġcode . Ċ Ġ*/ Ċ class ĠSecurity Code EditText Ġ: ĠEditText Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSecurity Ġcode Ġvalidation , Ġformat Ġand Ġhint Ġdepend Ġof Ġthe Ġcard Ġbrand ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġcard Brand : Ġ() Ġ-> ĠCard Brand ? Ġ= Ġ{ Ġnull Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠText Input EditText Ġconstructor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġsuper ( context ) Ġ{} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠText Input EditText Ġconstructor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) Ġ{} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠText Input EditText Ġconstructor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) Ġ{} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitialize Ġthe ĠEditText Ġwith Ġspecific Ġformatter , Ġvalidator Ġand Ġerror Ġtexts ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠCard Data . format Security Code ĊĠĠĠĠ Ġ* Ġ@ see ĠCard Data . is Security Code Valid ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġerror Text Ġ= Ġresources . getString ( R . string . error _ security _ code ) ĊĠĠĠĠĠĠĠ Ġformat Ġ= Ġ{ ĠCard Data . format Security Code ( it , Ġcard Brand ()) Ġ} ĊĠĠĠĠĠĠĠ Ġvalidate Ġ= Ġ{ ĠCard Data . is Security Code Valid ( it , Ġcard Brand ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġhint Ġtext Ġcan Ġchange Ġdepending Ġof Ġthe Ġcard Ġbrand ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Focus Changed ( focused : ĠBoolean , Ġdirection : ĠInt , Ġpreviously Focused Rect : ĠRect ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcv v L enght Ġ= Ġcard Brand ()?. cv c Length ?. max () Ġ?: ĠDefault CV CL ength ĊĠĠĠĠĠĠĠ Ġhint Text Ġ= Ġresources . getString ( if Ġ( cv v L enght Ġ== ĠDefault CV CL ength ) ĠR . string . security _ code _ hint _ 3 Ġelse ĠR . string . security _ code _ hint _ 4 ) ĊĠĠĠĠĠĠĠ Ġsuper . on Focus Changed ( focused , Ġdirection , Ġpreviously Focused Rect ) ĊĠĠĠ Ġ} Ċ }