package Ġcom . pe ch uro . bs uir schedule . feature . add schedule Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . InputType Ċ import Ġandroid . view . View Ċ import Ġandroid . view . WindowManager Ċ import Ġandroidx . core . animation . do On End Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bs uir . pe ch uro . bs uir schedule . R Ċ import Ġcom . pe ch uro . bs uir schedule . common . base . Base Fragment Ċ import Ġcom . pe ch uro . bs uir schedule . domain . entity . Schedule Type Ċ import Ġcom . pe ch uro . bs uir schedule . ext . add Text Listener Ċ import Ġcom . pe ch uro . bs uir schedule . ext . clear Adapter Ċ import Ġcom . pe ch uro . bs uir schedule . ext . hide Keyboard Ċ import Ġcom . pe ch uro . bs uir schedule . ext . non Null Ċ import Ġcom . pe ch uro . bs uir schedule . ext . observe Ċ import Ġcom . pe ch uro . bs uir schedule . ext . set Safe ClickListener Ċ import Ġcom . pe ch uro . bs uir schedule . ext . setVisible With Alpha Ċ import Ġcom . pe ch uro . bs uir schedule . ext . show Keyboard Ċ import Ġcom . pe ch uro . bs uir schedule . feature . add schedule . Add Schedule Container Pager Adapter . Fragment Type Ċ import Ġcom . pe ch uro . bs uir schedule . feature . add schedule . Add Schedule ViewModel . State Ċ import Ġcom . pe ch uro . bs uir schedule . feature . staff list . Staff Adapter Ċ import Ġcom . pe ch uro . bs uir schedule . feature . staff list . Staff Item Information Ċ import Ġcom . pe ch uro . bs uir schedule . feature . staff list . Staff Item Information . Employee Info Ċ import Ġcom . pe ch uro . bs uir schedule . feature . staff list . Staff Item Information . Group Info Ċ import Ġcom . pe ch uro . bs uir schedule . feature . staff list . Staff List ViewModel Ċ import Ġcom . pe ch uro . bs uir schedule . feature . staff list . Staff Type Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add _ schedule .* Ċ Ċ class ĠAdd Schedule Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ SCHED ULE _ TYPE Ġ= Ġ" ARG _ SCHED ULE _ TYPE " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( schedule Type : ĠFragment Type ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdd Schedule Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= Ġbundle Of ( ARG _ SCHED ULE _ TYPE Ġto Ġschedule Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġlayout Id : ĠInt Ġ= ĠR . layout . fragment _ add _ schedule ĊĊĠĠĠ Ġprivate Ġval Ġadd Schedule ViewModel Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġowner Ġ= Ġparent Fragment Ġ?: Ġthis ĊĠĠĠĠĠĠĠ Ġinit ViewModel ( Add Schedule ViewModel :: class , Ġowner Ġ= Ġowner ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġstaff ViewModel Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ViewModel ( Staff List ViewModel :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġschedule Type : ĠFragment Type Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Arguments (). get Serializable ( ARG _ SCHED ULE _ TYPE ) Ġas ĠFragment Type ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġstaff Adapter Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĊĠĠĠĠĠĠĠ ĠStaff Adapter ( on Item Clicked Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule Suggestions RecyclerView . tag Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Schedule ( it ) ĊĠĠĠĠĠĠĠ Ġ}). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Has Stable Ids ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġactivity ?. window ?. set Soft Input Mode ( WindowManager . LayoutParams . SOFT _ INPUT _ ADJ UST _ RE SIZE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġstaff Type Ġ= Ġwhen Ġ( schedule Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFragment Type . EMP LOY EE Ġ-> ĠStaff Type . EMP LOY EE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFragment Type . ST UD ENT Ġ-> ĠStaff Type . GROUP ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstaff ViewModel . init ( staff Type ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġobserve Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġcontext ?. show Keyboard ( add Schedule Name Input ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġcontext ?. hide Keyboard ( add Schedule Name Input . window Token ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Schedule Suggestions RecyclerView . clear Adapter () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠĠĠĠĠ Ġactivity ?. window ?. clear Flags ( WindowManager . LayoutParams . SOFT _ INPUT _ ADJ UST _ RE SIZE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Schedule Name Input . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Type Ġ= Ġwhen Ġ( schedule Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFragment Type . ST UD ENT Ġ-> ĠInput Type . TYPE _ CLASS _ NUMBER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFragment Type . EMP LOY EE Ġ-> ĠInput Type . TYPE _ TEXT _ VARI ATION _ PERSON _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . input Type Ġ= Ġinput Type ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstaff ViewModel . filter ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Schedule Suggestions RecyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context , ĠRecyclerView . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġstaff Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Schedule Retry Button . set Safe ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġadd Schedule Suggestions RecyclerView . tag Ġas ? ĠStaff Item Information ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Schedule ( info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule ViewModel . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Schedule Cancel Button . set Safe ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule ViewModel . cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Schedule ViewModel . state . non Null (). observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Layout State ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstaff ViewModel . list Data . non Null (). observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstaff Adapter . submit List ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Schedule ( info : ĠStaff Item Information ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġschedule Types Ġ= Ġsequence Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( add Schedule Chip Classes . isChecked ) Ġyield ( Schedule Type . CLASSES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( add Schedule Chip Ex ams . isChecked ) Ġyield ( Schedule Type . EX AMS ) ĊĠĠĠĠĠĠĠ Ġ}. toList () ĊĠĠĠĠĠĠĠ Ġwhen Ġ( info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGroup Info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule ViewModel . load Schedule ( info . group , Ġschedule Types ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠEmployee Info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule ViewModel . load Schedule ( info . employee , Ġschedule Types ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Layout State ( state : ĠState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Idle Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule Suggestions RecyclerView . tag Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule ProgressBar . setVisible With Alpha ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule Error Parent View . setVisible With Alpha ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule Params Parent View . setVisible With Alpha ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On End Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. show Keyboard ( add Schedule Name Input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule Name Input . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. hide Keyboard ( add Schedule Name Input . window Token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule Error Parent View . setVisible With Alpha ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule Params Parent View . setVisible With Alpha ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On End Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule ProgressBar . setVisible With Alpha ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠState . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule ProgressBar . setVisible With Alpha ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule Error Parent View . setVisible With Alpha ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Schedule Params Parent View . setVisible With Alpha ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }