package Ġorg . w ats i . u hp . fragments Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Provider Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . widget . Search View Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġdagger . android . support . D agger Fragment Ċ import Ġkotlinx . android . synt hetic . main . fragment _ member _ search . empty _ member _ search _ results Ċ import Ġkotlinx . android . synt hetic . main . fragment _ member _ search . loading _ indicator Ċ import Ġkotlinx . android . synt hetic . main . fragment _ member _ search . member _ search _ results Ċ import Ġorg . th reet en . bp . Clock Ċ import Ġorg . w ats i . device . managers . Logger Ċ import Ġorg . w ats i . domain . entities . Identification Event Ċ import Ġorg . w ats i . domain . entities . Member Ċ import Ġorg . w ats i . domain . relations . Member With Id Event And Thumbnail Photo Ċ import Ġorg . w ats i . u hp . R Ċ import Ġorg . w ats i . u hp . activities . Clin ic Activity Ċ import Ġorg . w ats i . u hp . activities . Search By Member Card Activity Ċ import Ġorg . w ats i . u hp . adapters . Member Adapter Ċ import Ġorg . w ats i . u hp . helpers . RecyclerView Helper Ċ import Ġorg . w ats i . u hp . managers . Keyboard Manager Ċ import Ġorg . w ats i . u hp . managers . Navigation Manager Ċ import Ġorg . w ats i . u hp . view models . Member Search ViewModel Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠMember Search Fragment Ġ: ĠD agger Fragment () Ġ{ ĊĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġnavigation Manager : ĠNavigation Manager ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġlogger : ĠLogger ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġkeyboard Manager : ĠKeyboard Manager ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġclock : ĠClock ĊĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠMember Search ViewModel ĊĠĠĠ Ġlateinit Ġvar Ġmember Adapter : ĠMember Adapter ĊĠĠĠ Ġprivate Ġval Ġsearch Results Ġ= Ġmutable ListOf < Member With Id Event And Thumbnail Photo >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġmember Adapter Ġ= ĠMember Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmembers Ġ= Ġsearch Results , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Select Ġ= Ġ{ Ġmember Relation : ĠMember With Id Event And Thumbnail Photo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Method Ġ= ĠviewModel . search Method () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( search Method Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Manager . goTo ( Check In Member Detail Fragment . for Member With Search Method ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmember Relation . member , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Method )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" View Ġmodel Ġdoes Ġnot Ġhave Ġa Ġsearch Method Ġwhen ĠMember Adapter . on Item Select Ġwas Ġcalled . ĠViewModel : Ġ${ viewModel . get Observable (). value . toString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this , ĠviewModel Factory ). get ( Member Search ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ ĠviewModel . get Observable (). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ Ġview State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Results . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Results . addAll ( view State . matching Members ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmember _ search _ results . adapter . notify DataSet Changed () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view State . loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmember _ search _ results . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading _ indicator . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty _ member _ search _ results . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġsearch Ġhas Ġfinished Ġand Ġthere Ġare Ġno Ġmatching Ġmembers ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view State . matching Members . isEmpty () Ġ&& Ġview State . search Method Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmember _ search _ results . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty _ member _ search _ results . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġsearch Ġis Ġfinished Ġand Ġthere Ġare Ġmatching Ġmembers ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmember _ search _ results . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty _ member _ search _ results . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReg ard less Ġof Ġresults , Ġwe Ġshould Ġhide Ġthe Ġloading Ġindicator . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading _ indicator . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater ?, Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠC lin ic Activity ). set Toolbar ( context . getString ( R . string . search _ fragment _ label ), Ġnull ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater ?. inflate ( R . layout . fragment _ member _ search , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView ?, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠRecyclerView Helper . set RecyclerView ( member _ search _ results , Ġmember Adapter , Ġcontext , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġmenu Inflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . clear () ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . member _ search , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġauto - expand Ġthe ĠSearch View Ġin Ġthe ĠToolbar ĊĠĠĠĠĠĠĠ Ġval Ġsearch Item Ġ= Ġmenu . find Item ( R . id . search _ member _ name ) ĊĠĠĠĠĠĠĠ Ġval Ġsearch View Ġ= Ġsearch Item . action View Ġas ĠSearch View ĊĊĠĠĠĠĠĠĠ Ġsearch View . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġneed Ġto Ġinclude Ġclear Focus () Ġor Ġelse Ġback Ġbutton Ġwill Ġonly Ġun focus ĠSearch View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . update Query ( query . toLowerCase ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġauto - focus Ġthe ĠSearch View ĊĠĠĠĠĠĠĠ Ġsearch View . is Icon ified Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġsearch View . request Focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( result Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity . RESULT _ OK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmember Ġ= Ġdata ?. get Serializable Extra ( Search By Member Card Activity . MEMBER _ RESULT _ KEY ) Ġas ĠMember ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( member Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Manager . goTo ( Check In Member Detail Fragment . for Member With Search Method ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmember , ĠIdent ification Event . Search Method . SCAN _ BAR CODE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" QR Code Activity Ġreturned Ġnull Ġmember Ġwith ĠresultCode : ĠActivity . RESULT _ OK ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch By Member Card Activity . RESULT _ RE DIRECT _ TO _ SEARCH _ FRAGMENT Ġ-> Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity . RESULT _ C ANCE LED Ġ-> Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Qr Code Activity . parse Result Ġcalled Ġwith ĠresultCode : Ġ$ result Code ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠC lin ic Activity ). reset Toolbar Minimal () ĊĠĠĠ Ġ} Ċ } Ċ