/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 Ġ- Ġpresent ĠIn structure , ĠInc . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠThis Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* ĠĠĠĠ Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* ĠĠĠĠ Ġthe ĠFree ĠSoftware ĠFoundation , Ġversion Ġ 3 Ġof Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* ĠĠĠĠ Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠĠĠĠ ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠĠĠĠ ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* ĠĠĠĠ Ġalong Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġ< http :// www . gnu . org / licenses />. Ċ Ġ* Ċ Ġ*/ Ċ @ file : Suppress (" unused ") Ċ package Ġcom . in structure . student . events Ċ Ċ import Ġcom . in structure . canvas api 2 . models .* Ċ import Ġorg . green robot . event bus . EventBus Ċ Ċ /** Ċ Ġ* ĠA Ġbus Ġevent Ġwhich Ġonly Ġallows Ġeach Ġsubscriber Ġaccess Ġto Ġthe Ġevent Ġpayload Ġonce . ĠDesign ed Ġto Ġbe Ċ Ġ* Ġused Ġas Ġa Ġsticky Ġevent , Ġ[ R ation ed Bus Event ] Ġshould Ġbe Ġused Ġin Ġcomponents Ġwhich Ġneed Ġto Ġreceive Ċ Ġ* Ġspecific Ġevents Ġexactly Ġonce Ġbut Ġwhich Ġmay Ġnot Ġcurrently Ġlive Ġin Ġmemory . Ċ Ġ* Ċ Ġ* ĠExample : ĠThe ĠCour ses Ġpage Ġand Ġthe ĠAll ĠCour ses Ġpage Ġboth Ġdisplay Ġcached Ġdata Ġ( if Ġavailable ). ĠIf Ġa Ċ Ġ* Ġuser Ġopens Ġa Ġcourse Ġfrom Ġthe ĠCour ses Ġpage Ġand Ġedits Ġits Ġname , Ġboth Ġthe ĠCour ses Ġpage Ġand ĠAll Ċ Ġ* ĠCour ses Ġpage Ġwill Ġneed Ġto Ġforce Ġread Ġfrom Ġthe Ġnetwork Ġto Ġavoid Ġshowing Ġstale Ġdata . ĠThe ĠCour ses Ċ Ġ* Ġpage Ġis Ġin Ġmemory Ġwhile Ġthe ĠAll ĠCour ses Ġpage Ġis Ġnot . ĠBy Ġsending Ġa Ġsticky Ġ[ R ation ed Bus Event ], Ċ Ġ* Ġthe ĠCour ses Ġpage Ġcan Ġimmediately Ġrefresh Ġwith Ġnew Ġdata Ġand Ġthe ĠAll ĠCour ses Ġpage Ġwill Ġknow Ġto Ċ Ġ* Ġskip Ġthe Ġcache Ġthe Ġnext Ġtime Ġit Ġis Ġinstantiated . Ċ Ġ* Ċ Ġ* Ġ@ param [ T ] ĠThe Ġtype Ġof Ġpayload Ġheld Ġby Ġthis Ġ[ R ation ed Bus Event ] Ġinstance Ċ Ġ* Ġ@ param [ payload ] ĠThe Ġpayload Ġheld Ġby Ġthis Ġ[ R ation ed Bus Event ] Ġinstance Ċ Ġ* Ġ@ param [ skip Id ] Ġ( Optional ) ĠA Ġsubscriber ĠID Ġto Ġskip , Ġuseful Ġwhen Ġthe Ġclass Ġsending Ġthe Ġevent Ġis Ċ Ġ* Ġalso Ġsubscribed Ġto Ġreceive Ġevents Ġof Ġthe Ġsame Ġtype Ġbut Ġw ishes Ġto Ġignore Ġthis Ġspecific Ġevent . Ċ Ġ* ĠGener ally Ġthis ĠID Ġwill Ġbe Ġthe Ġsimple Ġname Ġof Ġthe Ġsub scri bing Ġclass Ġ( e . g . Ġ[ Class . getSimpleName ]) Ċ Ġ*/ Ċ abstract Ġclass ĠR ation ed Bus Event < out ĠT >( protected Ġval Ġpayload : ĠT , Ġskip Id : ĠString ? Ġ= Ġnull ) Ġ{ ĊĊĠĠĠ Ġ/* ĠIDs Ġof Ġsubscribers Ġto Ġbe Ġskipped Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġskip Ids Ġ= Ġmutable Set Of < String >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġskip Id ?. let Ġ{ Ġskip ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġa Ġsubscriber Id Ġto Ġbe Ġskipped . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param [ subscriber Id ] ĠThe Ġsubscriber ĠID Ġto Ġbe Ġskipped . ĠGener ally Ġthis ĠID Ġwill Ġbe Ġthe Ġsimple ĊĠĠĠĠ Ġ* Ġname Ġof Ġthe Ġsub scri bing Ġclass Ġ( e . g . Ġ[ Class . getSimpleName ]) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġskip ( subscriber Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( subscriber Id Ġ! in Ġskip Ids ) Ġskip Ids Ġ+= Ġsubscriber Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġpayload Ġof Ġthis Ġevent , Ġor Ġnull Ġif Ġa Ġsubscriber Ġwith Ġthe Ġgiven Ġ[ subscriber Id ] ĊĠĠĠĠ Ġ* Ġhas Ġalready Ġreceived Ġthe Ġpayload . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param [ subscriber Id ] ĠThe Ġsubscriber ĠID Ġof Ġthe Ġsub scri bing Ġclass . ĠGener ally Ġthis ĠID Ġwill Ġbe ĊĠĠĠĠ Ġ* Ġthe Ġsimple Ġname Ġof Ġthe Ġsub scri bing Ġclass Ġ( e . g . Ġ[ Class . getSimpleName ]) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġonce OrNull ( subscriber Id : ĠString ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( subscriber Id Ġin Ġskip Ids ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġskip Ids Ġ+= Ġsubscriber Id ĊĠĠĠĠĠĠĠ Ġreturn Ġpayload ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalls Ġthe Ġprovided Ġ[ block ] Ġfunction , Ġpassing Ġin Ġthe Ġpayload Ġof Ġthis Ġevent , Ġor Ġdoes Ġnothing ĊĠĠĠĠ Ġ* Ġif Ġa Ġsubscriber Ġwith Ġthe Ġgiven Ġ[ subscriber Id ] Ġhas Ġalready Ġreceived Ġthe Ġpayload . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param [ subscriber Id ] ĠThe Ġsubscriber ĠID Ġof Ġthe Ġsub scri bing Ġclass . ĠGener ally Ġthis ĠID Ġwill Ġbe ĊĠĠĠĠ Ġ* Ġthe Ġsimple Ġname Ġof Ġthe Ġsub scri bing Ġclass Ġ( e . g . Ġ[ Class . getSimpleName ]) ĊĠĠĠĠ Ġ* Ġ@ param [ block ] ĠA Ġfunction Ġwhich Ġwill Ġreceive Ġthis Ġevent 's Ġpayload . ĠThis Ġfunction Ġwill Ġonly Ġbe ĊĠĠĠĠ Ġ* Ġcalled Ġonce Ġper Ġunique Ġ[ subscriber Id ] Ġper Ġevent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġonce ( subscriber Id : ĠString , Ġblock : Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( subscriber Id Ġin Ġskip Ids ) Ġreturn ĊĠĠĠĠĠĠĠ Ġskip Ids Ġ+= Ġsubscriber Id ĊĠĠĠĠĠĠĠ Ġblock ( payload ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUses Ġthe Ġ[ skip Ids ] Ġas Ġa Ġkey Ġto Ġtrigger Ġif Ġa Ġpayload Ġshould Ġbe Ġreturned . ĠThe Ġopposite Ġof Ġthe Ġonce Ġfunction . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param [ subscriber Id ] ĠThe Ġsubscriber ĠID Ġof Ġthe Ġsub scri bing Ġclass . ĠGener ally Ġthis ĠID Ġwill Ġbe ĊĠĠĠĠ Ġ* Ġthe Ġsimple Ġname Ġof Ġthe Ġsub scri bing Ġclass Ġ( e . g . Ġ[ Class . getSimpleName ]) ĊĠĠĠĠ Ġ* Ġ@ param [ block ] ĠA Ġfunction Ġwhich Ġwill Ġreceive Ġthis Ġevent 's Ġpayload . ĠThis Ġfunction Ġwill Ġonly Ġbe ĊĠĠĠĠ Ġ* Ġcalled Ġif Ġthe Ġ[ subscriber Id ] Ġexists Ġin Ġthe Ġ[ skip Ids ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġonly ( subscriber Id : ĠString , Ġblock : Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( subscriber Id Ġin Ġskip Ids ) Ġblock ( payload ) Ġelse Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠI g no res Ġany Ġskip Ġids Ġand Ġgives Ġa Ġpayload . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param [ block ] ĠA Ġfunction Ġwhich Ġwill Ġreceive Ġthis Ġevent 's Ġpayload . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget ( block : Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblock ( payload ) ĊĠĠĠ Ġ} Ċ } Ċ /** ĠConvenience Ġfunction Ġfor Ġposting Ġthis Ġevent Ġto Ġthe ĠEvent Bus Ġ*/ Ċ fun ĠR ation ed Bus Event <* >. post Sticky () Ġ= ĠEvent Bus . getDefault (). post Sticky ( this ) Ċ Ċ /** ĠConvenience Ġfunction Ġfor Ġposting Ġthis Ġevent Ġto Ġthe ĠEvent Bus Ġ*/ Ċ fun ĠR ation ed Bus Event <* >. post () Ġ= ĠEvent Bus . getDefault (). post ( this ) Ċ Ċ /** ĠA ĠR ation ed Bus Event Ġfor Ġa ĠUser . Ġ@ see Ġ[ R ation ed Bus Event ] Ġ*/ Ċ class ĠUser Updated Event ( user : ĠUser , Ġskip Id : ĠString ? Ġ= Ġnull ) Ġ: ĠR ation ed Bus Event < User >( user , Ġskip Id ) Ċ Ċ /** ĠA ĠR ation ed Bus Event Ġfor Ġa ĠCon versation . Ġ@ see Ġ[ R ation ed Bus Event ] Ġ*/ Ċ class ĠCon versation Updated Event ( conversation : ĠCon versation , Ġskip Id : ĠString ? Ġ= Ġnull ) Ġ: ĠR ation ed Bus Event < Conversation >( conversation , Ġskip Id ) Ċ Ċ /** ĠA ĠR ation ed Bus Event Ġadding Ġa Ġnew Ġmessage Ġto Ġthe ĠMessage Thread Fragment . Ġ@ see Ġ[ R ation ed Bus Event ] Ġ*/ Ċ class ĠMessage Added Event ( should Update : ĠBoolean , Ġskip Id : ĠString ? Ġ= Ġnull ) Ġ: ĠR ation ed Bus Event < Boolean >( should Update , Ġskip Id ) Ċ Ċ /** ĠA ĠR ation ed Bus Event Ġfor Ġchoosing Ġmessage Ġrecipients . Ġ@ see Ġ[ R ation ed Bus Event ] Ġ*/ Ċ class ĠChoose Recipients Event ( list : ĠList < Recipient >, Ġskip Id : ĠString ? Ġ= Ġnull ) Ġ: ĠR ation ed Bus Event < List < Recipient >>( list , Ġskip Id ) Ċ Ċ /** ĠA ĠR ation ed Bus Event Ġfor Ġcreating Ġdiscussions . Ġ@ see Ġ[ R ation ed Bus Event ] Ġ*/ Ċ class ĠDis cussion Created Event ( should Update : ĠBoolean , Ġskip Id : ĠString ? Ġ= Ġnull ) Ġ: ĠR ation ed Bus Event < Boolean >( should Update , Ġskip Id ) Ċ Ċ /** ĠA ĠR ation ed Bus Event Ġfor Ġupdating Ġdiscussions . Ġ@ see Ġ[ R ation ed Bus Event ] Ġ*/ Ċ class ĠDis cussion Updated Event ( discussion Topic Header : ĠDis cussion Topic Header , Ġskip Id : ĠString ? Ġ= Ġnull ) Ġ: ĠR ation ed Bus Event < Dis cussion Topic Header >( discussion Topic Header , Ġskip Id ) Ċ Ċ /** ĠA ĠR ation ed Bus Event Ġfor ĠDeleted ĠDis cussion Topic Header . Ġ@ see Ġ[ R ation ed Bus Event ] Ġ*/ Ċ class ĠDis cussion Topic Header Deleted Event ( discussion Topic Header Id : ĠLong , Ġskip Id : ĠString ? Ġ= Ġnull ) Ġ: ĠR ation ed Bus Event < Long >( discussion Topic Header Id , Ġskip Id ) Ċ Ċ /** ĠA ĠR ation ed Bus Event Ġfor ĠDis cussion Topic Header Ġchanges . Ġ@ see Ġ[ R ation ed Bus Event ] Ġ*/ Ċ class ĠDis cussion Topic Header Event ( discussion Topic Header : ĠDis cussion Topic Header , Ġskip Id : ĠString ? Ġ= Ġnull ) Ġ: ĠR ation ed Bus Event < Dis cussion Topic Header >( discussion Topic Header , Ġskip Id ) Ċ Ċ /** ĠA ĠR ation ed Bus Event Ġfor Ġupdating Ġpages . Ġ@ see Ġ[ R ation ed Bus Event ] Ġ*/ Ċ class ĠPage Updated Event ( page : ĠPage , Ġskip Id : ĠString ? Ġ= Ġnull ) Ġ: ĠR ation ed Bus Event < Page >( page , Ġskip Id ) Ċ Ċ /** ĠA ĠR ation ed Bus Event Ġfor Ġupdating Ġmodules . Ġ@ see Ġ[ R ation ed Bus Event ] Ġ*/ Ċ class ĠModule Updated Event ( module Object : ĠModule Object , Ġskip Id : ĠString ? Ġ= Ġnull ) Ġ: ĠR ation ed Bus Event < Module Object >( module Object , Ġskip Id ) Ċ Ċ /** ĠA ĠR ation ed Bus Event Ġfor Ġupdating Ġthe Ġstatus Ġbar Ġcolor . Ġ@ see Ġ[ R ation ed Bus Event ] Ġ*/ Ċ class ĠStatus Bar Color ChangeEvent ( color : ĠInt , Ġskip Id : ĠString ? Ġ= Ġnull ) Ġ: ĠR ation ed Bus Event < Int >( color , Ġskip Id ) ĊĊ Ċ object ĠShow Gr ades Toggle d Event Ċ object ĠCourse Color Overlay Toggle d Event Ċ object ĠRe cipients List Modified Event Ċ object ĠCore Data Finished Loading Ċ object ĠShow Conf et ti Event Ċ