package Ġcom . user . in vo ic eman agement . view . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AlertDialog Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġcom . user . in vo ic eman agement . R Ċ import Ġcom . user . in vo ic eman agement . model . data . Weight Enum Ċ import Ġcom . user . in vo ic eman agement . model . dto . Product Ċ import Ġcom . user . in vo ic eman agement . model . dto . Product Factory Ċ import Ġcom . user . in vo ic eman agement . other . Constant Ċ import Ġcom . user . in vo ic eman agement . presenter . Main Tab Presenter Ċ import Ġcom . user . in vo ic eman agement . view . adapter . Main Tab RecyclerView Adapter Ċ import Ġcom . user . in vo ic eman agement . view . fragment . dialog . Set Weight Dialog Fragment Ċ import Ġcom . user . in vo ic eman agement . view . interfaces . Saver Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ main _ tab _ item _ list .* ĊĊ Ċ class ĠMain Tab Fragment Ġ: ĠBase Fragment (), ĠS aver Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġfactory : ĠProduct Factory ĊĠĠĠ Ġlateinit Ġvar Ġadapter : ĠMain Tab RecyclerView Adapter ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠMain Tab Presenter ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĊĠĠĠĠĠĠĠ Ġpresenter Ġ= ĠMain Tab Presenter ( this ) ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠMain Tab RecyclerView Adapter ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater ?, Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater !!. inflate ( R . layout . fragment _ main _ tab _ item _ list , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= Ġview . findViewById < RecyclerView >( R . id . main Tab RecyclerView ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġactivity . fab . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġactivity . fab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave All ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġshow Factory ( factory ) ĊĊĠĠĠĠĠĠĠ Ġbtn AddNew . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . add New Product ( factory . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĊĠĠĠĠĠĠĠ Ġsave All () ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġfun Ġshow Factory ( product Factory : ĠProduct Factory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Product >() ĊĠĠĠĠĠĠĠ Ġlist . addAll ( 0 , Ġproduct Factory . products Ġ?: Ġempty List ()) ĊĊĠĠĠĠĠĠĠ Ġset Summary ( product Factory ) ĊĠĠĠĠĠĠĠ Ġadapter . items Ġ= Ġlist ĊĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave All ( showMessage : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġadapter . getView Data () ĊĠĠĠĠĠĠĠ Ġpresenter . save All ( list , Ġactivity . getString ( R . string . save _ success ), Ġshow Message ) ĊĠĠĠĠĠĠĠ Ġadapter . update Summary Data () ĊĠĠĠĠĠĠĠ Ġset Summary ( factory ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Set Weight Dialog ( button : ĠButton , Ġproduct : ĠProduct , Ġweight Enum : ĠWeight Enum ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠSet Weight Dialog Fragment () ĊĠĠĠĠĠĠĠ Ġdialog . button Ġ= Ġbutton ĊĠĠĠĠĠĠĠ Ġdialog . product Ġ= Ġproduct ĊĠĠĠĠĠĠĠ Ġdialog . weight Enum Ġ= Ġweight Enum ĊĠĠĠĠĠĠĠ Ġdialog . fragment Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġdialog . show ( activity . support FragmentManager , Ġ" set Ġweight ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Product ( product : ĠProduct ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . items . add ( product ) ĊĠĠĠĠĠĠĠ Ġadapter . notify Item Changed ( adapter . items . size Ġ- Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Product From View ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . items . remove At ( index ) ĊĠĠĠĠĠĠĠ Ġadapter . notify Item Removed ( index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Product ( product : ĠProduct , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setIcon ( R . drawable . ic _ delete ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . de leting ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( String . format ( activity . getString ( R . string . delete _ product ), Ġproduct . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . delete ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . delete Product ( product . id , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . cancel , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġset Summary ( factory : ĠProduct Factory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpurchase Summary Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġvar Ġsell ing Summary Ġ= Ġ 0 f ĊĊĠĠĠĠĠĠĠ Ġfactory . products ?. forEach Ġ{ Ġproduct : ĠProduct Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpurchase Summary Ġ+= Ġproduct . purchase Price Summary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsell ing Summary Ġ+= Ġproduct . sell ing Price Summary ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmain Tab Summary . text Ġ= Ġactivity . getString ( R . string . total _ summary ) Ġ+ Ġ": Ġ${ Constant . price Format . format ( sell ing Summary )} Ġ- Ġ${ Constant . price Format . format ( purchase Summary )}" ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġoverride Ġfun Ġfilter ( name : ĠString ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll () Ġ{ ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ