package Ġcom . binary br icks . coin bit . e po xy models Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġcom . air bnb . e po xy . Model Prop Ċ import Ġcom . air bnb . e po xy . Model View Ċ import Ġcom . binary br icks . coin bit . R Ċ import Ġcom . binary br icks . coin bit . data . Preference Manager Ċ import Ġcom . binary br icks . coin bit . data . database . entities . Coin Transaction Ċ import Ġcom . binary br icks . coin bit . feature components . Module Item Ċ import Ġcom . binary br icks . coin bit . network . models . Coin Price Ċ import Ġcom . binary br icks . coin bit . utils . Format ers Ċ import Ġcom . binary br icks . coin bit . utils . TRANSACTION _ TYPE _ BU Y Ċ import Ġcom . binary br icks . coin bit . utils . resourcemanager . Android ResourceManager Ċ import Ġcom . binary br icks . coin bit . utils . resourcemanager . Android ResourceManager Impl Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . Math Context Ċ import Ġjava . math . Round ingMode Ċ import Ġjava . util .* Ċ Ċ @ Model View ( auto Layout Ġ= ĠModel View . Size . MATCH _ WIDTH _ WRAP _ HEIGHT ) Ċ class ĠCoin Position Item View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattribute Set : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style : ĠInt Ġ= Ġ 0 , Ċ ) Ġ: ĠConstraint Layout ( context , Ġattribute Set , Ġdef Style ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtv No Of Coins : ĠTextView ĊĠĠĠ Ġprivate Ġval Ġtv Coin Label : ĠTextView ĊĠĠĠ Ġprivate Ġval Ġtv Coin Value : ĠTextView ĊĠĠĠ Ġprivate Ġval Ġtv Avg Cost Value : ĠTextView ĊĠĠĠ Ġprivate Ġval Ġtv Total ReturnValue : ĠTextView ĊĊĠĠĠ Ġprivate Ġval Ġmc : ĠMath Context Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMath Context ( 2 , ĠRound ingMode . HALF _ UP ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġandroid ResourceManager : ĠAndroid ResourceManager Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠAndroid ResourceManager Impl ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġformatter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFormat ers ( android ResourceManager ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġcurrency : ĠCurrency Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠCurrency . getInstance ( Preference Manager . getDefault Currency ( context )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠView . inflate ( context , ĠR . layout . coin _ position _ card _ module , Ġthis ) ĊĠĠĠĠĠĠĠ Ġtv No Of Coins Ġ= ĠfindViewById ( R . id . tv No Of Coins ) ĊĠĠĠĠĠĠĠ Ġtv Coin Label Ġ= ĠfindViewById ( R . id . tv Coin Label ) ĊĠĠĠĠĠĠĠ Ġtv Coin Value Ġ= ĠfindViewById ( R . id . tv Coin Value ) ĊĠĠĠĠĠĠĠ Ġtv Avg Cost Value Ġ= ĠfindViewById ( R . id . tv Avg Cost Value ) ĊĠĠĠĠĠĠĠ Ġtv Total ReturnValue Ġ= ĠfindViewById ( R . id . tv Total ReturnValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Model Prop ( options Ġ= Ġ[ Model Prop . Option . Ignore Require HashCode ]) ĊĠĠĠ Ġfun Ġset Coin Price ( coin Position Item : ĠCoin Position Card Module Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcoin Price Ġ= Ġcoin Position Item . coin Price ĊĊĠĠĠĠĠĠĠ Ġval Ġno Of Coins And Total Cost Ġ= Ġget No Of Coins And Total Cost ( coin Position Item . coin Transaction List ) ĊĠĠĠĠĠĠĠ Ġval Ġno Of Coins Ġ= Ġno Of Coins And Total Cost . first ĊĠĠĠĠĠĠĠ Ġval Ġtotal Cost Ġ= Ġno Of Coins And Total Cost . second ĊĊĠĠĠĠĠĠĠ Ġtv No Of Coins . text Ġ= Ġno Of Coins . to Plain String () ĊĠĠĠĠĠĠĠ Ġtv Coin Label . text Ġ= Ġcoin Price . from Symbol ĊĊĠĠĠĠĠĠĠ Ġval Ġtotal Current Value Ġ= Ġcoin Price . price ?. to BigDecimal ()?. multiply ( no Of Coins ) ĊĠĠĠĠĠĠĠ Ġif Ġ( total Current Value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Coin Value . text Ġ= Ġformatter . format Amount ( total Current Value . to Plain String (), Ġcurrency ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtv Avg Cost Value . text Ġ= Ġformatter . format Amount ( total Cost . divide ( no Of Coins , Ġmc ). to Plain String (), Ġcurrency ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtotal Return Amount Ġ= Ġtotal Current Value ?. subtract ( total Cost ) ĊĠĠĠĠĠĠĠ Ġval Ġtotal Return Percentage Ġ= Ġ( total Return Amount ?. divide ( total Cost , Ġmc )) ?. multiply ( BigDecimal ( 1 0 0 ), Ġmc ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( total Return Amount Ġ!= Ġnull Ġ&& Ġtotal Return Percentage Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Total ReturnValue . text Ġ= Ġandroid ResourceManager . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . amount With Change Percentage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformatter . format Amount ( total Return Amount . to Plain String (), Ġcurrency ), Ġtotal Return Percentage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( total Return Percentage Ġ< ĠBigDecimal . ZERO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Total ReturnValue . setTextColor ( android ResourceManager . getColor ( R . color . color Loss )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Total ReturnValue . setTextColor ( android ResourceManager . getColor ( R . color . color Gain )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget No Of Coins And Total Cost ( coin Transaction List : ĠList < Coin Transaction >): ĠPair < BigDecimal , ĠBigDecimal > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġno Of Coins Ġ= ĠBigDecimal . ZERO ĊĠĠĠĠĠĠĠ Ġvar Ġtotal Cost Ġ= ĠBigDecimal . ZERO ĊĊĠĠĠĠĠĠĠ Ġcoin Transaction List . forEach Ġ{ Ġcoin Transaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( coin Transaction . transaction Type Ġ== ĠTRAN SACTION _ TYPE _ BU Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Of Coins Ġ+= Ġcoin Transaction . quantity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Cost Ġ+= Ġtotal Cost . add ( coin Transaction . cost . to BigDecimal ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Of Coins Ġ-= Ġcoin Transaction . quantity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Cost Ġ-= Ġtotal Cost . add ( coin Transaction . cost . to BigDecimal ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPair < BigDecimal , ĠBigDecimal >( no Of Coins , Ġtotal Cost ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠCoin Position Card Module Data ( val Ġcoin Price : ĠCoin Price , Ġval Ġcoin Transaction List : ĠList < Coin Transaction >) Ġ: ĠModule Item Ċ } Ċ