package Ġio . github . ed gard obar ri am . tech k android challenge . ui . activity Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġio . github . ed gard obar ri am . tech k android challenge . R Ċ import Ġio . github . ed gard obar ri am . tech k android challenge . server . Img ur ApiService Ċ import Ġio . github . ed gard obar ri am . tech k android challenge . server . Tag Ċ import Ġio . github . ed gard obar ri am . tech k android challenge . server . Tag Search Ċ import Ġio . github . ed gard obar ri am . tech k android challenge . ui . adapter . Tags RecyclerView Adapter Ċ import Ġio . github . ed gard obar ri am . tech k android challenge . ui . fragment . G all eries Fragment Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġkotlinx . android . synt hetic . main . activity _ tag _ list .* Ċ import Ġkotlinx . android . synt hetic . main . tag _ list .* Ċ import Ġorg . jetbrains . ank o .* Ċ Ċ /** Ċ Ġ* ĠAn Ġactivity Ġrepresenting Ġa Ġlist Ġof ĠTags . ĠThis Ġactivity Ċ Ġ* Ġhas Ġdifferent Ġpresent ations Ġfor Ġhand set Ġand Ġtablet - size Ġdevices . Ċ Ġ* Ċ Ġ* ĠOn Ġhand sets , Ġthe Ġactivity Ġpresents Ġa Ġlist Ġof Ġitems , Ġwhich Ġwhen Ġtouched , Ċ Ġ* Ġlead Ġto Ġa Ġ[ G all eries Activity ]. Ċ Ġ* Ċ Ġ* ĠOn Ġtable ts , Ġthe Ġactivity Ġpresents Ġthe Ġlist Ġof ĠTags Ċ Ġ* Ġand Ġit 's Ġcorresponding ĠG all eries Ġside - by - side Ġusing Ġtwo Ġvertical Ġpan es . Ċ Ġ*/ Ċ class ĠTags Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ/** ĠWhether Ġor Ġnot Ġthe Ġactivity Ġis Ġin Ġtwo - pane Ġmode Ġ( running Ġon Ġa Ġtablet ). Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġtwo Pane Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġimg ur ApiService Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠImg ur ApiService . getInstance () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġdis posable Request : ĠDis posable ? Ġ= Ġnull ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġdis posable Request ?. dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ tag _ list ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( tag _ g all eries _ container Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġthis Ġview Ġis Ġpresent , Ġthen Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġactivity Ġshould Ġbe Ġin Ġtwo - pane Ġmode . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtwo Pane Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġtoolbar . title Ġ= Ġtitle ĊĊĠĠĠĠĠĠĠ Ġfetch Default Tags () ĊĊĠĠĠĠĠĠĠ Ġfloating ActionButton _ search _ tag . setOnClickListener Ġ{ Ġshow Tag Search Dialog () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Default Tags () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable Request Ġ= Ġimg ur ApiService . getDefault Tags (). subscribe On ( Schedulers . io ()). observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ response Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Tag List Ġ= Ġresponse . data . tags ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Tags List ( default Tag List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ error Ġ-> Ġtoast ( error . message !! )} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Tags List ( items Ġ: ĠList < Tag >) Ġ{ ĊĠĠĠĠĠĠĠ Ġre cyclerView _ tag _ list . adapter Ġ= ĠTags RecyclerView Adapter ( this , Ġitems , Ġtwo Pane ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġshow Tag Search Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġalert { Ġtitle Ġ= Ġ" Search Ġa ĠTag " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom View Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Input Ġ= Ġedit Text () Ġ{ hint Ġ= Ġ" Tag "} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button (" Search ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Ġtag Input . text . isNotBlank () Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Custom Tag G all eries ( tag Input . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button (" Cancel ") Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Custom Tag G all eries ( tag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable Request Ġ= Ġimg ur ApiService . getTag G all eries ( tag ). subscribe On ( Schedulers . io ()). observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ response Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data . items . forEach Ġ{ Ġit . fix Gallery () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Tag G all eries ( response . data , two Pane ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ error Ġ-> Ġtoast ( error . message !! )} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Tag G all eries ( tag Search : ĠTag Search , Ġtwo Pane : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( two Pane ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠG all eries Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( G all eries Fragment . ARG _ TAG _ DISPLAY _ NAME , Ġtag Search . display _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( G all eries Fragment . ARG _ TAG _ NAME , Ġtag Search . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . support FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . tag _ g all eries _ container , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent For < G all eries Activity >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG all eries Fragment . ARG _ TAG _ NAME Ġto Ġtag Search . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG all eries Fragment . ARG _ TAG _ DISPLAY _ NAME Ġto Ġtag Search . display _ name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ