package Ġorg . ion project . android . class _ section Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . CheckBox Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġkotlinx . android . synt hetic . main . fragment _ class _ section .* Ċ import Ġorg . ion project . android . Exception Handling Fragment Ċ import Ġorg . ion project . android . R Ċ import Ġorg . ion project . android . Shared ViewModel Ċ import Ġorg . ion project . android . Shared ViewModel Provider Ċ import Ġorg . ion project . android . common . Ion Application . Companion . preferences Ċ import Ġorg . ion project . android . common . add Swipe Right Gesture Ċ import Ġorg . ion project . android . common . ion web api . WEB _ API _ HOST Ċ import Ġorg . ion project . android . common . model . Class Section Ċ import Ġorg . ion project . android . common . start Loading Ċ import Ġorg . ion project . android . common . stop Loading Ċ import Ġorg . ion project . android . loading . Loading Activity Ċ import Ġorg . ion project . android . main . MainActivity Ċ import Ġjava . net . URI Ċ import Ġjava . util .* Ċ Ċ class ĠClass Section Fragment Ġ: ĠException Handling Fragment () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġview Ġmodel Ġis Ġshared Ġbetween Ġfragments Ġand Ġthe ĠMainActivity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġshared ViewModel : ĠShared ViewModel Ġby Ġactivity ViewModels Ġ{ ĊĠĠĠĠĠĠĠ ĠShared ViewModel Provider () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOb t aining ĠClass ĠSection 's ĠView ĠModel ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass Section ViewModel Provider () ĊĠĠĠĠĠĠĠ Ġ) [ Class Section ViewModel :: class . java ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUri Ġused Ġto Ġobtain Ġthe Ġclass Ġsection ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġclass Section Uri Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclass Section Uri Ġ= Ġshared ViewModel . class Section Uri ?. path ĊĠĠĠĠĠĠĠ Ġclass Section Uri ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Class Section Uri Ġis Ġmissing ! ĠCannot Ġload ĠClass Section Fragment Ġwithout Ġit .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠL ect ures ĠList 's Ġadapter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġlect ures ListAdapter Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ ĠL ect ures ListAdapter ( viewModel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEx ams ĠList 's Ġadapter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġex ams ListAdapter Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ ĠEx ams ListAdapter ( viewModel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWork Ġassignments 's Ġadapter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġwork Assignments Adapter Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTodo Adapter ( viewModel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠJo urnals 's Ġadapter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġjo urnals Adapter Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ ĠJo urnals Adapter ( viewModel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠViewGroup Ġwhich Ġcontains Ġall Ġthis Ġfragments Ġviews ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġview Group : ĠViewGroup ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ class _ section , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdds Ġloading ĊĠĠĠĠĠĠĠ Ġview Group Ġ= Ġview Ġas ĠViewGroup ĊĠĠĠĠĠĠĠ Ġview Group . start Loading () ĊĊĠĠĠĠĠĠĠ Ġsetup L ect ures List () ĊĠĠĠĠĠĠĠ Ġsetup Ex ams List () ĊĠĠĠĠĠĠĠ Ġsetup Work Assignments List () ĊĠĠĠĠĠĠĠ Ġsetup Jo urnals List () ĊĠĠĠĠĠĠĠ Ġsetup Class Section Details () ĊĠĠĠĠĠĠĠ Ġview . add Swipe Right Gesture Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate Up () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsetup Sections Behaviour () ĊĠĠĠĠĠĠĠ Ġsetup Refresh Button Behaviour () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequests Ġthe Ġdetails Ġof Ġthe Ġcurrent Ġclass Ġand Ġupdates ĊĠĠĠĠ Ġ* Ġthe Ġrespective ĠUI Ġelements Ġwith Ġthem . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup Class Section Details () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠClass ĠSection ĠView ĠH older ĠSetup ĊĠĠĠĠĠĠĠ Ġval Ġcourse TextView Ġ= ĠtextView _ class _ section _ course ĊĠĠĠĠĠĠĠ Ġval Ġclass Term TextView Ġ= ĠtextView _ class _ section _ class ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Term TextView Ġ= ĠtextView _ class _ section _ calendar _ term ĊĠĠĠĠĠĠĠ Ġval ĠcheckBox Ġ= Ġcheckbox _ class _ section _ favorite ĊĊĠĠĠĠĠĠĠ Ġ// ĠSearch Ġfor ĠClass ĠSection ĠDetails ĊĠĠĠĠĠĠĠ ĠviewModel . getClass Section Details ( URI ("$ WEB _ API _ HOST $ class Section Uri ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse TextView . text Ġ= Ġit . course Ac ronym ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Term TextView . text Ġ= Ġit . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar Term TextView . text Ġ= Ġit . calendar Term ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Setup Ġcheckbox Ġbehaviour Ġonly Ġafter Ġthe Ġdetails Ġof Ġthe Ġclass Ġare Ġobtained ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Checkbox Behaviour ( checkBox , Ġit ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Events ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSetup Ġthe Ġclass Ġsection 's Ġlect ures Ġlist Ġwith Ġ[ lect ures ListAdapter ] Ġas Ġhis Ġadapter . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup L ect ures List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlect ures List Ġ= Ġre cycler view _ class _ section _ lect ures ĊĠĠĠĠĠĠĠ Ġlect ures List . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġlect ures List . adapter Ġ= Ġlect ures ListAdapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSetup Ġthe Ġclass Ġsection 's Ġex ams Ġlist Ġwith Ġ[ ex ams ListAdapter ] Ġas Ġhis Ġadapter . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup Ex ams List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġex ams List Ġ= Ġre cycler view _ class _ section _ ex ams ĊĠĠĠĠĠĠĠ Ġex ams List . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġex ams List . adapter Ġ= Ġex ams ListAdapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSetup Ġthe Ġclass Ġsection 's Ġwork Ġassignments Ġlist Ġwith Ġ[ work Assignments Adapter ] Ġas Ġhis Ġadapter . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup Work Assignments List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġassignments List Ġ= Ġre cycler view _ class _ section _ todos ĊĠĠĠĠĠĠĠ Ġassignments List . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġassignments List . adapter Ġ= Ġwork Assignments Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSetup Ġthe Ġclass Ġsection 's Ġjournal Ġlist Ġwith Ġ[ jo urnals Adapter ] Ġas Ġhis Ġadapter . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup Jo urnals List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjo urnals List Ġ= Ġre cycler view _ class _ section _ jo urnals ĊĠĠĠĠĠĠĠ Ġjo urnals List . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġjo urnals List . adapter Ġ= Ġjo urnals Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequest Ġall Ġevents Ġavailable Ġfor Ġthe Ġclass Ġsection Ġ[ curr Class Summary ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrequest Events ( ĊĠĠĠĠĠĠĠ Ġclass Section : ĠClass Section ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . get Events From Class Section ( class Section ) ĊĠĠĠĠĠĠĠ ĠviewModel . observe Events ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex ams ListAdapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlect ures ListAdapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwork Assignments Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjo urnals Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Group . stop Loading () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDefines Ġwhat Ġhappens Ġwhen Ġthe Ġcheckbox Ġis Ġclicked ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup Checkbox Behaviour ( ĊĠĠĠĠĠĠĠ ĠcheckBox : ĠCheckBox , ĊĠĠĠĠĠĠĠ Ġclass Section : ĠClass Section ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// If Ġthe Ġchecks Ġbox Ġwas Ġchecked Ġbefore , Ġthen Ġit Ġmust Ġbe Ġupdated ĊĠĠĠĠĠĠĠ ĠviewModel . is This Class Favorite ( class Section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcheckBox . isChecked Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠcheckBox . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Checked Ġ= ĠcheckBox . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . addClass To F avorites ( class Section ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . removeClass From F avorites ( class Section ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Sections Behaviour () Ġ{ ĊĠĠĠĠĠĠĠ ĠtextView _ class _ section _ lect ures . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( recyclerview _ class _ section _ lect ures . visibility Ġ== ĠView . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler view _ class _ section _ lect ures . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler view _ class _ section _ lect ures . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠtextView _ class _ section _ ex ams . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( recyclerview _ class _ section _ ex ams . visibility Ġ== ĠView . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler view _ class _ section _ ex ams . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler view _ class _ section _ ex ams . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠtextView _ class _ section _ todos . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( recyclerview _ class _ section _ todos . visibility Ġ== ĠView . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler view _ class _ section _ todos . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler view _ class _ section _ todos . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠtextView _ class _ section _ jo urnals . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( recyclerview _ class _ section _ jo urnals . visibility Ġ== ĠView . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler view _ class _ section _ jo urnals . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler view _ class _ section _ jo urnals . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Refresh Button Behaviour () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton _ class _ section _ refresh . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Group . start Loading () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠClass ĠSection ĠView ĠH older ĠSetup ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcourse TextView Ġ= ĠtextView _ class _ section _ course ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclass Term TextView Ġ= ĠtextView _ class _ section _ class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalendar Term TextView Ġ= ĠtextView _ class _ section _ calendar _ term ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSearch Ġfor ĠClass ĠSection ĠDetails ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . force GetClass Section Details ( URI ("$ WEB _ API _ HOST $ class Section Uri ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse TextView . text Ġ= Ġit . course Ac ronym ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Term TextView . text Ġ= Ġit . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar Term TextView . text Ġ= Ġit . calendar Term ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . force Get Events From Class Section ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ