package Ġcom . jon ny hs ia . composer . page . main . search Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġandroid . support . v 4 . app . Fragment Pager Adapter Ċ import Ġcom . jon ny hs ia . composer . R Ċ import Ġcom . jon ny hs ia . composer . ext . add Lazy Text Watcher Ċ import Ġcom . jon ny hs ia . composer . page . base . Composer Activity Ċ import Ġcom . jon ny hs ia . composer . page . main . search . search show case . SearchResult Fragment Ċ import Ġcom . jon ny hs ia . core . ext . hide Keyboard Ċ import Ġcom . jon ny hs ia . core . ext . tint Ċ import Ġcom . jon ny hs ia . model . base . rx . Rx No Leak Ċ import Ġcom . jon ny hs ia . u ilib . getColor Compat Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġkotlinx . android . synt hetic . main . activity _ search .* Ċ Ċ class ĠSearch Activity Ġ: ĠComposer Activity (), ĠRx No Leak Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġkeyword Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġval Ġdis posable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġoverride Ġfun Ġbind Layout Res () Ġ= ĠR . layout . activity _ search ĊĊĠĠĠ Ġoverride Ġfun Ġon ContentView Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSingle . timer ( 3 0 0 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Search Empty . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit UI Elements () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit UI Elements () Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch Bar . compound Draw ables Relative [ 0 ]?. tint ( getColor Compat ( R . color . text Disable )) ĊĠĠĠĠĠĠĠ Ġsearch Bar . add Lazy Text Watcher ({ Ġ_, Ġeditable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkeyword Ġ= Ġeditable ?. toString () Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Search Icon Tint ( if Ġ( keyword . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . text Disable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Results With Keyword ( keyword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . text Primary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ}). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis posable . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtv Cancel . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . finish After Transition ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġval Ġsearch Categories Ġ= ĠRepository . get Home DataSource (). fetch Search Categories () ĊĠĠĠĠĠĠĠ Ġ// Ġval Ġresult Fragments Ġ= ĠArrayList < SearchResult Fragment >( search Categories . size ) ĊĠĠĠĠĠĠĠ Ġ// Ġsearch Categories . forEach Ġ{ Ġcategory Ġ-> ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġresult Fragments . add ( SearchResult Fragment (). also Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ ĠSearch Result Presenter ( it , Ġcategory ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ// Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// Ġresult Pager . adapter Ġ= ĠSearch Pager Adapter ( search Categories , Ġresult Fragments , Ġsupport FragmentManager ) ĊĠĠĠĠĠĠĠ Ġ// Ġresult Pager . add Simple Page ChangeListener Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġresult Fragments [ it ]. on Keyword Changed ( keyword ) ĊĠĠĠĠĠĠĠ Ġ// Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// Ġsearch Tab Layout . setup With ViewPager ( result Pager ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĺ¾ç¤º æĲľç´¢ ç»ĵæŀľ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkeyword Ġæ Ĳ ľç´¢ çļĦ åħ³éĶ® è¯į ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshow Results With Keyword ( keyword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġresult Fragment . on Keyword Changed ( keyword ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Search Icon Tint ( tint Color Res : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch Bar . compound Draw ables Relative [ 0 ]?. tint ( getColor Compat ( tint Color Res )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġsearch Bar . setText ("") ĊĠĠĠĠĠĠĠ Ġsearch Bar . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ Ĳ ľç´¢ ç»ĵæŀľ çļĦ ĠP ager Ġ éĢĤ éħį åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠSearch Pager Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġpager Titles : ĠList < String >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġpager Fragments : ĠList < SearchResult Fragment >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfm : ĠFragment Manager ĊĠĠĠ Ġ) Ġ: ĠFragment Pager Adapter ( fm ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Page Title ( position : ĠInt ) Ġ= Ġpager Fragments [ position ]. category ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ) Ġ= Ġpager Fragments [ position ] ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count () Ġ= Ġpager Fragments . size ĊĠĠĠ Ġ} Ċ } Ċ