package Ġcom . ef icks an . r pg helper . screens Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . Navigation Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . ef icks an . r pg helper . R Ċ import Ġcom . ef icks an . r pg helper . adapters . Base Select ing Adapter Ċ import Ġcom . ef icks an . r pg helper . adapters . Session ListAdapter Ċ import Ġcom . ef icks an . r pg helper . models . Game Session Ċ import Ġcom . ef icks an . r pg helper . models . Item Ċ import Ġcom . ef icks an . r pg helper . view models . Inventory ViewModel Ċ import Ġcom . ef icks an . r pg helper . view models . Selectable List ViewModel Ċ import Ġcom . ef icks an . r pg helper . view models . Session ViewModel Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ Ċ class ĠS essions List Fragment Ġ: ĠFragment (), ĠBase Select ing Adapter . Item Interactor < Game Session > Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠSession ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ sessions _ list , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAppCompatActivity ). set Support ActionBar ( view . findViewById ( R . id . bottom _ bar )) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠSession ViewModel ( activity !!. application ) ĊĠĠĠĠĠĠĠ Ġview . findViewById < Floating ActionButton >( R . id . fab ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setOnClickListener ( Navigation . create Navigate OnClickListener ( R . id . create _ session , Ġnull )) ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġview . findViewById < RecyclerView >( R . id . sessions _ list ) ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠSession ListAdapter ( view . context , Ġthis ) ĊĠĠĠĠĠĠĠ Ġlist . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġlist . layout Manager Ġ= ĠLinearLayoutManager ( view . context ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . all Items . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObserver Ġ{ Ġadapter . update Items ( it ) Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . selected Items . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. invalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . update Selected Items ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Long Press ( item : ĠGame Session ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . select Item ( item ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonPress ( item : ĠGame Session ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( viewModel . mode . value Ġ== ĠSelect able List ViewModel . MODE _ SELECTION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . select Item ( item ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . putString (" session _ uid ", Ġitem . uid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . find Nav Controller (). navigate ( R . id . inventory , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?, Ġinflater : ĠMenu Inflater ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( in flater Ġ!= Ġnull Ġ&& ĠviewModel . selected Items . value Ġ!= Ġnull Ġ&& ĠviewModel . selected Items . value !!. isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel . selected Items . value !!. size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ single _ session _ selected , Ġmenu ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( viewModel . selected Items . value !!. size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ multi _ session _ selected , Ġmenu ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item ?. itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . cancel _ selection Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . clear Selection () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . delete Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . delete Selected () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . clear Selection () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . edit Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" Open Ġedit Ġsession Ġscreen ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ