package Ġcom . m bo j ec . h alo . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . preference . Preference Manager Ċ import Ġcom . m bo j ec . h alo . R Ċ import Ġcom . m bo j ec . h alo . database . entity . Forecast Entity Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ object ĠData Utils Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġis Metric ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠ Ġreturn Ġprefs . getString ( context . getString ( R . string . pref _ units _ key ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . pref _ units _ metric )) Ġ== Ġcontext . getString ( R . string . pref _ units _ metric ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Local ( context : ĠContext , Ġtime Zone : ĠString ): Ġjava . util . TimeZone Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( prefs . getBoolean ( context . getString ( R . string . pref _ time _ zone _ key ), Ġtrue )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava . util . TimeZone . getTime Zone ( time Zone ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava . util . TimeZone . getDefault () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġformat Temperature ( context : ĠContext , Ġtemperature : ĠDouble ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġtemperature ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfin ale Temperature Ġ= Ġ 0 . 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( temperature Ġin Ġ- 0 . 9 9 .. - 0 . 0 1 Ġ|| Ġtemperature Ġin Ġ 0 . 0 1 .. 0 . 9 9 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfin ale Temperature Ġ= Ġ 0 . 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfin ale Temperature Ġ= Ġtemperature ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Metric ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfin ale Temperature Ġ= Ġtemperature Ġ* Ġ 1 . 8 Ġ+ Ġ 3 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format ( context . getString ( R . string . format _ temperature ), Ġfin ale Temperature ) ĊĠĠĠĠĠĠĠ Ġ} ?: Ġreturn Ġ"-- " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Day Name ( date In Millis : ĠLong ?, Ġtime Zone : ĠString ?, Ġcontext : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġdate In Millis ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Zone ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Format Ġ= ĠSimpleDateFormat (" EE , Ġdd ĠM MMM ", ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Format . time Zone Ġ= Ġis Local ( context , Ġtime Zone ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġday Format . format ( date In Millis Ġ* Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn Ġ"-- " ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn Ġ"-- " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetCurrent Day Name ( time In Millis : ĠLong ?, Ġtime Zone : ĠString ?, Ġcontext : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġtime In Millis ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Zone ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Format Ġ= ĠSimpleDateFormat (" EEEE ", ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Format . time Zone Ġ= Ġis Local ( context , Ġtime Zone ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġday Format . format ( time In Millis Ġ* Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?: Ġreturn Ġ"-- " ĊĠĠĠĠĠĠĠ Ġ} ?: Ġreturn Ġ"-- " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Formatted Hour ( time In Millis : ĠLong ?, Ġtime Zone : ĠString ?, Ġcontext : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġtime In Millis ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Zone ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Day Format Ġ= ĠSimpleDateFormat (" HH : mm ", ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Day Format . time Zone Ġ= Ġis Local ( context , Ġtime Zone ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtime Day Format . format ( time In Millis Ġ* Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn Ġ"-- " ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn Ġ"-- " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Formatted Current Hour ( time Zone : ĠString ?, Ġcontext : ĠContext ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġtime Zone ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Day Format Ġ= ĠSimpleDateFormat (" HH : mm ", ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Day Format . time Zone = Ġis Local ( context , Ġtime Zone ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtime Day Format . format ( getCurrent Time ()) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn Ġ"-- " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Formatted Uv Index ( context : ĠContext , Ġuv Value : ĠInt ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġuv Value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format ( context . getString ( R . string . format _ uv _ index ), Ġuv Value ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn Ġ"-- " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis It Day ( forecast Entity : ĠFore cast Entity ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġg mt Offset Ġ= Ġforecast Entity . forecast . offset !! Ġ* Ġ 3 6 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġsun rise Time Ġ= Ġ( forecast Entity . forecast . daily !!. data D ail ies ! ![ 0 ]. sun rise Time !! Ġ* Ġ 1 0 0 0 ) Ġ+ Ġg mt Offset . to Long () ĊĠĠĠĠĠĠĠ Ġval Ġsun setTime Ġ= Ġ( forecast Entity . forecast . daily !!. data D ail ies ! ![ 0 ]. sun setTime !! Ġ* Ġ 1 0 0 0 ) Ġ+ Ġg mt Offset . to Long () ĊĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= ĠgetCurrent Time () Ġ+ Ġg mt Offset . to Long () ĊĠĠĠĠĠĠĠ Ġreturn ĠcurrentTime Ġ> Ġsun rise Time Ġ&& ĠcurrentTime Ġ< Ġsun setTime ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Formatted Wind Speed ( context : ĠContext , Ġwind Speed : ĠDouble ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġwind Speed ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfinal Wind S pre ed Ġ= Ġwind Speed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwind Format : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Data Utils . is Metric ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwind Format Ġ= ĠR . string . format _ wind _ km h ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Wind S pre ed Ġ*= Ġ 3 . 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwind Format Ġ= ĠR . string . format _ wind _ mph ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Wind S pre ed Ġ*= Ġ 2 . 2 3 6 9 3 6 2 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format ( context . getString ( wind Format ), Ġfinal Wind S pre ed ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn Ġ"-- " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Formatted Wind Direction ( context : ĠContext , Ġdegrees : ĠDouble ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġdegrees ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirection Ġ= Ġ" Unknown " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen ( Math . abs ( degrees )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 0 . 0 .. 2 2 . 4 Ġ-> Ġcontext . getString ( R . string . n ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 2 2 . 5 .. 6 7 . 4 Ġ-> Ġcontext . getString ( R . string . ne ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 6 7 . 5 .. 1 1 2 . 4 Ġ-> Ġcontext . getString ( R . string . e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 1 1 2 . 5 .. 1 5 7 . 4 Ġ-> Ġcontext . getString ( R . string . se ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 1 5 7 . 5 .. 2 0 2 . 4 Ġ-> Ġcontext . getString ( R . string . s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 2 0 2 . 5 .. 2 4 7 . 4 Ġ-> Ġcontext . getString ( R . string . sw ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 2 4 7 . 5 .. 2 9 2 . 4 Ġ-> Ġcontext . getString ( R . string . w ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 2 9 2 . 5 .. 3 3 7 . 4 Ġ-> Ġcontext . getString ( R . string . nw ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 3 3 7 . 5 .. 3 6 0 . 0 Ġ-> Ġcontext . getString ( R . string . n ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdirection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ?: Ġreturn Ġ"-- " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Formatted Pressure ( context : ĠContext , Ġpressure : ĠDouble ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġpressure ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpressure Format Ġ= ĠR . string . format _ pressure ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format ( context . getString ( pressure Format ), Ġpressure ) ĊĠĠĠĠĠĠĠ Ġ} ?: Ġreturn Ġ"-- " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Formatted Hum idity ( context : ĠContext , Ġhum idity : ĠInt ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġhum idity ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhum idity Format Ġ= ĠR . string . format _ humidity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format ( context . getString ( humidity Format ), Ġhum idity ) ĊĠĠĠĠĠĠĠ Ġ} ?: Ġreturn Ġ"-- " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Formatted Rain Volume ( context : ĠContext , Ġrain Volume : ĠInt ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġrain Volume ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrain Volume Format Ġ= ĠR . string . format _ rain ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format ( context . getString ( rain Volume Format ), Ġrain Volume ) ĊĠĠĠĠĠĠĠ Ġ} ?: Ġreturn Ġ"-- " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Formatted Cloud iness ( context : ĠContext , Ġcloud iness : ĠInt ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġcloud iness ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcloud iness Format Ġ= ĠR . string . format _ cloud iness ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString . format ( context . getString ( cloud iness Format ), Ġcloud iness ) ĊĠĠĠĠĠĠĠ Ġ} ?: Ġreturn Ġ"-- " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetImage Resource For Weather Condition ( weather Id : ĠString ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( weather Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" clear - day " Ġ-> ĠR . drawable . clear _ day ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" clear - night " Ġ-> ĠR . drawable . clear _ night ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" rain " Ġ-> ĠR . drawable . rain ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" snow " Ġ-> ĠR . drawable . snow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" s leet " Ġ-> ĠR . drawable . s leet ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" wind " Ġ-> ĠR . drawable . wind ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" fog " Ġ-> ĠR . drawable . fog ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" cloud y " Ġ-> ĠR . drawable . cloud y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" part ly - cloud y - day " Ġ-> ĠR . drawable . part ly _ cloud y _ day ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" part ly - cloud y - night " Ġ-> ĠR . drawable . part ly _ cloud y _ night ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" h ail " Ġ-> ĠR . drawable . h ail ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" th under storm " Ġ-> ĠR . drawable . th under storm ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" t ornado " Ġ-> ĠR . drawable . th under storm ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . drawable . clear _ day ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetImage Resource For Weather Condition Large ( weather Id : ĠString ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( weather Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" clear - day " Ġ-> ĠR . drawable . clear _ day _ big ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" clear - night " Ġ-> ĠR . drawable . clear _ night _ big ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" rain " Ġ-> ĠR . drawable . rain _ big ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" snow " Ġ-> ĠR . drawable . snow _ big ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" s leet " Ġ-> ĠR . drawable . s leet _ big ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" wind " Ġ-> ĠR . drawable . wind _ big ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" fog " Ġ-> ĠR . drawable . fog _ big ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" cloud y " Ġ-> ĠR . drawable . cloud y _ big ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" part ly - cloud y - day " Ġ-> ĠR . drawable . part ly _ cloud y _ day _ big ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" part ly - cloud y - night " Ġ-> ĠR . drawable . part ly _ cloud y _ night _ big ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" h ail " Ġ-> ĠR . drawable . h ail _ big ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" th under storm " Ġ-> ĠR . drawable . th under storm _ big ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" t ornado " Ġ-> ĠR . drawable . th under storm _ big ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . drawable . clear _ day _ big ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetCurrent Time (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSystem . currentTimeMillis () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetCurrent Language (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLocale . getDefault (). language ĊĠĠĠ Ġ} Ċ Ċ }