package Ġorg . step ik . android . view . catalog . ui . adapter . delegate Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . google . android . material . button . Material Button Toggle Group Ċ import Ġkotlinx . android . synt hetic . main . view _ course _ languages . view .* Ċ import Ġorg . step ic . d roid . R Ċ import Ġorg . step ic . d roid . model . Step ik Filter Ċ import Ġorg . step ik . android . presentation . base . Presenter ViewHolder Ċ import Ġorg . step ik . android . presentation . catalog . model . Catalog Item Ċ import Ġorg . step ik . android . presentation . filter . Filters Presenter Ċ import Ġorg . step ik . android . presentation . filter . Filters View Ċ import Ġorg . step ik . android . view . ui . delegate . ViewState Delegate Ċ import Ġru . nob ird . android . ui . adapter deleg ates . Adapter Delegate Ċ import Ġru . nob ird . android . ui . adapter deleg ates . Delegate ViewHolder Ċ import Ġjava . util . Enum Set Ċ Ċ class ĠFilters Adapter Delegate Ġ: ĠAdapter Delegate < Catalog Item , ĠDelegate ViewHolder < Catalog Item >>() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġis For ViewType ( position : ĠInt , Ġdata : ĠCatalog Item ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġdata Ġis ĠFilters Presenter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup ): ĠDelegate ViewHolder < Catalog Item > Ġ= ĊĠĠĠĠĠĠĠ ĠFilters ViewHolder ( create View ( parent , ĠR . layout . view _ course _ languages )) Ġas ĠDelegate ViewHolder < Catalog Item > ĊĊĠĠĠ Ġprivate Ġclass ĠFilters ViewHolder ( root : ĠView ) Ġ: ĠPres enter ViewHolder < Filters View , ĠFilters Presenter >( root ), ĠFilters View Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġview State Delegate Ġ= ĠView State Delegate < Filters View . State >() ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlanguages Ġ= ĠitemView . languages ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoggle Listener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠMaterial Button Toggle Group . On Button Checked Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Button Checked ( group : ĠMaterial Button Toggle Group , Ġchecked Id : ĠInt , Ġis Checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( languages . checked Button Ids . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup . remove On Button Checked Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup . check ( checked Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup . add On Button Checked Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilters Ġ= Ġcompose Filters () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Data ?. on Filter Changed ( filters ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguages . add On Button Checked Listener ( toggle Listener ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State Delegate . add State < Filters View . State . Idle >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State Delegate . add State < Filters View . State . Empty >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State Delegate . add State < Filters View . State . Filters Loaded >( item View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠsetState ( state : ĠFilters View . State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview State Delegate . switch State ( state ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġis ĠFilters View . State . Filters Loaded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Step ik Filter . RU SS IAN Ġin Ġstate . filters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguages . check ( R . id . language Ru ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Step ik Filter . EN GL ISH Ġin Ġstate . filters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguages . check ( R . id . language En ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġattach View ( data : ĠFilters Presenter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . attach View ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdetach View ( data : ĠFilters Presenter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . detach View ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcompose Filters (): ĠEnum Set < Step ik Filter > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilters Ġ= ĠEnum Set . none Of ( Step ik Filter :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( R . id . language Ru Ġin Ġlanguages . checked Button Ids ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilters . add ( Step ik Filter . RU SS IAN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( R . id . language En Ġin Ġlanguages . checked Button Ids ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilters . add ( Step ik Filter . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilters ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }