/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠBlue ĠJe ans ĠNetwork , ĠInc . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ package Ġcom . blue je ans . android . sdk sample . menu Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . bj n client core . ui . util . extensions . g one Ċ import Ġcom . bj n client core . ui . util . extensions . visible Ċ import Ġcom . blue je ans . android . sdk sample . Sample Application Ċ import Ġcom . blue je ans . android . sdk sample . databinding . Fragment Option Menu Dialog Binding Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Dialog Fragment Ċ import Ġio . reactivex . rx java 3 . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . rx java 3 . dis pos ables . Disposable Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠMenu Fragment ( ĊĠĠĠ Ġprivate Ġval Ġmenu CallBack : ĠI Menu Callback , ĊĠĠĠ Ġprivate Ġval Ġis Waiting Room Enabled : ĠBoolean ĊĠĠĠ Ġ) Ġ: ĠBottom Sheet Dialog Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Menu Fragment " ĊĊĠĠĠ Ġprivate Ġvar Ġvideo Layout Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġcurrent Audio Device Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġcurrent Video Device Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġclosed Caption State Ġ= Ġ Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġmenu Fragment Binding : ĠFragment Option Menu Dialog Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbottom Sheet Behavior : ĠBottom Sheet Behavior < View >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdis posable : ĠDis posable ĊĊĠĠĠ Ġinterface ĠI Menu Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġshow Video Layout View ( video Layout Name : ĠString ) ĊĠĠĠĠĠĠĠ Ġfun Ġshow Audio Device View () ĊĠĠĠĠĠĠĠ Ġfun Ġshow Video Device View () ĊĠĠĠĠĠĠĠ Ġfun Ġhandle Closed Caption Switch Event ( isChecked : ĠBoolean ) ĊĠĠĠĠĠĠĠ Ġfun Ġshow Waiting Room () ĊĠĠĠĠĠĠĠ Ġfun Ġset Waiting Room Enabled ( enabled : ĠBoolean ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġbottom Sheet Behavior Ġ= ĠBottom Sheet Behavior . from ( require View (). parent Ġas ĠView ) ĊĠĠĠĠĠĠĠ Ġbottom Sheet Behavior ?. state Ġ= ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Fragment Binding Ġ= ĠFragment Option Menu Dialog Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Waiting Room Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Fragment Binding !!. sw Waiting Room . isChecked Ġ= Ġis Waiting Room Enabled ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdis posable Ġ= ĠSample Application . blue Je ans SDK . meeting Service . mod erator Waiting Room Service . is Waiting Room Enabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. rx Observable . observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . value ?. let Ġ{ Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Fragment Binding !!. sw Waiting Room . isChecked Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . tag ( TAG ). e ( it . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmenu Fragment Binding !!. root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġdis posable . dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Video Layout ( video Layout : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( video Layout Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . video Layout Ġ= Ġvideo Layout ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Audio Device ( current Audio Device : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . current Audio Device Ġ= Ġcurrent Audio Device !! ĊĠĠĠĠĠĠĠ Ġupdate View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Video Device ( current Video Device : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . current Video Device Ġ= Ġcurrent Video Device !! ĊĠĠĠĠĠĠĠ Ġupdate View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Closed Caption Switch State ( is Closed Caption Active : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġclosed Caption State Ġ= Ġis Closed Caption Active ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. mb Video Layout ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu CallBack . show Video Layout View ( menu Fragment Binding !!. mb Video Layout . text Ġas ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. mb Audio Device ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu CallBack . show Audio Device View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. mb Video Device ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu CallBack . show Video Device View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġclosed Caption Feature Observable Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSample Application . blue Je ans SDK . meeting Service . closed Caption ing Service . is Closed Caption ing Available ĊĠĠĠĠĠĠĠ Ġif Ġ( closed Caption Feature Observable . value Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. sw Closed Caption ?. isChecked Ġ= Ġclosed Caption State ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. sw Closed Caption ?. setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( button View . is Pressed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu CallBack . handle Closed Caption Switch Event ( isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclosed Caption State Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. sw Closed Caption ?. visible () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. sw Closed Caption ?. g one () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Sample Application . blue Je ans SDK . meeting Service . mod erator Controls Service . is Mod erator Controls Available . value Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. ll Waiting Room ?. visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Sample Application . blue Je ans SDK . meeting Service . mod erator Waiting Room Service . is Waiting Room Cap able . value Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. btn Show Waiting Room ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu CallBack . show Waiting Room () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. sw Waiting Room ?. setOn Checked ChangeListener Ġ{ Ġcompound Button , Ġb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu CallBack . set Waiting Room Enabled ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Sample Application . blue Je ans SDK . meeting Service . mod erator Waiting Room Service . is Waiting Room Cap able . value Ġ== Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. btn Show Waiting Room ?. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. sw Waiting Room ?. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate View () Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . mb Video Layout . text Ġ= Ġvideo Layout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . mb Audio Device . text Ġ= Ġcurrent Audio Device ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . mb Video Device . text Ġ= Ġcurrent Video Device ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġmenu Fragment Binding ?. sw Closed Caption ?. isChecked Ġ= Ġclosed Caption State ĊĠĠĠ Ġ} Ċ }