package Ġar . edu . ut n . fr ba . mobile . a 2 0 1 9 c 1 . mer cury Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġar . edu . ut n . fr ba . mobile . a 2 0 1 9 c 1 . mer cury . db . Data Snapshot Adapter Ċ import Ġar . edu . ut n . fr ba . mobile . a 2 0 1 9 c 1 . mer cury . db . Database Ċ import Ġar . edu . ut n . fr ba . mobile . a 2 0 1 9 c 1 . mer cury . model . Schedule Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . Database Error Ċ import Ġcom . google . firebase . database . Value EventListener Ċ import Ġkotlinx . android . synt hetic . main . fragment _ schedule _ edition . fab Ċ import Ġkotlinx . android . synt hetic . main . fragment _ schedule _ list .* Ċ Ċ class ĠSchedule List Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠSchedule ViewModel Ġby Ġactivity ViewModels () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġon Add Schedule Button Clicked : Ġ() Ġ-> ĠUnit ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġon View Schedule Button Clicked : Ġ( Schedule ) Ġ-> ĠUnit ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġon Edit Schedule Button Clicked : Ġ( Schedule ) Ġ-> ĠUnit ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġschedule ListAdapter Ġ: ĠSchedule ListAdapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠDatabase . db . add Value EventListener ( schedule Listener ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). set ActionBar Title ( getString ( R . string . LIST _ SCHED ULE __ ACTION _ BAR _ TITLE )) ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ schedule _ list , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġsetup Adapter () ĊĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ Ġon Add Schedule Button Clicked () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġs chedules Ġ= ĠviewModel . schedules ĊĠĠĠĠĠĠĠ Ġschedule ListAdapter Ġ= ĠSchedule ListAdapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs chedules , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . on View Schedule Button Clicked , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . on Edit Schedule Button Clicked , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis :: delete Schedule ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġupdate View IfNeeded () Ġ// TODO Ġs ac ar Ġy Ġque Ġarr an que Ġcon Ġun Ġloading ? ĊĊĠĠĠĠĠĠĠ Ġwith ( schedule _ list Ġas ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġschedule ListAdapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Schedule ( schedule ToDelete : ĠSchedule ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . remove ( schedule ToDelete ) ĊĠĠĠĠĠĠĠ Ġsetup Adapter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Add Schedule Button Clicked ( on Add Schedule Button Clicked : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Add Schedule Button Clicked Ġ= Ġon Add Schedule Button Clicked ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On View Schedule Button Clicked ( on View Schedule Button Clicked : Ġ( Schedule ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on View Schedule Button Clicked Ġ= Ġon View Schedule Button Clicked ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Edit Schedule Button Clicked ( on Edit Schedule Button Clicked : Ġ( Schedule ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Edit Schedule Button Clicked Ġ= Ġon Edit Schedule Button Clicked ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Schedule List ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠData Snapshot Adapter (). to HashMap List ( data Snapshot ) ĊĠĠĠĠĠĠĠ Ġval Ġs chedules Ġ= Ġdata . map Ġ{ ĠSchedule . build From Database ( it ) Ġ} Ġ. to Mutable List () ĊĠĠĠĠĠĠĠ ĠviewModel . update Datasource ( schedules ) ĊĠĠĠĠĠĠĠ Ġschedule ListAdapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġupdate View IfNeeded () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate View IfNeeded () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( viewModel . schedules . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty _ view ?. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschedule _ list ?. visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty _ view ?. visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschedule _ list ?. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġschedule Listener : ĠValue EventListener Ġ= Ġobject Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Schedule List ( data Snapshot ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( database Error : ĠDatabase Error ) Ġ{} ĊĠĠĠ Ġ} ĊĊ Ċ }