/* Ċ Ġ* ĠĠĠĠ ĠThis Ġfile Ġis Ġpart Ġof ĠL awn ch air ĠLaunch er . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠL awn ch air ĠLaunch er Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* ĠĠĠĠ Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* ĠĠĠĠ Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 3 Ġof Ġthe ĠLicense , Ġor Ċ Ġ* ĠĠĠĠ Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠL awn ch air ĠLaunch er Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* ĠĠĠĠ Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠĠĠĠ ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠĠĠĠ ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* ĠĠĠĠ Ġalong Ġwith ĠL awn ch air ĠLaunch er . Ġ ĠIf Ġnot , Ġsee Ġ< https :// www . gnu . org / licenses />. Ċ Ġ*/ Ċ package Ġorg . zim mob . zim lx . smart space Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . location . Criteria Ċ import Ġandroid . location . Location Manager Ċ import Ġandroidx . annotation . Keep Ċ import Ġcom . android . launcher 3 . Utilities Ċ import Ġcom . android . launcher 3 . util . PackageManager Helper Ċ import Ġcom . luck y cat labs . sun ri ses unset . Sun rise S unset Calculator Ċ import Ġcom . luck y cat labs . sun ri ses unset . dto . Location Ċ import Ġnet . one plus . launcher . OP Weather Provider Ċ import Ġorg . zim mob . zim lx . util . Temperature Ċ import Ġjava . util .* Ċ import Ġjava . util . Calendar . HOUR _ OF _ DAY Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ Keep Ċ class ĠOne Plus Weather DataProvider ( controller : ĠZ im Smart space Controller ) Ġ: ĊĠĠĠĠĠĠĠ ĠZ im Smart space Controller . DataProvider ( controller ), ĠOP Weather Provider . I Weather Callback Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġprovider Ġby Ġlazy Ġ{ ĠOP Weather Provider ( context ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġlocation Access Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠUtilities . has Permission ( context , ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtilities . has Permission ( context , ĠManifest . permission . ACCESS _ F INE _ LOCATION ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġlocation Manager : ĠLocation Manager ? Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( location Access ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Context . LOCATION _ SERVICE ) Ġas ĠLocation Manager ? ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! One Plus Weather DataProvider . is Available ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" OP Ġprovider Ġis Ġnot Ġavailable ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperform Setup () Ġ{ ĊĠĠĠĠĠĠĠ Ġprovider . register Content Observer ( context . content Resolver ) ĊĠĠĠĠĠĠĠ Ġprovider . subscribe Callback ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . perform Setup () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Weather Updated ( weather Data : ĠOP Weather Provider . Weather Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Data ( Z im Smart space Controller . Weather Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Condition Icon ( weather Data ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTemperature ( weather Data . temperature , Ġget Temperature Unit ( weather Data )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforecast Intent Ġ= ĠIntent (). set ClassName ( OP Weather Provider . WE ATHER _ PACKAGE _ NAME , ĠOP Weather Provider . WE ATHER _ LA UNCH _ ACTIVITY ) ĊĠĠĠĠĠĠĠ Ġ), Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Condition Icon ( data : ĠOP Weather Provider . Weather Data ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġlet 's Ġnever Ġagain Ġforget Ġthat Ġunix Ġtimestamps Ġis Ġseconds , Ġnot Ġmillis ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCalendar . getInstance (). apply Ġ{ Ġtime In Millis Ġ= ĠTimeUnit . SECONDS . to Millis ( data . timestamp ) Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġis Day Ġ= Ġc . get ( HOUR _ OF _ DAY ) Ġin Ġ 6 Ġuntil Ġ 2 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( location Access ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Provider Ġ= Ġlocation Manager ?. get Best Provider ( Criteria (), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġlocation Manager ?. getLast Known Location ( location Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalc Ġ= ĠSun rise S unset Calculator ( Location ( location . latitude , Ġlocation . longitude ), Ġc . time Zone ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsun rise Ġ= Ġcalc . get Official Sun rise Calendar For Date ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsun set Ġ= Ġcalc . get Official S unset Calendar For Date ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Day Ġ= Ġsun rise . before ( c ) Ġ&& Ġsun set . after ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġres Id Ġ= Ġif Ġ( is Day ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOP Weather Provider . get Weather Icon ResourceId ( data . weather Code ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOP Weather Provider . get Night Weather Icon ResourceId ( data . weather Code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠBitmap Factory . decode Resource ( context . resources , Ġres Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Temperature Unit ( data : ĠOP Weather Provider . Weather Data ): ĠTemperature . Unit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( data . temperature Unit Ġ== ĠOP Weather Provider . TEMP _ UNIT _ FA H REN HE IT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTemperature . Unit . F ah ren heit ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠTemperature . Unit . C els ius ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġprovider . unregister Content Observer ( context . content Resolver ) ĊĠĠĠĠĠĠĠ Ġprovider . unsubscribe Callback ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġis Available ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPackage Manager Helper . is App Enabled ( context . package Manager , ĠOP Weather Provider . WE ATHER _ PACKAGE _ NAME , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ