package Ġcom . wit . j ason f ager berg . n ights out . utils Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . S parseInt Array Ċ import Ġcom . wit . j ason f ager berg . n ights out . R Ċ Ċ class ĠConverter Ġ{ ĊĠĠĠ Ġprivate Ġval Ġweight Conversion Map Ġ= ĠHashMap < String , ĠDouble >() ĊĠĠĠ Ġprivate Ġval Ġvolume Conversion Map Ġ= ĠHashMap < String , ĠDouble >() ĊĠĠĠ Ġval Ġapp Theme To Dialog Theme Ġ= ĠS parseInt Array () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġweight Conversion Map [" l bs "] Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠ Ġweight Conversion Map [" kg "] Ġ= Ġ 2 . 2 0 5 ĊĊĠĠĠĠĠĠĠ Ġvolume Conversion Map [" oz "] Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠ Ġvolume Conversion Map [" ml "] Ġ= Ġ 0 . 0 3 3 8 1 4 ĊĠĠĠĠĠĠĠ Ġvolume Conversion Map [" be ers "] Ġ= Ġ 1 2 . 0 ĊĠĠĠĠĠĠĠ Ġvolume Conversion Map [" wine Ġgl asses "] Ġ= Ġ 5 . 0 ĊĠĠĠĠĠĠĠ Ġvolume Conversion Map [" shots "] Ġ= Ġ 1 . 5 ĊĠĠĠĠĠĠĠ Ġvolume Conversion Map [" p ints "] Ġ= Ġ 1 6 . 0 ĊĊĠĠĠĠĠĠĠ Ġapp Theme To Dialog Theme . put ( R . style . App Theme , ĠR . style . App Theme ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Theme To Dialog Theme . put ( R . style . Dark App Theme , Ġandroid . R . style . Theme _ Material _ Dialog _ Alert ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Theme To Dialog Theme . put ( R . style . Dark App Theme , ĠR . style . Dark Dialog ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġweight To L bs ( weight : ĠDouble , Ġweight Measurement : ĠString ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġweight Ġ* Ġweight Conversion Map [ weight Measurement ] !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdrink Volume To Fluid Oz ( amount : ĠDouble , Ġamount Measurement : ĠString ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġamount Ġ* Ġvolume Conversion Map [ amount Measurement ] !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfluid Oz To Gr ams ( fo z : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 2 3 . 3 3 3 3 3 3 3 Ġ* Ġfo z ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġm ilitary Hours And Minutes To Minutes ( hour : ĠInt , Ġmin : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhour Ġ* Ġ 6 0 Ġ+ Ġmin ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecimal TimeTo Hours And Min ue ts ( time : ĠDouble ): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhour Ġ= Ġtime . toInt () ĊĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġ( ((( time Ġ- Ġhour ) Ġ* Ġ 1 0 0 ) Ġ* Ġ 6 0 ) Ġ/ Ġ 1 0 0 ). toInt () ĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( hour , Ġmin ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 1 2 Ġhour Ġtime Ġand Ġmin ue ts Ġto Ġxx : xx Ġpm / am ĊĠĠĠ Ġfun Ġtime ToString ( selected Hour : ĠInt , Ġselected Minute : ĠInt , Ġuse 2 4 Hour Time : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Period : ĠString ĊĠĠĠĠĠĠĠ Ġvar Ġdisplay Hour Ġ= Ġselected Hour ĊĠĠĠĠĠĠĠ Ġvar Ġdisplay Min ue t Ġ= Ġselected Minute . toString () ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Hour Ġ>= Ġ 1 2 Ġ&& Ġ! use 2 4 Hour Time ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Hour Ġ-= Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Period Ġ= Ġ" PM " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! use 2 4 Hour Time ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Period Ġ= Ġ" AM " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Period Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( display Hour Ġ== Ġ 0 Ġ&& Ġ! use 2 4 Hour Time ) Ġdisplay Hour Ġ= Ġ 1 2 ĊĠĠĠĠĠĠĠ Ġif Ġ( display Min ue t . length Ġ== Ġ 1 ) Ġdisplay Min ue t Ġ= Ġ" 0 $ display Min ue t " ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ display Hour :$ display Min ue t Ġ$ time Period " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġmin ue ts Ġto Ġeither Ġ 1 2 Ġhour Ġor Ġ 2 4 Ġhour Ġtime ĊĠĠĠ Ġfun Ġtime ToString ( min : ĠInt , Ġuse 2 4 Hour Time : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġhour Ġ= Ġmin Ġ/ Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġval Ġminutes Ġ= Ġmin Ġ% Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġval Ġtime Period : ĠString ĊĠĠĠĠĠĠĠ Ġif Ġ( hour Ġ>= Ġ 1 2 Ġ&& Ġ! use 2 4 Hour Time ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhour Ġ-= Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Period Ġ= Ġ" PM " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! use 2 4 Hour Time ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Period Ġ= Ġ" AM " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Period Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( hour Ġ== Ġ 0 Ġ&& Ġ! use 2 4 Hour Time ) Ġhour Ġ= Ġ 1 2 ĊĠĠĠĠĠĠĠ Ġvar Ġdisplay Min ue t Ġ= Ġminutes . toString () ĊĠĠĠĠĠĠĠ Ġif Ġ( display Min ue t . length Ġ== Ġ 1 ) Ġdisplay Min ue t Ġ= Ġ" 0 $ display Min ue t " ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ hour :$ display Min ue t Ġ$ time Period " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġtakes Ġmin ue ts Ġreturns Ġ(" xx ", Ġ" xx ") ĊĠĠĠ Ġfun Ġdecimal TimeTo Two Digit Strings ( time : ĠDouble ): ĠPair < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhm Ġ= Ġdecimal TimeTo Hours And Min ue ts ( time ) ĊĠĠĠĠĠĠĠ Ġreturn Ġhours And Min ue ts To Two Digit Strings ( hm ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġjust Ġp ads Ġ 0 s Ġto Ġfront Ġof Ġints ĊĠĠĠ Ġfun Ġhours And Min ue ts To Two Digit Strings ( hours Min : ĠPair < Int , ĠInt >): ĠPair < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhours Ġ= Ġif Ġ( hours Min . first Ġ< Ġ 1 0 ) Ġ" 0 ${ hours Min . first }" ĊĠĠĠĠĠĠĠ Ġelse Ġhours Min . first . toString () ĊĊĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġif Ġ( hours Min . second Ġ< Ġ 1 0 ) Ġ" 0 ${ hours Min . second }" ĊĠĠĠĠĠĠĠ Ġelse Ġhours Min . second . toString () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( hours , Ġmin ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġyear Month Day To 8 Digit String ( year : ĠInt , Ġmonth : ĠInt , Ġday : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmonth String Ġ= Ġif Ġ( month Ġ< Ġ 1 0 ) Ġ" 0 $ month " Ġelse Ġmonth . toString () ĊĠĠĠĠĠĠĠ Ġval Ġday String Ġ= Ġif Ġ( day Ġ< Ġ 1 0 ) Ġ" 0 $ day " Ġelse Ġday . toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ year $ month String $ day String " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstring ToDouble ( text : ĠString ): ĠDouble Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġtext . isEmpty () Ġ-> ĠDouble . NaN ĊĠĠĠĠĠĠĠ Ġtext [ text . length Ġ- Ġ 1 ] Ġ== Ġ'.' Ġ-> Ġ"${ text } 0 ". toDouble () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtext . toDouble () ĊĠĠĠ Ġ} Ċ }