package Ġla ure ny ew . image browser . search . fragments Ċ Ċ import Ġandroid . app . Search Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . widget . Search View Ċ import Ġandroid . view .* Ċ import Ġkotlinx . android . synt hetic . main . search _ suggestions _ fragment .* Ċ import Ġla ure ny ew . image browser . base . feature Managers . Feature Module Manager Controller Ċ import Ġla ure ny ew . image browser . search . R Ċ import Ġla ure ny ew . image browser . search . Search Feature Module Manager Ċ import Ġla ure ny ew . image browser . search . contracts . Search Feature Module Manager Contract Ċ Ċ /** Ċ Ġ* Ġ@ author ĠLa uren ĠY ew Ġon Ġ 0 4 / 2 9 / 2 0 1 8 . Ċ Ġ* Ċ Ġ* ĠSearch ĠSuggest ions ĠFeature Ċ Ġ* ĠHas ĠSearch Ġbar , Ġand Ġsuggestions Ġfor Ġsearch Ġtypes . Ċ Ġ* Ċ Ġ* ĠNote : ĠSearch Ġview Ġwill Ġcollapse Ġand Ġclear Ġif Ġyou Ġclick Ġoutside Ġof Ġthe Ġsearch Ġview Ċ Ġ*/ Ċ open Ġclass ĠSearch Suggestions Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠSearch Suggestions Fragment Ġ= ĠSearch Suggestions Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġsearch MenuItem : ĠMenuItem ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġsearch View : ĠSearch View ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater . inflate ( R . layout . search _ suggestions _ fragment , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġall Products Card View ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperform Search ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuggestion 1 Card View ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperform Search ( getString ( R . string . suggestion _ button _ title _ 1 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuggestion 2 Card View ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperform Search ( getString ( R . string . suggestion _ button _ title _ 2 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuggestion 3 Card View ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperform Search ( getString ( R . string . suggestion _ button _ title _ 3 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuggestion 4 Card View ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperform Search ( getString ( R . string . suggestion _ button _ title _ 4 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview . setOn Touch Listener Ġ{ Ġview , Ġmotion Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġsearch MenuItem Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsearch View Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . search _ suggestions _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġsearch MenuItem Ġ= Ġmenu . find Item ( R . id . menu _ search ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmenu View Ġ= Ġsearch MenuItem ?. action View ĊĠĠĠĠĠĠĠ Ġif Ġ( menu View Ġis ĠSearch View ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View Ġ= Ġmenu View ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. query Hint Ġ= Ġcontext ?. getString ( la ure ny ew . image browser . base . R . string . search _ hint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Manager Ġ= Ġactivity ?. getSystem Service ( Context . SEARCH _ SERVICE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( search Manager Ġis ĠSearch Manager ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. set Search able Info ( search Manager ?. get Search able Info ( activity ?. component Name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. setOn Query Text Listener ( getQuery Text Listener ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. setOn Query Text Focus ChangeListener Ġ{ Ġ_, Ġhas Focus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Focus ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch MenuItem ?. collapse Action View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. is Icon ified Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// region ĠHelper ĠMethods ĊĠĠĠ Ġopen Ġfun Ġperform Search ( search Term : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodule : ĠSearch Feature Module Manager Contract . Instant App Links Ġ= ĠFeature Module Manager Controller . get Feature Module Manager ( Search Feature Module Manager Contract . Instant App Links :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠSearch Feature Module Manager ĊĠĠĠĠĠĠĠ ĠstartActivity ( module . getImage Browser Instant App Intent ( context , Ġsearch Term )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAvailable Ġto Ġoverride Ġif Ġthe Ġdon 't Ġlike Ġthe Ġquery Ġbehavior ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġget Query Text Listener (): ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperform Search ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ?): ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion Ċ }