package Ġcom . id is fk j . new sk otlin . subscribe Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . Toolbar Ċ import Ġcom . id is fk j . new sk otlin . News Config Ċ import Ġcom . id is fk j . new sk otlin . News Sources ListModel Ċ import Ġcom . id is fk j . new sk otlin . News Sources Model Ċ import Ġcom . id is fk j . new sk otlin . R Ċ import Ġcom . id is fk j . new sk otlin . domain . http . Default Disposable Observer Ċ import Ġcom . id is fk j . new sk otlin . domain . provider . News Request Command Ċ import Ġcom . id is fk j . new sk otlin . domain . provider . Request Command Ċ import Ġcom . id is fk j . new sk otlin . main . ToolBar Manager Ċ import Ġcom . id is fk j . new sk otlin . subscribe . adapter . Subscribe Category Adapter Ċ import Ġcom . id is fk j . new sk otlin . subscribe . adapter . Subscribe Content Adapter Ċ import Ġkotlinx . android . synt hetic . main . activity _ subscribe .* Ċ import Ġorg . jetbrains . ank o . find Ċ Ċ class ĠSubscribe Activity Ġ: ĠAppCompatActivity (), ĠTool Bar Manager Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtool Bar Ġby Ġlazy Ġ{ Ġfind < Toolbar >( R . id . tool Bar ) Ġ} ĊĠĠĠ Ġvar Ġrequest Command : ĠRequest Command ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġcategory List Ġ= Ġmutable ListOf < String >() ĊĠĠĠ Ġvar Ġcontent List Ġ= Ġmutable ListOf < News Sources Model >() ĊĠĠĠ Ġvar Ġcontent Map Ġ= Ġmutable Map Of < String , ĠMutable List < News Sources Model >>() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ subscribe ) ĊĠĠĠĠĠĠĠ Ġsetup RecyclerView () ĊĠĠĠĠĠĠĠ Ġtool Bar Title Ġ= Ġ" Subscribe " ĊĠĠĠĠĠĠĠ Ġenable Home As Up Ġ{ Ġon Back Pressed () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġcategory Recycler . clip To Padding Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġcontent Recycler . clip To Padding Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġcategory Recycler . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġcontent Recycler . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġcontent Recycler . adapter Ġ= ĠSubscribe Content Adapter ( content List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! News Config . DEFAULT _ CATEGORY . contains ( it )) ĠNews Config . DEFAULT _ CATEGORY . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠNews Config . DEFAULT _ CATEGORY . remove ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNews Config . UPDATE _ ADAPTER Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcategory Recycler . adapter Ġ= ĠSubscribe Category Adapter ( category List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcategory List [ category List . size Ġ- Ġ 1 ] Ġ= Ġcategory List . indexOf ( it ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Recycler . adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Map [ it ]?. let Ġ{ Ġvalue Ġ-> Ġcontent List . addAll ( value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Recycler . adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġif Ġ( category List . isEmpty ()) Ġsetup Request () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Request () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġmutable Map Of < String , ĠAny ? >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" language " Ġto Ġ" en " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrequest Command Ġ= ĠNews Request Command ( params , ĠNews Sources ListModel :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠDefault Disposable Observer < News Sources ListModel >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( t : ĠNews Sources ListModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Map . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . sources . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! category List . contains ( it . category )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory List . add ( it . category ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Map . put ( it . category , Ġmutable ListOf ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Map [ it . category ]?. add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory List . add (" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Map [ category List [ 0 ]] ?. let Ġ{ Ġvalue Ġ-> Ġcontent List . addAll ( value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Recycler . adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Recycler . adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġrequest Command ?. execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġrequest Command ?. cancel Execute () ĊĠĠĠ Ġ} Ċ Ċ } Ċ