package Ġcom . k yle cor ry . trail _ sense . tools . packs . ui Ċ Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . graphics . Port er D uff Color Filter Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . k yle cor ry . and rome da . alerts . Alerts Ċ import Ġcom . k yle cor ry . and rome da . core . math . Decimal Formatter Ċ import Ġcom . k yle cor ry . and rome da . fragments . Bound Fragment Ċ import Ġcom . k yle cor ry . and rome da . list . ListView Ċ import Ġcom . k yle cor ry . and rome da . pick ers . Pick ers Ċ import Ġcom . k yle cor ry . trail _ sense . R Ċ import Ġcom . k yle cor ry . trail _ sense . databinding . Fragment ItemList Binding Ċ import Ġcom . k yle cor ry . trail _ sense . databinding . ListItem Pack Item Binding Ċ import Ġcom . k yle cor ry . trail _ sense . shared . Format Service Ċ import Ġcom . k yle cor ry . trail _ sense . shared . User Preferences Ċ import Ġcom . k yle cor ry . trail _ sense . tools . packs . domain . Pack Ċ import Ġcom . k yle cor ry . trail _ sense . tools . packs . domain . Pack Item Ċ import Ġcom . k yle cor ry . trail _ sense . tools . packs . domain . Pack Service Ċ import Ġcom . k yle cor ry . trail _ sense . tools . packs . domain . sort . Category Pack Item Sort Ċ import Ġcom . k yle cor ry . trail _ sense . tools . packs . domain . sort . Packed Percent Pack Item Sort Ċ import Ġcom . k yle cor ry . trail _ sense . tools . packs . domain . sort . Weight Pack Item Sort Ċ import Ġcom . k yle cor ry . trail _ sense . tools . packs . infrastructure . Pack Repo Ċ import Ġcom . k yle cor ry . trail _ sense . tools . packs . ui . map pers . Item Category Color Mapper Ċ import Ġcom . k yle cor ry . trail _ sense . tools . packs . ui . map pers . Item Category Icon Mapper Ċ import Ġcom . k yle cor ry . trail _ sense . tools . packs . ui . map pers . Item Category String Mapper Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjava . lang . Double . max Ċ import Ġkotlin . math . floor Ċ Ċ class ĠPack ItemList Fragment Ġ: ĠBound Fragment < Fragment ItemList Binding >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġitem Repo Ġby Ġlazy Ġ{ ĠPack Repo . getInstance ( require Context ()) Ġ} ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġitems LiveData : ĠLive Data < List < Pack Item >> ĊĠĠĠ Ġprivate Ġval Ġformat Service Ġby Ġlazy Ġ{ ĠFormat Service ( require Context ()) Ġ} ĊĠĠĠ Ġprivate Ġval Ġpack Service Ġ= ĠPack Service () ĊĠĠĠ Ġprivate Ġvar Ġitems : ĠList < Pack Item > Ġ= ĠlistOf () ĊĠĠĠ Ġprivate Ġval Ġprefs Ġby Ġlazy Ġ{ ĠUser Preferences ( require Context ()) Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠlistView : ĠListView < Pack Item > ĊĊĠĠĠ Ġprivate Ġvar Ġpack : ĠPack ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpack Id : ĠLong Ġ= Ġ 0 L ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġpack Id Ġ= Ġarguments ?. getLong (" pack _ id ") Ġ?: Ġ 0 L ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġrun In Background Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Pack ( pack Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġload Pack ( pack Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpack Ġ= Ġitem Repo . get Pack ( pack Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠMove Ġthis Ġtransformation Ġinto Ġthe Ġrepo ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems LiveData Ġ= Ġitem Repo . getItems From Pack ( pack Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup UI () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . inventory List Title . text Ġ= Ġpack ?. name ĊĠĠĠĠĠĠĠ ĠlistView Ġ= ĠListView ( binding . inventory List , ĠR . layout . list _ item _ pack _ item ) Ġ{ ĠitemView , Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Binding Ġ= ĠListItem Pack Item Binding . bind ( item View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . name . text Ġ= Ġitem . name ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Amount Ġ= Ġformat Amount ( item . amount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . count . text Ġ= Ġif Ġ( item . desired Amount Ġ!= Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ current Amount Ġ/ Ġ${ format Amount ( item . desired Amount )}" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Amount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Text Mapper Ġ= ĠItem Category String Mapper ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimg Mapper Ġ= ĠItem Category Icon Mapper () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Mapper Ġ= ĠItem Category Color Mapper () ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . item Category . text Ġ= Ġcategory Text Mapper . getString ( item . category ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . item Category Img . setImage Resource ( img Mapper . get Icon ( item . category )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Color Ġ= Ġcolor Mapper . map ( item . category ). color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . item Category . setTextColor ( category Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . item Category Img . color Filter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPort er D uff Color Filter ( category Color , ĠPort er D uff . Mode . SRC _ IN ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . weight Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . weight . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . weight Img . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . weight . text Ġ= Ġformat Service . format Weight ( item . packed Weight !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . weight . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . weight Img . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . item Checkbox . isChecked Ġ= Ġitem . is Fully Packed ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . item Checkbox . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Checkbox Clicked ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . item Menu Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPick ers . menu ( item Binding . item Menu Btn , ĠR . menu . inventory _ item _ menu ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ item _ add Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPick ers . number ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . add ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Negative Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint Ġ= ĠgetString ( R . string . dialog _ item _ amount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Amount ( item , Ġit . toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ item _ subtract Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPick ers . number ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . subtract ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Negative Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint Ġ= ĠgetString ( R . string . dialog _ item _ amount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Amount ( item , Ġ- it . toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ item _ edit Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Item ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ item _ delete Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Item ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠlistView . add Line Separator () ĊĊĠĠĠĠĠĠĠ Ġitems LiveData . observe ( view Lifecycle Owner ) Ġ{ Ġitems Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items Ġ= Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . inventory Empty Text . isVisible Ġ= Ġitems . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtotal Weight Ġ= Ġpack Service . get Pack Weight ( items , Ġprefs . weight Units ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpacked Percent Ġ= Ġfloor ( pack Service . get Percent Packed ( items )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . item Weight Overview . isVisible Ġ= Ġtotal Weight Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . total Packed Weight . text Ġ= Ġif Ġ( total Weight Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat Service . format Weight ( total Weight , Ġ 1 , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . total Percent Packed . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . percent _ packed , Ġformat Service . format Percentage ( packed Percent )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistView . setData ( sort s [ prefs . packs . pack Sort ]?. sort ( items ) Ġ?: Ġitems ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . add Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ action _ inventory _ to _ create Item Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle Of (" pack _ id " Ġto Ġpack Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . inventory Menu Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPick ers . menu ( binding . inventory Menu Button , ĠR . menu . inventory _ menu ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ pack _ sort Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Sort () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ pack _ rename Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpack ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrename Pack ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ pack _ delete Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpack ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Pack ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ pack _ clear _ packed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlert s . dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . clear _ amount s ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . action _ inventory _ clear _ confirm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġcancelled Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! cancelled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun In Background Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Repo . clear Packed Amount s ( pack Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Sort Change ( new Sort : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠlistView . setData ( sort s [ new Sort ]?. sort ( items ) Ġ?: Ġitems ) ĊĠĠĠĠĠĠĠ Ġprefs . packs . pack Sort Ġ= Ġnew Sort ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrename Pack ( pack : ĠPack ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPick ers . text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . rename ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpack . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhint Ġ= ĠgetString ( R . string . name ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun In Background Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Repo . add Pack ( pack . copy ( name Ġ= Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . inventory List Title . text Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Pack ( pack : ĠPack ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAlert s . dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . delete _ pack ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpack . name ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġcancelled Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! cancelled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun In Background Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Repo . delete Pack ( pack ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Item Checkbox Clicked ( item : ĠPack Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! item . is Fully Packed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . desired Amount Ġ== Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Amount ( item , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Amount ( item , Ġitem . desired Amount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Amount ( item , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Item ( item : ĠPack Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun In Background Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Repo . delete Item ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġedit Item ( item : ĠPack Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= Ġbundle Of (" edit _ item _ id " Ġto Ġitem . id , Ġ" pack _ id " Ġto Ġpack Id ) ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . action _ action _ inventory _ to _ create Item Fragment , Ġbundle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Amount ( item : ĠPack Item , Ġamount : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun In Background Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Repo . addItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . copy ( amount Ġ= Ġmax ( 0 . 0 , Ġitem . amount Ġ+ Ġamount )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Amount ( item : ĠPack Item , Ġamount : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun In Background Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Repo . addItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . copy ( amount Ġ= Ġamount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Sort () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠlistOf (" category ", Ġ" percent _ asc ", Ġ" percent _ desc ", Ġ" weight _ asc ", Ġ" weight _ desc ") ĊĠĠĠĠĠĠĠ ĠPick ers . item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . sort ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . map Ġ{ Ġget Sort Title ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . indexOf ( prefs . packs . pack Sort ) ĊĠĠĠĠĠĠĠ Ġ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Sort Change ( options [ it ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat Amount ( amount : ĠDouble ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDecimal Formatter . format ( amount , Ġ 4 , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsorts Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" category " Ġto ĠCategory Pack Item Sort (), ĊĠĠĠĠĠĠĠ Ġ" percent _ asc " Ġto ĠPacked Percent Pack Item Sort ( true ), ĊĠĠĠĠĠĠĠ Ġ" percent _ desc " Ġto ĠPacked Percent Pack Item Sort ( false ), ĊĠĠĠĠĠĠĠ Ġ" weight _ asc " Ġto ĠWeight Pack Item Sort ( true ), ĊĠĠĠĠĠĠĠ Ġ" weight _ desc " Ġto ĠWeight Pack Item Sort ( false ), ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġget Sort Title ( sort : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( sort ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" category " Ġ-> ĠgetString ( R . string . category ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" percent _ asc " Ġ-> ĠgetString ( R . string . pack _ sort _ percent _ low _ to _ high ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" percent _ desc " Ġ-> ĠgetString ( R . string . pack _ sort _ percent _ high _ to _ low ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" weight _ asc " Ġ-> ĠgetString ( R . string . pack _ sort _ weight _ low _ to _ high ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" weight _ desc " Ġ-> ĠgetString ( R . string . pack _ sort _ weight _ high _ to _ low ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Binding ( ĊĠĠĠĠĠĠĠ Ġlayout Inflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ? ĊĠĠĠ Ġ): ĠFragment ItemList Binding Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFragment ItemList Binding . inflate ( layout Inflater , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊ Ċ }