package Ġcom . pad c my an mar . mm news . kotlin . activities Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . support . design . widget . Floating ActionButton Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 4 . view . Gravity Compat Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . Toast Ċ import Ġcom . pad c my an mar . mm news . kotlin . MM News App Ċ import Ġcom . pad c my an mar . mm news . kotlin . R Ċ import Ġcom . pad c my an mar . mm news . kotlin . adapters . News Adapter Ċ import Ġcom . pad c my an mar . mm news . kotlin . components . Smart Scroll Listener Ċ import Ġcom . pad c my an mar . mm news . kotlin . data . models . News App Model Ċ import Ġcom . pad c my an mar . mm news . kotlin . data . v os . News VO Ċ import Ġcom . pad c my an mar . mm news . kotlin . deleg ates . Add Comment Delegate Ċ import Ġcom . pad c my an mar . mm news . kotlin . deleg ates . Before Login Delegate Ċ import Ġcom . pad c my an mar . mm news . kotlin . deleg ates . News Item Delegate Ċ import Ġcom . pad c my an mar . mm news . kotlin . dialogs . Add Comment Dialog Ċ import Ġcom . pad c my an mar . mm news . kotlin . events . Data Event Ċ import Ġcom . pad c my an mar . mm news . kotlin . events . Error Event Ċ import Ġcom . pad c my an mar . mm news . kotlin . services . First Service Ċ import Ġcom . pad c my an mar . mm news . kotlin . views . pods . Account Control View Pod Ċ import Ġcom . pad c my an mar . mm news . kotlin . views . pods . Before Login View Pod Ċ import Ġkotlinx . android . synt hetic . main . activity _ home .* Ċ import Ġorg . green robot . event bus . Subscribe Ċ import Ġorg . green robot . event bus . Thread Mode Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠHome Activity Ġ: ĠBase Activity (), ĠNews Item Delegate , ĠBefore Login Delegate , ĠAdd Comment Delegate Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon AddNew Comment ( comment : ĠString ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonTap Login () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( application Context , ĠAccount Control Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Account Control Activity . ACTION _ TYPE , ĠAccount Control Activity . ACTION _ TYPE _ LOGIN ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠAccount Control Activity 2 . new Intent ( application Context ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonTap Register () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( application Context , ĠAccount Control Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Account Control Activity . ACTION _ TYPE , ĠAccount Control Activity . ACTION _ TYPE _ REGISTER ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠAccount Control Activity 2 . new Intent ( application Context ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm News Adapter : ĠNews Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Smart Scroll Listener : ĠSmart Scroll Listener ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ home ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Show Title Enabled ( false ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Home As Up Indicator ( R . drawable . ic _ menu _ white _ 2 4 dp ) ĊĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( it , Ġ" Tap Ġon ĠF AB ", ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction (" Action ", Ġnull ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Out Collections () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġnews : ĠNews VO Ġ= ĠNews VO () ĊĠĠĠĠĠĠĠ Ġnews . news Id Ġ= Ġ" P ADC - 1 2 3 4 5 " ĊĠĠĠĠĠĠĠ Ġnews . brief Ġ= Ġ" Handle Ġaction Ġbar Ġitem Ġclicks Ġhere ." ĊĠĠĠĠĠĠĠ Ġnews . details Ġ= Ġ" The Ġaction Ġbar Ġwill Ġautomatically Ġhandle Ġclicks Ġon Ġthe ĠHome / Up Ġbutton , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" so Ġlong Ġas Ġyou Ġspecify Ġa Ġparent Ġactivity Ġin ĠAndroid Manifest . xml ." ĊĠĠĠĠĠĠĠ Ġnews . posted Date Ġ= Ġ" 2 0 1 8 - 0 3 - 2 7 " ĊĠĠĠĠĠĠĠ Ġnews . images Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠ Ġrv News . set Empty View ( vp Empty News ) ĊĠĠĠĠĠĠĠ Ġrv News . layout Manager Ġ= ĠLinearLayoutManager ( application Context ) ĊĊĠĠĠĠĠĠĠ Ġm Smart Scroll Listener Ġ= ĠSmart Scroll Listener ( object Ġ: ĠSmart Scroll Listener . On Smart Scroll Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon List End Reach () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( rv News , Ġ" Loading Ġmore Ġdata .", ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNews App Model . load News () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġrv News . add On Scroll Listener ( m Smart Scroll Listener ) ĊĊĠĠĠĠĠĠĠ Ġm News Adapter Ġ= ĠNews Adapter ( application Context , Ġthis ) ĊĠĠĠĠĠĠĠ Ġrv News . adapter Ġ= Ġm News Adapter ĊĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠNews App Model . load News () ĊĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnews Adapter Val Ġ= Ġm News Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnews Adapter Val . clear Data () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNews App Model . force Load News () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġnavigation View . set Navigation ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ latest _ news Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( navigation View , Ġ" T apped ĠLatest ĠNews ", ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ news _ just _ for _ you Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( navigation View , Ġ" T apped ĠNews ĠJust ĠFor ĠYou ", ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ favorite _ news Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( navigation View , Ġ" T apped ĠF avorite ĠNews ", ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( menuItem Index Ġin Ġ 0 Ġuntil Ġnavigation View . menu . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation View . menu . getItem ( menuItem Index ). isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer Layout . close Drawer ( Gravity Compat . END ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ set Navigation ItemSelected Listener Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġvp Account Control Ġ= Ġnavigation View . getHeader View ( 0 ) Ġas ĠAccount Control View Pod ĊĠĠĠĠĠĠĠ Ġvp Account Control . set Delegate ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġmenu ; Ġthis Ġadds Ġitems Ġto Ġthe Ġaction Ġbar Ġif Ġit Ġis Ġpresent . ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ home , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġaction Ġbar Ġitem Ġclicks Ġhere . ĠThe Ġaction Ġbar Ġwill ĊĠĠĠĠĠĠĠ Ġ// Ġautomatically Ġhandle Ġclicks Ġon Ġthe ĠHome / Up Ġbutton , Ġso Ġlong ĊĠĠĠĠĠĠĠ Ġ// Ġas Ġyou Ġspecify Ġa Ġparent Ġactivity Ġin ĠAndroid Manifest . xml . ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== Ġandroid . R . id . home ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer Layout . open Drawer ( Gravity Compat . END ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ settings Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġtwo Ġinteger Ġfrom Ġparameter Ġand Ġreturn Ġthe Ġresult . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd These Two ( var One : ĠInt , Ġvar Two : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvar One Ġ+ Ġvar Two ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFind Ġout Ġif Ġthe Ġdate Ġis Ġto Ġrest Ġor Ġnot . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis Rest Day ( date : ĠDate ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( date Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĊĠĠĠĠĠĠĠ Ġvar Ġcalendar : ĠCalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . time Ġ= Ġdate ĊĠĠĠĠĠĠĠ Ġvar Ġday OfMonth Ġ= Ġcalendar . get ( Calendar . DAY _ OF _ MONTH ) ĊĠĠĠĠĠĠĠ Ġif Ġ( day OfMonth Ġ/ Ġ 3 Ġ== Ġ 0 Ġ&& Ġis Rest Date ( date )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġpresent able Ġcomma Ġseparated Ġdegrees Ġfrom Ġthe Ġlist . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Degrees Present able ( degrees : ĠList < String >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpresent able Degrees : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor Ġ( degree Ġin Ġdegrees ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresent able Degrees Ġ= Ġ"$ present able Degrees , Ġ$ degree " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpresent able Degrees ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġpresent able Ġcomma Ġseparated Ġdegrees Ġfrom Ġthe Ġlist Ġ- Ġwith Ġwhile Ġloop . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Degrees Present able With While ( degrees : ĠList < String >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpresent able Degrees : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( index Ġ< Ġdegrees . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresent able Degrees Ġ= Ġ"$ present able Degrees , Ġ$ degrees [ index ]" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpresent able Degrees ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCheck Ġthe Ġdate Ġif Ġit Ġis Ġto Ġrest Ġor Ġnot . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis Rest Date ( date ToCheck : ĠDate ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . time Ġ= Ġdate ToCheck ĊĠĠĠĠĠĠĠ Ġwhen Ġ( calendar . get ( Calendar . DAY _ OF _ WEEK )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFind Ġout Ġif Ġyour Ġage Ġis Ġto Ġf ool Ġaround . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġage To F ool Around ( age : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( age Ġin Ġ 1 9 .. 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Yes " ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" No " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSee Ġhow Ġ" step " Ġworks Ġin Ġa Ġloop . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhow Range And Step Works () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 1 .. 1 5 Ġstep Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( MM News App . TAG , Ġ" 1 .. 1 5 Ġstep Ġ 2 Ġ: Ġ$ index ") ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 3 0 Ġdown To Ġ 0 Ġstep Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( MM News App . TAG , Ġ" 3 0 Ġdown To Ġ 0 Ġstep Ġ 3 Ġ: Ġ$ index ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtry Out Collections () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdegrees Ġ= ĠlistOf (" M . Med Ġ( Int . Med )( N us , ĠS ' p ore )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" M . Med . Sc Ġ( Int , Med )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MA Ġcad ĠMED Ġ( UK )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" F ellow ship Ġin Ġinter vention al ĠCard io logy Ġ( Se oul , ĠK orea )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Consult ant ĠHeart Ġ& ĠGeneral ĠPh ys ician ") ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġval Ġcool Degree Ġ= Ġ" M . Med . Sc Ġ( Int , Med )" ĊĠĠĠĠĠĠĠ Ġif ( cool Degree Ġin Ġdegrees ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( MM News App . TAG , Ġ" Having Ġ$ cool Degree Ġis Ġpretty Ġawesome .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġdegrees ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( MM News App . TAG , Ġ" Each Ġitem Ġin Ġfilter Ġoperator Ġ: Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! it . startsWith (" M ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . toUpperCase () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĠLog . d ( MM News App . TAG , Ġ" Having Ġ$ it Ġis Ġpretty Ġawesome .") Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonTap Comment ( news : ĠNews VO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadd Comment Dialog Ġ= ĠAdd Comment Dialog ( this , Ġthis ) ĊĠĠĠĠĠĠĠ Ġadd Comment Dialog . show () ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( application Context , ĠFirst Service :: class . java ) ĊĠĠĠĠĠĠĠ Ġstart Service ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonTap Send To ( news : ĠNews VO ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonTap Favorite ( news : ĠNews VO ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonTap Statistics ( news : ĠNews VO ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonTap News ( news : ĠNews VO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠNews Details Activity . new Intent ( application Context , Ġnews . news Id ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun Ġon News Loaded Event ( news Loaded Event : ĠData Event . News Loaded Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm News Adapter !!. append New Data ( news Loaded Event . loaded News Ġas ĠMutable List < News VO >) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun ĠonError News Loaded Event ( api Error Event : ĠError Event . ApiError Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( rv News , Ġ" ERROR Ġ: Ġ" Ġ+ Ġapi Error Event . get Msg (), ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction (" Action ", Ġnull ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun Ġon Empty News Loaded Event ( empty Data Loaded Event : ĠData Event . Empty Data Loaded Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( rv News , Ġ" ERROR Ġ: Ġ" Ġ+ Ġempty Data Loaded Event . error Msg , ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction (" Action ", Ġnull ). show () ĊĠĠĠ Ġ} Ċ } Ċ