/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 . er ick ti jer ou . jet timer . util Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroidx . compose . ui . unit . Text Unit Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġandroidx . compose . ui . util . fast ForEach Indexed Ċ import Ġcom . er ick ti jer ou . jet timer . MainActivity Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġkotlin . math . absolute Value Ċ Ċ fun ĠString . fill With Z eros () Ġ= Ġthis . pad Start ( MAX _ LENGTH _ TIMER , ĠZERO _ STRING . first ()) Ċ fun ĠString . remove Last () Ġ= Ġif Ġ( isNotEmpty ()) Ġthis . take ( this . length Ġ- Ġ 1 ) Ġelse Ġthis Ċ fun ĠString . first Input Is Zero ( input : ĠString ) Ġ= Ġthis . isEmpty () Ġ&& Ġinput Ġ== ĠZERO _ STRING Ċ fun ĠLong . isNot Zero (): ĠBoolean Ġ= Ġthis Ġ!= ĠZERO _ LONG Ċ fun ĠLong ?. get Positive Value (): ĠLong Ġ= Ġthis ?. let Ġ{ Ġif Ġ( this Ġ< Ġ 0 ) ĠZERO _ LONG Ġelse Ġthis Ġ} Ġ?: ĠZERO _ LONG Ċ fun ĠLong . is Zero (): ĠBoolean Ġ= Ġthis Ġ== ĠZERO _ LONG Ċ fun ĠInt . is Zero (): ĠBoolean Ġ= Ġthis Ġ== ĠZERO _ INT Ċ Ċ fun ĠString . to Millis (): ĠLong Ġ{ ĊĠĠĠ Ġvar Ġtime In Millis Ġ= Ġ 0 L ĊĠĠĠ Ġthis . fill With Z eros (). chunk ed ( 2 ). fast ForEach Indexed Ġ{ Ġi , Ġs Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġtime In Millis Ġ+= ĠTimeUnit . HOUR S . to Millis ( s . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġtime In Millis Ġ+= ĠTimeUnit . MIN UTES . to Millis ( s . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġtime In Millis Ġ+= ĠTimeUnit . SECONDS . to Millis ( s . to Long ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtime In Millis Ċ } Ċ Ċ fun ĠFloat . round Up (): ĠLong Ġ= Ġthis . to BigDecimal (). set Scale ( 0 , ĠBigDecimal . ROUND _ UP ). longValue Exact () Ċ Ċ fun ĠInt . toString OrEmpty (): ĠString Ġ= Ġif Ġ( this . is Zero ()) ĠEMPTY Ġelse Ġthis . toString () Ċ fun ĠInt . to Formatted String (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( absolute Value Ġin Ġ 9 Ġdown To Ġ 0 ) Ġ"$ ZERO _ STRING $ absolute Value " Ġelse Ġabsolute Value . toString OrEmpty () Ċ } Ċ Ċ fun ĠInt . minute ToString ( has Hour : ĠBoolean ): ĠString Ġ= ĊĠĠĠ Ġif Ġ( has Hour ) Ġthis . to Formatted String () Ġelse Ġthis . toString OrEmpty () Ċ Ċ fun ĠInt . second ToString ( has Minute : ĠBoolean ): ĠString Ġ= ĊĠĠĠ Ġif Ġ( has Minute ) Ġthis . to Formatted String () Ġelse Ġthis . toString () Ċ Ċ fun ĠString . remove Extra Colon (): ĠString Ġ= ĊĠĠĠ Ġif Ġ( this . first (). toString () Ġ== ĠCOL ON ) Ġtake Last ( length Ġ- Ġ 1 ) Ġelse Ġthis Ċ Ċ fun ĠLong . to Hh Mm Ss (): ĠString Ġ{ ĊĠĠĠ Ġval Ġhours Ġ= Ġ(( this Ġ/ Ġ( 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 6 0 ) Ġ% Ġ 2 4 )). toInt (). toString OrEmpty () ĊĠĠĠ Ġval Ġminutes Ġ= Ġ(( this Ġ/ Ġ( 1 0 0 0 Ġ* Ġ 6 0 ) Ġ% Ġ 6 0 )). toInt (). minute ToString ( hours . isNotEmpty ()) ĊĠĠĠ Ġval Ġseconds Ġ= Ġ(( this Ġ/ Ġ 1 0 0 0 ) Ġ% Ġ 6 0 ). toInt (). second ToString ( minutes . isNotEmpty ()) ĊĠĠĠ Ġvar Ġformatted Time Ġ= Ġ"$ hours $ COL ON $ minutes $ COL ON $ seconds " ĊĠĠĠ Ġwhile Ġ( formatted Time . isNotEmpty () Ġ&& Ġformatted Time . first (). toString () Ġ== ĠCOL ON ) Ġ{ ĊĠĠĠĠĠĠĠ Ġformatted Time Ġ= Ġformatted Time . remove Extra Colon () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġformatted Time Ċ } Ċ Ċ fun ĠString . calculate FontSize (): ĠText Unit Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( length ) Ġ{ ĊĠĠĠĠĠĠĠĠ 8 Ġ-> Ġ 4 0 . sp ĊĠĠĠĠĠĠĠĠ 7 Ġ-> Ġ 4 8 . sp ĊĠĠĠĠĠĠĠĠ 5 Ġ-> Ġ 6 4 . sp ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 7 2 . sp ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġis O re o Plus () Ġ= ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O Ċ Ċ fun ĠContext . get Launch Intent () Ġ= ĊĠĠĠ Ġpackage Manager . get Launch Intent For Package (" com . er ick ti jer ou . jet timer ") Ċ Ċ @ Suppress Lint (" Unspecified Immutable Flag ") Ċ fun ĠContext . get Open Timer Tab Intent (): ĠPending Intent Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= Ġget Launch Intent () Ġ?: ĠIntent ( this , ĠMainActivity :: class . java ) ĊĠĠĠ Ġreturn ĠPending Intent . getActivity ( this , Ġ 0 , Ġintent , ĠPending Intent . FLAG _ UPDATE _ CURRENT ) Ċ } Ċ