package Ġcom . zer ones ky . k cool weather Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . support . v 4 . view . Gravity Compat Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . zer ones ky . k cool weather . gson . Weather Ċ import Ġcom . zer ones ky . k cool weather . service . Auto Update Service Ċ import Ġcom . zer ones ky . k cool weather . util . Http Util Ċ import Ġcom . zer ones ky . k cool weather . util . Utility Ċ import Ġkotlinx . android . synt hetic . main . activity _ weather .* Ċ import Ġkotlinx . android . synt hetic . main . a qi .* Ċ import Ġkotlinx . android . synt hetic . main . forecast .* Ċ import Ġkotlinx . android . synt hetic . main . now .* Ċ import Ġkotlinx . android . synt hetic . main . suggestion .* Ċ import Ġkotlinx . android . synt hetic . main . title .* Ċ import Ġokhttp 3 . Call Ċ import Ġokhttp 3 . Response Ċ import Ġjava . io . IOException Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġz yx ins Ġon Ġ 0 6 / 0 3 / 2 0 1 8 . Ċ Ġ*/ Ċ class ĠWeather Activity Ġ: AppCompatActivity () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġif ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdecor View Ġ= Ġwindow . decor View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecor View . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ weather ) ĊĊĠĠĠĠĠĠĠ Ġswipe Refresh . setColor Scheme Resources ( R . color . color Primary ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġvar Ġweather String Ġ= Ġprefs . getString (" weather ", null ) ĊĠĠĠĠĠĠ Ġ// Ġweather Layout Ġ= ĠfindViewById ( R . id . weather Layout ) Ġas ĠScroll View ĊĊĠĠĠĠĠĠĠ Ġval Ġweather Id : ĠString ? ĊĊĠĠĠĠĠĠĠ Ġif Ġ( weather String Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweather Ġ= ĠUtility . handle Weather Response ( weather String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweather Id Ġ= Ġweather ?. basic ?. weather Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Weather Info ( weather !! ) ĊĠĠĠĠĠĠĠ Ġ} else ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweather Id Ġ= Ġget Intent (). getString Extra (" weather _ id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweather Layout . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Weather ( weather Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġswipe Refresh . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Weather ( weather Id !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġnav Button . setOnClickListener Ġ{ Ġdrawer Layout . open Drawer ( Gravity Compat . START ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġb ing Pic Ġ= Ġprefs . getString (" bing _ pic ", null ) ĊĠĠĠĠĠĠĠ Ġif Ġ( bing Pic Img Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this ). load ( bing Pic ). into ( bing Pic Img ) ĊĠĠĠĠĠĠĠ Ġ} else ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload B ing Pic () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest Weather ( weather Id : ĠString ){ ĊĠĠĠĠĠĠĠ Ġvar Ġweather Url Ġ= Ġ Ġ" http :// gu olin . tech / api / weather ? city id =$ weather Id & key = bc 0 4 1 8 b 5 7 b 2 d 4 9 1 8 8 1 9 d 3 9 7 4 ac 1 2 8 5 d 9 " ĊĠĠĠĠĠĠĠ ĠHttp Util . send Ok HttpRequest ( weather Url , object : Ġokhttp 3 . Callback { ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall ?, Ġresponse : ĠResponse ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Text Ġ= Ġresponse !!. body () !!. string () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweather Ġ= ĠUtility . handle Weather Response ( responseText ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( weather Ġ!= Ġnull Ġ&& Ġ" ok ". equals ( weather . status )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġeditor Ġ= ĠPreference Manager . getDefault SharedPreferences ( this @ Weather Activity ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString (" weather ", responseText ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Weather Info ( weather ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Weather Activity ," èİ·åıĸ å¤© æ°Ķ ä¿¡æģ¯ å¤±è´¥ ", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall ?, Ġe : ĠIOException ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe ?. printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Weather Activity ," èİ·åıĸ å¤© æ°Ķ ä¿¡æģ¯ å¤±è´¥ ", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġload B ing Pic () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Weather Info ( weather : ĠWeather ){ ĊĠĠĠĠĠĠĠ Ġtitle City . text Ġ= Ġweather . basic !!. city Name ĊĠĠĠĠĠĠĠ Ġtitle UpdateTime . text Ġ= Ġweather . basic !!. update !!. update Time !!. split (" Ġ" )[ 1 ] ĊĠĠĠĠĠĠĠ Ġdegree Text . text Ġ= Ġweather . now !!. temperature Ġ+ Ġ" âĦ ĥ " ĊĠĠĠĠĠĠĠ Ġweather Info Text . text Ġ= Ġweather . now !!. more !!. info ĊĠĠĠĠĠĠĠ Ġfor cast Layout . removeAll Views () ĊĊĠĠĠĠĠĠĠ Ġfor ( for cast Ġin Ġweather . forecast List !! ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġview Ġ= ĠLayoutInflater . from ( this ). inflate ( R . layout . forecast _ item , for cast Layout , false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Text 1 Ġ= Ġview . findViewById < View >( R . id . date Text ) Ġas ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Text 1 Ġ= Ġview . findViewById < View >( R . id . info Text ) Ġas ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Text 1 Ġ= Ġview . findViewById < View >( R . id . max Text ) Ġas ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Text 1 Ġ= Ġview . findViewById < View >( R . id . min Text ) Ġas ĠTextView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Text 1 . text Ġ= Ġfor cast . date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Text 1 . text Ġ= Ġfor cast . more !!. info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Text 1 . text Ġ= Ġfor cast . temperature !!. max ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Text 1 . text Ġ= Ġfor cast . temperature !!. min ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor cast Layout . addView ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( weather . a qi Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa qi Text . text Ġ= Ġweather . a qi !!. city !!. a qi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpm 2 5 Text . text Ġ= Ġweather . a qi !!. city !!. pm 2 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcomfort Text . text Ġ= Ġ" èĪ Ĵ éĢĤ åº¦ ï¼ļ" Ġ+ Ġweather . suggestion !!. com fort !!. info ĊĠĠĠĠĠĠĠ Ġcar W ash Text . text Ġ= Ġ" æ´ Ĺ è½¦ æĮĩ æķ° ï¼ļ" Ġ+ Ġweather . suggestion !!. car W ash !!. info ĊĠĠĠĠĠĠĠ Ġs port Text . text Ġ= Ġ" è¿Ĳ åĬ¨ å»ºè®® ï¼ļ" Ġ+ Ġweather . suggestion !!. sport !!. info ĊĠĠĠĠĠĠĠ Ġweather Layout . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠAuto Update Service :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload B ing Pic (){ ĊĠĠĠĠĠĠĠ Ġvar Ġrequest B ing Pic Ġ= Ġ" http :// gu olin . tech / api / bing _ pic " ĊĠĠĠĠĠĠĠ ĠHttp Util . send Ok HttpRequest ( request B ing Pic , object : Ġokhttp 3 . Callback { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall ?, Ġresponse : ĠResponse ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġb ing Pic Ġ= Ġresponse !!. body () !!. string () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġeditor Ġ= ĠPreference Manager . getDefault SharedPreferences ( this @ Weather Activity ). edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString (" bing _ pic ", bing Pic ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this @ Weather Activity ). load ( bing Pic ). into ( bing Pic Img ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall ?, Ġe : ĠIOException ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe ?. printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }