package Ġchat . rocket . android . chat room . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . appcompat . widget . Search View Ċ import Ġandroidx . core . content . res . Resources Compat Ċ import Ġchat . rocket . android . R Ċ import Ġchat . rocket . android . util . extension . on Query Text Listener Ċ import Ġchat . rocket . common . model . Room Type Ċ Ċ internal Ġfun ĠChat Room Fragment . setup Menu ( menu : ĠMenu ) Ġ{ ĊĠĠĠ Ġsetup Search Message MenuItem ( menu , Ġrequire Context ()) ĊĠĠĠ Ġsetup Favorite MenuItem ( menu ) ĊĊĠĠĠ Ġmenu . add ( ĊĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠ ĠMENU _ ACTION _ PIN N ED _ MESSAGES , ĊĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠ ĠR . string . title _ pinned _ messages ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġmenu . add ( ĊĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠ ĠMENU _ ACTION _ FA V OR ITE _ MESSAGES , ĊĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠ ĠR . string . title _ favorite _ messages ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġif Ġ( chat Room Type Ġ!= ĠRoom Type . DIRECT _ MESSAGE Ġ&& Ġ! disable Menu ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMENU _ ACTION _ MEMBER , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . title _ members _ list ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġmenu . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMENU _ ACTION _ MENT IONS , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . msg _ mentions ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ(! disable Menu ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMENU _ ACTION _ FILES , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . title _ files ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun ĠChat Room Fragment . setOn MenuItem ClickListener ( item : ĠMenuItem ) Ġ{ ĊĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMENU _ ACTION _ FA V OR ITE _ UN FA V OR ITE _ CHAT Ġ-> Ġpresenter . toggle Favorite Chat Room ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchat Room Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Favorite ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠMENU _ ACTION _ MEMBER Ġ-> Ġpresenter . to Members List ( chat Room Id ) ĊĠĠĠĠĠĠĠ ĠMENU _ ACTION _ MENT IONS Ġ-> Ġpresenter . to Ment ions ( chat Room Id ) ĊĠĠĠĠĠĠĠ ĠMENU _ ACTION _ PIN N ED _ MESSAGES Ġ-> Ġpresenter . to Pin ned Message List ( chat Room Id ) ĊĠĠĠĠĠĠĠ ĠMENU _ ACTION _ FA V OR ITE _ MESSAGES Ġ-> Ġpresenter . to Favorite Message List ( chat Room Id ) ĊĠĠĠĠĠĠĠ ĠMENU _ ACTION _ FILES Ġ-> Ġpresenter . to FileList ( chat Room Id ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠChat Room Fragment . setup Search Message MenuItem ( menu : ĠMenu , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠ Ġval Ġsearch Item Ġ= Ġmenu . add ( ĊĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠ ĠR . string . title _ search _ message ĊĠĠĠ Ġ). setAction View ( Search View ( context )) ĊĠĠĠĠĠĠĠ Ġ. setIcon ( R . drawable . ic _ search _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġ. set Show As Action Flags ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem . SHOW _ AS _ ACTION _ IF _ ROOM Ġor ĠMenuItem . SHOW _ AS _ ACTION _ COLL AP SE _ ACTION _ VIEW ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ( search Item ?. action View Ġas ? ĠSearch View )?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠCheck Ġwhy Ġwe Ġneed Ġto Ġsty lize Ġthe Ġsearch Ġtext Ġprogram matically Ġinstead Ġof Ġby Ġdefining Ġit Ġin Ġthe Ġstyles . xml Ġ( Chat Room . Search View ) ĊĠĠĠĠĠĠĠ Ġsty lize Search View ( it , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġsetup Search View Text Listener ( it ) ĊĠĠĠĠĠĠĠ Ġif Ġ( it . is Icon ified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Search Term Qu er ied Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġsty lize Search View ( search View : ĠSearch View , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠ Ġval Ġsearch Text Ġ= Ġsearch View . findViewById < EditText >( android x . appcompat . R . id . search _ src _ text ) ĊĠĠĠ Ġsearch Text . setTextColor ( Resources Compat . getColor ( context . resources , ĠR . color . color _ white , Ġnull )) ĊĠĠĠ Ġsearch Text . set Hint TextColor ( ĊĠĠĠĠĠĠĠ ĠResources Compat . getColor ( context . resources , ĠR . color . color _ white , Ġnull ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġfun ĠChat Room Fragment . setup Search View Text Listener ( search View : ĠSearch View ) Ġ{ ĊĠĠĠ Ġsearch View . on Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠWe Ġuse Ġis Search Term Qu er ied Ġto Ġavoid Ġquerying Ġwhen Ġthe Ġsearch Ġview Ġis Ġexpanded Ġbut Ġthe Ġuser Ġdoesn 't Ġstart Ġtyping . ĠCheck Ġfor Ġa Ġnative Ġsolution . ĊĠĠĠĠĠĠĠ Ġif Ġ( it . isEmpty () Ġ&& Ġis Search Term Qu er ied ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . load Messages ( chat Room Id , Ġchat Room Type , Ġclear DataSet Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . search Messages ( chat Room Id , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Search Term Qu er ied Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠChat Room Fragment . setup Favorite MenuItem ( menu : ĠMenu ) Ġ{ ĊĠĠĠ Ġif Ġ( is Favorite ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMENU _ ACTION _ FA V OR ITE _ UN FA V OR ITE _ CHAT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . title _ un favorite _ chat ĊĠĠĠĠĠĠĠ Ġ). setIcon ( R . drawable . ic _ star _ yellow _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Show As Action ( MenuItem . SHOW _ AS _ ACTION _ IF _ ROOM ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMENU _ ACTION _ FA V OR ITE _ UN FA V OR ITE _ CHAT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenu . NONE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . title _ favorite _ chat ĊĠĠĠĠĠĠĠ Ġ). setIcon ( R . drawable . ic _ star _ border _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Show As Action ( MenuItem . SHOW _ AS _ ACTION _ IF _ ROOM ) ĊĠĠĠ Ġ} Ċ }