package Ġio . github . w ulkan owy . ui . modules . account Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View . GONE Ċ import Ġandroid . view . View . VISIBLE Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġio . github . w ulkan owy . R Ċ import Ġio . github . w ulkan owy . data . db . entities . Student With Se me sters Ċ import Ġio . github . w ulkan owy . databinding . Header Account Binding Ċ import Ġio . github . w ulkan owy . databinding . Item Account Binding Ċ import Ġio . github . w ulkan owy . utils . get Theme Attr Color Ċ import Ġio . github . w ulkan owy . utils . nick Or Name Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠAccount Adapter Ġ@ Inject Ġconstructor () Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġvar Ġis Account Quick Dialog Mode Ġ= Ġfalse ĊĊĠĠĠ Ġvar Ġitems Ġ= Ġempty List < Account Item <* >>() ĊĊĠĠĠ Ġvar ĠonClick Listener : Ġ( Student With Se me sters ) Ġ-> ĠUnit Ġ= Ġ{} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġitems . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ) Ġ= Ġitems [ position ]. view Type . id ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAccount Item . ViewType . HEADER . id Ġ-> ĠHeader ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHeader Account Binding . inflate ( in flater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAccount Item . ViewType . ITEM . id Ġ-> ĠItem ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem Account Binding . inflate ( in flater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠHeader ViewHolder Ġ-> Ġbind Header ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems [ position ]. value Ġas ĠAccount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠItem ViewHolder Ġ-> Ġbind Item ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems [ position ]. value Ġas ĠStudent With Se me sters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Header ViewHolder ( ĊĠĠĠĠĠĠĠ Ġbinding : ĠHeader Account Binding , ĊĠĠĠĠĠĠĠ Ġaccount : ĠAccount , ĊĠĠĠĠĠĠĠ Ġposition : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Header Divider . visibility Ġ= Ġif Ġ( position Ġ== Ġ 0 ) ĠG ONE Ġelse ĠVIS IBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Header Email . text Ġ= Ġaccount . email ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Header Type . setText ( if Ġ( account . is Parent ) ĠR . string . account _ type _ parent Ġelse ĠR . string . account _ type _ student ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġprivate Ġfun Ġbind Item ViewHolder ( ĊĠĠĠĠĠĠĠ Ġbinding : ĠItem Account Binding , ĊĠĠĠĠĠĠĠ Ġstudent With Se me sters : ĠStudent With Se me sters ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstudent Ġ= Ġstudent With Se me sters . student ĊĠĠĠĠĠĠĠ Ġval Ġse me sters Ġ= Ġstudent With Se me sters . se me sters ĊĠĠĠĠĠĠĠ Ġval Ġdi ary Ġ= Ġse me sters . max By OrNull Ġ{ Ġit . semester Id Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġis D uplicated Student Ġ= Ġitems . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . value Ġ! is ĠStudent With Se me sters ) Ġreturn @ filter Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstudent To Compare Ġ= Ġit . value . student ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstudent To Compare . student Id Ġ== Ġstudent . student Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġstudent To Compare . school Symbol Ġ== Ġstudent . school Symbol ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġstudent To Compare . symbol Ġ== Ġstudent . symbol ĊĠĠĠĠĠĠĠ Ġ}. size Ġ> Ġ 1 Ġ&& Ġis Account Quick Dialog Mode ĊĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount ItemName . text Ġ= Ġ"${ student . nick Or Name } Ġ${ di ary ?. di ary Name . or Empty () }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Item School . text Ġ= Ġstudent With Se me sters . student . school Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Item Account Type . setText ( if Ġ( student . is Parent ) ĠR . string . account _ type _ parent Ġelse ĠR . string . account _ type _ student ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Item Account Type . visibility Ġ= Ġif Ġ( is D uplicated Student ) ĠVIS IBLE Ġelse ĠG ONE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( account Item Image ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Image Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( student . is Current ) Ġcontext . get Theme Attr Color ( R . attr . color Primary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġcontext . get Theme Attr Color ( R . attr . color On Surface , Ġ 1 5 3 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Color Filter ( color Image , ĠPort er D uff . Mode . SRC _ IN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . setOnClickListener Ġ{ ĠonClick Listener ( student With Se me sters ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠHeader ViewHolder ( val Ġbinding : ĠHeader Account Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) ĊĊĠĠĠ Ġclass ĠItem ViewHolder ( val Ġbinding : ĠItem Account Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ċ } Ċ