package Ġcom . cool weather . cool weather jet pack . ui . area Ċ Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget .* Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġcom . cool weather . cool weather jet pack . R Ċ import Ġcom . cool weather . cool weather jet pack . ui . MainActivity Ċ import Ġcom . cool weather . cool weather jet pack . ui . weather . Weather Activity Ċ import Ġcom . cool weather . cool weather jet pack . util . Injector Util Ċ import Ġkotlinx . android . synt hetic . main . activity _ weather .* Ċ Ċ class ĠChoose Area Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġlazy Ġ{ ĠViewModel Providers . of ( this , ĠInject or Util . get Choose Area Model Factory ()). get ( Choose Area ViewModel :: class . java ) Ġ} ĊĠĠĠ Ġprivate Ġvar Ġprogress Dialog : ĠProgress Dialog ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtitle Text : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġback Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠlistView : ĠListView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠArray Adapter < String > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . choose _ area , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġtitle Text Ġ= Ġview . findViewById ( R . id . title _ text ) ĊĠĠĠĠĠĠĠ Ġback Button Ġ= Ġview . findViewById ( R . id . back _ button ) ĊĠĠĠĠĠĠĠ ĠlistView Ġ= Ġview . findViewById ( R . id . list _ view ) ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠArray Adapter ( context !! , Ġandroid . R . layout . simple _ list _ item _ 1 , ĠviewModel . data List ) ĊĠĠĠĠĠĠĠ ĠlistView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠlistView . on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġ_, Ġ_, Ġposition , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . current Level . value Ġ== ĠLE VEL _ COUN TY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount y List Ġ= ĠviewModel . count ies . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( county List Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweather Id Ġ= Ġcount y List . get OrThrow ()[ position ]. weather Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġis ĠMainActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠWeather Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" weather _ id ", Ġweather Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. finish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( activity Ġis ĠWeather Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweather Activity Ġ= Ġactivity Ġas ĠWeather Activity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweather Activity . drawer Layout . close Draw ers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweather Activity . viewModel . weather Id Ġ= Ġweather Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweather Activity . viewModel . refresh Weather () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . current Level . value Ġ== ĠLE VEL _ C ITY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcity List Ġ= ĠviewModel . cities . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( city List Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . selected City Ġ= Ġcity List . get OrThrow ()[ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Count ies () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . current Level . value Ġ== ĠLE VEL _ PROV IN CE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprovince List Ġ= ĠviewModel . pro vin ces . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( province List Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . selected Province Ġ= Ġprovince List . get OrThrow ()[ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery C ities () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġback Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel . current Level . value Ġ== ĠLE VEL _ COUN TY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery C ities () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( viewModel . current Level . value Ġ== ĠLE VEL _ C ITY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Pro vin ces () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobserve () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve () Ġ{ ĊĠĠĠĠĠĠĠ Ġobserve ( viewModel . pro vin ces ) Ġ{ Ġlist Ġ-> ĠviewModel . data List . addAll ( list . map Ġ{ Ġit . province Name Ġ}) Ġ} ĊĠĠĠĠĠĠĠ Ġobserve ( viewModel . cities ) Ġ{ Ġlist Ġ-> ĠviewModel . data List . addAll ( list . map Ġ{ Ġcity Ġ-> Ġ Ġcity . city Name Ġ}) Ġ} ĊĠĠĠĠĠĠĠ Ġobserve ( viewModel . count ies ) Ġ{ Ġlist Ġ-> ĠviewModel . data List . addAll ( list . map Ġ{ Ġcount y Ġ-> Ġcount y . county Name Ġ}) Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . current Level . observe ( this , ĠObserver Ġ{ Ġlevel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( level ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLE VEL _ PROV IN CE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Text . text Ġ= Ġ" ä¸ŃåĽ½ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLE VEL _ C ITY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Text . text Ġ= ĠviewModel . selected Province ?. province Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback Button . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLE VEL _ COUN TY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Text . text Ġ= ĠviewModel . selected City ?. city Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback Button . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġif Ġ( viewModel . data List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Pro vin ces () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġobserve ( live Data : ĠLive Data < Result < Mutable List < T >> >, Ġblock : Ġ( List < T >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data . observe ( this , ĠObserver Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . data List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock ( result . get OrThrow ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistView . setSelection ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġresult . exception OrNull ()?. message , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose Progress Dialog () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquery Pro vin ces () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress Dialog () ĊĠĠĠĠĠĠĠ ĠviewModel . current Level . value Ġ= ĠLE VEL _ PROV IN CE ĊĠĠĠĠĠĠĠ ĠviewModel . get Pro vin ces () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquery C ities () Ġ= ĠviewModel . selected Province ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress Dialog () ĊĠĠĠĠĠĠĠ ĠviewModel . current Level . value Ġ= ĠLE VEL _ C ITY ĊĠĠĠĠĠĠĠ ĠviewModel . getC ities ( it . province Code ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquery Count ies () Ġ= ĠviewModel . selected City ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress Dialog () ĊĠĠĠĠĠĠĠ ĠviewModel . current Level . value Ġ= ĠLE VEL _ COUN TY ĊĠĠĠĠĠĠĠ ĠviewModel . getCount ies ( it . province Id , Ġit . city Code ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĺ¾ç¤º è¿Ľ åº¦ å¯¹ è¯Ŀ æ¡Ĩ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshow Progress Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Dialog Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog Ġ= ĠProgress Dialog ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog ?. setMessage (" æŃ£åľ¨ åĬłè½½ ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog ?. set Canceled On Touch Outside ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprogress Dialog ?. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åħ³éĹŃ è¿Ľ åº¦ å¯¹ è¯Ŀ æ¡Ĩ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġclose Progress Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġprogress Dialog ?. dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLE VEL _ PROV IN CE Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLE VEL _ C ITY Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLE VEL _ COUN TY Ġ= Ġ 2 ĊĠĠĠ Ġ} Ċ Ċ }