package Ġcom . a iv any uk . android . converter . presenter Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . a iv any uk . android . converter . repo . Currency Repo Ċ import Ġcom . a iv any uk . android . converter . view . Currency ViewData Ċ import Ġcom . a iv any uk . android . converter . view . Input View Ċ import Ġjava . lang . Number FormatException Ċ Ċ class ĠInput Presenter ( val Ġrepo : ĠCurrency Repo ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEMPTY _ VALUE Ġ= Ġ" 0 " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Input Presenter " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġview : ĠInput View ĊĊĠĠĠ Ġfun Ġset Input View ( input View : ĠInput View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview Ġ= Ġinput View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Input ( selected : ĠCurrency ViewData ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . display ( selected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Amount ( s : ĠString ): ĠValidation Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalidation : ĠValidation ĊĠĠĠĠĠĠĠ Ġvalidation Ġ= Ġif Ġ( s . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠValidation ( false , ĠEMPTY _ VALUE ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s . startsWith (" 0 ") Ġ&& Ġs . length Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s [ 1 ] Ġ== Ġ'.') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidation ( true , Ġs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrimmed Ġ= Ġs . trim Start (' 0 ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidation ( false , Ġtrimmed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValidation ( true , Ġs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( validation . ok ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġvalidation . result . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . on Amount ( amount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" A Ġvery Ġstrange Ġnumber ", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvalidation ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠValidation ( val Ġok : ĠBoolean , Ġval Ġresult : ĠString ) ĊĊĠĠĠ Ġfun Ġon Hide () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . hide () ĊĠĠĠ Ġ} Ċ Ċ } Ċ