package Ġme . jf enn . attrib outer . w edges Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġme . jf enn . attrib outer . R Ċ import Ġme . jf enn . attrib outer . adapters . W edge Adapter Ċ import Ġme . jf enn . attrib outer . add Defaults Ċ import Ġme . jf enn . attrib outer . dialogs . Overflow Dialog Ċ import Ġme . jf enn . attrib outer . utils . Resource Utils Ċ Ċ class ĠLicense s W edge Ġ: ĠW edge < License s W edge . ViewHolder >( R . layout . item _ attrib outer _ licenses ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġtitle : ĠString ? Ġby Ġattr (" title ", Ġ"@ string / title _ attrib outer _ licenses ") ĊĠĠĠ Ġprivate Ġvar Ġshow Defaults : ĠBoolean ? Ġby Ġattr (" show Defaults ", Ġtrue ) ĊĠĠĠ Ġprivate Ġvar Ġoverflow : ĠInt ? Ġby Ġattr (" overflow ", Ġ- 1 ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( show Defaults Ġ!= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Defaults () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* override Ġfun Ġon Init ( data : ĠGitHub Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( data Ġas ? ĠRepository Data )?. let Ġ{ Ġrepo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( tag Ġin Ġdata . tags ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmerge License Ġ= ĠLicense W edge ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Ġ= Ġtag , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdata . description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Name Ġ= Ġdata . license ?. name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwebsite Url Ġ= Ġdata . homepage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit Hub Url Ġ= Ġ" https :// github . com /$ tag " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). create < License W edge >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( getChildren (). contains ( merge License )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw edge Ġ= Ġget Children ()[ getChildren (). indexOf ( merge License )] Ġas ? ĠLicense W edge ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw edge ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . merge ( merge License ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! w edge . has All License ()) Ġdata . license ?. key ?. let Ġ{ Ġkey Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Request ( License Data ( key ). apply Ġ{ Ġadd Tag ( tag ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġ( data Ġas ? ĠLicense Data )?. let Ġ{ Ġlicense Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( info Ġin Ġget Children ( License W edge :: class . java ). filter Ġ{ Ġlicense . tags . contains ( it . token ) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . merge ( License W edge ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Name Ġ= Ġlicense . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit Hub Url Ġ= Ġinfo . repo ?. let Ġ{ Ġ" https :// github . com /$ it " Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Url Ġ= Ġlicense . html _ url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Permissions Ġ= Ġlicense . permissions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Conditions Ġ= Ġlicense . conditions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Limit ations Ġ= Ġlicense . limitations , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Description Ġ= Ġlicense . description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Body Ġ= Ġlicense . body , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlicense Key Ġ= Ġlicense . key ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġoverride Ġfun Ġget ViewHolder ( v : ĠView ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( v ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( context : ĠContext , ĠviewHolder : ĠViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewHolder . title View ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġif Ġ( overflow Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ?. let Ġ{ Ġtext Ġ= ĠResource Utils . getString ( context , Ġtitle ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewHolder . recycler ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġif Ġ( overflow Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverflow ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠW edge Adapter ( getChildren (). sub List ( 0 , Ġif Ġ( it Ġ> Ġget Children (). size Ġ|| Ġit Ġ< Ġ 0 ) Ġget Children (). size Ġelse Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewHolder . overflow ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġif Ġ( overflow Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ?. let Ġ{ Ġtext Ġ= ĠResource Utils . getString ( context , Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . setOnClickListener Ġ{ Ġv Ġ-> ĠOverflow Dialog ( v . context , Ġtitle , Ġget Children ()). show () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View . setOnClickListener ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewHolder . expand ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverflow ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= Ġif Ġ( it Ġ> Ġ 0 Ġ&& Ġit Ġ< Ġget Children (). size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġv Ġ-> ĠOverflow Dialog ( v . context , Ġtitle , Ġget Children ()). show () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder ( v : ĠView ) Ġ: ĠW edge . ViewHolder ( v ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtitle View : ĠTextView ? Ġ= Ġv . findViewById ( R . id . title ) ĊĠĠĠĠĠĠĠ Ġvar Ġre cycler : ĠRecyclerView ? Ġ= Ġv . findViewById ( R . id . recycler ) ĊĠĠĠĠĠĠĠ Ġvar Ġexpand : ĠView ? Ġ= Ġv . findViewById ( R . id . expand ) ĊĠĠĠĠĠĠĠ Ġvar Ġoverflow : ĠTextView ? Ġ= Ġv . findViewById ( R . id . overflow ) ĊĠĠĠ Ġ} Ċ } Ċ