/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 Ġ- Ġ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 . student . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . Html Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . in structure . canvas api 2 . models . Assignment Ċ import Ġcom . in structure . canvas api 2 . models . Submission Ċ import Ġcom . in structure . canvas api 2 . utils . Number Helper Ċ import Ġcom . in structure . canvas api 2 . utils . isValid Ċ import Ġcom . in structure . canvas api 2 . utils . valid OrNull Ċ import Ġcom . in structure . p anda utils . utils .* Ċ import Ġcom . in structure . student . R Ċ Ċ object ĠB inder Utils Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠNO _ GR ADE _ IND IC ATOR Ġ= Ġ"-" ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġfun Ġget Html As Text ( html : ĠString ?) Ġ= Ġhtml ?. valid OrNull ()?. let Ġ{ ĠString Utilities . simplify HTML ( Html . from Html ( it )) Ġ} ĊĊĠĠĠ Ġfun Ġget Grade ( assignment : ĠAssignment , Ġsubmission : ĠSubmission ?, Ġcontext : ĠContext ): ĠDisplay Grade Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpossible Points Ġ= Ġassignment . points Possible ĊĠĠĠĠĠĠĠ Ġval Ġpoints Possible Text Ġ= ĠNumber Helper . format Decimal ( possible Points , Ġ 2 , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠNo Ġsubmission ĊĠĠĠĠĠĠĠ Ġif Ġ( submission Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( possible Points Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Grade ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . grade Format Score OutOf Points Possible , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNO _ GR ADE _ IND IC ATOR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoints Possible Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . out Of Points Formatted , Ġpoints Possible Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Grade ( NO _ GR ADE _ IND IC ATOR , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠEx c used ĊĠĠĠĠĠĠĠ Ġif Ġ( submission . exc used ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDisplay Grade ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . grade Format Score OutOf Points Possible , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . exc used ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoints Possible Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . content Description Score OutOf Points Possible , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . grade Exc used ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoints Possible Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġgrade Ġ= Ġsubmission . grade Ġ?: Ġreturn ĠDisplay Grade () ĊĠĠĠĠĠĠĠ Ġval Ġgrade Content Description Ġ= ĠgetContent Description For Minus Grade String ( grade , Ġcontext ). valid OrNull () Ġ?: Ġgrade ĊĊĠĠĠĠĠĠĠ Ġval Ġgrad ing Type Ġ= ĠAssignment . get Grad ing Type From API String ( assignment . grading Type . or Empty ()) ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠ Ġ* ĠFor Ġletter Ġgrade Ġor ĠG PA Ġscale Ġgrad ing Ġtypes , Ġformat Ġgrade Ġtext Ġas Ġ" score Ġ/ Ġpoints Possible Ġ( grade )" Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġmore Ġclosely Ġmatch Ġweb , Ġe . g . Ġ" 1 5 Ġ/ Ġ 2 0 Ġ( 2 . 0 )" Ġor Ġ" 8 0 Ġ/ Ġ 1 0 0 Ġ( B -) ". ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġif Ġ( grading Type Ġ== ĠAssignment . Grad ing Type . LET TER _ GR ADE Ġ|| Ġgrad ing Type Ġ== ĠAssignment . Grad ing Type . GP A _ SCALE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscore Text Ġ= ĠNumber Helper . format Decimal ( submission . score , Ġ 2 , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpossible Points Text Ġ= ĠNumber Helper . format Decimal ( possible Points , Ġ 2 , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDisplay Grade ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . formatted Score With Points Possible And Grade , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscore Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpossible Points Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrade ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . content Description Score With Points Possible And Grade , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscore Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpossible Points Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrade Content Description ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠNumeric Ġgrade ĊĠĠĠĠĠĠĠ Ġsubmission . grade ?. toDouble OrNull ()?. let Ġ{ Ġparsed Grade Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformatted Grade Ġ= ĠNumber Helper . format Decimal ( parsed Grade , Ġ 2 , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDisplay Grade ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . grade Format Score OutOf Points Possible , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformatted Grade , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoints Possible Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . content Description Score OutOf Points Possible , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformatted Grade , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoints Possible Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠComplete / in complete ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( grade ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" complete " Ġ-> Ġreturn ĠDisplay Grade ( context . getString ( R . string . grade Complete )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" in complete " Ġ-> Ġreturn ĠDisplay Grade ( context . getString ( R . string . grade Incomplete )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠDisplay Grade ( grade , Ġgrade Content Description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Grade Text ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ ĠtextView : ĠTextView , ĊĠĠĠĠĠĠĠ Ġassignment : ĠAssignment , ĊĠĠĠĠĠĠĠ Ġsubmission : ĠSubmission , ĊĠĠĠĠĠĠĠ Ġcolor : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhas Grade Ġ= Ġsubmission . grade . isValid () ĊĠĠĠĠĠĠĠ Ġval Ġ( grade , Ġcontent Description ) Ġ= Ġget Grade ( assignment , Ġsubmission , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġif Ġ( has Grade ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġgrade ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . content Description Ġ= Ġcontent Description ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setText Appearance ( R . style . TextStyle _ Grade ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . background Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor Utils . color It ( color , ĠContext Compat . get Drawable ( context , ĠR . drawable . grade _ background ) !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġgrade ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . setText Appearance ( R . style . TextStyle _ No Grade ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . background Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . content Description Ġ= Ġgrade ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Assignment Icon ( assignment : ĠAssignment ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( assignment Ġ== Ġnull ) Ġreturn Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassignment . get Submission Types (). contains ( Assignment . Submission Type . ON LINE _ QUI Z ) Ġ-> ĠR . drawable . ic _ quiz ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassignment . get Submission Types () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains ( Assignment . Submission Type . DIS CU SS ION _ TOPIC ) Ġ-> ĠR . drawable . ic _ discussion ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . drawable . ic _ assignment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Shadow s ( is First Item : ĠBoolean , Ġis Last Item : ĠBoolean , Ġtop : ĠView , Ġbottom : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is First Item ) Ġtop . setVisible () Ġelse Ġtop . set In visible () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Last Item ) Ġbottom . setVisible () Ġelse Ġbottom . set In visible () ĊĠĠĠ Ġ} Ċ } Ċ