/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 - 2 0 1 9 ĠAnd ri us ĠBar uck is Ġwww . bar uck is . com Ġ| Ġk ript of ol io . app Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . bar uck is . k ript of ol io . utilities Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . Sp ann able Ċ import Ġandroid . text . Sp ann able String Ċ import Ġandroid . text . style . BackgroundColor Span Ċ import Ġandroid . text . style . Character Style Ċ import Ġandroid . text . style . ForegroundColor Span Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . bar uck is . k ript of ol io . R Ċ import Ġjava . math . Round ingMode Ċ import Ġjava . text . Decimal Format Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠStatic Ġmethods Ġused Ġto Ġformat Ġand Ġstyle Ġfinancial Ġvalues . Ċ Ġ*/ Ċ Ċ // ĠEnum Ġis Ġa Ġspecial Ġdata Ġtype Ġthat Ġallows Ġa Ġvariable Ġto Ġhold Ġa Ġvalue Ġonly Ġfrom Ġa Ġset Ġof Ġpredefined Ġconstants . Ċ enum Ġclass ĠValueType ( val Ġpattern : ĠString ) Ġ{ ĊĠĠĠ ĠCrypto ( CRYPTO _ FORMAT _ PATTERN ), ĊĠĠĠ ĠF iat ( FI AT _ FORMAT _ PATTERN ), ĊĠĠĠ ĠPercent ( PERCENT _ FORMAT _ PATTERN ) Ċ } Ċ Ċ // ĠSe aled Ġclass Ġrepresent Ġrestricted Ġclass Ġh ierarch ies , Ġwhere Ġa Ġvalue Ġcan Ġhave Ġa Ġtype Ġfrom Ġa Ġrestricted Ġset . Ċ sealed Ġclass ĠSp ann able Value Color Style Ġ{ ĊĠĠĠ Ġobject ĠFore ground Ġ: ĠSp ann able Value Color Style () ĊĠĠĠ Ġobject ĠBackground Ġ: ĠSp ann able Value Color Style () Ċ } Ċ Ċ // ĠRound Ġvalue Ġdepending Ġon Ġit 's Ġtype Ġby Ġapplying Ġspecific Ġpattern Ġas Ġwe Ġwant Ġto Ġset Ġdefined Ġnumber Ġof Ġdigits Ġafter Ġdecimal Ġpoint . Ċ fun Ġround Value ( number : ĠDouble ?, Ġtype : ĠValueType ): ĠString Ġ{ ĊĠĠĠ Ġval Ġdf Ġ= ĠDecimal Format ( type . pattern ) ĊĠĠĠ Ġdf . rounding Mode Ġ= ĠRound ingMode . DOWN ĊĠĠĠ Ġreturn Ġdf . format ( number ) Ċ } Ċ Ċ // ĠGet Ġvalue Ġformatted Ġand Ġwith Ġspecial Ġstyle Ġapplied . Ċ fun Ġget Sp ann able Value Styled ( context : ĠContext , Ġvalue : ĠDouble ?, Ġstyle : ĠSp ann able Value Color Style , Ġtype : ĠValueType , Ġleft : ĠString Ġ= Ġ"", Ġright : ĠString Ġ= Ġ"", Ġtext If NaN : ĠString ? Ġ= Ġ"") : ĠSp ann able String Ġ{ ĊĠĠĠ Ġval Ġvalue Sp ann able : ĠSp ann able String ĊĠĠĠ Ġvar Ġvl Ġ= Ġvalue ĊĠĠĠ Ġvar Ġvalue Color Ġ= ĠContext Compat . getColor ( context , ĠR . color . color For Main ListItem Text ) ĊĊĠĠĠ Ġ// ĠNested Ġfunction Ġto Ġtake Ġprogram Ġmodular ization Ġfurther . ĊĠĠĠ Ġfun Ġget Color Span ( color : ĠInt ): ĠCharacter Style Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( style ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSp ann able Value Color Style . Foreground Ġ-> ĠFore ground Color Span ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSp ann able Value Color Style . Background Ġ-> ĠBackground Color Span ( color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġleft Mod Ġ= Ġleft ĊĊĠĠĠ Ġif Ġ( vl Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvl Ġ= Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġvl Ġ> Ġ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Color Ġ= ĠContext Compat . getColor ( context , ĠR . color . color ForValue Change Positive ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Mod Ġ= Ġleft Mod . plus ("+ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvl Ġ< Ġ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Color Ġ= ĠContext Compat . getColor ( context , ĠR . color . color ForValue Change Negative ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvalue Sp ann able Ġ= Ġif Ġ( vl . isNaN ()) ĠSp ann able String ("$ left Mod $ text If NaN $ right ") Ġelse ĊĠĠĠĠĠĠĠ ĠSp ann able String ("$ left Mod ${ round Value ( vl , Ġtype )} $ right ") ĊĊĠĠĠ Ġvalue Sp ann able . set Span ( getColor Span ( value Color ), Ġ 0 , Ġvalue Sp ann able . length , ĠSp ann able . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĊĠĠĠ Ġreturn Ġvalue Sp ann able Ċ } Ċ Ċ // ĠGet Ġfirst Ġcharacters Ġof Ġthe Ġtext . ĠYou Ġset Ġthe Ġlimit Ġof Ġhow Ġmany Ġcharacters Ġdo Ġyou Ġwant Ġto Ġget Ċ // Ġand Ġif Ġless Ġcharacters Ġavailable Ġin Ġprovided Ġtext Ġthan Ġshow Ġless . Ċ fun ĠgetText First Chars ( text : ĠString ?, Ġchar Limit : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( text . isNull OrEmpty ()) Ġ"" ĊĠĠĠ Ġelse Ġtext . substring ( 0 , ĠMath . min ( text . length , Ġchar Limit )) Ċ } ĊĊ Ċ sealed Ġclass ĠTime Format ( val Ġpattern : ĠString ) Ġ{ ĊĠĠĠ Ġclass ĠH ours 1 2 Ġ: ĠTime Format ( TIME _ 1 2 h _ FORMAT _ PATTERN ) ĊĠĠĠ Ġclass ĠH ours 2 4 Ġ: ĠTime Format ( TIME _ 2 4 h _ FORMAT _ PATTERN ) Ċ } Ċ Ċ fun Ġformat Date ( time Stamp : ĠDate ?, ĠdateFormat Pattern : ĠString ?, Ġtime Format Pattern : ĠTime Format ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext AM : ĠString ? Ġ= Ġnull , Ġtext PM : ĠString ? Ġ= Ġnull ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( time Stamp Ġ== Ġnull Ġ|| ĠdateFormat Pattern Ġ== Ġnull ) Ġ"" Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġpattern Ġ= ĠdateFormat Pattern ĊĠĠĠĠĠĠĠ Ġvar Ġadd On Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( time Format Pattern ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠTime Format . Hours 1 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalendar : ĠCalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . time Ġ= Ġtime Stamp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( calendar . get ( Calendar . AM _ PM )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCalendar . AM Ġ-> Ġadd On Ġ= Ġtext AM Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCalendar . PM Ġ-> Ġadd On Ġ= Ġtext PM Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpattern Ġ+= Ġif Ġ( time Format Pattern Ġ!= Ġnull ) Ġ" Ġ" Ġ+ Ġtime Format Pattern . pattern Ġelse Ġ"" ĊĊĠĠĠĠĠĠĠ Ġval Ġsdf Ġ= ĠSimpleDateFormat ( pattern , ĠLocale . getDefault ()) ĊĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġsdf . format ( time Stamp ) ĊĠĠĠĠĠĠĠ Ġif Ġ( add On . isNotEmpty ()) Ġvalue Ġ+= Ġ" Ġ$ add On " ĊĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ