/* Ċ Ġ* Ġ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 . example . android dev challenge Ċ Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . annotation . Raw Res Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . example . android dev challenge . data . Forecast Summary Ċ import Ġcom . example . android dev challenge . data . Weather Repository Ċ import Ġcom . example . android dev challenge . ui . found ations . Chart Data Ċ import Ġcom . example . android dev challenge . ui . found ations . Weather Bean Data Ċ import Ġjava . time . LocalDateTime Ċ Ċ class ĠMain ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġweather Repository : ĠWeather Repository Ġ= ĠWeather Repository () Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ forecast Summary Ġ= ĠMutable LiveData < Forecast Summary >( null ) ĊĠĠĠ Ġval Ġforecast Summary : ĠLive Data < Forecast Summary > Ġ= Ġ_ forecast Summary ĊĊĠĠĠ Ġprivate Ġval Ġ_ forecast By Time Range Ġ= ĠMutable LiveData < Forecast By Time Range Ui Data >( null ) ĊĠĠĠ Ġval Ġforecast By Time Range : ĠLive Data < Forecast By Time Range Ui Data > Ġ= Ġ_ forecast By Time Range ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġload Data ( Time Range . By Hour ) ĊĠĠĠĠĠĠĠ Ġ_ forecast Summary . value Ġ= Ġweather Repository . get Weather Summary () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Time Range ( time Range : ĠTime Range ) Ġ{ ĊĠĠĠĠĠĠĠ Ġload Data ( time Range ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Data ( time Range : ĠTime Range ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( time Range Ġ== ĠTime Range . By Hour ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweather Repository . get Forecast By Hour () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweather Repository . get Forecast For Next Se ven Days () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). let Ġ{ Ġrow List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweather Beans Ġ= Ġrow List . map Ġ{ Ġrow Item Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeather Bean Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupper Text Ġ= Ġformat Data Time ( row Item . datetime , Ġtime Range ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweather Type Ġ= Ġrow Item . weather Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlower Text Ġ= Ġ"${ row Item . temperature . toInt ()} Âº C ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġif Ġ( time Range Ġ== ĠTime Range . By Hour ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDateTime . now (). hour Ġ== Ġrow Item . datetime . hour ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDateTime . now (). day OfYear Ġ== Ġrow Item . datetime . day OfYear ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchart Data Ġ= ĠChart Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues Ġ= Ġrow List . map Ġ{ Ġrow Item Ġ-> Ġrow Item . chance Of Pre cip itation Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Indexed Ġ{ Ġi , Ġ_ Ġ-> Ġtime Range Ġ!= ĠTime Range . By Hour Ġ|| Ġi Ġ% Ġ 4 Ġ== Ġ 0 Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags Ġ= Ġrow List . map Ġ{ Ġrow Item Ġ-> Ġformat Data Time ( row Item . datetime , Ġtime Range ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ forecast By Time Range . value Ġ= ĠFore cast By Time Range Ui Data ( weather Beans , Ġchart Data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat Data Time ( datetime : ĠLocalDateTime , Ġtime Range : ĠTime Range ) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( time Range Ġ== ĠTime Range . By Hour ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"% 0 2 d : 0 0 ". format ( datetime . hour ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"% 0 2 d .% 0 2 d ". format ( datetime . month Value , Ġdatetime . day OfMonth ) ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠFore cast By Time Range Ui Data ( ĊĠĠĠ Ġval Ġweather Beans : ĠList < Weather Bean Data >, ĊĠĠĠ Ġval Ġchart Data : ĠChart Data Ċ ) Ċ Ċ sealed Ġclass ĠTime Range Ġ{ ĊĠĠĠ Ġobject ĠBy Hour Ġ: ĠTime Range () ĊĠĠĠ Ġobject ĠNext Se ven Days Ġ: ĠTime Range () Ċ } Ċ Ċ sealed Ġclass ĠWeather Type ( ĊĠĠĠ Ġ@ String Res Ġval Ġname : ĠInt , ĊĠĠĠ Ġ@ Drawable Res Ġval Ġicon : ĠInt , ĊĠĠĠ Ġ@ Raw Res Ġval Ġanimated Icon : ĠInt Ċ ) Ġ{ ĊĠĠĠ Ġobject ĠCloud y Ġ: ĠWeather Type ( ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠR . string . cloud y , ĊĠĠĠĠĠĠĠ Ġicon Ġ= ĠR . drawable . ic _ weather _ cloud y , ĊĠĠĠĠĠĠĠ Ġanimated Icon Ġ= ĠR . raw . lott ie _ weather _ cloud y ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġobject ĠLight ning Rain y Ġ: ĠWeather Type ( ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠR . string . lightning _ rain y , ĊĠĠĠĠĠĠĠ Ġicon Ġ= ĠR . drawable . ic _ weather _ lightning _ rain y , ĊĠĠĠĠĠĠĠ Ġanimated Icon Ġ= ĠR . raw . lott ie _ weather _ storm y ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġobject ĠPart ly Cloud y Ġ: ĠWeather Type ( ĊĠĠĠĠĠĠĠ ĠR . string . part ly _ cloud y , ĊĠĠĠĠĠĠĠ Ġicon Ġ= ĠR . drawable . ic _ weather _ part ly _ cloud y , ĊĠĠĠĠĠĠĠ Ġanimated Icon Ġ= ĠR . raw . lott ie _ weather _ part ly _ cloud y ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġobject ĠPour ing Ġ: ĠWeather Type ( ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠR . string . p our ing , ĊĠĠĠĠĠĠĠ Ġicon Ġ= ĠR . drawable . ic _ weather _ p our ing , ĊĠĠĠĠĠĠĠ Ġanimated Icon Ġ= ĠR . raw . lott ie _ weather _ p our ing ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġobject ĠR ain y Ġ: ĠWeather Type ( ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠR . string . rain y , ĊĠĠĠĠĠĠĠ Ġicon Ġ= ĠR . drawable . ic _ weather _ rain y , ĊĠĠĠĠĠĠĠ Ġanimated Icon Ġ= ĠR . raw . lott ie _ weather _ rain y ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġobject ĠSun ny Ġ: ĠWeather Type ( ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠR . string . sun ny , ĊĠĠĠĠĠĠĠ Ġicon Ġ= ĠR . drawable . ic _ weather _ sun ny , ĊĠĠĠĠĠĠĠ Ġanimated Icon Ġ= ĠR . raw . lott ie _ weather _ sun ny ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġobject ĠSnow y Ġ: ĠWeather Type ( ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠR . string . snow y , ĊĠĠĠĠĠĠĠ Ġicon Ġ= ĠR . drawable . ic _ weather _ snow y , ĊĠĠĠĠĠĠĠ Ġanimated Icon Ġ= ĠR . raw . lott ie _ weather _ snow y ĊĠĠĠ Ġ) Ċ } Ċ