package Ġjp . gr . java _ conf . mi w ax . tro uto ss . view . activity Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . custom tabs . Custom Tabs Intent Ċ import Ġandroid . support . v 4 . view . MenuItem Compat Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Search View Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġcom . marshal chen . ult im ater ec y cl er view . ui . divider item decoration . Horizontal Divider Item Decoration Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġjp . gr . java _ conf . mi w ax . tro uto ss . R Ċ import Ġjp . gr . java _ conf . mi w ax . tro uto ss . databinding . Activity M ast od on Search Binding Ċ import Ġjp . gr . java _ conf . mi w ax . tro uto ss . messenger . Open Url Message Ċ import Ġjp . gr . java _ conf . mi w ax . tro uto ss . messenger . Show M ast od on Timeline Activity Message Ċ import Ġjp . gr . java _ conf . mi w ax . tro uto ss . model . Custom Tabs Helper Ċ import Ġjp . gr . java _ conf . mi w ax . tro uto ss . model . M ast od on Helper Ċ import Ġjp . gr . java _ conf . mi w ax . tro uto ss . model . entity . Account Type Ċ import Ġjp . gr . java _ conf . mi w ax . tro uto ss . model . entity . M ast od on Account Ċ import Ġjp . gr . java _ conf . mi w ax . tro uto ss . model . entity . S ns Tab Ċ import Ġjp . gr . java _ conf . mi w ax . tro uto ss . view model . M ast od on Search ViewModel Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠM ast od on Search Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġbinding : ĠActivity M ast od on Search Binding ĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠM ast od on Search ViewModel ĊĠĠĠ Ġlateinit Ġvar Ġsearch View : ĠSearch View ĊĠĠĠ Ġprivate Ġvar Ġquery : ĠCharSequence Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġval Ġhelper Ġ= ĠM ast od on Helper () ĊĊĠĠĠ Ġprivate Ġval Ġaccount Type : ĠAccount Type Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġintent . extras . getString ( EXTRA _ ACCOUNT _ TYPE )?. let Ġ{ ĠAccount Type . valueOf ( it ) Ġ} Ġ?: ĠAccount Type . UNKNOWN ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġaccount Uuid : ĠString Ġby Ġlazy Ġ{ Ġintent . extras . getString ( EXTRA _ ACCOUNT _ UUID ) Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġaccount : ĠM ast od on Account ? Ġby Ġlazy Ġ{ Ġaccount Uuid . let Ġ{ Ġhelper . load Account Of ( it ) Ġ} Ġ} ĊĠĠĠ Ġprivate Ġval Ġdis pos ables Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġprivate Ġval Ġtabs Intent : ĠCustom Tabs Intent Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠCustom Tabs Helper . create Tabs Intent ( this ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠsavedInstanceState ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġget CharSequence ( SAVE _ QUERY ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ mast od on _ search ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠM ast od on Search ViewModel ( account Uuid ) ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĊĠĠĠĠĠĠĠ Ġbinding . hashtags Recycler . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . accounts Recycler . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration (( Horizontal Divider Item Decoration . Builder ( context ). build ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdis pos ables . addAll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . messenger . register ( Open Url Message :: class . java ). do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" received ĠOpen Url Message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtabs Intent . launch Url ( this , ĠUri . parse ( it . url )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. subscribe (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . messenger . register ( Show M ast od on Timeline Activity Message :: class . java ). do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" received ĠShow M ast od on Timeline Activity Message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM ast od on Timeline Activity . startActivity ( this , Ġit . timeline , Ġit . account Uuid , Ġit . option ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. subscribe () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . search , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsearch Menu Ġ= Ġmenu . find Item ( R . id . action _ search ) ĊĠĠĠĠĠĠĠ ĠMenuItem Compat . setOn Action Expand Listener ( search Menu , Ġobject Ġ: ĠMenuItem Compat . On Action Expand Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon MenuItem Action Expand ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon MenuItem Action Collapse ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġsearch View Ġ= Ġsearch Menu . action View Ġas ĠSearch View ĊĠĠĠĠĠĠĠ Ġsearch View . on Action View Expanded () ĊĠĠĠĠĠĠĠ Ġsearch View . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . set Query ( query , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Hint Ġ= Ġaccount ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . mast od on _ search _ hint , Ġit . instance Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: ĠgetString ( R . string . search ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" on Query Text Submit Ġ: Ġ$ query ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Query Text Submit ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" on Query Text Change Ġ: Ġ$ query ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Query Text Change ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Prepare Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠMenuItem Compat . expand Action View ( menu . find Item ( R . id . action _ search )) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Prepare Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== Ġandroid . R . id . home ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġout State . put CharSequence ( SAVE _ QUERY , Ġsearch View . query ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEX TRA _ ACCOUNT _ TYPE Ġ= Ġ" account _ type " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEX TRA _ ACCOUNT _ UUID Ġ= Ġ" account _ uuid " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSAVE _ QUERY Ġ= Ġ" save _ query " ĊĊĠĠĠĠĠĠĠ Ġfun ĠstartActivity ( context : ĠContext , Ġtab : ĠS ns Tab ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠM ast od on Search Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ ACCOUNT _ TYPE , Ġtab . type . account Type . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ ACCOUNT _ UUID , Ġtab . account Uuid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ