package Ġcom . ole k dia . mvp core . presentation . present ers Ċ Ċ import Ġcom . ole k dia . common . extensions . if NotNull Ċ import Ġcom . ole k dia . common . extensions . if NotNull And Ċ import Ġcom . ole k dia . mvp . presenter . I State ful View Presenter Ċ import Ġcom . ole k dia . mvp . presenter . State ful View Presenter Ċ import Ġcom . ole k dia . mvp core . Key Ċ import Ġcom . ole k dia . mvp core . Task Filter Ċ import Ġcom . ole k dia . mvp core . ViewType Ċ import Ġcom . ole k dia . mvp core . domain . I Ext Model Holder Ċ import Ġcom . ole k dia . mvp core . domain . models . TaskList State Ċ import Ġcom . ole k dia . mvp core . presentation . managers . On Snackbar StateChanged Listener Ċ import Ġcom . ole k dia . mvp core . presentation . views . I Input Task View Ċ import Ġcom . ole k dia . mvp core . presentation . views . IT ask ListView Ċ import Ġcom . ole k dia . mvp core . presentation . I Ext Platform Holder Ċ import Ġcom . ole k dia . mvp core . presentation . I Ext Presenter Holder Ċ Ċ interface ĠI TaskList Presenter Ġ: ĠI State ful View Presenter < IT ask ListView , ĠTask List State > Ġ{ ĊĊĠĠĠ Ġfun ĠonUpdate View () ĊĊĠĠĠ Ġfun Ġon Toggle Completed ( pos : ĠInt ) ĊĊĠĠĠ Ġfun Ġon Edit ( pos : ĠInt ) ĊĊĠĠĠ Ġfun ĠonDelete ( pos : ĠInt ) ĊĊĠĠĠ Ġfun ĠonDelete Completed () ĊĊĠĠĠ Ġfun ĠonChange Filter ( filter : ĠTask Filter ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCOMPONENT _ ID : ĠString Ġ= Ġ" TASK _ LIST _ PRES " ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTask List Presenter Ġ: ĠStateful View Presenter < IT ask ListView , ĠTask List State >(), ĊĠĠĠ ĠI TaskList Presenter , ĊĠĠĠ ĠI Ext Model Holder , ĊĠĠĠ ĠI Ext Presenter Holder , ĊĠĠĠ ĠI Ext Platform Holder Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġcomponent Id : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠI TaskList Presenter . COMPONENT _ ID ĊĊĠĠĠ Ġoverride Ġfun ĠonUpdate View () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif NotNull And ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . filter edList , Ġis Ready ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġentry List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dataProvider Ġ!== Ġentry List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Provider Ġ= Ġentry List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Filter ( state . filter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . has Completed (). let Ġ{ Ġcompleted Visible Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clear Completed Visible Ġ!= Ġcompleted Visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Completed Visible Ġ= Ġcompleted Visible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Toggle Completed ( pos : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstate . filter edList ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . get OrNull ( pos ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġtarget Entry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Model . toggle Complete ( target Entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Edit ( pos : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstate . filter edList ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . get OrNull ( pos ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġtarget Entry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain View Presenter . show View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠI Input Task View . COMPONENT _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Type . FORM , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Key . INITIAL _ ENTRY Ġto Ġtarget Entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonDelete ( pos : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstate . filter edList ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . get OrNull ( pos ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġaffected Entry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Model . remove ( affected Entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate View () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ack Presenter . on Show ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Manager . task Deleted , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Manager . undo , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOn Snackbar StateChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Undo () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Model . add ( affected Entry , Ġpos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Apply () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Model . delete ( affected Entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Form View Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonDelete Completed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . list , Ġtask Model . remove Completed () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġsource List , Ġremoved List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate View () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsn ack Presenter . on Show ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Manager . xx Tasks Deleted ( removed List . size ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Manager . undo , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOn Snackbar StateChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Undo () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Model . restore ( source List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Apply () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Model . delete ( removed List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Form View Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonChange Filter ( filter : ĠTask Filter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( task Model . save Filter ( filter )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate View () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ //---------------------------------------------------------------- -------------------------------- -- Ċ // Ġ ĠDetails Ċ //---------------------------------------------------------------- -------------------------------- -- ĊĊĠĠĠ Ġoverride Ġval Ġstate : ĠTask List State ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtask Model . state ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ ĠonUpdate View () ĊĠĠĠ Ġ} Ċ }