/* Ċ Ġ* Ġ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 />. Ċ Ġ*/ Ċ Ċ package Ġcom . in structure . teacher . fragments Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . View Tree Observer Ċ import Ġandroid . widget . Adapter View Ċ import Ġcom . in structure . canvas api 2 . models .* Ċ import Ġcom . in structure . canvas api 2 . utils . API Helper Ċ import Ġcom . in structure . canvas api 2 . utils . Api Prefs Ċ import Ġcom . in structure . inter actions . router . Route Ċ import Ġcom . in structure . p anda utils . dialogs . Un saved Changes Exit Dialog Ċ import Ġcom . in structure . p anda utils . dialogs . Upload Files Dialog Ċ import Ġcom . in structure . p anda utils . fragments . Base Presenter Fragment Ċ import Ġcom . in structure . p anda utils . utils .* Ċ import Ġcom . in structure . p anda utils . views . Attachment View Ċ import Ġcom . in structure . teacher . R Ċ import Ġcom . in structure . teacher . adapters . Canvas Context Spinner Adapter Ċ import Ġcom . in structure . teacher . adapters . Nothing Selected Spinner Adapter Ċ import Ġcom . in structure . teacher . events . Choose Message Event Ċ import Ġcom . in structure . teacher . events . Message Added Event Ċ import Ġcom . in structure . teacher . factory . Add Message Presenter Factory Ċ import Ġcom . in structure . teacher . present ers . Add Message Presenter Ċ import Ġcom . in structure . teacher . router . Route Matcher Ċ import Ġcom . in structure . teacher . utils . setup Close Button Ċ import Ġcom . in structure . teacher . view interface . Add Message View Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add _ message .* Ċ import Ġorg . green robot . event bus . EventBus Ċ import Ġorg . green robot . event bus . Subscribe Ċ import Ġorg . green robot . event bus . Thread Mode Ċ Ċ class ĠAdd Message Fragment Ġ: ĠBase Presenter Fragment < Add Message Presenter , ĠAdd Message View >(), ĠAdd Message View Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Message : ĠMessage ? Ġby ĠNullable Parcelable Arg ( null , ĠConst . MESSAGE _ TO _ USER ) ĊĠĠĠ Ġprivate Ġvar Ġselected Course : ĠCanvas Context ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġis New Message Ġby ĠBoolean Arg ( false , ĠConst . COMP OSE _ FRAGMENT ) ĊĠĠĠ Ġprivate Ġvar Ġsend In divid ually Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Message Students Who Ġby ĠBoolean Arg ( false , ĠMESSAGE _ ST UD ENTS _ W HO ) ĊĠĠĠ Ġprivate Ġvar Ġis Personal Message Ġby ĠBoolean Arg ( false , ĠMESSAGE _ ST UD ENTS _ W HO _ CONTEXT _ IS _ PERSON AL ) ĊĠĠĠ Ġprivate Ġvar Ġmessage Students Who Context Id Ġby ĠNullable String Arg ( MESSAGE _ ST UD ENTS _ W HO _ CONTEXT _ ID ) ĊĠĠĠ Ġprivate Ġvar Ġshould Allow Exit Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġparticipants : ĠArrayList < Recipient > Ġby ĠParcel able ArrayList Arg ( key Ġ= ĠKEY _ P ARTIC IP ANT S ) ĊĊĠĠĠ Ġprivate Ġval ĠisValid New Message : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isNew Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Course Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( R . string . no _ course _ selected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ch ips . recipients . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( R . string . message _ has _ no _ recipients ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( TextUtils . get Trim med Length ( message . text ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( R . string . empty _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġrecipients From Recipient Entries : ĠArrayList < Recipient > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠArrayList ( ch ips . recipients ) ĊĊĠĠĠ Ġoverride Ġfun Ġlayout Res Id (): ĠInt Ġ= ĠR . layout . fragment _ add _ message ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ add _ message , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ!= Ġnull Ġ&& Ġ! isNew Message ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( isNew Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠComp osing Ġa Ġnew Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner Wrapper . setVisible () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Subject . setVisible () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Individual Message Wrapper . setVisible () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Individual Divider . setVisible () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecipient Wrapper . set G one () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject View . set G one () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠView St y ler . theme Switch ( require Context (), Ġsend Individual Switch , ĠTheme Prefs . brand Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Individual Switch . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked Ġ-> Ġsend In divid ually Ġ= Ġis Checked Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ!= Ġnull Ġ&& ĠsavedInstanceState . containsKey ( SELECTED _ CO URSE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Course Ġ= ĠsavedInstanceState . get Parcelable ( SELECTED _ CO URSE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Message Students Who ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġselected Ġcourse Ġfor Ġ' message Ġstudents Ġwho ' Ġto Ġallow Ġsearching Ġand Ġediting Ġrecipients ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Course Ġ= ĠCanvas Context . from Context Code ( message Students Who Context Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch ips . canvas Context Ġ= Ġselected Course ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv to Ġ= Ġch ips . view Tree Observer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv to . add On Global Layout Listener ( object Ġ: ĠView Tree Observer . On Global Layout Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Global Layout () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . is Reply ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( current Message Ġ== Ġnull Ġ&& Ġpresenter . conversation ?. participants Ġ!= Ġnull Ġ&& Ġpresenter . conversation !!. participants . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġthe Ġresult Ġof Ġreply All Ġto Ġa Ġmono logue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Initial Recipients ( listOf ( presenter . conversation !!. participants . first (). id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Initial Recipients ( current Message ?. part icip ating User Ids ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġpresenter . conversation ?. audience Ġ?: Ġempty List ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Message Students Who ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Recipients ( participants ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobs Ġ= Ġch ips . view Tree Observer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobs . remove On Global Layout Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). register ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). unregister ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Course Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout State . put Parcelable ( SELECTED _ CO URSE , Ġselected Course ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Presenter Prepared ( presenter : ĠAdd Message Presenter ) Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġget Presenter Factory (): ĠAdd Message Presenter Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconversation Ġ= Ġarguments ?. get Parcelable < Conversation >( Const . CONVER S ATION ) ĊĠĠĠĠĠĠĠ Ġval Ġparticipants Ġ= Ġarguments ?. get Parcelable ArrayList < Recipient >( KEY _ P ARTIC IP ANT S ) ĊĠĠĠĠĠĠĠ Ġval Ġmessages Ġ= Ġarguments ?. get Parcelable ArrayList < Message >( Const . MESSAGE ) ĊĠĠĠĠĠĠĠ Ġval Ġis Reply Ġ= Ġarguments ?. getBoolean ( KEY _ IS _ REPLY , Ġfalse ) Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn ĠAdd Message Presenter Factory ( conversation , Ġparticipants , Ġmessages , Ġis Reply ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Ready Set Go ( presenter : ĠAdd Message Presenter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Toolbar () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġconversation Ġsubject ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNew Message Ġ&& Ġ! is Message Students Who ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject View . text Ġ= Ġpresenter . conversation !!. subject ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Message Students Who ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Personal Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject View . set G one () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Subject . setVisible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Subject . setText ( non Null Args . getString ( MESSAGE _ ST UD ENTS _ W HO _ SUBJECT )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject View . text Ġ= Ġnon Null Args . getString ( MESSAGE _ ST UD ENTS _ W HO _ SUBJECT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġrecipients Ġview ĊĠĠĠĠĠĠĠ Ġvar Ġprevious Check State Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġch ips . on Recipients Changed Ġ= Ġ{ Ġrecipients : ĠList < Recipient > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Count Ġ= Ġrecipients . sum By Ġ{ Ġit . user Count . coerce At Least ( 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entry Count Ġ>= Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( send Individual Switch . isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Individual Message Wrapper . alpha Ġ= Ġ 0 . 3 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Check State Ġ= Ġsend Individual Switch . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Individual Switch . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Individual Switch . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! send Individual Switch . isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Individual Message Wrapper . alpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Individual Switch . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Individual Switch . isChecked Ġ= Ġprevious Check State ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( presenter . course !!. id Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġch ips . canvas Context Ġ= Ġpresenter . course ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( selected Course Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Was Selected () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠColor Utils . color It ( Theme Prefs . button Color , Ġcontacts Image Button ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDon 't Ġshow Ġthe Ġcontacts Ġbutton Ġif Ġthere Ġis Ġno Ġselected Ġcourse Ġand Ġthere Ġis Ġno Ġcontext _ code Ġfrom Ġthe Ġconversation Ġ( should n 't Ġhappen , Ġbut Ġit Ġdoes ) ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Course Ġ== Ġnull Ġ&& Ġpresenter . course Ġ!= Ġnull Ġ&& Ġpresenter . course !!. id Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontacts Image Button . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontacts Image Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Context : ĠCanvas Context ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . course Ġ!= Ġnull Ġ&& Ġpresenter . course !!. id Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPres enter Ġdoesn 't Ġknow Ġwhat Ġthe Ġcourse Ġis , Ġuse Ġthe Ġselected Course Ġinstead ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Course ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . course ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠRoute Matcher . route ( require Context (), ĠRoute ( Choose Recipients Fragment :: class . java , Ġcanvas Context , ĠChoose Recipients Fragment . create Bundle ( canvas Context !! , Ġrecipients From Recipient Entries ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġattachments Ġare Ġup Ġto Ġdate ĊĠĠĠĠĠĠĠ Ġrefresh Attachments () ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġcourses Ġand Ġgroups Ġif Ġthis Ġis Ġa Ġnew Ġcompose Ġmessage ĊĠĠĠĠĠĠĠ Ġif Ġ( isNew Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . getAll Courses And Groups ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Courses And Groups ( courses : ĠArrayList < Course >, Ġgroups : ĠArrayList < Group >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠCanvas Context Spinner Adapter . new Adapter Instance ( require Context (), Ġcourses , Ġgroups ) ĊĠĠĠĠĠĠĠ Ġcourse Spinner . adapter Ġ= ĠNothing Selected Spinner Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġadapter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnothing Selected Layout Ġ= ĠR . layout . spinner _ item _ nothing _ selected , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġrequire Context () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Course Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Spinner . on ItemSelected Listener Ġ= Ġnull Ġ// ĠPrevent Ġlistener Ġfrom Ġf iring Ġwhen Ġthe Ġselection Ġis Ġplaced ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Spinner . setSelection ( adapter . getPosition ( selected Course ) Ġ+ Ġ 1 , Ġfalse ) Ġ// Ġ Ġ+ Ġ 1 Ġis Ġfor Ġthe Ġnothing Selected Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Was Selected () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcourse Spinner . on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View <* >, Ġview : ĠView , Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ!= Ġ 0 ) Ġ{ Ġ// ĠPosition Ġzero Ġis Ġnothing Selected Ġprompt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Context Ġ= Ġadapter . getItem ( position Ġ- Ġ 1 ) Ġ// Ġ- 1 Ġto Ġaccount Ġfor Ġnothing Selected Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Course Ġ== Ġnull Ġ|| Ġselected Course !!. id Ġ!= Ġcanvas Context !!. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch ips . clear Recipients () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Course Ġ= Ġcanvas Context ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Was Selected () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Spinner . content Description Ġ= ĠgetString ( R . string . a 1 1 y _ content _ description _ inbox _ course _ spinner , Ġselected Course ?. name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View <* >) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcourse Was Selected () Ġ{ ĊĠĠĠĠĠĠĠ Ġrecipient Wrapper . setVisible () ĊĠĠĠĠĠĠĠ Ġcontacts Image Button . setVisible () ĊĠĠĠĠĠĠĠ Ġrequire Activity (). invalidate Options Menu () ĊĠĠĠĠĠĠĠ Ġch ips . canvas Context Ġ= Ġselected Course ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Toolbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isNew Message Ġ|| Ġis Message Students Who Ġ&& Ġis Personal Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . setTitle ( R . string . new Message ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( is Message Students Who ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . setTitle ( R . string . message Students Who ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . setTitle ( if Ġ( presenter . is Reply ) ĠR . string . reply _ to _ message Ġelse ĠR . string . forward _ message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( toolbar . menu . size () Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . inflate Menu ( R . menu . menu _ compose _ message _ activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtoolbar . menu . find Item ( R . id . menu _ attachment ). isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġtoolbar . setOn MenuItem ClickListener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ send Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsendMessage () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ attachment Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠUpload Files Dialog . create Attachments Bundle ( ArrayList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpload Files Dialog . show ( fragment Manager , Ġbundle ) Ġ{ Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠView St y ler . theme Toolbar Bottom Sheet ( require Activity (), Ġresources . getBoolean ( R . bool . is Device Tablet ), Ġtoolbar , ĠColor . BLACK , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġtoolbar . setup Close Button Ġ{ Ġhandle Exit () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhandle Exit () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġto Ġsee Ġif Ġthe Ġuser Ġhas Ġmade Ġany Ġchanges ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Course Ġ!= Ġnull Ġ|| Ġedit Subject . text . isNotEmpty () Ġ|| Ġmessage . text . isNotEmpty () Ġ|| Ġpresenter . attachments . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Allow Exit Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUn saved Changes Exit Dialog . show ( require Activity (). support FragmentManager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Allow Exit Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Allow Exit Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshould Allow Exit (): ĠBoolean Ġ= Ġshould Allow Exit ĊĊĠĠĠ Ġoverride Ġfun Ġon Handle Back Pressed (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSee Ġif Ġthey Ġhave Ġun sent Ġchanges ĊĠĠĠĠĠĠĠ Ġif Ġ(! should Allow Exit ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Exit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Handle Back Pressed () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġmessage Success () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Toast ( R . string . message _ sent _ successfully ) ĊĠĠĠĠĠĠĠ Ġshould Allow Exit Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// ĠPost Ġa Ġunique Ġskip Ġid Ġin Ġcase Ġthey Ġcome Ġback Ġto Ġthis Ġmessage Ġand Ġsend Ġanother Ġmessage ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post Sticky ( Message Added Event ( true , Ġnull )) ĊĊĠĠĠĠĠĠĠ Ġrequire Activity (). on Back Pressed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmessage Failure () Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar . menu . find Item ( R . id . menu _ send ). isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġtoolbar . menu . find Item ( R . id . menu _ attachment ). isVisible Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġsaving ProgressBar . set G one () ĊĊĠĠĠĠĠĠĠ Ġshow Toast ( R . string . error _ sending _ message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrefresh Attachments () Ġ{ ĊĠĠĠĠĠĠĠ Ġattachments . set Pending Attachments ( presenter . attachments , Ġtrue ) Ġ{ Ġaction , Ġattachment Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Ġ== ĠAttachment View . Attachment Action . REMOVE ) Ġpresenter . remove Attachment ( attachment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun ĠsendMessage () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠValidate Ġinputs ĊĠĠĠĠĠĠĠ Ġif Ġ(! isValid New Message ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġnetwork Ġis Ġavailable ĊĠĠĠĠĠĠĠ Ġif Ġ(! API Helper . has Network Connection ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( this @ Add Message Fragment . getString ( R . string . not _ available _ offline )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġthe Ġprogress Ġbar Ġvisible Ġand Ġthe Ġother Ġbuttons Ġnot Ġthere Ġso Ġthey Ġcan 't Ġtry Ġto Ġre - send Ġthe Ġmessage Ġmultiple Ġtimes ĊĠĠĠĠĠĠĠ Ġtoolbar . menu . find Item ( R . id . menu _ send ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġtoolbar . menu . find Item ( R . id . menu _ attachment ). isVisible Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠView St y ler . theme ProgressBar ( saving ProgressBar , ĠColor . BLACK ) ĊĠĠĠĠĠĠĠ Ġsaving ProgressBar . announce For Accessibility ( getString ( R . string . sending Simple )) ĊĠĠĠĠĠĠĠ Ġsaving ProgressBar . setVisible () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSend Ġmessage ĊĠĠĠĠĠĠĠ Ġif Ġ( isNew Message Ġ|| Ġis Message Students Who ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSend Ġbulk Ġif Ġrecipient Ġcount Ġexceeds Ġ 9 9 , ĠOR Ġif Ġcount Ġexceeds Ġone ĠAND Ġ' send Ġindividually ' Ġis Ġchecked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecipients Ġ= Ġch ips . recipients ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecipient Count Ġ= Ġrecipients . sum By Ġ{ Ġit . user Count . coerce At Least ( 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Bulk Ġ= Ġrecipient Count Ġ>= Ġ 1 0 0 Ġ|| Ġ( recipient Count Ġ> Ġ 1 Ġ&& Ġsend In divid ually ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Id : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubject : ĠString ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Message Students Who ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend In divid ually Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Bulk Ġ= Ġtrue Ġ// ĠWe Ġalways Ġwant Ġto Ġsend Ġthese Ġas Ġbulk Ġindividual Ġmessages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Id Ġ= Ġnon Null Args . getString ( MESSAGE _ ST UD ENTS _ W HO _ CONTEXT _ ID , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject Ġ= Ġif Ġ( is Personal Message ) Ġedit Subject . text . toString () Ġelse Ġsubject View . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Id Ġ= Ġselected Course !!. context Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject Ġ= Ġedit Subject . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġis Bulk Ġcontrols Ġthe Ġgroup Ġvs Ġindividual Ġmessages , Ġso Ġgroup Ġmessage Ġflag Ġis Ġhardcoded Ġto Ġtrue Ġat Ġthe Ġapi Ġcall ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . send New Message ( ch ips . recipients , Ġmessage . text . toString (), Ġsubject , Ġcontext Id , Ġis Bulk ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . sendMessage ( ch ips . recipients , Ġmessage . text . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġadd Initial Recipients ( initial Recipient Ids : ĠList < Long >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselected Recipients Ġ= Ġch ips . recipients ĊĠĠĠĠĠĠĠ Ġval Ġmy Id Ġ= ĠApi Prefs . user ?. id ?. toString (). or Empty () ĊĠĠĠĠĠĠĠ Ġval Ġrecipients Ġ= Ġinitial Recipient Ids ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSkip Ġexisting Ġrecipients Ġand Ġself ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ!= Ġmy Id Ġ&& Ġselected Recipients . none Ġ{ Ġit . string Id Ġ== Ġid Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġpresenter . get Participant ById ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġch ips . add Recipients ( recipients ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Recipients ( new Recipients : ĠList < Recipient >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselected Recipients Ġ= Ġch ips . recipients ĊĠĠĠĠĠĠĠ Ġval Ġmy Id Ġ= ĠApi Prefs . user ?. id ?. toString (). or Empty () ĊĠĠĠĠĠĠĠ Ġval Ġrecipients Ġ= Ġnew Recipients . filter Ġ{ Ġrecipient Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSkip Ġexisting Ġrecipients Ġand Ġself ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Id Ġ= Ġrecipient . string Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstring Id Ġ!= Ġmy Id Ġ&& Ġselected Recipients . none Ġ{ Ġit . string Id Ġ== Ġstring Id Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġch ips . add Recipients ( recipients ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Refresh Finished () Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġon Refresh Started () Ġ{} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN , Ġsticky Ġ= Ġtrue ) ĊĠĠĠ Ġfun Ġon Recipients Updated ( event : ĠChoose Message Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġevent . once ( java Class . simple Name ) Ġ{ Ġrecipients Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe 're Ġgoing Ġto Ġadd Ġall Ġthe Ġrecipients Ġthat Ġthe Ġuser Ġhas Ġselected . ĠThey Ġmay Ġhave Ġremoved Ġa Ġuser Ġpreviously Ġselected , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġso Ġclear Ġthe Ġview Ġso Ġwe Ġonly Ġadd Ġthe Ġusers Ġselected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġch ips . clear Recipients () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Recipients ( recipients ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun Ġon FileUpload Event ( event : ĠFile Upload Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġthe Ġadapter Ġitem ĊĠĠĠĠĠĠĠ Ġevent . once ( Add Message Fragment :: class . java . simple Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). remove Sticky Event ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . add Attachments ( it . attachments ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Attachments () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/* ĠBundle Ġkey Ġfor Ġboolean Ġindicating Ġwhether Ġthe Ġuser Ġis Ġreply ing Ġor Ġforwarding Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ IS _ REPLY Ġ= Ġ" is _ reply " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSELECT ED _ CO URSE Ġ= Ġ" selected _ course " ĊĊĠĠĠĠĠĠĠ Ġ/* ĠBundle Ġkey Ġfor Ġlist Ġof Ġparticipants Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ P ARTIC IP ANT S Ġ= Ġ" participants " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMESSAGE _ ST UD ENTS _ W HO Ġ= Ġ" message _ students _ who " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMESSAGE _ ST UD ENTS _ W HO _ SUBJECT Ġ= Ġ" message _ students _ who _ subject " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMESSAGE _ ST UD ENTS _ W HO _ CONTEXT _ ID Ġ= Ġ" message _ students _ context _ id " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMESSAGE _ ST UD ENTS _ W HO _ CONTEXT _ IS _ PERSON AL Ġ= Ġ" message _ students _ is _ personal " ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate Bundle ( is Reply : ĠBoolean , Ġconversation : ĠCon versation , Ġparticipants : ĠList < Recipient >, Ġmessages : ĠList < Message >, Ġcurrent Message : ĠMessage ?): ĠBundle Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean ( KEY _ IS _ REPLY , Ġis Reply ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable ( Const . CONVER S ATION , Ġconversation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable ArrayList ( KEY _ P ARTIC IP ANT S , ĠArrayList ( participants )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable ArrayList ( Const . MESSAGE , ĠArrayList ( messages )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable ( Const . MESSAGE _ TO _ USER , Ġcurrent Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate Bundle (): ĠBundle Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean ( Const . COMP OSE _ FRAGMENT , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate Bundle ( users : ĠList < Recipient >, Ġsubject : ĠString , Ġcontext Id : ĠString , Ġis Personal : ĠBoolean ): ĠBundle Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean ( MESSAGE _ ST UD ENTS _ W HO _ CONTEXT _ IS _ PERSON AL , Ġis Personal ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean ( MESSAGE _ ST UD ENTS _ W HO , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable ArrayList ( KEY _ P ARTIC IP ANT S , ĠArrayList ( users )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( MESSAGE _ ST UD ENTS _ W HO _ SUBJECT , Ġsubject ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( MESSAGE _ ST UD ENTS _ W HO _ CONTEXT _ ID , Ġcontext Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( bundle : ĠBundle ) Ġ= ĠAdd Message Fragment (). with Args ( bundle ) ĊĠĠĠ Ġ} Ċ } Ċ