package Ġcom . sel jab ali . template application . ui . weather Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġcom . sel jab ali . core . m vi . Base M vi Fragment Ċ import Ġcom . sel jab ali . core . utilities . set Under lined Ċ import Ġcom . sel jab ali . template application . R Ċ import Ġcom . sel jab ali . template application . ui . weather . city region adapter . City Region Ċ import Ġcom . sel jab ali . template application . ui . weather . city region adapter . City Region Adapter Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ import Ġkotlinx . android . synt hetic . main . fragment _ weather _ landing _ page .* Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ class ĠWeather Fragment Ġ: ĠBase M vi Fragment < Weather View Event , ĠWeather ViewState , ĠWeather Side Effect >( ĊĠĠĠ Ġmodule Ġ= Ġweather Module Ċ ), ĠWeather View Api Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG : ĠString Ġ= ĠWeather Fragment :: class . java . simple Name ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠWeather Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġload Sf Weather Event Publisher Ġ= ĊĠĠĠĠĠĠĠ ĠBehavior Subject . create < Weather View Event . Load Weather Page Event >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview State Binder : ĠWeather ViewState Binder ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcity Region Adapter : ĠCity Region Adapter ĊĠĠĠ Ġoverride Ġval ĠviewModel : ĠWeather ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel . process View Events ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . merge ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( load Sf Weather Event Publisher ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ= ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . layout . fragment _ weather _ landing _ page , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġview State Binder Ġ= ĠWeather ViewState Binder ( this ) ĊĠĠĠĠĠĠĠ Ġload Sf Weather Event Publisher . onNext ( Weather View Event . Load Weather Page Event ) ĊĠĠĠĠĠĠĠ Ġcities ViewPager Setup () ĊĠĠĠĠĠĠĠ Ġpressure _ label _ text _ view . set Under lined () ĊĠĠĠĠĠĠĠ Ġwind _ speed _ label _ text _ view . set Under lined () ĊĠĠĠĠĠĠĠ Ġhum idity _ label _ text _ view . set Under lined () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcities ViewPager Setup () Ġ{ ĊĠĠĠĠĠĠĠ Ġcity Region Adapter Ġ= ĠCity Region Adapter () ĊĠĠĠĠĠĠĠ Ġcities _ view _ pager . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis User Input Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġcity Region Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister On Page Change Callback ( object Ġ: ĠView Pager 2 . On Page Change Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Selected ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠInform ĠVM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠM VI ĠEvents ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon ViewState Event ( view State : ĠWeather ViewState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview State Binder . setView State ( view State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Side Effect Event ( side Effect : ĠWeather Side Effect ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( side Effect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠWeather Side Effect . Show Toast Ġ-> ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġside Effect . message , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠWeather View ĠApi ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġset City Regions Visibility ( to Show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcities _ view _ pager . visibility Ġ= Ġif Ġ( to Show ) ĠView . VISIBLE Ġelse ĠView . IN VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset City Regions ( city Regions : ĠList < City Region >) Ġ{ ĊĠĠĠĠĠĠĠ Ġcity Region Adapter . set City Regions ( city Regions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Temperature ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemperature _ text _ view . text Ġ= Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Weather Image Visibility ( to Show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweather _ image _ view . visibility Ġ= Ġif Ġ( to Show ) ĠView . VISIBLE Ġelse ĠView . IN VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset ProgressBar Visibility ( to Show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= Ġif Ġ( to Show ) ĠView . VISIBLE Ġelse ĠView . IN VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Pressure Title Visibility ( to Show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpressure _ label _ text _ view . visibility Ġ= Ġif Ġ( to Show ) ĠView . VISIBLE Ġelse ĠView . IN VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Pressure ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpressure _ text _ view . text Ġ= Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Hum idity Title Visibility ( to Show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhum idity _ label _ text _ view . visibility Ġ= Ġif Ġ( to Show ) ĠView . VISIBLE Ġelse ĠView . IN VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Hum idity ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhum idity _ text _ view . text Ġ= Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Wind Speed Title Visibility ( to Show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwind _ speed _ label _ text _ view . visibility Ġ= Ġif Ġ( to Show ) ĠView . VISIBLE Ġelse ĠView . IN VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Wind Speed ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwind _ speed _ text _ view . text Ġ= Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset DateTime ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdate _ time _ text _ view . text Ġ= Ġtext ĊĠĠĠ Ġ} Ċ } Ċ