package Ġorg . wild aid . of ish . ui . violation Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġorg . wild aid . of ish . R Ċ import Ġorg . wild aid . of ish . data . report . Cre w Member Ċ import Ġorg . wild aid . of ish . databinding . Item Edit Violation Binding Ċ import Ġorg . wild aid . of ish . ui . base . Adapter Diff Callback Ċ import Ġorg . wild aid . of ish . ui . base . Photo Item Ċ import Ġorg . wild aid . of ish . util . setVisible Ċ Ċ class ĠVi olation Adapter ( ĊĠĠĠ Ġprivate Ġval Ġdata List : ĠArrayList < Violation Item > Ġ= ĠArrayList (), ĊĠĠĠ Ġprivate Ġval Ġcapt ain : ĠCre w Member ?, ĊĠĠĠ Ġprivate Ġval Ġviolation Search Listener : Ġ( button Id : ĠInt , Ġitem : ĠVi olation Item ) Ġ-> ĠUnit , ĊĠĠĠ Ġprivate Ġval Ġviolation Edit Mode Listener : Ġ( item : ĠVi olation Item ) Ġ-> ĠUnit , ĊĠĠĠ Ġprivate Ġval Ġviolation Attachment Listener : Ġ( item : ĠVi olation Item ) Ġ-> ĠUnit , ĊĠĠĠ Ġprivate Ġval Ġviolation Remove Listener : Ġ( Int ) Ġ-> ĠUnit , ĊĠĠĠ Ġprivate Ġval Ġviolation Remove Note Listener : Ġ( item : ĠVi olation Item ) Ġ-> ĠUnit , ĊĠĠĠ Ġprivate Ġval Ġviolation On Photo ClickListener : Ġ( View , ĠPhoto Item ) Ġ-> ĠUnit , ĊĠĠĠ Ġprivate Ġval Ġviolation Remove Photo Listener : Ġ( Photo Item , Ġitem : ĠVi olation Item ) Ġ-> ĠUnit Ċ ) Ġ: ĠRecyclerView . Adapter < Violation Adapter . Violation ViewHolder >() Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Has Stable Ids ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Items ( items : ĠList < Violation Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdiff Result Ġ= ĠDiff Util . calculate Diff ( Adapter Diff Callback ( items , Ġdata List )) ĊĠĠĠĠĠĠĠ Ġdiff Result . dispatch Updates To ( this ) ĊĠĠĠĠĠĠĠ Ġdata List . clear () ĊĠĠĠĠĠĠĠ Ġdata List . addAll ( items ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġdata List . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata List [ position ]. violation . hashCode (). to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ ĠVi olation ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ edit _ violation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠVi olation ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind Item ( data List [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠVi olation ViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġcurrent Item : ĠVi olation Item ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠItem Edit Violation Binding Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠItem Edit Violation Binding . bind ( view ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder Ġ= Ġthis @ Violation ViewHolder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind Item ( item : ĠVi olation Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . holder Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Item Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation Action Remove . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . context . getString ( R . string . remove _ violation , Ġitem . title ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation Warning . isSelected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Warning C itation Selected ( binding . violation Warning . text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation C itation . isSelected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Warning C itation Selected ( binding . violation C itation . text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation ViewGroup . setVisible (! item . in Edit Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation Edit Group . setVisible ( item . in Edit Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation View Layout . violation Attachments . attachment Note Group ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setVisible ( item . attachments . has Notes ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation Note Layout . set End Icon OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġviolation Remove Note Listener . invoke ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation Edit Photos . on Photo ClickListener Ġ= Ġviolation On Photo ClickListener :: invoke ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation View Layout . violation Attachments . attachments Photos . on Photo ClickListener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġviolation On Photo ClickListener :: invoke ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation Edit Photos . on Photo Remove Listener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġviolation Remove Photo Listener . invoke ( it , Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation Note Layout . set End Icon OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġviolation Remove Note Listener . invoke ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation Note Layout . setVisible ( item . in Edit Mode Ġ&& Ġitem . attachments . has Notes ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation Remove Group . setVisible ( item . in Edit Mode Ġ&& Ġdata List . size Ġ> Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . violation Description Layout . setVisible ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . in Edit Mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . item Capt ain . setVisible ( capt ain Ġ!= Ġnull Ġ&& Ġcurrent Item . violation . cre w Member Ġ== Ġcapt ain ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġis Warning C itation Selected ( text : ĠCharSequence ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcurrent Item . violation . dis position . equals ( text . toString (), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Result Clicked ( selected Button : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuttons Ġ= ĠlistOf ( binding . violation C itation , Ġbinding . violation Warning ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuttons . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . id Ġ== Ġselected Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Item . violation . dis position Ġ= Ġit . text Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Item Remove () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviolation Remove Listener . invoke ( adapter Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Violation Edit Clicked () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviolation Edit Mode Listener . invoke ( currentItem ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Violation Add Attachment Clicked () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviolation Attachment Listener . invoke ( currentItem ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Search Clicked ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviolation Search Listener . invoke ( id , Ġcurrent Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }