package Ġir . aw lr hm . modules . view Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġir . aw r hm . modules . R Ċ import Ġir . aw lr hm . modules . base . Base Dialog Fragment Ċ import Ġir . aw lr hm . modules . extent ions . config Image Button Ċ import Ġir . aw lr hm . modules . extent ions . hide Keyboard Ċ import Ġir . aw lr hm . modules . models . Item Model Ċ import Ġir . aw lr hm . modules . models . Adapter Ċ import Ġkotlinx . android . synt hetic . main . aw lr hm _ search able _ dialog .* Ċ Ċ class ĠSearch able Dialog ( ĊĠĠĠ Ġprivate Ġval Ġlist : ĠMutable List < Item Model >, ĊĠĠĠ Ġprivate Ġval Ġcallback : Ġ( Item Model ) Ġ-> ĠUnit Ċ ) Ġ: ĠBase Dialog Fragment () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġrcl Items ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. layout Manager ( Linear LayoutManager ( context , ĠLinearLayoutManager . VERTICAL , Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. vertical Decoration () ĊĊĠĠĠĠĠĠĠ ĠsetDefault List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . aw lr hm _ search able _ dialog , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle OnClickListener () Ġ Ġ{ ĊĠĠĠĠĠĠĠ Ġbtn Back . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ed t Search . text . toString (). isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġed t Search . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. hide Keyboard ( ed t Search ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġed t Search . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( p 0 : ĠEdit able ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( p 0 : ĠCharSequence ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( p 0 : ĠCharSequence ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 0 ?. let Ġ{ Ġtext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( text . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Search Logo ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġshow Search Logo ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlist . filter Ġ{ Ġcity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcity . title . contains ( text , Ġignore Case Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow No Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Search Logo ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrcl Items . view ?. adapter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdapter ( result Ġas ĠMutable List < Item Model >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetDefault List () Ġ{ ĊĠĠĠĠĠĠĠ Ġrcl Items . view ?. adapter Ġ= ĠAdapter ( list ) Ġ{ Ġmodel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . invoke ( model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Search Logo ( visible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( visible ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrcl Items . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout No Data . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Search . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Search . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout No Data . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrcl Items . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow No Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġrcl Items . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġlayout Search . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġlayout No Data . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Buttons Color ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. config Image Button ( btn Back , Ġcolor ) ĊĠĠĠĠĠĠĠ Ġactivity ?. config Image Button ( btn Search , Ġcolor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset BackgroundColor ( color : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġsearch . set Card BackgroundColor ( Context Compat . getColor ( activity , Ġcolor )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠbackgroundColor ( color : ĠInt ) Ġ= Ġapply Ġ{ Ġset BackgroundColor ( color ) Ġ} ĊĠĠĠ Ġfun Ġbuttons Color ( color : ĠInt ) Ġ= Ġapply Ġ{ Ġset Buttons Color ( color ) Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= Ġ" module : Ġ${ Search able Dialog :: class . java . simple Name }" ĊĠĠĠ Ġ} Ċ }