/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠCl iff ord ĠLi u Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . mad ness . collision . unit . school _ timetable Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . InputType Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget .* Ċ import Ġandroidx . appcompat . widget . AppCompat EditText Ċ import Ġandroidx . appcompat . widget . AppCompat Image Button Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . google . android . material . card . Material Card View Ċ import Ġcom . mad ness . collision . R Ċ import Ġcom . mad ness . collision . unit . school _ timetable . data . Course Singleton Ċ import Ġcom . mad ness . collision . unit . school _ timetable . data . DayOfWeek Ċ import Ġcom . mad ness . collision . unit . school _ timetable . data . Re petition Ċ import Ġcom . mad ness . collision . unit . school _ timetable . data . Time table Ċ import Ġcom . mad ness . collision . unit . school _ timetable . databinding . Tt Adapter Actions Binding Ċ import Ġcom . mad ness . collision . util . Collision Dialog Ċ import Ġcom . mad ness . collision . util . Theme Util Ċ import Ġcom . mad ness . collision . util . X Ċ import Ġcom . mad ness . collision . util . dart Future Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ import Ġcom . mad ness . collision . unit . school _ timetable . R Ġas ĠMy R Ċ Ċ internal Ġclass ĠTime table Adapter ( private Ġvar Ġcontext : ĠContext Ġ, Ġvar Ġtime table : ĠTime table ) Ġ: ĠRecyclerView . Adapter < Time table Adapter . Table ViewHolder >() Ġ{ ĊĊĠĠĠ Ġclass ĠTable ViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ){ ĊĠĠĠĠĠĠĠ Ġval Ġcard : ĠMaterial Card View Ġ= Ġview . findViewById ( My R . id . tt Adapter Card ) ĊĠĠĠĠĠĠĠ Ġval Ġcontainer : ĠLinearLayout Ġ= Ġview . findViewById ( My R . id . tt Adapter Container ) ĊĠĠĠĠĠĠĠ Ġval Ġspace : ĠSpace Ġ= Ġview . findViewById ( My R . id . tt Adapter Space ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġinflater Ġ= ĠLayoutInflater . from ( context ) ĊĊĠĠĠ Ġprivate Ġval Ġcourses : ĠMutable List < Course Singleton > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtime table . courses ĊĠĠĠ Ġprivate Ġval Ġalter Ġ= ĠCollision Dialog ( context , ĠR . string . text _ cancel , ĠR . string . text _ all set , Ġtrue ) ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġalter . setTitle Collision ( 0 , ĠMy R . string . ics _ alter _ cname , ĠInput Type . TYPE _ CLASS _ TEXT ) ĊĠĠĠĠĠĠĠ Ġalter . set Custom Content ( My R . layout . dialog _ tt _ alter ) ĊĠĠĠĠĠĠĠ Ġalter . setContent ( 0 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġet Name : ĠEditText Ġ= Ġalter . title ĊĠĠĠ Ġprivate Ġval Ġet Teacher : ĠEditText Ġ= Ġalter . findViewById ( My R . id . ics _ alter _ et _ cour set each er ) ĊĠĠĠ Ġprivate Ġval Ġet Room : ĠEditText Ġ= Ġalter . findViewById ( My R . id . ics _ alter _ et _ cour ser oom ) ĊĠĠĠ Ġprivate Ġval Ġcourse Period LL : ĠLinearLayout Ġ= Ġalter . findViewById ( My R . id . ics _ alter _ ll _ course period ) ĊĠĠĠ Ġprivate Ġval Ġradio Week : ĠRadio Group Ġ= Ġalter . findViewById ( My R . id . ics _ alter _ radio ) ĊĠĠĠ Ġprivate Ġval Ġsp Period : ĠSp inner Ġ= Ġalter . findViewById ( My R . id . ics _ alter _ sp _ class period ) ĊĠĠĠ Ġprivate Ġval Ġsp Phase : ĠSp inner Ġ= Ġalter . findViewById ( My R . id . ics _ alter _ sp _ class phase ) ĊĠĠĠ Ġprivate Ġval Ġfocus Dealer : ĠView Ġ= Ġalter . findViewById ( My R . id . ics _ alter _ focus _ de aler ) ĊĠĠĠ Ġprivate Ġval Ġbtn Alter ed : ĠAtomic Boolean Ġ= ĠAtomic Boolean ( false ) ĊĊĠĠĠ Ġprivate Ġval Ġdp 6 Ġ= ĠX . size ( context , Ġ 6 f , ĠX . DP ). toInt () ĊĠĠĠ Ġprivate Ġval Ġdp 5 0 Ġ= ĠX . size ( context , Ġ 5 0 f , ĠX . DP ). toInt () ĊĊĠĠĠ Ġprivate Ġval Ġcolor Am Ġ= ĠTheme Util . getColor ( context , ĠR . attr . color Tt Am ) ĊĠĠĠ Ġprivate Ġval Ġcolor Pm Ġ= ĠTheme Util . getColor ( context , ĠR . attr . color Tt Pm ) ĊĠĠĠ Ġprivate Ġval Ġcolor E ve Ġ= ĠTheme Util . getColor ( context , ĠR . attr . color Tt E ve ) ĊĠĠĠ Ġprivate Ġval Ġcolor Am Infer ior Ġ= Ġget Infer ior ( color Am ) ĊĠĠĠ Ġprivate Ġval Ġcolor Pm Infer ior Ġ= Ġget Infer ior ( color Pm ) ĊĠĠĠ Ġprivate Ġval Ġcolor E ve Infer ior Ġ= Ġget Infer ior ( color E ve ) Ċ // ĠĠĠ Ġprivate Ġval Ġcolor Infer ior Black Ġ= ĠX . getColor ( context , ĠR . color . card Back Black ) ĊĠĠĠ Ġprivate Ġval Ġcolor T TD ark Ġ= ĠTheme Util . getColor ( context , ĠR . attr . color Action Alert ) ĊĠĠĠ Ġprivate Ġval Ġcolor Text Ġ= ĠTheme Util . getColor ( context , Ġandroid . R . attr . textColor ) ĊĊĠĠĠ Ġprivate Ġfun Ġget Infer ior ( color : ĠInt ): ĠInt { ĊĠĠĠĠĠĠĠ Ġreturn ĠTheme Util . get BackColor ( color , Ġ 0 . 4 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit { ĊĠĠĠĠĠĠĠ Ġval Ġadd New : ĠTextView Ġ= Ġalter . findViewById ( My R . id . tt Alter Add Period ) ĊĠĠĠĠĠĠĠ Ġadd New . setOnClickListener Ġ{ Ġadd Re petition Layout ( Re petition ( 0 , Ġ 0 )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcl Periods Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( My R . string . ics _ alter _ class last ing _ 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( My R . string . ics _ alter _ class last ing _ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( My R . string . ics _ alter _ class last ing _ 3 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsp Period . adapter Ġ= ĠArray Adapter ( context , ĠR . layout . pop _ list _ item , Ġcl Periods ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcl Ph ases Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( My R . string . ics _ alter _ clas st ime _ am 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( My R . string . ics _ alter _ clas st ime _ am 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( My R . string . ics _ alter _ clas st ime _ am 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( My R . string . ics _ alter _ clas st ime _ pm 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( My R . string . ics _ alter _ clas st ime _ pm 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( My R . string . ics _ alter _ clas st ime _ pm 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( My R . string . ics _ alter _ clas st ime _ e ve 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( My R . string . ics _ alter _ clas st ime _ e ve 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( My R . string . ics _ alter _ clas st ime _ e ve 3 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsp Phase . adapter Ġ= ĠArray Adapter ( context , ĠR . layout . pop _ list _ item , Ġcl Ph ases ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠTable ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTable ViewHolder ( in flater . inflate ( My R . layout . adapter _ tt , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠTable ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . container . removeAll Views () ĊĠĠĠĠĠĠĠ Ġvar Ġmultiple View Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfor Ġ( course Ġin Ġcourses ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( course . legacy Class Schedule Ġ> Ġposition Ġ+ Ġ 1 ) Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( course . legacy Class Schedule Ġ!= Ġposition Ġ+ Ġ 1 ) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( multiple View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblank View Ġ= ĠSpace ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblank View . minimum Height Ġ= Ġdp 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . container . addView ( blank View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmultiple View Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcourse Views Ġ= Ġinflater . inflate ( My R . layout . tt _ adapter _ course , Ġholder . container , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . container . addView ( course Views ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Views . findViewById < AppCompat TextView >( My R . id . tt Adapter Course Name ). dart Future ( course . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Views . findViewById < AppCompat TextView >( My R . id . tt Adapter Course Period ). dart Future ( Re petition . toString ( course . ed uc ating . re pet itions )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Views . findViewById < AppCompat TextView >( My R . id . tt Adapter Course Room ). dart Future ( course . ed uc ating . location ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( course . name Ġ== Ġcontext . getString ( My R . string . ics _ alter _ cname ) Ġ|| Ġcourse . legacy Duplicate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Views . add On Attach State ChangeListener ( object : ĠView . On Attach State ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Attached To Window ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . remove On Attach State ChangeListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . perform Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( v : ĠView ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Views . setOn Long ClickListener { Ġpop Actions ( course ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Views . setOnClickListener Ġ{ Ġpop Course Info ( course ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġday Per i : ĠInt Ġ= Ġholder . adapter Position Ġ/ Ġtime table . columns ĊĠĠĠĠĠĠĠ Ġif Ġ( holder . container . child Count Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . space . minimum Height Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Per i Ġ< Ġtime table . row Am Ġ-> Ġcolor Am ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Per i Ġ< Ġtime table . row Am Ġ+ Ġtime table . row Pm Ġ-> Ġcolor Pm ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcolor E ve ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . space . minimum Height Ġ= Ġdp 5 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . card . card Elevation Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Black Theme Ġ-> Ġcolor Infer ior Black ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Per i Ġ< Ġtime table . row Am Ġ-> Ġcolor Am Infer ior ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Per i Ġ< Ġtime table . row Am Ġ+ Ġtime table . row Pm Ġ-> Ġcolor Pm Infer ior ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcolor E ve Infer ior ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġholder . card . set Card BackgroundColor ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Re petition Layout ( re petition : ĠRe petition ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( My R . layout . tt _ adapter _ periods , Ġcourse Period LL , Ġfalse ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < AppCompat EditText >( My R . id . tt Adapter Periods Start ). setText ( re petition . from Week . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < AppCompat EditText >( My R . id . tt Adapter Periods End ). setText ( re petition . to Week . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < Switch >( My R . id . tt Adapter Periods Fort nightly ). isChecked Ġ= Ġrepet ition . fort nightly ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < AppCompat Image Button >( My R . id . tt Adapter Periods Remove ). setOnClickListener { Ġcourse Period LL . remove View ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġcourse Period LL . addView ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġlong Ġclick Ġaction ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġpop Actions ( course : ĠCourse Singleton ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠCollision Dialog ( context , ĠR . string . text _ cancel ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle Collision ( course . name , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġviews Ġ= ĠT t Adapter Actions Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Custom Content ( views . root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Listener Ġ{ Ġdismiss () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġviews . tt Adapter Actions Duplicate . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Duplicate ( course ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviews . tt Adapter Actions Remove . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Remove ( course ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġaction Duplicate ( course : ĠCourse Singleton ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Course : ĠCourse Singleton Ġ= Ġcourse . copy () ĊĠĠĠĠĠĠĠ Ġnew Course . legacy Duplicate Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġcourses . add ( 0 , Ġnew Course ) ĊĠĠĠĠĠĠĠ Ġtime table . persist ( context , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġtime table . render Time table () ĊĠĠĠĠĠĠĠ ĠMy Unit . set Table ( timetable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġaction Remove ( course : ĠCourse Singleton ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcourses . remove ( course ) ĊĠĠĠĠĠĠĠ Ġtime table . persist ( context , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġtime table . render Time table () ĊĠĠĠĠĠĠĠ Ġtime table . produce IC al ( context ) ĊĠĠĠĠĠĠĠ ĠMy Unit . set Table ( timetable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpop Course Info ( course : ĠCourse Singleton ){ ĊĠĠĠĠĠĠĠ Ġsp Period . setSelection ( course . legacy Class Period . toInt () Ġ- Ġif Ġ( course . legacy Template Ġ== Ġ' c ') Ġ 9 6 Ġelse Ġ 9 7 ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( course . legacy Class Phase ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 1 " Ġ-> Ġ 0 ; Ġ" 1 2 " Ġ-> Ġ 1 ; Ġ" 1 3 " Ġ-> Ġ 2 ; Ġ" 2 1 " Ġ-> Ġ 3 ; Ġ" 2 2 " Ġ-> Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 3 " Ġ-> Ġ 5 ; Ġ" 3 1 " Ġ-> Ġ 6 ; Ġ" 3 2 " Ġ-> Ġ 7 ; Ġ" 3 3 " Ġ-> Ġ 8 ; Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ}. run Ġ{ Ġsp Phase . setSelection ( this ) Ġ} Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalter . show In de cent ly () ĊĊĠĠĠĠĠĠĠ Ġval Ġlistener Cancel Ġ= ĠView . OnClickListener Ġ{ Ġalter . dismiss () Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ok Ġ= ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( course Period LL . child Count Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ OnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalter . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( et Name . text Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . name Ġ= Ġet Name . text . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( et Teacher . text Ġ!= Ġnull Ġ&& Ġet Teacher . text . toString (). isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . ed uc ating . ed uc ator Ġ= Ġet Teacher . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . ed uc ating . ed uc ator Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( et Room . text Ġ!= Ġnull Ġ&& Ġet Room . text . toString (). isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . ed uc ating . location Ġ= Ġet Room . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . ed uc ating . location Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( course . legacy Template Ġ== Ġ' c ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . legacy Class Period Ġ= Ġ( sp Period . selected Item Position Ġ+ Ġ 9 6 ). to Char () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . legacy Class Period Ġ= Ġ( sp Period . selected Item Position Ġ+ Ġ 9 7 ). to Char () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepet itions Ġ= ĠArrayList < Re petition >( course Period LL . child Count Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( c Ġin Ġ 1 Ġuntil Ġcourse Period LL . child Count ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscroll View : ĠHorizontal ScrollView Ġ= Ġcourse Period LL . getChild At ( c ) Ġas ĠHorizontal ScrollView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġll : ĠLinearLayout Ġ= Ġscroll View . getChild At ( 0 ) Ġas ĠLinearLayout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġet Start : ĠEditText Ġ= Ġll . getChild At ( 0 ) Ġas ĠEditText ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġet End : ĠEditText Ġ= Ġll . getChild At ( 2 ) Ġas ĠEditText ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsingle Period Switch : ĠSwitch Ġ= Ġll . getChild At ( 3 ) Ġas ĠSwitch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfrom Week : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġto Week : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Week Ġ= Ġif Ġ( et Start . text Ġ!= Ġnull Ġ&& Ġet Start . text . toString (). isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . parseInt ( et Start . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Week Ġ= Ġif Ġ( et End . text Ġ!= Ġnull Ġ&& Ġet End . text . toString (). isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . parseInt ( et End . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepet itions . add ( Re petition . parse Fort nightly ( from Week , Ġto Week , Ġsingle Period Switch . isChecked )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . ed uc ating . re pet itions Ġ= Ġrepet itions . to Typed Array () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( radio Week . checked RadioButton Id ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy R . id . ics _ alter _ radio _ mon Ġ-> ĠDay OfWeek . MON DAY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy R . id . ics _ alter _ radio _ t ue Ġ-> ĠDay OfWeek . T UES DAY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy R . id . ics _ alter _ radio _ wed Ġ-> ĠDay OfWeek . W ED N ES DAY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy R . id . ics _ alter _ radio _ th u Ġ-> ĠDay OfWeek . TH UR SD AY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy R . id . ics _ alter _ radio _ f ri Ġ-> ĠDay OfWeek . FR ID AY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy R . id . ics _ alter _ radio _ sat Ġ-> ĠDay OfWeek . S ATUR DAY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy R . id . ics _ alter _ radio _ sun Ġ-> ĠDay OfWeek . S UND AY _ LEG ACY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠDay OfWeek . MON DAY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. run Ġ{ Ġcourse . ed uc ating . day OfWeek Ġ= Ġthis Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( sp Phase . selected Item Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ" 1 1 "; Ġ 1 Ġ-> Ġ" 1 2 "; Ġ 2 Ġ-> Ġ" 1 3 "; Ġ 3 Ġ-> Ġ" 2 1 "; Ġ 4 Ġ-> Ġ" 2 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> Ġ" 2 3 "; Ġ 6 Ġ-> Ġ" 3 1 "; Ġ 7 Ġ-> Ġ" 3 2 "; Ġ 8 Ġ-> Ġ" 3 3 "; Ġelse Ġ-> Ġ" 1 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. run Ġ{ Ġcourse . legacy Class Phase Ġ= Ġthis Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . render Uid () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime table . persist ( context , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime table . render Time table () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime table . produce IC al ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Unit . set Table ( timetable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġbelow : Ġwhen Ġadding Ġnew Ġcourse Ġor Ġd uplic ating Ġcourse ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġif ( course . legacy Duplicate ) Ġcolor T TD ark Ġelse Ġcolor Text ĊĠĠĠĠĠĠĠ Ġet Name . setTextColor ( color ) ĊĠĠĠĠĠĠĠ Ġet Teacher . setTextColor ( color ) ĊĠĠĠĠĠĠĠ Ġet Room . setTextColor ( color ) ĊĠĠĠĠĠĠĠ Ġif ( course . name Ġ== Ġcontext . getString ( My R . string . ics _ alter _ cname ) Ġ|| Ġcourse . legacy Duplicate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalter . set Listener ({ Ġalter . dismiss (); Ġaction Remove ( course ) Ġ}, Ġlistener Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Alter ed . set ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbelow : Ġnotify Ġthe Ġuser Ġto Ġchange Ġthe Ġcourse Ġname Ġwhen Ġadding Ġnew Ġcourse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! course . legacy Duplicate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX . toast ( context , ĠMy R . string . tt Validate Name , ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcourse . legacy Duplicate Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} else Ġif Ġ( btn Alter ed . get ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalter . set Listener ( listener Cancel , Ġlistener Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Alter ed . set ( false ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalter . set Listener ( listener Cancel , Ġlistener Ok ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfocus Dealer . request Focus () ĊĠĠĠĠĠĠĠ Ġet Name . setText ( course . name ) ĊĠĠĠĠĠĠĠ Ġet Teacher . setText ( course . ed uc ating . ed uc ator ) ĊĠĠĠĠĠĠĠ Ġet Room . setText ( course . ed uc ating . location ) ĊĠĠĠĠĠĠĠ Ġcourse Period LL . remove Views ( 1 , Ġcourse Period LL . child Count Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġcourse . ed uc ating . re pet itions . forEach Ġ{ Ġadd Re petition Layout ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġradio Week . clear Check () ĊĠĠĠĠĠĠĠ Ġval Ġbutton : ĠRadio Button Ġ= Ġradio Week . getChild At ( course . ed uc ating . day OfWeek Ġ- Ġ 1 ) Ġas ĠRadio Button ĊĠĠĠĠĠĠĠ Ġbutton . isChecked Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġalter . show () ĊĠĠĠĠĠĠĠ Ġalter . scroll 2 Top () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġtime table . rows Ġ* Ġtime table . columns Ċ } Ċ