package Ġcom . pre cop ia . david . lists . view . user list list Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . pre cop ia . david . lists . R Ċ import Ġcom . pre cop ia . david . lists . common . application Ċ import Ġcom . pre cop ia . david . lists . util . Util Exceptions Ċ import Ġcom . pre cop ia . david . lists . view . common . ListView Base Ċ import Ġcom . pre cop ia . david . lists . view . user list list . I User ListView Contract . Logic Events Ċ import Ġcom . pre cop ia . david . lists . view . user list list . I User ListView Contract . View Events Ċ import Ġcom . pre cop ia . david . lists . view . user list list . bul d logic . D agger UserList Component Ċ import Ġcom . pre cop ia . domain . datamodel . UserList Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠUser ListView Ġ: ĠListView Base (), ĊĠĠĠĠĠĠĠ ĠI User ListView Contract . View Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġlogic : ĠI User ListView Contract . Logic ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġadapter : ĠI User ListView Contract . Adapter ĊĊĠĠĠ Ġoverride Ġval Ġtitle : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠgetString ( R . string . app _ name ) ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinject () ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinject () Ġ{ ĊĠĠĠĠĠĠĠ ĠD agger UserList Component . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. application ( application ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. view ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. movement Callback ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġwith ( logic ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Event ( Logic Events . On Start ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobserve (). observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġeval View Events ( it ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġeval View Events ( event : ĠView Events ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Events . Open UserList Ġ-> Ġopen UserList ( event . user List ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Events . Open Preferences Ġ-> Ġopen Preferences () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Events . Open Add Dialog Ġ-> Ġopen Add Dialog ( event . position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Events . Open Edit Dialog Ġ-> Ġopen Edit Dialog ( event . user List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Events . Set ViewData Ġ-> Ġset ViewData ( event . view Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Events . Notify User Of Deletion Ġ-> Ġnotify User Of Deletion ( event . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Events . Set State Display List Ġ-> ĠsetState Display List () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Events . Set State Loading Ġ-> ĠsetState Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Events . Set State Error Ġ-> ĠsetState Error ( event . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Events . Show Message Ġ-> Ġshow Message ( event . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . toolbar _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ id _ preferences Ġ-> Ġlogic . on Event ( Logic Events . Preferences Selected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUtil Exceptions . throw Exception ( IllegalArgumentException ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġopen UserList ( user List : ĠUser List ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( User ListView Directions . action UserList ListView To Item ListView ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser List . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser List . title ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġopen Preferences () Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser ListView Directions . action UserList ListView To Preferences View () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġopen Add Dialog ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser ListView Directions . action UserList ListView ToAdd Edit UserList Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", Ġ"", Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Edit Dialog ( user List : ĠUser List ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser ListView Directions . action UserList ListView ToAdd Edit UserList Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser List . id , Ġuser List . title , Ġuser List . position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset ViewData ( view Data : ĠList < UserList >) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . setData ( view Data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify User Of Deletion ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnotify Deletion Snackbar ( message ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun ĠsetState Display List () Ġ{ ĊĠĠĠĠĠĠĠ Ġdisplay List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetState Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġdisplay Loading () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetState Error ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdisplay Error ( message ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġshow Message ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . toast Message ( message ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġadd Button Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġlogic . on Event ( Logic Events . Add ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġundo Recent Deletion () Ġ{ ĊĠĠĠĠĠĠĠ Ġlogic . on Event ( Logic Events . Undo Recent Deletion ( adapter )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdeletion Notification Timed Out () Ġ{ ĊĠĠĠĠĠĠĠ Ġlogic . on Event ( Logic Events . Deletion Notification Timed Out ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdragging ListItem ( from Position : ĠInt , Ġto Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogic . on Event ( Logic Events . Dragging ( from Position , Ġto Position , Ġadapter )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġper manently Moved ( new Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogic . on Event ( Logic Events . Moved Per manently ( new Position )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġenable Up Navigation On Toolbar () Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġget Adapter () Ġ= Ġadapter Ġas ĠRecyclerView . Adapter < *> Ċ } Ċ