/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠNew ĠVector ĠLtd Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġim . vector . activity Ċ Ċ import Ġandroid . app . Search Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . support . v 7 . widget . Divider Item Decoration Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . Search View Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . view . isVisible Ċ import Ġbutter knife . BindView Ċ import Ġim . vector . Matrix Ċ import Ġim . vector . R Ċ import Ġim . vector . adapters . Abs Adapter Ċ import Ġim . vector . adapters . Home Room Adapter Ċ import Ġim . vector . ui . themes . Activity Other Themes Ċ import Ġim . vector . ui . themes . Theme Utils Ċ import Ġim . vector . util . Room Utils Ċ import Ġim . vector . view . Empty View Item Decoration Ċ import Ġim . vector . view . Simple Divider Item Decoration Ċ import Ġorg . jetbrains . ank o . do Async Ċ import Ġorg . jetbrains . ank o . ui Thread Ċ import Ġorg . matrix . android sdk . MX Session Ċ import Ġorg . matrix . android sdk . data . Room Ċ import Ġorg . matrix . android sdk . rest . callback . Api Callback Ċ import Ġorg . matrix . android sdk . rest . model . Matrix Error Ċ import Ġorg . matrix . android sdk . util . Log Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠDisplays Ġthe Ġhistorical Ġrooms Ġlist Ċ Ġ*/ Ċ class ĠH istorical Rooms Activity Ġ: ĠVector AppCompatActivity (), ĊĠĠĠĠĠĠĠ ĠSearch View . On Query Text Listener , ĊĠĠĠĠĠĠĠ ĠHome Room Adapter . On Select Room Listener , ĊĠĠĠĠĠĠĠ ĠAbs Adapter . More Room ActionListener , ĊĠĠĠĠĠĠĠ ĠRoom Utils . H istorical Room ActionListener Ġ{ ĊĊĠĠĠ Ġ@ BindView ( R . id . search _ view ) ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġm Search View : ĠSearch View ĊĊĠĠĠ Ġ@ BindView ( R . id . h istorical _ recycler _ view ) ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġm H istorical RecyclerView : ĠRecyclerView ĊĊĠĠĠ Ġ@ BindView ( R . id . h istorical _ no _ results ) ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġm H istorical Place Holder : ĠTextView ĊĊĠĠĠ Ġ// Ġhistorical Ġadapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm H istorical Adapter : ĠHome Room Adapter ĊĊĠĠĠ Ġ// Ġsessions ĊĠĠĠ Ġprivate Ġvar Ġm Session : ĠMX Session ? Ġ= Ġnull ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* Ġ***************************************************************** ************************ **** ĊĠĠĠĠ Ġ* ĠActivity Ġlifecycle ĊĠĠĠĠ Ġ* Ġ***************************************************************** ************************ **** ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġoverride Ġfun Ġget Other Themes () Ġ= ĠActivity Other Themes . Home ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Res () Ġ= ĠR . layout . activity _ h istorical ĊĊĠĠĠ Ġoverride Ġfun Ġget Title Res () Ġ= ĠR . string . title _ activity _ h istorical ĊĊĠĠĠ Ġoverride Ġfun Ġinit Ui And Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Common Activity Utils . should Restart App ( this )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( LOG _ TAG , Ġ" Restart Ġthe Ġapplication .") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Activity Utils . restart App ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Common Activity Utils . is Go ing To Splash ( this )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ" onCreate Ġ: ĠGo ing Ġto Ġsplash Ġscreen ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġrefresh H istorical () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Low Memory () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Low Memory () ĊĠĠĠĠĠĠĠ ĠCommon Activity Utils . on Low Memory ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Trim Memory ( level : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Trim Memory ( level ) ĊĠĠĠĠĠĠĠ ĠCommon Activity Utils . on Trim Memory ( this , Ġlevel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* Ġ***************************************************************** ************************ **** ĊĠĠĠĠ Ġ* ĠUI Ġmanagement ĊĠĠĠĠ Ġ* Ġ***************************************************************** ************************ **** ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWaiting ĠView ĊĠĠĠĠĠĠĠ Ġwaiting View Ġ= ĠfindViewById ( R . id . h istorical _ waiting _ view ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠToolbar ĊĠĠĠĠĠĠĠ Ġconfigure Toolbar () ĊĊĠĠĠĠĠĠĠ Ġm Session Ġ= ĠMatrix . getInstance ( this ). default Session ĊĊĠĠĠĠĠĠĠ Ġval Ġmargin Ġ= Ġresources . get Dimension ( R . dim en . item _ decoration _ left _ margin ). toInt () ĊĊĠĠĠĠĠĠĠ Ġm H istorical Adapter Ġ= ĠHome Room Adapter ( this , ĠR . layout . adapter _ item _ room _ view , Ġthis , Ġnull , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġm H istorical RecyclerView . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . layout Manager Ġ= ĠLinearLayoutManager ( this , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . addItem Decoration ( Simple Divider Item Decoration ( this , ĠDiv ider Item Decoration . VERTICAL , Ġmargin )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . addItem Decoration ( Empty View Item Decoration ( this , ĠDiv ider Item Decoration . VERTICAL , Ġ 4 0 , Ġ 1 6 , Ġ 1 4 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . adapter Ġ= Ġm H istorical Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsearch Manager Ġ= Ġget System Service ( Context . SEARCH _ SERVICE ) Ġas ĠSearch Manager ĊĠĠĠĠĠĠĠ Ġ// ĠRemove Ġun wanted Ġleft Ġmargin ĊĠĠĠĠĠĠĠ Ġval Ġsearch Edit Frame Ġ= Ġm Search View . findViewById < LinearLayout >( R . id . search _ edit _ frame ) ĊĠĠĠĠĠĠĠ Ġif Ġ( search Edit Frame Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Edit Frame Params Ġ= Ġsearch Edit Frame . layout Params Ġas ĠViewGroup . Margin LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Edit Frame Params . left Margin Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Edit Frame . layout Params Ġ= Ġsearch Edit Frame Params ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsearch Icon Ġ= Ġm Search View . findViewById < ImageView >( R . id . search _ mag _ icon ) ĊĠĠĠĠĠĠĠ Ġif Ġ( search Icon Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Icon Params Ġ= Ġsearch Icon . layout Params Ġas ĠViewGroup . Margin LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Icon Params . left Margin Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Icon . layout Params Ġ= Ġsearch Icon Params ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtoolbar . content Inset Start With Navigation Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġm Search View . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . maxWidth Ġ= ĠInteger . MAX _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Submit Button Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Search able Info ( search Manager . get Search able Info ( component Name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setIcon ified ByDefault ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOn Query Text Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . query Hint Ġ= ĠgetString ( R . string . h istorical _ placeholder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsearch Auto Complete Ġ= Ġm Search View . findViewById < Search View . Search Auto Complete >( android . support . v 7 . appcompat . R . id . search _ src _ text ) ĊĠĠĠĠĠĠĠ Ġsearch Auto Complete . set Hint TextColor ( Theme Utils . getColor ( this , ĠR . attr . v ctr _ default _ text _ hint _ color )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* Ġ***************************************************************** ************************ **** ĊĠĠĠĠ Ġ* Ġhistorical Ġmanagement ĊĠĠĠĠ Ġ* Ġ***************************************************************** ************************ **** ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh H istorical () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Handler Ġ= Ġm Session !!. data Handler ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! data Handler . are Left Rooms Sync ed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm H istorical Adapter . set Rooms ( ArrayList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Waiting View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Handler . retrieve Left Rooms ( object Ġ: ĠH istorical Room Api Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( info : ĠVoid ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ Ġinit H istorical Rooms Data () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit H istorical Rooms Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInit Ġhistory Ġrooms Ġdata ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit H istorical Rooms Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Waiting View () ĊĠĠĠĠĠĠĠ Ġval Ġhistorical Rooms Ġ= ĠArrayList ( m Session !!. data Handler . left Rooms ) ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġhistorical Rooms . iterator () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroom Ġ= Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( room . is Conference User Room ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . sort ( h istorical Rooms , ĠRoom Utils . get H istorical Rooms Comparator ( m Session , Ġfalse )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm H istorical Adapter . set Rooms ( h istorical Rooms ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* Ġ***************************************************************** ************************ **** ĊĠĠĠĠ Ġ* ĠUser Ġaction Ġmanagement ĊĠĠĠĠ Ġ* Ġ***************************************************************** ************************ **** ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġcompute Ġan Ġunique Ġpattern ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Session !!. data Handler . are Left Rooms Sync ed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwait Ġbefore Ġreally Ġtriggering Ġthe Ġsearch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġelse Ġa Ġsearch Ġis Ġtriggered Ġfor Ġeach Ġnew Ġcharacter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġeg Ġ" mat t " Ġtriggers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 1 Ġ- Ġsearch Ġfor Ġm ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 Ġ- Ġsearch Ġfor Ġma ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 3 Ġ- Ġsearch Ġfor Ġmat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 4 Ġ- Ġsearch Ġfor Ġmat t ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhereas Ġonly Ġone Ġsearch Ġshould Ġhave Ġbeen Ġtriggered ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġelse Ġit Ġmight Ġtrigger Ġsome Ġl ags Ġeven if Ġthe Ġsearch Ġis Ġdone Ġin Ġa Ġbackground Ġthread ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Text Ġ= Ġm Search View . query . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdisplay Ġif Ġthe Ġpattern Ġmatched ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . equals ( query Text , Ġnew Text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm H istorical Adapter . filter . filter ( new Text ) Ġ{ Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm H istorical RecyclerView . scrollTo Position ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm H istorical Place Holder . isVisible Ġ= Ġcount Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* Ġ***************************************************************** ************************ **** ĊĠĠĠĠ Ġ* ĠList eners ĊĠĠĠĠ Ġ* Ġ***************************************************************** ************************ **** ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġprivate Ġabstract Ġinner Ġclass ĠH istorical Room Api Callback Ġ: ĠApi Callback < Void > Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHandle Ġthe Ġend Ġof Ġany Ġrequest Ġ: Ġhide Ġloading Ġwheel Ġand Ġdisplay Ġerror Ġmessage Ġif Ġthere Ġis Ġany ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠerrorMessage Ġthe Ġlocalized Ġerror Ġmessage ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprotected Ġfun Ġon Request Done ( errorMessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Finish ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Waiting View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( errorMessage )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ H istorical Rooms Activity , ĠerrorMessage , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Network Error ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Request Done ( e . localized Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Matrix Error ( e : ĠMatrix Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Request Done ( e . localized Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Unexpected Error ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Request Done ( e . localized Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonSelect Room ( room : ĠRoom , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Waiting View () ĊĠĠĠĠĠĠĠ ĠCommon Activity Utils . preview Room ( this , Ġm Session , Ġroom . roomId , Ġ"", Ġobject Ġ: ĠH istorical Room Api Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( info : ĠVoid ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Request Done ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Long Click Room ( v : ĠView , Ġroom : ĠRoom , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRoom Utils . display H istorical Room Menu ( this , Ġm Session , Ġroom , Ġv , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon More Action Click ( item View : ĠView , Ġroom : ĠRoom ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRoom Utils . display H istorical Room Menu ( this , Ġm Session , Ġroom , ĠitemView , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Forgot Room ( room : ĠRoom ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Waiting View () ĊĊĠĠĠĠĠĠĠ Ġroom . forget ( object Ġ: ĠH istorical Room Api Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( info : ĠVoid ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit H istorical Rooms Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG _ TAG Ġ= ĠH istorical Rooms Activity :: class . java . simple Name ĊĠĠĠ Ġ} Ċ } Ċ