package Ġcom . my ether wallet . me w connect . feature . buy . fragment Ċ Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . GONE Ċ import Ġandroid . view . View . VISIBLE Ċ import Ġandroid . widget . Toast Ċ import Ġcom . my ether wallet . me w connect . R Ċ import Ġcom . my ether wallet . me w connect . core . di . Application Component Ċ import Ġcom . my ether wallet . me w connect . core . ext enst ion .* Ċ import Ġcom . my ether wallet . me w connect . core . persist . pref en re ces . Preferences Manager Ċ import Ġcom . my ether wallet . me w connect . core . ui . fragment . Base ViewModel Fragment Ċ import Ġcom . my ether wallet . me w connect . core . utils . StringUtils Ċ import Ġcom . my ether wallet . me w connect . feature . buy . activity . Buy WebView Activity Ċ import Ġcom . my ether wallet . me w connect . feature . buy . data . Buy Quote Result Ċ import Ġcom . my ether wallet . me w connect . feature . buy . data . Buy Response Ċ import Ġcom . my ether wallet . me w connect . feature . buy . view model . Buy ViewModel Ċ import Ġkotlinx . android . synt hetic . main . fragment _ buy .* Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . BigInteger Ċ import Ġjava . math . Round ingMode Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠB Art Well Ġon Ġ 1 2 . 0 9 . 2 0 1 8 . Ċ Ġ*/ Ċ Ċ private Ġconst Ġval ĠCUR RE NCY _ USD Ġ= Ġ" USD " Ċ private Ġconst Ġval ĠCUR RE NCY _ ETH Ġ= Ġ" X SM " Ċ private Ġconst Ġval ĠETH _ DECIMAL S Ġ= Ġ 8 Ċ private Ġval ĠLIMIT _ MIN Ġ= ĠBigDecimal ( 5 0 ) Ċ private Ġval ĠLIMIT _ MAX Ġ= ĠBigDecimal ( 2 0 0 0 0 ) Ċ Ċ class ĠBu y Fragment Ġ: ĠBase ViewModel Fragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠBu y Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpreferences : ĠPreferences Manager ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠBu y ViewModel ĊĊĠĠĠ Ġprivate Ġvar Ġtext Size Min Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġtext Size Max Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar ĠisIn Us d Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġprice Ġ= ĠBigDecimal . ZERO ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠviewModel ( viewModel Factory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobserve ( data , Ġ:: on Quote Loaded ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . load Quote () ĊĊĠĠĠĠĠĠĠ Ġtext Size Min Ġ= Ġresources . get Dimension ( R . dim en . text _ size _ fixed _ 2 0 sp ) ĊĠĠĠĠĠĠĠ Ġtext Size Max Ġ= Ġresources . get Dimension ( R . dim en . text _ size _ fixed _ 4 8 sp ) ĊĊĠĠĠĠĠĠĠ Ġbuy _ toolbar . set Navigation Icon ( R . drawable . ic _ action _ close ) ĊĠĠĠĠĠĠĠ Ġbuy _ toolbar . set Navigation OnClickListener ( View . OnClickListener Ġ{ Ġclose () Ġ}) ĊĠĠĠĠĠĠĠ Ġbuy _ toolbar . setTitle ( R . string . buy _ title ) ĊĠĠĠĠĠĠĠ Ġbuy _ toolbar . inflate Menu ( R . menu . buy ) ĊĠĠĠĠĠĠĠ Ġbuy _ toolbar . setOn MenuItem ClickListener ( Toolbar . On MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . itemId Ġ== ĠR . id . buy _ history ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Fragment ( History Fragment . newInstance ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbuy _ simp lex _ description . text Ġ= ĠStringUtils . from Html ( require Context (), ĠR . string . buy _ simp lex _ description _ full ) ĊĠĠĠĠĠĠĠ Ġbuy _ keyboard _ container . getSize Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect 1 Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ amount _ container . getGlobal Visible Rect ( rect 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect 2 Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ keyboard _ container . getGlobal Visible Rect ( rect 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rect 1 . bottom Ġ>= Ġrect 2 . top ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ simp lex _ description . text Ġ= ĠStringUtils . from Html ( require Context (), ĠR . string . buy _ simp lex _ description _ short ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ keyboard _ margin . visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuy _ button _ 1 . setOnClickListener Ġ{ Ġadd Digit ( 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġbuy _ button _ 2 . setOnClickListener Ġ{ Ġadd Digit ( 2 ) Ġ} ĊĠĠĠĠĠĠĠ Ġbuy _ button _ 3 . setOnClickListener Ġ{ Ġadd Digit ( 3 ) Ġ} ĊĠĠĠĠĠĠĠ Ġbuy _ button _ 4 . setOnClickListener Ġ{ Ġadd Digit ( 4 ) Ġ} ĊĠĠĠĠĠĠĠ Ġbuy _ button _ 5 . setOnClickListener Ġ{ Ġadd Digit ( 5 ) Ġ} ĊĠĠĠĠĠĠĠ Ġbuy _ button _ 6 . setOnClickListener Ġ{ Ġadd Digit ( 6 ) Ġ} ĊĠĠĠĠĠĠĠ Ġbuy _ button _ 7 . setOnClickListener Ġ{ Ġadd Digit ( 7 ) Ġ} ĊĠĠĠĠĠĠĠ Ġbuy _ button _ 8 . setOnClickListener Ġ{ Ġadd Digit ( 8 ) Ġ} ĊĠĠĠĠĠĠĠ Ġbuy _ button _ 9 . setOnClickListener Ġ{ Ġadd Digit ( 9 ) Ġ} ĊĠĠĠĠĠĠĠ Ġbuy _ button _ point . setOnClickListener Ġ{ Ġadd Point () Ġ} ĊĠĠĠĠĠĠĠ Ġbuy _ button _ 0 . setOnClickListener Ġ{ Ġadd Digit ( 0 ) Ġ} ĊĠĠĠĠĠĠĠ Ġbuy _ button _ delete . setOnClickListener Ġ{ Ġdelete () Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuy _ button _ delete . setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Main Value ( BigDecimal . ZERO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuy _ toggle _ currency . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Us d Ġ= Ġ! isIn Us d ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= Ġbuy _ sum _ 1 . text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Raw Text ( buy _ sum _ 2 . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ sum _ 2 . text Ġ= Ġtmp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Second Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuy _ button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ loading . visibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . prepare Post Request ( BigDecimal ( getCurrent Value ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isIn Us d ) ĠCUR RE NCY _ USD Ġelse ĠCUR RE NCY _ ETH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . getCurrent Wallet Preferences (). get Wallet Address (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . application Preferences . get Install Time (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Buy WebView Activity . create Intent ( require Context (), Ġit . url , Ġit . get Encoded Post Data ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ loading . visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . buy _ loading _ error , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ loading . visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpopulate Main Value ( BigDecimal ( 1 0 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Quote Loaded ( data : ĠBu y Response < Buy Quote Result > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata ?. result ?. fi at Money ?. base Amount ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Second Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate Main Value ( value : ĠBigDecimal ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isIn Us d ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Raw Text ( value . format Money ( 2 )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Raw Text ( value . toString Without Zero es ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpopulate Second Value () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate Second Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĠgetCurrent Value () ĊĠĠĠĠĠĠĠ Ġif Ġ( price Ġ> ĠBigDecimal . ZERO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Ġ= ĠBigDecimal ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsecond : ĠBigDecimal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecimals : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isIn Us d ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Ġ= Ġamount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. minus ( calculate Fee ( amount )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. divide ( price , ĠETH _ DECIMAL S , ĠRound ingMode . HALF _ UP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecimals Ġ= ĠETH _ DECIMAL S ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Ġ= Ġamount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. multiply ( price ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ( calculate Fee ( amount Ġ* Ġprice )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecimals Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( second Ġ< ĠBigDecimal . ZERO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Ġ= ĠBigDecimal . ZERO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ sum _ 2 . text Ġ= Ġsecond . format Money ( decimals ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ sum _ 2 . text Ġ= Ġ" 0 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpopulate Currency () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetCurrent Value () Ġ= Ġbuy _ sum _ 1 . text . toString () ĊĊĠĠĠ Ġprivate Ġfun Ġcalculate Fee ( amount : ĠBigDecimal ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( amount . compareTo ( BigDecimal . ZERO ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBigDecimal . ZERO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( amount Ġ< ĠBigDecimal ( 2 1 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( BigDecimal . TEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. divide ( amount , Ġ 1 0 , ĠRound ingMode . HALF _ UP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. minus ( BigDecimal ( 0 . 0 8 ). divide ( amount , Ġ 1 0 , ĠRound ingMode . HALF _ UP )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ( BigDecimal ( 0 . 0 1 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. multiply ( amount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. minus ( BigDecimal ( 0 . 0 3 )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( BigDecimal . TEN Ġ/ Ġamount Ġ- ĠBigDecimal ( 0 . 0 8 ) Ġ/ Ġamount Ġ+ ĠBigDecimal ( 0 . 0 1 )) Ġ* Ġamount Ġ- ĠBigDecimal ( 0 . 0 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBigDecimal ( 0 . 0 5 6 6 ) Ġ* Ġamount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopulate Currency () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isIn Us d ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ currency _ 1 . text Ġ= ĠCUR RE NCY _ USD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ symbol _ 1 . text Ġ= Ġ"$ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ currency _ 2 . text Ġ= ĠCUR RE NCY _ ETH ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ symbol _ 2 . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ currency _ 1 . text Ġ= ĠCUR RE NCY _ ETH ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ symbol _ 1 . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ currency _ 2 . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ symbol _ 2 . text Ġ= Ġ"$ " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsetup Buy Button () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Buy Button () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isIn Us d Ġ|| Ġprice Ġ> ĠBigDecimal . ZERO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent Value Ġ= ĠBigDecimal ( getCurrent Value ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! isIn Us d ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Value Ġ= Ġcurrent Value . multiply ( price ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Value Ġ< ĠLIMIT _ MIN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ button . setText ( R . string . buy _ minimum _ warning ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ button . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ button . setText ( R . string . buy _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ button . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ button . setText ( R . string . buy _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuy _ button . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtext Ġ= ĠgetCurrent Value () ĊĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġtext . length ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġtext . substring ( 0 , Ġlength Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Main Value ( BigDecimal . ZERO ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Raw Text ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Second Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Point () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĠgetCurrent Value () ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠBigDecimal ( text ) ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ< ĠLIMIT _ MAX ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value . un scaled Value () Ġ== ĠBigInteger . ZERO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Raw Text (" 0 .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Second Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! text . contains (". ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Raw Text ("$ text .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Raw Text ( value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuy _ sum _ 1 . text Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġval Ġdelta Ġ= Ġ( text Size Max Ġ- Ġtext Size Min ) Ġ* Ġ( value . length Ġ/ Ġ 1 8 f ) ĊĠĠĠĠĠĠĠ Ġval Ġtext Size Ġ= Ġtext Size Max Ġ- Ġdelta ĊĠĠĠĠĠĠĠ Ġbuy _ symbol _ 1 . setText Size ( Typed Value . COMPLEX _ UNIT _ PX , Ġtext Size ) ĊĠĠĠĠĠĠĠ Ġbuy _ sum _ 1 . setText Size ( Typed Value . COMPLEX _ UNIT _ PX , Ġtext Size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Digit ( digit : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtext Ġ= ĠgetCurrent Value () ĊĠĠĠĠĠĠĠ Ġif Ġ( BigDecimal ( text ). un scaled Value () Ġ== ĠBigInteger . ZERO Ġ&& Ġ! text . contains (". ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġtext . length ĊĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= Ġtext Ġ+ Ġdigit ĊĠĠĠĠĠĠĠ Ġif Ġ( isIn Us d ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( length Ġ>= Ġ 3 Ġ&& Ġtext . substring ( length Ġ- Ġ 3 , Ġlength Ġ- Ġ 2 ) Ġ== Ġ". ") Ġ{ Ġ// ĠIf Ġalready Ġhas Ġ 2 Ġdecimals ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( BigDecimal ( newValue ) Ġ> ĠLIMIT _ MAX ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Main Value ( LIMIT _ MAX ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( length Ġ>= ĠETH _ DECIMAL S Ġ+ Ġ 1 Ġ&& Ġtext . substring ( length Ġ- ĠETH _ DECIMAL S Ġ- Ġ 1 , Ġlength Ġ- ĠETH _ DECIMAL S ) Ġ== Ġ". ") Ġ{ Ġ// ĠIf Ġalready Ġhas Ġ 1 8 Ġdecimals ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlimit Ġ= Ġif Ġ( price Ġ> ĠBigDecimal . ZERO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLIMIT _ MAX . divide ( price , ĠETH _ DECIMAL S , ĠRound ingMode . HALF _ UP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBigDecimal ( 2 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( BigDecimal ( newValue ) Ġ> Ġlimit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopulate Main Value ( limit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Raw Text ( newValue ) ĊĠĠĠĠĠĠĠ Ġpopulate Second Value () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinject ( app Component : ĠApplication Component ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Component . inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlayout Id () Ġ= ĠR . layout . fragment _ buy Ċ }