package Ġme . yk rank . s 1 next . view . activity Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Search Manager Ċ import Ġandroid . app . Shared Element Callback Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . graphics . drawable . State List Drawable Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . transition . Transition Manager Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . app . Activity Options Compat Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . text . InputType Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroid . text . Sp anned Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . text . style . Style Span Ċ import Ġandroid . transition . Transition Ċ import Ġandroid . transition . Transition Inflater Ċ import Ġandroid . transition . Transition Set Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . Search View Ċ import Ġandroid . widget . TextView Ċ import Ġcom . github . yk rank . android aut od is pose . Android Rx Dispose Ċ import Ġcom . github . yk rank . android lifecycle . event . Activity Event Ċ import Ġcom . github . yk rank . android tools . util .* Ċ import Ġme . yk rank . s 1 next . App Ċ import Ġme . yk rank . s 1 next . R Ċ import Ġme . yk rank . s 1 next . data . api . Api Flat Transformer Ċ import Ġme . yk rank . s 1 next . data . api . S 1 Service Ċ import Ġme . yk rank . s 1 next . data . api . User Validator Ċ import Ġme . yk rank . s 1 next . data . api . model . search . Forum Search Wrapper Ċ import Ġme . yk rank . s 1 next . data . api . model . search . SearchResult Ċ import Ġme . yk rank . s 1 next . data . api . model . search . User Search Wrapper Ċ import Ġme . yk rank . s 1 next . databinding . Activity Search Binding Ċ import Ġme . yk rank . s 1 next . databinding . AppBar Search Binding Ċ import Ġme . yk rank . s 1 next . util . Error Util Ċ import Ġme . yk rank . s 1 next . view . adapter . Search RecyclerView Adapter Ċ import Ġme . yk rank . s 1 next . view . transition . Circular Re veal Ċ import Ġme . yk rank . s 1 next . view . transition . Transition Compat Creator Ċ import Ġme . yk rank . s 1 next . widget . track . event . Search Track Event Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġy k rank Ġon Ġ 2 0 1 6 / 9 / 2 8 Ġ 0 0 2 8 . Ċ Ġ* Ċ Ġ* ĠTODO ĠRemove Ġdebug Ġmessage Ġfor Ġtrack Ġerror Ċ Ġ*/ Ċ class ĠSearch Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġm User Validator : ĠUser Validator ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġs 1 Service : ĠS 1 Service ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Search Binding ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch View : ĠSearch View ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cyclerView : Ġandroidx . recyclerview . widget . RecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch Back : ĠImage Button ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Bar : ĠApp Bar Search Binding ĊĠĠĠ Ġprivate Ġvar Ġno Results : ĠTextView ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠSearch RecyclerView Adapter ĊĊĠĠĠ Ġprivate Ġval Ġauto Transition Compat Ġby Ġlazy Ġ{ ĠTransition Compat Creator . get Auto Transition () Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . app Component . inject ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ search ) ĊĊĠĠĠĠĠĠĠ Ġapp Bar Ġ= Ġbinding . app Bar ĊĠĠĠĠĠĠĠ Ġsearch View Ġ= Ġapp Bar . search View ĊĠĠĠĠĠĠĠ Ġre cyclerView Ġ= Ġbinding . search Results ĊĠĠĠĠĠĠĠ Ġsearch Back Ġ= Ġapp Bar . search back ĊĊĠĠĠĠĠĠĠ Ġapp Bar . toolbar . navigation Icon Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsetup Window Animations () ĊĠĠĠĠĠĠĠ Ġsetup Transitions () ĊĠĠĠĠĠĠĠ Ġcompat Back Icon () ĊĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠSearch RecyclerView Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġandroidx . recyclerview . widget . Linear LayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġsearch Back . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL . leave Msg (" Search Back Ġclick ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Post Create ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Post Create ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsetup Search View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠL . leave Msg (" Search Activity Ġon Resume ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ ĠL . leave Msg (" Search Activity Ġon Pause ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ ĠL . leave Msg (" Search Activity Ġon Back Pressed ") ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ ĠL . leave Msg (" Search Activity Ġon Destroy ") ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Window Animations () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenter Transition Ġ= ĠTransition Inflater . from ( this ). inflate Transition ( R . transition . search _ enter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . enter Transition Ġ= Ġenter Transition ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreturn Transition Ġ= ĠTransition Inflater . from ( this ). inflate Transition ( R . transition . search _ return ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . return Transition Ġ= Ġreturn Transition ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenter Share Transition Ġ= ĠTransition Inflater . from ( this ). inflate Transition ( R . transition . search _ shared _ enter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . shared Element Enter Transition Ġ= Ġenter Share Transition ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreturn Share Transition Ġ= ĠTransition Inflater . from ( this ). inflate Transition ( R . transition . search _ shared _ return ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . shared Element Return Transition Ġ= Ġreturn Share Transition ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Transitions () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgrab Ġthe Ġposition Ġthat Ġthe Ġsearch Ġicon Ġtransitions Ġin Ġ* from * ĊĠĠĠĠĠĠĠ Ġ// Ġ& Ġuse Ġit Ġto Ġconfigure Ġthe Ġreturn Ġtransition ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Enter Shared Element Callback ( object Ġ: ĠShared Element Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Requires Api ( api Ġ= ĠBuild . VERSION _ CODES . LO L LI POP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Shared Element Start ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Element Names : ĠList < String >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Elements : ĠList < View > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Element Snapshots : ĠList < View >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( shared Elements Ġ!= Ġnull Ġ&& Ġ! shared Elements . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Icon Ġ= Ġshared Elements [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( search Icon . id Ġ!= ĠR . id . search back ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcenter X Ġ= Ġ( search Icon . left Ġ+ Ġsearch Icon . right ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhide Results Ġ= ĠTransition Utils . find Transition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . return Transition Ġas ĠTransition Set , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCircular Re veal :: class . java , ĠR . id . results _ container ) Ġas ĠCircular Re veal ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Results ?. set Center ( Point ( center X , Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfocus Ġthe Ġsearch Ġview Ġonce Ġthe Ġtransition Ġfinishes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . enter Transition . addListener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠTransition Utils . Transition Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Transition End ( transition : ĠTransition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠI me Utils . show I me ( search View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠI me Utils . show I me ( search View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcompat Back Icon () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= ĠState List Drawable () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Primary Dark Ġ= ĠResource Util . get Attr Color Int ( this , ĠR . attr . color Primary Dark ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Primary Ġ= ĠResource Util . get Attr Color Int ( this , ĠR . attr . color Primary ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . add State ( int ArrayOf ( android . R . attr . state _ pressed ), ĠColor Drawable ( color Primary Dark )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . add State ( int ArrayOf (- android . R . attr . state _ pressed ), ĠColor Drawable ( color Primary )) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat . setBackground ( app Bar . search back , Ġdrawable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Search View () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Manager Ġ= Ġget System Service ( Context . SEARCH _ SERVICE ) Ġas ĠSearch Manager ĊĠĠĠĠĠĠĠ Ġsearch View . set Search able Info ( search Manager . get Search able Info ( component Name )) ĊĠĠĠĠĠĠĠ Ġ// Ġhint , Ġinput Type Ġ& Ġ ime Ġoptions Ġseem Ġto Ġbe Ġignored Ġfrom ĠXML ! ĠSet Ġin Ġcode ĊĠĠĠĠĠĠĠ Ġsearch View . query Hint Ġ= ĠgetString ( R . string . search _ hint ) ĊĠĠĠĠĠĠĠ Ġsearch View . input Type Ġ= ĠInput Type . TYPE _ TEXT _ FLAG _ CAP _ WORDS ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . J EL LY _ BE AN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . ime Options Ġ= Ġsearch View . ime Options Ġor ĠEditor Info . IME _ ACTION _ SEARCH Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEditor Info . IME _ FLAG _ NO _ EXTRACT _ UI Ġor ĠEditor Info . IME _ FLAG _ NO _ FULL SCREEN ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . ime Options Ġ= ĠEditor Info . IME _ ACTION _ SEARCH Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEditor Info . IME _ FLAG _ NO _ EXTRACT _ UI Ġor ĠEditor Info . IME _ FLAG _ NO _ FULL SCREEN ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsearch View . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠL . leave Msg (" on Query Text Submit :$ query ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( query Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch For ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( query : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclear Results ( transition : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( transition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( binding . coordinator Layout , Ġauto Transition Compat ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġre cyclerView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġbinding . results S cri m . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġset No Results Visibility ( View . GONE , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Results ( data : ĠList < SearchResult > ?, Ġerror Msg : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠL . leave Msg (" set Results Ġerror :$ error Msg ") ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull Ġ&& Ġdata . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( re cyclerView . visibility Ġ!= ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( binding . results Container , Ġauto Transition Compat ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . swap DataSet ( data ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( binding . results Container , Ġauto Transition Compat ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset No Results Visibility ( View . VISIBLE , Ġerror Msg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset No Results Visibility ( visibility : ĠInt , Ġerror Msg : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( visibility Ġ== ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( no Results Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Results Ġ= Ġbinding . stub No SearchResults . view Stub ?. inflate () Ġas ĠTextView ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Results ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . set Query ("", Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠI me Utils . show I me ( search View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( error Msg )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . no _ search _ results ), Ġsearch View . query . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs sb Ġ= ĠSp ann able StringBuilder ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs sb . set Span ( Style Span ( Type face . ITAL IC ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . indexOf (' âĢľ ') Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . length Ġ- Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Results ?. text Ġ= Ġs sb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Results ?. text Ġ= Ġerror Msg ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( no Results Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġno Results ?. visibility Ġ= Ġvisibility ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsearch For ( query : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrack Agent . post ( Search Track Event ( query )) ĊĊĠĠĠĠĠĠĠ Ġclear Results ( false ) ĊĠĠĠĠĠĠĠ Ġbinding . progress Bar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ ĠI me Utils . hide I me ( search View ) ĊĠĠĠĠĠĠĠ Ġsearch View . clear Focus () ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġdata Manager . search For ( query ); ĊĊĠĠĠĠĠĠĠ Ġval Ġselected Ġ= Ġapp Bar . spinner . selected Item Ġas ĠString ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . equals ( getString ( R . string . search _ type _ entry _ user ), Ġselected )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApi Flat Transformer . flat Mapped With Auth entic ity Token ( s 1 Service , Ġm User Validator , Ġm User ) Ġ{ Ġtoken Ġ-> Ġs 1 Service . search User ( token , Ġquery ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠUser Search Wrapper . from Source ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Rx JavaUtil . iOS ingle Transformer ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to ( Android Rx Dispose . with Single ( this , ĠActivity Event . DESTROY )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġset Results ( it . user SearchResults , Ġit . error Msg ) Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Results ( null , ĠError Util . parse ( this , Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApi Flat Transformer . flat Mapped With Auth entic ity Token ( s 1 Service , Ġm User Validator , Ġm User ) Ġ{ Ġtoken Ġ-> Ġs 1 Service . search Forum ( token , Ġquery ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠFor um Search Wrapper . from Source ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Rx JavaUtil . iOS ingle Transformer ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to ( Android Rx Dispose . with Single ( this , ĠActivity Event . DESTROY )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġset Results ( it . forum SearchResults , Ġnull ) Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Results ( null , ĠError Util . parse ( this , Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdismiss () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġclear Ġthe Ġbackground Ġelse Ġthe Ġtouch Ġri pple Ġmoves Ġwith Ġthe Ġtranslation Ġwhich Ġlooks Ġbad ĊĠĠĠĠĠĠĠ ĠView Compat . setBackground ( search Back , Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish After Transition () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠBase Activity :: class . java . name ĊĊĠĠĠĠĠĠĠ Ġfun Ġstart ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( Intent ( context , ĠSearch Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġstart ( activity : ĠActivity , Ġsearch Icon View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠActivity Options Compat . make Scene Transition Animation ( activity , Ġsearch Icon View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . getString ( R . string . transition _ search _ back )). to Bundle () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . startActivity ( activity , ĠIntent ( activity , ĠSearch Activity :: class . java ), Ġoptions ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ