package Ġcom . web sar va . w ings . android . news app _ kotlin . ui . weather Ċ Ċ import Ġandroid . app . Ui Mode Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġandroidx . appcompat . app . ActionBar Drawer Toggle Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġandroidx . core . view . Gravity Compat Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . web sar va . w ings . android . news app _ kotlin . Common Class Ċ import Ġcom . web sar va . w ings . android . news app _ kotlin . R Ċ import Ġcom . web sar va . w ings . android . news app _ kotlin . databinding . Activity Weather Binding Ċ import Ġcom . web sar va . w ings . android . news app _ kotlin . ui . web Search . MainActivity Ċ import Ġcom . web sar va . w ings . android . news app _ kotlin . ui . weather . re cyclerView . RecyclerView Adapter Ċ import Ġcom . web sar va . w ings . android . news app _ kotlin . view model . Weather ViewModel Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ class ĠWeather Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Weather Binding ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠWeather ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ Ġ// ĠNight Mode ĊĠĠĠĠĠĠĠ Ġval Ġm Ui Manager Ġ= Ġget System Service ( Context . UI _ MODE _ SERVICE ) Ġas ĠUi Mode Manager ĊĠĠĠĠĠĠĠ Ġvar Ġsystem Theme Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( m Ui Manager . night Mode Ġ== ĠUi Mode Manager . MODE _ N IGHT _ YES ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Theme Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpreference Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( preference . getBoolean (" night Preference ", Ġsystem Theme Mode )){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ YES ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ NO ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Weather Binding . inflate ( layout Inflater ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( this . root ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( binding . toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Show Title Enabled ( false ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtoggle Ġ= ĠAction Bar Drawer Toggle ( this , Ġbinding . drawer Layout , binding . toolbar , ĠR . string . drawer _ open , ĠR . string . drawer _ close ) ĊĠĠĠĠĠĠĠ Ġbinding . drawer Layout . add Drawer Listener ( toggle ) ĊĠĠĠĠĠĠĠ Ġtoggle . sync State () ĊĊĠĠĠĠĠĠĠ Ġbinding . navigation View . set Navigation ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it . itemId ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ web Search Ġ-> Ġweb Search Intent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ settings Ġ-> ĠCommon Class ( null ). settings Intent ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ licenses Ġ-> ĠCommon Class ( null ). license Intent ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . drawer Layout . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Navigation ItemSelected Listener Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . weather List . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĊĠĠĠĠĠĠĠ Ġval ĠprogressBar Ġ= Ġbinding . progressbar ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ ĠprogressBar . max Ġ= Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠ Ġvar Ġbit Map : ĠBitmap ĊĠĠĠĠĠĠĠ ĠviewModel . weather List (). observe ( this , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! viewModel . weather List (). value . isNull OrEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbit Map Ġ= Ġwhen ( viewModel . image Flag (). value ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . sun ny ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . cloud y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . rain ny ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . iv Weather . setImage Bitmap ( bit Map ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠRecyclerView Adapter ( viewModel . weather List (). value !! , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . weather List . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . weather List . addItem Decoration ( Divider Item Decoration ( this , ĠDiv ider Item Decoration . VERTICAL )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" test ", Ġ" Called !! ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . progress Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . weather Execute . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbinding . weather Execute . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . weather Execute . isEnabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠareaCode Ġ= Ġcity Code ( binding . search Conditions 1 List . selected ItemId ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" test ", ĠareaCode ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . receive Weather Data Get ( area Code , output Lang Ġ= ĠgetString ( R . string . app _ name ), ĠprogressBar ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Prepare Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġweather Ġ= Ġmenu ?. find Item ( R . id . action _ weather ) ĊĠĠĠĠĠĠĠ Ġweather ?. isEnabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . toolbar _ options _ menu , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġreturn Val Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġwhen ( item . itemId ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ web Search Ġ-> Ġweb Search Intent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Val Ġ= Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġreturn Val ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġweb Search Intent (){ ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠMainActivity :: class . java )) ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( android . R . anim . fade _ in , Ġandroid . R . anim . fade _ out ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcity Code ( selected _ id : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( selected _ id . toInt ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 1 .. 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 ${ selected _ id Ġ+ Ġ 1 } 0 0 1 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 9 .. 1 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ selected _ id Ġ+ Ġ 1 } 0 0 1 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 1 9 .. 2 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ selected _ id Ġ+ Ġ 1 } 0 0 1 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 2 9 .. 3 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ selected _ id Ġ+ Ġ 1 } 0 0 1 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 3 9 .. 4 5 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ selected _ id Ġ+ Ġ 1 } 0 0 1 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 6 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 7 1 0 1 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 1 6 0 1 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }