package Ġio . pl ast ique . dev i ations . categories . list Ċ Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . os . System Clock Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . View Switch er Ċ import Ġcom . github . tech no ir 4 2 . android . extensions . inflate Ċ import Ġio . pl ast ique . core . lists . Base ListAdapter Ċ import Ġio . pl ast ique . dev i ations . R Ċ import Ġkotlin . math . max Ċ Ċ internal Ġclass ĠCategory ListAdapter ( ĊĠĠĠ Ġprivate Ġval Ġon Category Click : ĠOn Category ClickListener Ċ ) Ġ: ĠBase ListAdapter < Category Item , ĠCategory ListAdapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġparent . inflate ( R . layout . item _ category ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( view , Ġon Category Click ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( item : ĠCategory Item , Ġholder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . textView . text Ġ= ĠgetItem Text ( holder . item View . resources , Ġitem ) ĊĠĠĠĠĠĠĠ Ġholder . progress Switch er . remove Callbacks ( holder . show Progress Callback ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! item . is Parent Ġ&& Ġitem . category . has Children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġprogress Ġbar Ġafter Ġa Ġsmall Ġdelay ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremaining Time Ġ= Ġmax ( 0 , ĠPROG RESS _ BAR _ SHOW _ DELAY Ġ- ĠSystem Clock . elapsed Realtime () Ġ+ Ġitem . start Loading Timestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . progress Switch er . display ed Child Ġ= Ġif Ġ( item . isLoading Ġ&& Ġremaining Time Ġ== Ġ 0 L ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . progress Switch er . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . isLoading Ġ&& Ġremaining Time Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . progress Switch er . post Delayed ( holder . show Progress Callback , Ġremaining Time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . progress Switch er . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetItem Text ( resources : ĠResources , Ġitem : ĠCategory Item ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( item . is Parent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getString ( R . string . dev i ations _ categories _ see _ all _ in , Ġitem . category . title ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . category . title ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder ( ĊĠĠĠĠĠĠĠ ĠitemView : ĠView , ĊĠĠĠĠĠĠĠ Ġon Category Click : ĠOn Category ClickListener ĊĠĠĠ Ġ) Ġ: ĠBase ListAdapter . ViewHolder < Category Item >( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . text ) ĊĠĠĠĠĠĠĠ Ġval Ġprogress Switch er : ĠView Switch er Ġ= ĠitemView . findViewById ( R . id . progress _ switch er ) ĊĠĠĠĠĠĠĠ Ġval Ġshow Progress Callback : ĠRunnable Ġ= ĠRunnable Ġ{ Ġprogress Switch er . display ed Child Ġ= Ġ 1 Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ Ġon Category Click ( item ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPROG RESS _ BAR _ SHOW _ DELAY Ġ= Ġ 2 0 0 ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġtype alias ĠOn Category ClickListener Ġ= Ġ( Category Item ) Ġ-> ĠUnit Ċ