/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠJack sg ong ( blog . dream to be . cn ) Ċ Ġ* Ċ Ġ* Ġ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 Ġcn . dream to be . grpc . client . activity Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . support . v 7 . widget . Toolbar Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ProgressBar Ċ import Ġcn . dream to be . grpc . client . R Ċ import Ġcn . dream to be . grpc . client . adapter . Conversation ListAdapter Ċ import Ġcn . dream to be . grpc . client . presenter . Conversation Presenter Ċ import Ġcn . dream to be . grpc . client . tools . Logger Ċ import Ġcn . dream to be . grpc . client . view . Conversation M vp View Ċ import Ġde . mk ammer er . grpc chat . protocol . Error Ċ import Ġde . mk ammer er . grpc chat . protocol . Room Message Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠJack sg ong Ġon Ġ 0 7 / 0 3 / 2 0 1 7 . Ċ Ġ*/ Ċ class ĠCon versation Activity Ġ: ĠAppCompatActivity (), ĠCon versation M vp View Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetContext (): ĠContext Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Toolbar : ĠToolbar ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Presenter : ĠCon versation Presenter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Progress View : ĠProgress Bar ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm RecyclerView : ĠRecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Adapter : ĠCon versation ListAdapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Refresh Btn : ĠButton ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ conversation ) ĊĊĠĠĠĠĠĠĠ Ġm Presenter Ġ= ĠCon versation Presenter () ĊĠĠĠĠĠĠĠ Ġm Presenter . attach View ( this ) ĊĊĠĠĠĠĠĠĠ Ġm Toolbar Ġ= ĠfindViewById ( R . id . toolbar ) Ġas ĠToolbar ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( m Toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. title Ġ= Ġ" Conversation " ĊĊĠĠĠĠĠĠĠ Ġm Progress View Ġ= ĠfindViewById ( R . id . progress Bar ) Ġas ĠProgress Bar ĊĠĠĠĠĠĠĠ Ġm RecyclerView Ġ= ĠfindViewById ( R . id . recycler _ view ) Ġas ĠRecyclerView ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠCon versation ListAdapter () ĊĠĠĠĠĠĠĠ Ġadapter . callback Ġ= Ġobject Ġ: ĠCon versation ListAdapter . Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( room Message : ĠRoom Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( m RecyclerView , Ġ" jump Ġto Ġchat Ġpage : Ġ${ room Message . title }, Ġ${ room Message . desc }", ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . m Adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġm RecyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġm RecyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĊĠĠĠĠĠĠĠ Ġm Refresh Btn Ġ= ĠfindViewById ( R . id . refresh _ btn ) Ġas ĠButton ĊĠĠĠĠĠĠĠ Ġm Refresh Btn . setOnClickListener Ġ{ Ġm Presenter . list Rooms () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġm Presenter . list Rooms () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Presenter . detach View () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġm RecyclerView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġm Progress View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġm Refresh Btn . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Error ( error : ĠError ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Refresh Btn . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġm Progress View . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( m RecyclerView , Ġ" oc cur Ġerror Ġcode : Ġ${ error . code } Ġmessage : Ġ${ error . message }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ ĠLogger . log ( java Class , Ġerror . message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Con versations ( room Message List : ĠList < Room Message >) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Refresh Btn . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġm RecyclerView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġm Progress View . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġm Adapter . conversation List Ġ= Ġroom Message List . to Mutable List () ĊĠĠĠĠĠĠĠ Ġm Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġm RecyclerView . request Focus () ĊĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( m RecyclerView , Ġ" load Ġ${ room Message List . size } Ġrooms Ġfrom Ġserver ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreated New Room () Ġ{ ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( m RecyclerView , Ġ" create Ġone Ġnew Ġroom ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġm Presenter . list Rooms () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item !!. itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ refresh Ġ-> Ġm Presenter . list Rooms () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ create Ġ-> Ġm Presenter . create Room () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ conversation , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} Ċ Ċ }