package Ġch . hs r . ifs . g cs . ui . mission Ċ Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġch . hs r . ifs . g cs . G CS Ċ import Ġch . hs r . ifs . g cs . R Ċ import Ġch . hs r . ifs . g cs . Main Model Ċ import Ġch . hs r . ifs . g cs . Need Overview Requested Ċ import Ġch . hs r . ifs . g cs . mission . Mission Ċ import Ġch . hs r . ifs . g cs . mission . Result Ċ import Ġch . hs r . ifs . g cs . ui . MainActivity Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ missions _ list .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ missions _ list . view .* ĊĊ Ċ /** Ċ Ġ* ĠA Ġfragment Ġrepresenting Ġa Ġlist Ġof Ġmission Ġstatus Ġitems Ġcombined Ġwith Ġa Ġbutton Ġto Ġadd Ċ Ġ* Ġadditional Ġneeds . Ċ Ġ*/ Ċ class ĠMis sion s Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġf Model : ĠMain Model ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġf Adapter : ĠMis sion s RecyclerView Adapter ĊĠĠĠ Ġprivate Ġval Ġf Results Ġ= Ġmutable Map Of < Mission , ĠResult >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ missions _ list , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġview . list ĊĠĠĠĠĠĠĠ Ġif Ġ( list Ġis ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( list ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf Adapter Ġ= ĠMis sion s RecyclerView Adapter ( context Ġas ĠMainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġf Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġf Model Ġ= Ġ( activity !!. application Ġas ĠG CS ). main Model ĊĠĠĠĠĠĠĠ Ġf Model . missions . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf Adapter . missions Ġ= Ġit ?. reversed () Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġf Model . available Needs . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatuses Add Button . isEnabled Ġ= Ġit Ġ!= Ġnull Ġ&& Ġit . isNotEmpty () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġf Model . mission Results . observe ( this , ĠObserver Ġ{ Ġmission s Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġf Adapter . items . filter Not ( Mission Item :: has Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmission s . forEach Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . find { Ġit . mission Ġ== Ġresult . mission Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . result Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . draw () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġactivity ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatuses Add Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf Model . submit ( Need Overview Requested ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Button ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Abort ĠMis sion " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf Adapter . selection ?. mission ?. abort () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ