package Ġcom . unic orp dev . kt at r act . fragments . collection List Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġcom . unic orp dev . kt at r act . R Ċ import Ġcom . unic orp dev . kt at r act . fragments . collection List . list . Tr act Collection Callback Ċ import Ġcom . unic orp dev . kt at r act . fragments . collection List . list . Collection List Fragment Ċ import Ġcom . unic orp dev . kt at r act . shared . analytics . K ta Tr act Analytics Ċ import Ġcom . unic orp dev . kt at r act . shared . analytics . K ta Tr act Analytics .* Ċ import Ġcom . unic orp dev . kt at r act . shared . extensions . dialogs . Dialog Action Ċ import Ġcom . unic orp dev . kt at r act . shared . extensions . dialogs . show Action Dialog Ċ import Ġcom . unic orp dev . kt at r act . shared . fragments . Add Button Fragment Ċ import Ġcom . unic orp dev . kt at r act . shared . fragments . list Header . List Header Fragment Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . async Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ* ĠUse Ġthe Ġ[ All Collections Fragment . newInstance ] Ġfactory Ġmethod Ġto Ċ Ġ* Ġcreate Ġan Ġinstance Ġof Ġthis Ġfragment . Ċ Ġ*/ Ċ class ĠAll Collections Fragment Ġ: ĠFragment (), ĊĠĠĠ ĠCollection List Fragment . Callbacks , ĊĠĠĠ ĠAdd Button Fragment . Callbacks Ċ { ĊĊĠĠĠ Ġinterface ĠCallback s Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠonSelect Collection ( collection Id : ĠUUID ) ĊĠĠĠĠĠĠĠ Ġfun ĠonCreate Collection ( collection Id : ĠUUID ) ĊĠĠĠĠĠĠĠ Ġfun ĠonUpdate Collection ( collection Id : ĠUUID ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/ **************************************************************** ************************ ******* ĊĠĠĠĠ Ġ* ĠProperties ĊĠĠĠĠ Ġ***************************************************************** ************************ *****/ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġheader Fragment : ĠList Header Fragment ĊĊĠĠĠ Ġprivate Ġvar Ġcallbacks : ĠCallback s ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < All Collections ViewModel >() ĊĊĠĠĠ Ġ/ **************************************************************** ************************ ******* ĊĠĠĠĠ Ġ* ĠView ĠLife ĠCycle ĊĠĠĠĠ Ġ***************************************************************** ************************ *****/ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ all _ collections , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsetup Child Fragments () ĊĠĠĠĠĠĠĠ Ġsetup Header Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallbacks Ġ= Ġcontext Ġas ? ĠCallback s Ġ?: Ġparent Fragment Ġas ? ĠCallback s ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġcallbacks Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/ **************************************************************** ************************ ******* ĊĠĠĠĠ Ġ* ĠTr act ĠCollection ĠCallback ĊĠĠĠĠ Ġ***************************************************************** ************************ *****/ ĊĊĠĠĠ Ġoverride Ġfun ĠonSelect Collection ( collection Id : ĠUUID ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallbacks ?. on Select Collection ( collection Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonSelect More Actions ( collection Id : ĠUUID ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow More Actions ( collection Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ItemCount Changed ( item Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġheader Fragment . update ItemCount ( item Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Add Button Selected () Ġ{ ĊĠĠĠĠĠĠĠ ĠK ta Tr act Analytics . log Select Item ( Select Event . CREATE _ COLLECTION ) ĊĠĠĠĠĠĠĠ Ġval Ġcollection Id Ġ= ĠviewModel . create Collection () ĊĠĠĠĠĠĠĠ Ġcallbacks ?. onCreate Collection ( collection Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/ **************************************************************** ************************ ******* ĊĠĠĠĠ Ġ* ĠDialog s ĊĠĠĠĠ Ġ***************************************************************** ************************ *****/ ĊĊĠĠĠ Ġprivate Ġfun Ġshow More Actions ( collection Id : ĠUUID ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis De letable Ġ= ĠviewModel . is De letable ( collection Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Editable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactions Ġ= Ġmutable ListOf < Dialog Action >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Editable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . modify _ collection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback Ġ= Ġ{ Ġupdate Collection ( collection Id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is De letable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDialog Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . delete _ collection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . color . holo _ red _ light , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback Ġ= Ġ{ Ġdelete Collection ( collection Id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Action Dialog ( actions Ġ= Ġactions . to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Collection ( collection Id : ĠUUID ) Ġ{ ĊĠĠĠĠĠĠĠ ĠK ta Tr act Analytics . log Select Item ( Select Event . MO DIFY _ COLLECTION ) ĊĠĠĠĠĠĠĠ Ġcallbacks ?. on Update Collection ( collection Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Collection ( collection Id : ĠUUID ) Ġ{ ĊĠĠĠĠĠĠĠ ĠK ta Tr act Analytics . log Select Item ( Select Event . DELETE _ COLLECTION ) ĊĠĠĠĠĠĠĠ ĠviewModel . delete Collection ( collection Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/ **************************************************************** ************************ ******* ĊĠĠĠĠ Ġ* ĠSetup ĊĠĠĠĠ Ġ***************************************************************** ************************ *****/ ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Child Fragments () Ġ{ ĊĠĠĠĠĠĠĠ Ġheader Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild FragmentManager . find Fragment ById ( R . id . header Fragment ) Ġas ĠList Header Fragment ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Header Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġheader Fragment . set Counter Format String ( R . string . collection _ count ) ĊĠĠĠĠĠĠĠ Ġheader Fragment . should Show DisplayMode Button ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/ **************************************************************** ************************ ******* ĊĠĠĠĠ Ġ* ĠComp anion ĊĠĠĠĠ Ġ***************************************************************** ************************ *****/ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠAll Collections Fragment () ĊĠĠĠ Ġ} Ċ Ċ }