package Ġcom . al mar ai . alm _ ui Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . text . Input Filter Ċ import Ġandroid . text . Input Filter . Length Filter Ċ import Ġandroid . text . InputType Ċ import Ġandroid . text . method . Digits Key Listener Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . On Focus ChangeListener Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . appcompat . widget . AppCompat EditText Ċ import Ġcom . al mar ai . alm _ ui . Constants . CHANGED _ BY _ PROG Ċ import Ġcom . al mar ai . common . utils . APP _ LOCAL E Ċ import Ġjava . util .* ĊĊ Ċ /** Ċ Ġ* ĠThis Ġclass Ġis Ġthe Ġcommon Ġclass Ġfor Ġedit Ġtext Ġwith Ġno Ġkeyboard Ċ Ġ*/ Ċ @ Suppress Lint (" AppCompat Custom View ") Ċ open Ġclass ĠAl m EditText Ġ: ĠAppCompat EditText Ġ{ ĊĠĠĠ Ġ// Global ĠVariables ĊĠĠĠ Ġprivate Ġvar Ġtype Ġ= Ġ 0 ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext ?, ĊĠĠĠĠĠĠĠ Ġattrs : ĠAttributeSet ?, ĊĠĠĠĠĠĠĠ Ġdef Style : ĠInt ĊĠĠĠ Ġ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġattrs : ĠAttributeSet ? ĊĠĠĠ Ġ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . theme . obtain Styled Attributes ( attrs , ĠR . style able . Al m EditText , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġa . getInt ( R . style able . Al m EditText _ type , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStyle Attributes Type . DEFAULT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . input Type Ġ= ĠInput Type . TYPE _ CLASS _ TEXT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStyle Attributes Type . TEXT _ TYPE _ ALPH AN UM ERIC Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Al phanumeric Properties () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStyle Attributes Type . TEXT _ TYPE _ NUMBER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Numeric Properties () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStyle Attributes Type . TEXT _ TYPE _ NUMBER _ POSITIVE _ ONLY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Numeric Properties () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStyle Attributes Type . TEXT _ TYPE _ AMOUNT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Amount Properties () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStyle Attributes Type . TEXT _ TYPE _ AMOUNT _ POSITIVE _ ONLY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Amount Properties () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStyle Attributes Type . TEXT _ TYPE _ REC Y CL ER _ GRID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset RecyclerView Grid Properties () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStyle Attributes Type . TEXT _ TYPE _ QU ANT ITY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Quantity Properties () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStyle Attributes Type . TEXT _ TYPE _ QU ANT ITY _ POSITIVE _ ONLY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Quantity Properties () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa . recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Al phanumeric Properties () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Restrict Ġthe Ġuser Ġto Ġuse Ġonly ĠAL M _ Al phanumeric Ġdigits ĊĠĠĠĠĠĠĠ Ġthis . key Listener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDig its Key Listener . getInstance ( resources . getString ( R . string . alm _ al phanumeric )) ĊĠĠĠĠĠĠĠ Ġthis . filters Ġ= ĠarrayOf < Input Filter >( Al m Input Alpha Numeric Filter ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Numeric Properties () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Restrict Ġthe Ġuser Ġto Ġuse Ġonly Ġnumbers Ġwithout Ġany Ġother Ġdigits ĊĠĠĠĠĠĠĠ Ġthis . key Listener Ġ= ĠDig its Key Listener . getInstance ( resources . getString ( R . string . alm _ number )) ĊĊĠĠĠĠĠĠĠ Ġ// Set ĠLength Ġfilter . ĠRe strict ing Ġto Ġ{@ link ĠAl m EditText # MAX _ INPUT _ DIG ITS } Ġcharacters Ġonly ĊĠĠĠĠĠĠĠ Ġval Ġlength Filter Ġ= ĠLength Filter ( MAX _ INPUT _ DIG ITS ) ĊĠĠĠĠĠĠĠ Ġthis . filters Ġ= ĠarrayOf ( Al m Input Number Filter ( this ), Ġlength Filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Positive Numeric Properties () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Restrict Ġthe Ġuser Ġto Ġuse Ġonly Ġnumbers Ġwithout Ġany Ġother Ġdigits ĊĠĠĠĠĠĠĠ Ġthis . key Listener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDig its Key Listener . getInstance ( resources . getString ( R . string . alm _ number _ positive )) ĊĊĠĠĠĠĠĠĠ Ġ// Set ĠLength Ġfilter . ĠRe strict ing Ġto Ġ{@ link ĠAl m EditText # MAX _ INPUT _ DIG ITS } Ġcharacters Ġonly ĊĠĠĠĠĠĠĠ Ġval Ġlength Filter Ġ= ĠLength Filter ( MAX _ INPUT _ DIG ITS ) ĊĠĠĠĠĠĠĠ Ġthis . filters Ġ= ĠarrayOf ( Al m Input Number Filter ( this ), Ġlength Filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Amount Properties () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . input Type Ġ= ĠInput Type . TYPE _ CLASS _ NUMBER Ġ// This Ġis Ġa Ġnumber Ġvalue ĊĠĠĠĠĠĠĠ Ġthis . input Type Ġ= ĠInput Type . TYPE _ NUMBER _ FLAG _ DECIMAL Ġ// This Ġtext Ġsupports Ġdecimal Ġvalue ĊĠĠĠĠĠĠĠ Ġthis . key Listener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Digits Key Listener () // Should Ġsupport Ġminus Ġsign , Ġand Ġthis Ġtext Ġmay Ġbe Ġa Ġdecimal ĊĠĠĠĠĠĠĠ Ġthis . filters Ġ= ĠarrayOf < Input Filter >( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAl m Input Amount Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ BEFORE _ DECIMAL . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ AFTER _ DECIMAL . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Positive Amount Properties () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Amount Properties () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Digits Key Listener (): ĠDig its Key Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ> ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDig its Key Listener . getInstance ( APP _ LOCAL E , Ġtrue , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDig its Key Listener . getInstance ( true , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset RecyclerView Grid Properties () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Restrict Ġthe Ġuser Ġto Ġuse Ġonly Ġnumeric Ġdigits ĊĠĠĠĠĠĠĠ Ġthis . key Listener Ġ= ĠDig its Key Listener . getInstance ( resources . getString ( R . string . alm _ number )) ĊĊĠĠĠĠĠĠĠ Ġ// Set ĠLength Ġfilter . ĠRe strict ing Ġto Ġ{@ link ĠAl m EditText # MAX _ INPUT _ DIG ITS } Ġcharacters Ġonly ĊĠĠĠĠĠĠĠ Ġval Ġlength Filter Ġ= ĠLength Filter ( MAX _ INPUT _ DIG ITS ) ĊĠĠĠĠĠĠĠ Ġthis . filters Ġ= ĠarrayOf < Input Filter >( length Filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Quantity Properties () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Restrict Ġthe Ġuser Ġto Ġuse Ġonly Ġnumbers Ġwithout Ġany Ġother Ġdigits ĊĠĠĠĠĠĠĠ Ġthis . key Listener Ġ= ĠDig its Key Listener . getInstance ( resources . getString ( R . string . alm _ number )) ĊĊĠĠĠĠĠĠĠ Ġ// Set ĠLength Ġfilter . ĠRe strict ing Ġto Ġ{@ link ĠAl m EditText # MAX _ INPUT _ DIG ITS } Ġcharacters Ġonly ĊĠĠĠĠĠĠĠ Ġval Ġlength Filter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLength Filter ( MAX _ INPUT _ QU ANT ITY _ DIG ITS ) ĊĠĠĠĠĠĠĠ Ġthis . filters Ġ= ĠarrayOf ( Al m Input Number Filter ( this ), Ġlength Filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Positive Quantity Properties () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Restrict Ġthe Ġuser Ġto Ġuse Ġonly Ġnumbers Ġwithout Ġany Ġother Ġdigits ĊĠĠĠĠĠĠĠ Ġthis . key Listener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDig its Key Listener . getInstance ( resources . getString ( R . string . alm _ number _ positive )) ĊĊĠĠĠĠĠĠĠ Ġ// Set ĠLength Ġfilter . ĠRe strict ing Ġto Ġ{@ link ĠAl m EditText # MAX _ INPUT _ DIG ITS } Ġcharacters Ġonly ĊĠĠĠĠĠĠĠ Ġval Ġlength Filter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLength Filter ( MAX _ INPUT _ QU ANT ITY _ DIG ITS ) ĊĠĠĠĠĠĠĠ Ġthis . filters Ġ= ĠarrayOf ( Al m Input Number Filter ( this ), Ġlength Filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* Don 't Ġallow Ġthe Ġsoft Ġkeyboard Ġto Ġshow , Ġif Ġthere Ġis Ġa Ġhardware Ġkeyboard Ġavailable */ ĊĠĠĠĠĠĠĠ Ġthis . show Soft Input On Focus Ġ= Ġ! Constants . IS _ HARD WARE _ KEY BOARD _ AVAILABLE ĊĊĠĠĠĠĠĠĠ Ġ// Add Ġfocus Ġlistener , Ġwe Ġneed Ġto Ġdo Ġsome Ġafter Ġfocus Ġchange Ġvalidations , Ġas Ġsetting Ġthe Ġdecimals Ġafter Ġthe Ġdecimal Ġpoint ĊĠĠĠĠĠĠĠ Ġon Focus ChangeListener Ġ= ĠOn Focus ChangeListener Ġ{ Ġv : ĠView , Ġhas Focus : ĠBoolean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Check Ġif Ġthe Ġedit Ġtext Ġtype Ġis Ġamount Ġor Ġamount Ġpositive Ġonly ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( type Ġ== ĠStyle Attributes Type . TEXT _ TYPE _ AMOUNT Ġ|| Ġtype Ġ== ĠStyle Attributes Type . TEXT _ TYPE _ AMOUNT _ POSITIVE _ ONLY ) Ġ&& Ġ! has Focus ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġthe Ġview Ġleaves Ġthe Ġfocus ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate When Focus Is G one ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate When Focus Is G one ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġedit Text Ġ= Ġview Ġas ĠEditText ĊĊĠĠĠĠĠĠĠ Ġ// Get Ġthe Ġamount Ġtext Ġstring Ġvalue . ĊĠĠĠĠĠĠĠ Ġval Ġedit Text Value Ġ= Ġedit Text . text . toString () ĊĊĠĠĠĠĠĠĠ Ġ// Put Ġthe Ġcursor Ġat Ġthe Ġlast Ġposition ĊĠĠĠĠĠĠĠ Ġedit Text . setSelection ( edit Text Value . length ) ĊĊĠĠĠĠĠĠĠ Ġ// Check Ġif Ġthe Ġamount Ġedit Ġtext Ġdoes Ġnot Ġhave Ġdecimal Ġand Ġtotal Ġlength Ġis Ġgreater Ġthan Ġmax Ġallowed , Ġif Ġso Ġadd Ġdecimal Ġpoint Ġafter Ġmax Ġallowed Ġdigits ĊĠĠĠĠĠĠĠ Ġif Ġ(! edit Text Value . contains (".") Ġ&& Ġedit Text Value . length Ġ> ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ BEFORE _ DECIMAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġno Decimal With Ex ceeding Max Digits ( edit Text , Ġedit Text Value ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! edit Text Value . contains (".") Ġ&& Ġedit Text Value . length Ġ<= ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ BEFORE _ DECIMAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Append Ġa Ġdecimal Ġpoint Ġat Ġthe Ġend ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . append (".") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Add Ġmax Ġnumber Ġof Ġzeros Ġafter Ġthe Ġamount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ AFTER _ DECIMAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . append (" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( edit Text Value . contains (". ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate For Decimal Point ( edit Text Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate For Decimal Point ( edit Text Value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Get Ġthe Ġtext Ġafter Ġthe Ġdecimal Ġpoint . ĊĠĠĠĠĠĠĠ Ġval Ġafter Decimal Text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Value . substring ( edit Text Value . indexOf ('.') Ġ+ Ġ 1 , Ġedit Text Value . length ) ĊĊĠĠĠĠĠĠĠ Ġ// If Ġthere Ġis Ġonly Ġdecimal Ġpoint Ġwith Ġno Ġnumbers Ġthen Ġadd Ġthe Ġmax Ġnumber Ġof Ġzeros Ġat Ġend . ĊĠĠĠĠĠĠĠ Ġif Ġ( after Decimal Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ AFTER _ DECIMAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Al m EditText . append (" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( after Decimal Text . length Ġ< ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ AFTER _ DECIMAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ AFTER _ DECIMAL Ġ- Ġafter Decimal Text . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Al m EditText . append (" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCheck Ġif Ġthe Ġamount Ġedit Ġtext Ġdoes Ġnot Ġhave Ġdecimal Ġand Ġtotal Ġlength Ġis Ġgreater Ġthan Ġmax Ġallowed , Ġif Ġso Ġadd Ġdecimal Ġpoint Ġafter Ġmax Ġallowed Ġdigits ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġedit Text ĠĠĠĠĠ Ġthe Ġedit Ġtext Ġthat Ġneeds Ġto Ġbe Ġvalidated . ĊĠĠĠĠ Ġ* Ġ@ param Ġedit Text Value Ġthe Ġvalue Ġof Ġthe Ġedit Ġtext ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġno Decimal With Ex ceeding Max Digits ( ĊĠĠĠĠĠĠĠ Ġedit Text : ĠEditText , ĊĠĠĠĠĠĠĠ Ġedit Text Value : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġafter Decimal String : ĠString ĊĊĠĠĠĠĠĠĠ Ġ// Get Ġthe Ġstructured Ġstring , Ġalso Ġcheck Ġfor Ġpositive Ġand Ġnegative Ġsigns . ĊĠĠĠĠĠĠĠ Ġval ĠstringBuilder : ĠString Ġ= Ġif Ġ( edit Text Value . startsWith ("- ")) Ġedit Text Value . substring ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ BEFORE _ DECIMAL Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ) Ġ+ Ġ"." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Value . substring ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ BEFORE _ DECIMAL Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Value . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġelse Ġedit Text Value . substring ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ BEFORE _ DECIMAL . toInt () ĊĠĠĠĠĠĠĠ Ġ) Ġ+ Ġ"." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Value . substring ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ BEFORE _ DECIMAL . toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text Value . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Say Ġthe Ġfilter Ġthat Ġthe Ġupcoming Ġvalue Ġis Ġchanged Ġby Ġprogram , Ġand Ġthus Ġdon 't Ġfilter Ġthese Ġvalues . ĊĠĠĠĠĠĠĠ ĠCH ANG ED _ BY _ PROG Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// Set Ġthe Ġtotal Ġformatted Ġvalue Ġto Ġthe Ġedit Ġamount Ġtext . ĊĠĠĠĠĠĠĠ Ġedit Text . setText ( string Builder ) ĊĊĠĠĠĠĠĠĠ Ġ// Get Ġthe Ġstructured Ġstring , Ġalso Ġcheck Ġfor Ġpositive Ġand Ġnegative Ġsigns . ĊĠĠĠĠĠĠĠ Ġafter Decimal String Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . substring ( string Builder . indexOf (".") Ġ+ Ġ 1 , Ġedit Text . text . length ) ĊĊĠĠĠĠĠĠĠ Ġ// If Ġthe Ġstring Ġdoes Ġnot Ġcomplete Ġwith Ġproper Ġdecimals Ġat Ġthe Ġend , Ġadd Ġit . ĊĠĠĠĠĠĠĠ Ġif Ġ( after Decimal String . length Ġ< ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ AFTER _ DECIMAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠConstants . COUNTRY _ CUR RE NCY _ MAX _ DIG ITS _ AFTER _ DECIMAL Ġ- Ġafter Decimal String . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Say Ġthe Ġfilter Ġthat Ġthe Ġupcoming Ġvalue Ġis Ġchanged Ġby Ġprogram . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCH ANG ED _ BY _ PROG Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Now Ġchange Ġthe Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . append (" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Reset Ġthe Ġflag ĊĠĠĠĠĠĠĠ ĠCH ANG ED _ BY _ PROG Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Should Ġnot Ġexceed Ġmore Ġthan Ġ 1 0 , Ġas Ġit Ġwill Ġcross Ġthe ĠJAVA Ġint Ġrange ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMAX _ INPUT _ DIG ITS Ġ= Ġ 9 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMAX _ INPUT _ QU ANT ITY _ DIG ITS Ġ= Ġ 4 ĊĠĠĠ Ġ} Ċ }