package Ġcom . big create . zy fw . activities Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroidx . core . content . edit Ċ import Ġandroidx . core . view . forEach Indexed Ċ import Ġandroidx . core . view . get Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . core . view . update Padding Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . paging . Paged List Ċ import Ġandroidx . recyclerview . widget . Default Item Animator Ċ import Ġcom . big create . library .* Ċ import Ġcom . big create . zy fw . Build Config Ċ import Ġcom . big create . zy fw . R Ċ import Ġcom . big create . zy fw . adapter . Project ListAdapter Ċ import Ġcom . big create . zy fw . base . Attributes Ċ import Ġcom . big create . zy fw . base . Network State Ċ import Ġcom . big create . zy fw . base . default SharedPreferences Ċ import Ġcom . big create . zy fw . datasource . Project List DataSource Ċ import Ġcom . big create . zy fw . models . Search Model Ċ import Ġcom . big create . zy fw . models . Search Request Ċ import Ġcom . big create . zy fw . view model . Network State ViewModel Ċ import Ġcom . google . android . material . chip . Chip Ċ import Ġkotlinx . android . synt hetic . main . activity _ search .* Ċ import Ġjava . lang . Exception Ċ Ċ class ĠSearch Activity Ġ: ĠAuth Login Activity () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcity Ġ= ĠAttributes . App City ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnetwork State : ĠNetwork State ViewModel ĊĠĠĠ Ġprivate Ġval Ġsearch Request Ġ= ĠSearch Request ("", Ġcity , Ġ"", Ġnull , Ġ 1 ) ĊĠĠĠ Ġprivate Ġvar Ġsearch Key Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġsearch History Ġ= ĠArrayList < Pair < String , ĠLong >>() ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) Ċ // ĠĠĠĠĠĠĠ Ġapp bar Search Dialog . update Padding ( top Ġ= Ġapp bar Search Dialog . padding Top Ġ+ Ġstatus Bar Height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter Check Login Success () Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Search Bar . setOn Editor ActionListener Ġ{ Ġ_, Ġaction Id , Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ SEARCH Ġ|| Ġ( event Ġ!= Ġnull Ġ&& Ġevent . keyCode Ġ== ĠKeyEvent . KEYCODE _ ENTER )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input Search Bar . editable Text . trim End (). isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Request . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Key Ġ= Ġinput Search Bar . editable Text . trim End (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= ĠAttributes . token ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Region Ġ= Ġsearch Key ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Topic Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Content Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre Search () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlayout Input Search Bar . set Start Icon OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinput Search Bar . setOn Focus ChangeListener Ġ{ Ġv , Ġhas Focus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Search History ( has Focus ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinput Search Bar . request Focus () ĊĠĠĠĠĠĠĠ Ġlist SearchResult . item Animator Ġ= ĠDefault Item Animator () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetContentView () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ search ) ĊĠĠĠĠĠĠĠ Ġaction Clear Search History . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch History . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip Group Search History . removeAll Views () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Search History ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwindow . trans luc ent System UI ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġsearch Map String Ġ= Ġdefault SharedPreferences . getString (" search History ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( search Map String Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" search History ", Ġsearch Map String ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsearch History Ġ= Ġsearch Map String . fromJson < ArrayList < Pair < String , ĠLong >> >() Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġadd All Search History () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnetwork State Ġ= ĠViewModel Provider ( this )[ Network State ViewModel :: class . java ] ĊĠĠĠĠĠĠĠ Ġnetwork State . state . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork State . LOADING Ġ-> Ġshow Progress ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork State . LOADED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Search History () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠAttributes . add City Listener ( java Class . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcity Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Search Bar . hint Ġ= Ġ"${ getString ( R . string . search )} Ġ$ city " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġre Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġlist SearchResult . adapter Ġ= ĠProject ListAdapter Ġ{ Ġ_, Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity < Project Details Activity > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Category ( Intent . CATEGORY _ DEFAULT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetData And Type ( Uri . parse ( String . format ( Attributes . authority Project , Ġitem . projectId )), Ġ" project /${ item . project Topic }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" projectId ", Ġitem . projectId ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubmit List ( Paged List . Builder < Int , ĠSearch Model >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProject List DataSource ( search Request , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork State . state ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP aged List . Config . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set PageSize ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pref etch Distance ( 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). set Notify Executor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. set Fetch Executor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAttributes . background Executors . execute ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Configuration Changed ( new Config : ĠConfiguration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Configuration Changed ( new Config ) ĊĠĠĠĠĠĠĠ Ġif Ġ( new Config . keyboard Hidden Ġ== ĠConfiguration . KEY BOARD HIDDEN _ YES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Search Bar . clear Focus () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd All Search History () Ġ{ ĊĠĠĠĠĠĠĠ Ġchip Group Search History . removeAll Views () ĊĊĠĠĠĠĠĠĠ Ġsearch History . forEach Indexed Ġ{ Ġindex , Ġpair Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip Group Search History . addView ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCh ip ( this @ Search Activity ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtemp Text Ġ= Ġpair . first ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp Text . length Ġ> Ġ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Text Ġ= Ġtemp Text . substring ( 0 , Ġ 7 ) Ġ+ Ġ" ..." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġtemp Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Search Activity . input Search Bar . editable Text . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Search Activity . input Search Bar . editable Text . append ( pair . first ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Close Icon Visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Close Icon ClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Search History () Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch History Ġ= ĠArrayList ( search History . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . first Ġ!= Ġsearch Key ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( search Key . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchip Ġ= ĠCh ip ( chip Group Search History . context ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . id Ġ= ĠView . NO _ ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtemp Text Ġ= Ġsearch Key Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp Text . length Ġ> Ġ 8 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Text Ġ= Ġtemp Text . substring ( 0 , Ġ 7 ) Ġ+ Ġ" ..." Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// text Ġ= Ġtemp Text Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . text Ġ= Ġtemp Text Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . setOnClickListener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Search Bar . editable Text . clear () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Search Bar . editable Text . append ( search Key ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . is Close Icon Visible Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip . setOn Close Icon ClickListener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch History . remove At ( it . id ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Search Activity . chip Group Search History . remove View At ( it . id ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Search Activity . chip Group Search History . forEach Indexed Ġ{ Ġindex , Ġview Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ>= Ġit . id ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . id Ġ= Ġindex Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchip Group Search History . addView ( chip , 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch History . add ( 0 , search Key Ġto ĠSystem . currentTimeMillis ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( search Key . isNotEmpty ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsearch History . add ( 0 , Ġsearch Key Ġto ĠSystem . currentTimeMillis ()) Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this @ Search Activity . chip Group Search History . child Count Ġ> Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Search Activity . chip Group Search History . remove View At ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch History . remove At ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Search Activity . chip Group Search History . forEach Indexed Ġ{ Ġindex , Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . id Ġ= Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Progress ( value : ĠBoolean ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Search History ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchip Group Search History . isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠ Ġaction Clear Search History . isVisible Ġ= Ġshow ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( input Search Bar . has Focus ()) Ġ{ Ċ //// ĠĠĠĠĠĠĠĠĠĠĠ Ġshow Search History ( false ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġinput Search Bar . clear Focus () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġget System Service ( Input Method Manager :: class . java ). hide Soft Input From Window ( input Search Bar . window Token , Ġ 0 ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġdefault SharedPreferences . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" search History ", Ġsearch History . toJson ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAttributes . remove City Listener ( java Class . name ) ĊĠĠĠ Ġ} Ċ } Ċ