/* Ċ Ġ* Ġ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 . activities Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġcom . in structure . canvas api 2 . Status Callback Ċ import Ġcom . in structure . canvas api 2 . managers . Course Manager Ċ import Ġcom . in structure . canvas api 2 . models . Course Ċ import Ġcom . in structure . canvas api 2 . utils . Api Type Ċ import Ġcom . in structure . canvas api 2 . utils . Link Headers Ċ import Ġcom . in structure . inter actions . FullScreen Interactions Ċ import Ġcom . in structure . p anda utils . interfaces . Navigation Callbacks Ċ import Ġcom . in structure . teacher . R Ċ import Ġcom . in structure . teacher . events . Assignment Description Event Ċ import Ġcom . in structure . inter actions . router . Route Ċ import Ġcom . in structure . teacher . router . Route Matcher Ċ import Ġcom . in structure . teacher . router . Route Resolver Ċ import Ġin structure . rc editor . R CE Const . HTML _ RESULT Ċ import Ġin structure . rc editor . R CE Fragment Ċ import Ġkotlinx . android . synt hetic . main . activity _ fullscreen .* Ċ import Ġorg . green robot . event bus . EventBus Ċ import Ġretrofit 2 . Response Ċ Ċ class ĠFull screen Activity Ġ: ĠBase AppCompatActivity (), ĠR CE Fragment . R CE Fragment Callbacks , ĠFull Screen Interactions Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Route : ĠRoute ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ fullscreen ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Route Ġ= Ġintent . extras . get Parcelable ( Route . ROUTE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Route ?. let Ġ{ Ġhandle Route ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Route Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Route ( route : ĠRoute ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Route Ġ= Ġroute ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Route ?. canvas Context Ġ!= Ġnull Ġ&& Ġm Route ?. canvas Context Ġis ĠCourse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup With Canvas Context ( m Route ?. canvas Context Ġas ĠCourse ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Id Ġ= ĠRoute . extract Course Id ( m Route ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context Id Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// No ĠCanvas Context , ĠNo ĠURL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup With Canvas Context ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCourse Manager . getC ourse ( context Id , Ġobject Ġ: ĠStatus Callback < Course >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( response : ĠResponse < Course >, Ġlink Headers : ĠLink Headers , Ġtype : ĠApi Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup With Canvas Context ( response . body () Ġas ĠCourse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup With Canvas Context ( course : ĠCourse ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Fragment ( Route Resolver . get Fullscreen Fragment ( course , Ġm Route !! )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Fragment ( fragment : ĠFragment ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( fragment Ġ== Ġnull ) Ġthrow ĠIllegalStateException (" Fullscreen Activity . class Ġadd Fragment Ġwas Ġnull ") ĊĠĠĠĠĠĠĠ Ġval Ġfm Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠ Ġval Ġft Ġ= Ġfm . beginTransaction () ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Fragment Ġ= Ġfm . find Fragment ById ( container . id ) ĊĠĠĠĠĠĠĠ Ġif ( current Fragment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Add Ġto Ġback Ġstack Ġif Ġa Ġfragment Ġexists ĊĠĠĠĠĠĠĠĠĠĠĠ Ġft . addTo Back Stack ( fragment . java Class . simple Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġft . replace ( container . id , Ġfragment , Ġfragment . java Class . simple Name ) ĊĠĠĠĠĠĠĠ Ġft . commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Capt ures Ġback Ġpress Ġto Ġprevent Ġaccident al Ġexiting Ġof Ġassignment Ġediting . ĊĠĠĠĠĠĠĠ Ġif ( support FragmentManager . find Fragment ById ( R . id . container ) Ġis ĠR CE Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( support FragmentManager . find Fragment ById ( R . id . container ) Ġas ĠR CE Fragment ). show Exit Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( support FragmentManager . find Fragment ById ( R . id . container ) Ġis ĠNavigation Callbacks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (( support FragmentManager . find Fragment ById ( R . id . container ) Ġas ĠNavigation Callbacks ). on Handle Back Pressed ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandles ĠR CE Fragment Ġresults Ġand Ġpasses Ġthem Ġalong ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Result ( activity Result : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Result Ġ== ĠActivity . RESULT _ OK Ġ&& Ġdata Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post Sticky ( Assignment Description Event ( data . getString Extra ( HTML _ RESULT ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Intent ( context : ĠContext , Ġroute : ĠRoute ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠFull screen Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Route . ROUTE , Ġroute Ġas ĠParcel able ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ