diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/model/Me.as b/bigbluebutton-client/src/org/bigbluebutton/core/model/Me.as index 9324ab8d6ccff1f2d02d0d1a8dee3ce7b2e3b831..ff3b9a979bc5e8c12b4c1a21f13273c5867a9183 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/core/model/Me.as +++ b/bigbluebutton-client/src/org/bigbluebutton/core/model/Me.as @@ -52,7 +52,8 @@ package org.bigbluebutton.core.model public var authTokenValid: Boolean = false; public var waitingForApproval: Boolean; - + public var breakoutEjectFromAudio : Boolean = false; + private var _role:String = "viewer"; public function get role():String { return _role.toUpperCase(); @@ -84,7 +85,7 @@ package org.bigbluebutton.core.model public function myCamSettings():ArrayCollection { return _myCamSettings; } - + public function applyLockSettings():void { var lockSettings:LockSettingsVO = UsersUtil.getLockSettings(); var amNotModerator:Boolean = !UsersUtil.amIModerator(); diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/BreakoutRoom.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/BreakoutRoom.as index 21516c08fd2e1ef0bd975503cb533208543277fd..04aa659826b8e0d83388ec4de8691510eea6111d 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/BreakoutRoom.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/BreakoutRoom.as @@ -61,6 +61,15 @@ package org.bigbluebutton.main.model.users { removeUser(user.id); users.addItem(user); } + + public function hasUserWithId(userId:String) : Boolean { + for (var i : int = 0; i < users.length; i++) { + if (BreakoutUser(users.getItemAt(i)).id.indexOf(userId) > -1 ) { + return true; + } + } + return false; + } public function removeUser(id: String): void { for (var i: int = 0; i < users.length; i++) { diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml index b4af325d646e1db8de59c2fb4bd05a5c0f69306a..587fe449a9100df525022f2b80b7f7514dec9916 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml @@ -150,10 +150,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. import org.bigbluebutton.modules.phone.events.WebRTCEchoTestEvent; import org.bigbluebutton.modules.phone.events.WebRTCMediaEvent; import org.bigbluebutton.modules.phone.models.PhoneOptions; - import org.bigbluebutton.util.browser.BrowserCheck; import org.bigbluebutton.modules.users.model.UsersOptions; import org.bigbluebutton.modules.users.views.BreakoutRoomSettings; import org.bigbluebutton.modules.videoconf.events.ShareCameraRequestEvent; + import org.bigbluebutton.util.browser.BrowserCheck; import org.bigbluebutton.util.i18n.ResourceUtil; private static const LOGGER:ILogger = getClassLogger(MainApplicationShell); diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/phone/views/components/ToolbarButton.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/phone/views/components/ToolbarButton.mxml index 39b716c527362cdbe32af2dec1e6fc8be843f4e2..f811c5ac01081a6fb1a7ff959eeb43ac3fb45957 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/phone/views/components/ToolbarButton.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/phone/views/components/ToolbarButton.mxml @@ -113,6 +113,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. } private function joinAudio():void { + LiveMeeting.inst().me.breakoutEjectFromAudio = false; if (phoneOptions.skipCheck || disableMyMic || defaultListenOnlyMode) { var command:JoinVoiceConferenceCommand = new JoinVoiceConferenceCommand(); diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as b/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as index 1f3c57fd8345e552cb02fb91cf35ac4d499a8d40..1100f5c2ca28630f96da3e04c27b1259e39a16de 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/users/services/MessageReceiver.as @@ -51,6 +51,7 @@ package org.bigbluebutton.modules.users.services import org.bigbluebutton.main.model.users.events.ChangeMyRole; import org.bigbluebutton.main.model.users.events.StreamStartedEvent; import org.bigbluebutton.main.model.users.events.StreamStoppedEvent; + import org.bigbluebutton.modules.phone.events.AudioSelectionWindowEvent; import org.bigbluebutton.modules.screenshare.events.WebRTCViewStreamEvent; import org.bigbluebutton.modules.users.events.MeetingMutedEvent; @@ -810,6 +811,15 @@ package org.bigbluebutton.modules.users.services var body: Object = msg.body as Object; var breakoutId: String = body.breakoutId as String; + // Display audio join window + if (LiveMeeting.inst().me.breakoutEjectFromAudio && + LiveMeeting.inst().breakoutRooms.getBreakoutRoom(breakoutId).hasUserWithId(LiveMeeting.inst().me.id) && + !LiveMeeting.inst().me.inVoiceConf + ) { + LiveMeeting.inst().me.breakoutEjectFromAudio = false; + dispatcher.dispatchEvent(new AudioSelectionWindowEvent(AudioSelectionWindowEvent.SHOW_AUDIO_SELECTION)); + } + switchUserFromBreakoutToMainVoiceConf(breakoutId); var breakoutRoom: BreakoutRoom = LiveMeeting.inst().breakoutRooms.getBreakoutRoom(breakoutId); LiveMeeting.inst().breakoutRooms.removeBreakoutRoom(breakoutId); diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/JoinBreakoutRoomWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/JoinBreakoutRoomWindow.mxml index 1e68d2f5e3bd5beec31b22a6ca4dc0f9168200ed..9d0ade9e057022f663c3acddcf89cb2696187e64 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/JoinBreakoutRoomWindow.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/JoinBreakoutRoomWindow.mxml @@ -31,10 +31,11 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. <fx:Script> <![CDATA[ import com.asfusion.mate.events.Dispatcher; - + import flash.net.navigateToURL; - + import org.bigbluebutton.core.PopUpUtil; + import org.bigbluebutton.core.model.LiveMeeting; import org.bigbluebutton.modules.phone.events.LeaveVoiceConferenceCommand; import org.bigbluebutton.modules.videoconf.events.StopBroadcastEvent; import org.bigbluebutton.util.i18n.ResourceUtil; @@ -49,6 +50,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. } protected function joinButtonClickHandler(event:MouseEvent):void { + if (LiveMeeting.inst().me.inVoiceConf) { + LiveMeeting.inst().me.breakoutEjectFromAudio = true; + } else { + LiveMeeting.inst().me.breakoutEjectFromAudio = false; + + } dispatcher.dispatchEvent(new LeaveVoiceConferenceCommand()); dispatcher.dispatchEvent(new StopBroadcastEvent()); navigateToURL(new URLRequest(this.joinUrl), "_blank");