/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . Ġi ge ek 1 8 2 5 Ġ< ige ek 1 8 2 5 @ gmail . com > Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . eye pet izer . android . ui . search Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . eye pet izer . android . Const Ċ import Ġcom . eye pet izer . android . R Ċ import Ġcom . eye pet izer . android . databinding . Fragment Search Binding Ċ import Ġcom . eye pet izer . android . extension . log W Ċ import Ġcom . eye pet izer . android . extension . set Drawable Ċ import Ġcom . eye pet izer . android . extension . show Toast Ċ import Ġcom . eye pet izer . android . extension . visible Alpha Animation Ċ import Ġcom . eye pet izer . android . ui . common . ui . Base Activity Ċ import Ġcom . eye pet izer . android . ui . common . ui . Base Fragment Ċ import Ġcom . eye pet izer . android . util . Injector Util Ċ import Ġcom . um eng . analytics . Mob click Agent Ċ Ċ /** Ċ Ġ* Ġæ Ĳ ľç´¢ çķĮéĿ¢ ãĢĤ Ċ Ġ* Ċ Ġ* Ġ@ author Ġi ge ek 1 8 2 5 Ċ Ġ* Ġ@ since ĠĠ 2 0 2 1 / 5 / 2 6 Ċ Ġ*/ Ċ class ĠSearch Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġvar Ġ_ binding : ĠFragment Search Binding ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġbinding : ĠFragment Search Binding ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġlazy Ġ{ ĠViewModel Provider ( this , ĠInject or Util . get Search ViewModel Factory ()). get ( Search ViewModel :: class . java ) Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠHot Search Adapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Search Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate View ( binding . root ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding . ll Search . visible Alpha Animation ( 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġbinding . et Query . set Drawable ( Context Compat . get Drawable ( activity , ĠR . drawable . ic _ search _ gray _ 1 7 dp ), Ġ 1 4 f , Ġ 1 4 f ) ĊĠĠĠĠĠĠĠ Ġbinding . et Query . setOn Editor ActionListener ( Editor ActionListener ()) ĊĠĠĠĠĠĠĠ Ġbinding . tv Cancel . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Soft Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Fragment ( activity , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠHot Search Adapter ( this , ĠviewModel . data List ) ĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ ĠviewModel . on Refresh () ĊĠĠĠĠĠĠĠ Ġobserve () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġhide Soft Keyboard () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Animation ( transit : ĠInt , Ġenter : ĠBoolean , Ġnext Anim : ĠInt ): ĠAnimation ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( enter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimation Utils . load Animation ( activity , ĠR . anim . an l _ push _ up _ in ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimation Utils . load Animation ( activity , ĠR . anim . an l _ push _ top _ out ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . data List LiveData . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Query . show Soft Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġresult . get OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . exception OrNull ()?. printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . isNull OrEmpty () Ġ&& ĠviewModel . data List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . isNull OrEmpty () Ġ&& ĠviewModel . data List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . data List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . data List . addAll ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éļĲèĹı è½¯ éĶ® çĽĺ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhide Soft Keyboard () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . current Focus ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimm Ġ= Ġactivity . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimm . hide Soft Input From Window ( this . window Token , ĠInput Method Manager . HIDE _ NOT _ ALWAYS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog W ( TAG , Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĭī èµ· è½¯ éĶ® çĽĺ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠView . show Soft Keyboard () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Focus able Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Focus able In Touch Mode Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġactivity . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . show Soft Input ( this , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog W ( TAG , Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠEditor ActionListener Ġ: ĠTextView . On Editor ActionListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Editor Action ( v : ĠTextView ?, Ġaction Id : ĠInt , Ġevent : ĠKeyEvent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ SEARCH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMob click Agent . on Event ( activity , ĠConst . Mob click . EVENT 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( binding . et Query . text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . input _ keywords _ tips . show Toast () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . currently _ not _ supported . show Toast () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åĪĩæį¢ Fragment ï¼Į ä¼ļ åĬłåħ¥ åĽŀ éĢĢ æłĪ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġswitch Fragment ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠBase Activity ). support FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( android . R . id . content , ĠSearch Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Allow ing State Loss () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åħĪ ç§»éĻ¤ Fragment ï¼Į å¹¶ å°Ĩ Fragment ä»İ åłĨ æłĪ å¼¹ åĩº ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġremove Fragment ( activity : ĠActivity , Ġfragment : ĠFragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠBase Activity ). support FragmentManager . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Transaction (). remove ( fragment ). commit Allow ing State Loss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }