package Ġcom . brand on . hang time Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . InputType Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget .* Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . google . firebase . auth . k tx . auth Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġjava . time . LocalDateTime ĊĊ Ċ class ĠFragment Event Editor Ġ: ĠFragment () Ċ { ĊĠĠĠ Ġ// Ġwhen Ġthe Ġuser Ġclicks Ġon Ġeither Ġedit Ġtext Ġit Ġwill Ġactually Ġopen Ġpop Ġup Ġwindows ĊĠĠĠ Ġ// Ġthe Ġedit Ġtext Ġis Ġused Ġbecause Ġit Ġaff ords Ġclicking ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠstartTime Widget Ġ: ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠendTime Widget : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠeventName Widget Ġ: ĠEditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsave Button Ġ: ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnon Repe ating Radio Ġ: ĠRadio Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdaily Repe ating Radio Ġ: ĠRadio Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġweekly Repe ating Radio Ġ: ĠRadio Button ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠstartDate : ĠLocalDateTime ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠendDate : ĠLocalDateTime ĊĊĠĠĠ Ġinternal Ġenum Ġclass ĠParent { ĊĠĠĠĠĠĠĠ ĠGROUP CAL END AR , ĠPER SON AL SCHED ULE ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġmy Parent Ġ: ĠParent Ġ= ĠParent . GROUP CAL END AR ĊĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġinflater . inflate ( R . layout . fragment _ event _ editor , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġset Late In its ( v ) ĊĠĠĠĠĠĠĠ Ġset Listeners () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġv ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġset Parent ( p Ġ: ĠParent ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Parent Ġ= Ġp ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġsets Ġup Ġthe Ġlate Ġin its ĊĠĠĠ Ġprivate Ġfun Ġset Late In its ( v Ġ: ĠView ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠstartTime Widget Ġ= Ġv . findViewById ( R . id . personal Event StartTime EditText ) ĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġit Ġso Ġyou Ġcannot Ġenter Ġanything Ġinto Ġthe Ġedit Ġtext ĊĠĠĠĠĠĠĠ ĠstartTime Widget . input Type Ġ= ĠInput Type . TYPE _ NULL ĊĊĠĠĠĠĠĠĠ ĠendTime Widget Ġ= Ġv . findViewById ( R . id . personal Event EndTime EditText ) ĊĠĠĠĠĠĠĠ ĠendTime Widget . input Type Ġ= ĠInput Type . TYPE _ NULL ĊĊĠĠĠĠĠĠĠ ĠeventName Widget Ġ= Ġv . findViewById ( R . id . personal Event Name EditText ) ĊĊĠĠĠĠĠĠĠ Ġsave Button Ġ= Ġv . findViewById (( R . id . save Personal Event Button )) ĊĊĠĠĠĠĠĠĠ Ġnon Repe ating Radio Ġ= Ġv . findViewById ( R . id . personal Event Non Repe ating Radio ) ĊĠĠĠĠĠĠĠ Ġnon Repe ating Radio . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġdaily Repe ating Radio Ġ= Ġv . findViewById ( R . id . personal Event Daily Radio ) ĊĠĠĠĠĠĠĠ Ġweekly Repe ating Radio Ġ= Ġv . findViewById ( R . id . personal Event Week ly Radio ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġsets Ġall Ġthe Ġevent Ġlisteners ĊĠĠĠ Ġprivate Ġfun Ġset Listeners () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ// set Ġthe ĠstartTime Ġedit text Ġso Ġwhen Ġclicked Ġon Ġthe Ġparent Ġactivity Ġwill Ġthrow ĊĠĠĠĠĠĠĠ Ġ// the Ġcorrect Ġpop Ġup ĊĠĠĠĠĠĠĠ ĠstartTime Widget . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( my Parent Ġ== ĠParent . PERSON AL SCHED ULE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠPersonal Schedule ). make Time Pop Up ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠGroup Calendar ). make Time Pop Up ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠendTime Widget . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( my Parent Ġ== ĠParent . PERSON AL SCHED ULE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠPersonal Schedule ). make Time Pop Up ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠGroup Calendar ). make Time Pop Up ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsave Button . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġall Ġfields Ġfunction Ġwill Ġalready Ġmake Ġa Ġtoast Ġif Ġits Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( all Fields Filled ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( endDate < startDate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( my Parent Ġ== ĠParent . PERSON AL SCHED ULE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity Ġas ĠPersonal Schedule , Ġ" The Ġevent Ġmust Ġend Ġafter Ġit Ġstarts ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity Ġas ĠGroup Calendar , Ġ" The Ġevent Ġmust Ġend Ġafter Ġit Ġstarts ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Button . is Clickable Ġ= Ġfalse Ġ// Ġso Ġthe Ġbutton Ġcant Ġbe Ġspam med Ġwhile Ġthe Ġdatabase Ġis Ġbeing Ġaccessed ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Ġ= ĠFirebase Data Objects . Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠeventName Widget . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Data Objects . to Timestamp ( startDate ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Data Objects . to Timestamp ( endDate ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase . auth . currentUser !!. uid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( my Parent Ġ== ĠParent . PERSON AL SCHED ULE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠPersonal Schedule ). submit New Event ( event ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠGroup Calendar ). submit New Event ( event ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġset Save Button Click ability ( click able Ġ: ĠBoolean ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsave Button . is Clickable Ġ= Ġclick able ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġthis Ġfunction Ġis Ġintended Ġto Ġbe Ġcalled Ġby Ġthe Ġpersonal Ġschedule Ġfor Ġwhen Ġwe Ġare Ġinserting ĊĠĠĠ Ġ// Ġtime Ġinto Ġthe Ġedit Ġtexts ĊĠĠĠ Ġinternal Ġfun Ġset Ed its ( startTime Edit Ġ: ĠBoolean , Ġevent Time : LocalDateTime ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhour : ĠString ĊĠĠĠĠĠĠĠ Ġval Ġperiod : ĠString ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Time . hour Ġ== Ġ 0 Ġ-> Ġ{// Ġtime Ġis Ġ 1 2 Ġam ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Ġ= Ġ" 1 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Ġ= Ġ" AM " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Time . hour Ġ> Ġ 1 2 Ġ-> Ġ{ Ġ Ġ// Ġtime Ġis Ġbetween Ġ 1 0 pm Ġand Ġ 1 2 pm ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Ġ= Ġ"${ event Time . hour Ġ- Ġ 1 2 }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Ġ= Ġ" PM " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ Ġ// Ġtime Ġis Ġbetween Ġ 1 0 Ġam Ġand Ġ 1 1 Ġam ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhour Ġ= Ġ"${ event Time . hour }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperiod Ġ= Ġ" AM " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġminute : ĠString Ġ= Ġif ( event Time . minute Ġ< Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 ${ event Time . minute }" ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ event Time . minute }" ĊĊĠĠĠĠĠĠĠ Ġif ( startTime Edit ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Widget . text Ġ= Ġ"${ event Time . month } Ġ${ event Time . day OfMonth } Ġat Ġ$ hour :$ minute Ġ$ period " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate Ġ= Ġevent Time ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Widget . text Ġ= Ġ"${ event Time . month } Ġ${ event Time . day OfMonth } Ġat Ġ$ hour :$ minute Ġ$ period " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠendDate Ġ= Ġevent Time ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġreturns Ġtrue Ġif Ġall Ġthe Ġfields Ġare Ġfilled ĊĠĠĠ Ġprivate Ġfun Ġall Fields Filled () Ġ: ĠBoolean ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( eventName Widget . text . toString (). isBlank () Ġ|| Ġ( startTime Widget . text . toString (). isBlank () Ġ|| ĠendTime Widget . text . toString (). isBlank () Ġ)) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( my Parent Ġ== ĠParent . PERSON AL SCHED ULE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity Ġas ĠPersonal Schedule , Ġ" All Ġfields Ġmust Ġbe Ġfilled ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity Ġas ĠGroup Calendar , Ġ" All Ġfields Ġmust Ġbe Ġfilled ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} Ċ Ċ }