package Ġru . if mo . stat app . presentation . fragment Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġm oxy . M vp AppCompat Fragment Ċ import Ġm oxy . presenter . Inject Presenter Ċ import Ġm oxy . presenter . Provide Presenter Ċ import Ġru . if mo . stat app . App Ċ import Ġru . if mo . stat app . R Ċ import Ġru . if mo . stat app . data . db . entity . Group Ċ import Ġru . if mo . stat app . domain . Main State Accept or Ċ import Ġru . if mo . stat app . presentation . activity . MainActivity Ċ import Ġru . if mo . stat app . presentation . presenter . Groups Creator Presenter Ċ import Ġru . if mo . stat app . presentation . view . Group Creator View Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Provider Ċ Ċ class ĠGroup Creator Fragment Ġ: ĠM vp AppCompat Fragment (), ĠGroup Creator View , ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġtag Ġ= Ġ" Groups Creator Fragment " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject Presenter ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠGroups Creator Presenter ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpresenter Provider : ĠProvider < Groups Creator Presenter > ĊĊĠĠĠ Ġ@ Provide Presenter ĊĠĠĠ Ġfun Ġprovide Presenter (): ĠGroups Creator Presenter Ġ= Ġpresenter Provider . get () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcreate Group Btn : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgroup List : ĠRecyclerView ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmain View : ĠView ĊĊĠĠĠ Ġprivate Ġval Ġadapter Ġ= ĠGroups Adapter () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . app Component . inject ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġpresenter . get Groups () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġmain View Ġ= Ġinflater . inflate ( R . layout . fragment _ list , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġinit Views () ĊĠĠĠĠĠĠĠ Ġreturn Ġmain View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Group Btn Ġ= Ġmain View . findViewById ( R . id . add _ holder _ btn ) ĊĠĠĠĠĠĠĠ Ġcreate Group Btn . text Ġ= ĠgetString ( R . string . create _ group _ label ) ĊĠĠĠĠĠĠĠ Ġgroup List Ġ= Ġmain View . findViewById ( R . id . holder _ list ) ĊĠĠĠĠĠĠĠ Ġgroup List . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġcreate Group Btn . setOnClickListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Group ( group : ĠGroup ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). show Group ( group ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Groups ( groups : ĠList < Group >) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . groups Ġ= Ġgroups ĊĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow ErrorMessage ( message Res : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġmessage Res , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow ErrorMessage ( message : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġmessage , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Group ( group : ĠGroup ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . groups Ġ+= Ġgroup ĊĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠgroupName Ġ= ĠEditText ( activity ) ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( activity Ġas ĠContext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( groupName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok ) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . create Group ( groupName . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠGroups ViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ Ġopen Group ( group ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠgroupName Ġ= ĠitemView . findViewById < TextView >( R . id . group _ name ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġgroup Ġ= ĠGroup () ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( group : ĠGroup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . group Ġ= Ġgroup ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgroupName . text Ġ= Ġgroup . name ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠGroups Adapter Ġ: ĠRecyclerView . Adapter < Groups ViewHolder >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġgroups : ĠList < Group > Ġ= Ġempty List () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġgroups . size ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠGroups ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( groups [ position ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠGroups ViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= Ġlayout Inflater . inflate ( R . layout . holder _ group , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGroups ViewHolder ( item View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }