Merge branch 'merge-polling-with-master' into upgrade-to-red5-1.0.3-release

This commit is contained in:
Richard Alam 2014-08-15 00:56:46 -07:00
commit 72e7f20def
40 changed files with 495 additions and 279 deletions

View File

@ -59,7 +59,7 @@ public class MeetingMessageHandler implements MessageHandler {
} else if (msg instanceof UserDisconnectedFromGlobalAudio) {
UserDisconnectedFromGlobalAudio emm = (UserDisconnectedFromGlobalAudio) msg;
log.debug("Received UserDisconnectedFromGlobalAudio toekn request. Meeting id [{}]", emm.name);
bbbGW.userConnectedToGlobalAudio(emm.voiceConf, emm.userid, emm.name);
bbbGW.userDisconnectedFromGlobalAudio(emm.voiceConf, emm.userid, emm.name);
}
}
} else if (channel.equalsIgnoreCase(MessagingConstants.TO_SYSTEM_CHANNEL)) {

View File

@ -78,6 +78,9 @@ trait PresentationApp {
sharePresentation(msg.presentationID, false);
}
})
outGW.send(new RemovePresentationOutMsg(msg.meetingID, recorded, msg.presentationID))
}
def handleGetPresentationInfo(msg: GetPresentationInfo) {

View File

@ -42,7 +42,7 @@ trait UsersApp {
}
def handleUserDisconnectedFromGlobalAudio(msg: UserDisconnectedFromGlobalAudio) {
// println("*************** Got UserDisconnectedToGlobalAudio message for [" + msg.name + "] ********************" )
println("*************** Got UserDisconnectedToGlobalAudio message for [" + msg.name + "] ********************" )
val user = users.getUser(msg.userid)
user foreach {u =>
val uvo = u.copy(listenOnly=false)

View File

@ -23,6 +23,12 @@ Panel {
titleStyleName: "mypanelTitle";
}
ToolTip {
borderSkin : ClassReference("org.bigbluebutton.skins.ToolTipSkin");
backgroundAlpha : 0.9;
cornerRadius : 3;
}
.mypanelTitle {
color: #444444;
fontFamily: Arial;

View File

@ -23,6 +23,12 @@ Panel {
titleStyleName: "mypanelTitle";
}
ToolTip {
borderSkin : ClassReference("org.bigbluebutton.skins.ToolTipSkin");
backgroundAlpha : 0.9;
cornerRadius : 3;
}
.mypanelTitle {
color: #444444;
fontFamily: Arial;

View File

@ -0,0 +1,141 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.skins
{
import flash.display.Graphics;
import flash.events.Event;
import flash.geom.Point;
import mx.managers.ToolTipManager;
import mx.skins.halo.ToolTipBorder;
public class ToolTipSkin extends ToolTipBorder
{
private static const TOP : String = "top";
private static const BOTTOM : String = "bottom";
private var _arrowPosition : String = TOP;
public function ToolTipSkin() {
super();
visible = false;
addEventListener(Event.ENTER_FRAME, this.enterFrameHandler);
}
private function enterFrameHandler( event : Event ) : void {
this.position();
}
private function position() : void {
if (!stage || !ToolTipManager.currentToolTip || !ToolTipManager.currentTarget)
{
removeEventListener(Event.ENTER_FRAME, this.enterFrameHandler);
return;
}
var speed : Number = 5;
var parentCoords : Point = new Point(ToolTipManager.currentTarget.mouseX, ToolTipManager.currentTarget.mouseY);
var globalPoint : Point = ToolTipManager.currentTarget.localToGlobal(parentCoords);
var xp : Number = globalPoint.x + 5 - (ToolTipManager.currentToolTip.width / 2);
var yp : Number = globalPoint.y + ToolTipManager.currentToolTip.height;
var overhangRight : Number = ToolTipManager.currentToolTip.width + xp;
var overhangBottom : Number = ToolTipManager.currentToolTip.height + yp;
updateArrowPosition(TOP);
if (overhangRight > stage.stageWidth) {
xp = stage.stageWidth - ToolTipManager.currentToolTip.width;
}
if (overhangBottom > stage.height) {
yp = globalPoint.y - ToolTipManager.currentToolTip.height - 10;
updateArrowPosition(BOTTOM);
}
if (xp < 0) {
xp = 0;
}
if ((yp) < 0) {
yp = 0;
}
if (visible) {
ToolTipManager.currentToolTip.x += (xp - ToolTipManager.currentToolTip.x) / speed;
ToolTipManager.currentToolTip.y += (yp - ToolTipManager.currentToolTip.y) / speed;
}
else {
ToolTipManager.currentToolTip.x = xp;
ToolTipManager.currentToolTip.y = yp;
visible = true;
}
}
private function updateArrowPosition( value : String ) : void {
if (_arrowPosition != value) {
_arrowPosition = value;
validateDisplayList();
}
}
//--------------------------------------------------------------------------
//
// Overridden methods
//
//--------------------------------------------------------------------------
override protected function updateDisplayList( w : Number, h : Number ) : void {
super.updateDisplayList(w, h);
var backgroundColor : uint = getStyle("backgroundColor");
var backgroundAlpha : Number = getStyle("backgroundAlpha");
var borderColor : uint = getStyle("borderColor");
var cornerRadius : Number = getStyle("cornerRadius");
var g : Graphics = graphics;
g.clear();
filters = [];
// face
drawRoundRect(
3, 1, w - 6, h - 4, cornerRadius,
backgroundColor, backgroundAlpha)
// top pointer
if (_arrowPosition == TOP) {
g.beginFill(backgroundColor, backgroundAlpha);
g.moveTo((w / 2) - 6, 1);
g.lineTo((w / 2), -10);
g.lineTo((w / 2) + 6, 1);
g.moveTo((w / 2) - 5, -10);
g.endFill();
}
else {
g.beginFill(backgroundColor, backgroundAlpha);
g.moveTo((w / 2) - 6, h - 3);
g.lineTo((w / 2), h + 7);
g.lineTo((w / 2) + 6, h - 3);
g.moveTo((w / 2) - 5, h + 7);
g.endFill();
}
}
}
}

View File

@ -33,6 +33,8 @@ bbb.micSettings.micRecordVolume.toolTip = Set your microphone gain
bbb.micSettings.join = Join Audio
bbb.micSettings.join.toolTip = Join the audio conference
bbb.micSettings.cancel = Cancel
bbb.micSettings.connectingtoecho = Connecting
bbb.micSettings.connectingtoecho.error = Echo Test Error: Please contact administrator.
bbb.micSettings.cancel.toolTip = Cancel joining the audio conference
bbb.micSettings.access.helpButton = Open tutorial videos in a new page.
bbb.micSettings.access.title = Audio Settings. Focus will remain in this audio settings window until the window is closed.
@ -67,6 +69,9 @@ bbb.mainToolbar.recordBtn.toolTip.notRecording = The session isn't being recorde
bbb.mainToolbar.recordBtn.confirm.title = Confirm recording
bbb.mainToolbar.recordBtn.confirm.message.start = Are you sure you want to start recording the session?
bbb.mainToolbar.recordBtn.confirm.message.stop = Are you sure you want to stop recording the session?
bbb.mainToolbar.recordBtn..notification.title = Recording Notification
bbb.mainToolbar.recordBtn..notification.message1 = This meeting is configured for recording.
bbb.mainToolbar.recordBtn..notification.message2 = You must click the Start/Stop Recording button to begin and end the recording.
bbb.mainToolbar.recordingLabel.recording = (Recording)
bbb.mainToolbar.recordingLabel.notRecording = Not Recording
bbb.window.minimizeBtn.toolTip = Minimize

View File

@ -34,21 +34,25 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:Script>
<![CDATA[
import com.asfusion.mate.events.Dispatcher;
import flash.events.Event;
import mx.managers.HistoryManager;
import mx.utils.URLUtil;
import org.bigbluebutton.common.LogUtil;
import org.bigbluebutton.common.events.AddUIComponentToMainCanvas;
import org.bigbluebutton.core.BBB;
import org.bigbluebutton.core.EventBroadcaster;
import org.bigbluebutton.core.managers.ConfigManager2;
import org.bigbluebutton.main.api.ExternalApiCallbacks;
import org.bigbluebutton.main.events.BBBEvent;
import org.bigbluebutton.main.events.ShortcutEvent;
import org.bigbluebutton.main.model.ShortcutOptions;
import org.bigbluebutton.main.views.MainApplicationShell;
import org.bigbluebutton.util.i18n.ResourceUtil;
import com.asfusion.mate.events.Dispatcher;
import flash.events.Event;
import mx.managers.HistoryManager;
import mx.managers.ToolTipManager;
import mx.utils.URLUtil;
import org.bigbluebutton.common.LogUtil;
import org.bigbluebutton.common.events.AddUIComponentToMainCanvas;
import org.bigbluebutton.core.BBB;
import org.bigbluebutton.core.EventBroadcaster;
import org.bigbluebutton.core.managers.ConfigManager2;
import org.bigbluebutton.main.api.ExternalApiCallbacks;
import org.bigbluebutton.main.events.BBBEvent;
import org.bigbluebutton.main.events.ShortcutEvent;
import org.bigbluebutton.main.model.ShortcutOptions;
import org.bigbluebutton.main.views.MainApplicationShell;
import org.bigbluebutton.util.i18n.ResourceUtil;
private var langResources:ResourceUtil = null;
private var globalModifier:String;
@ -66,6 +70,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private var globalDispatcher:Dispatcher = new Dispatcher();
protected function init():void {
setupTooltips();
setupAPI();
EventBroadcaster.getInstance().addEventListener("configLoadedEvent", configLoadedEventHandler);
BBB.initConfigManager();
@ -105,6 +110,17 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
return serverName;
}
/**
* Tooltip effect
*/
private function setupTooltips() : void {
ToolTipManager.scrubDelay = 50;
ToolTipManager.showDelay = 50;
ToolTipManager.hideDelay = 3000;
ToolTipManager.showEffect = fadeIn;
ToolTipManager.hideEffect = fadeOut;
}
/**
* Shortcut Keys
@ -189,6 +205,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]>
</mx:Script>
<mx:Fade id="fadeIn" alphaFrom="0" alphaTo="1" duration="250"/>
<mx:Fade id="fadeOut" alphaFrom="1" alphaTo="0" duration="250"/>
<apimap:ExternalApiEventMap/>
<coreMap:BbbCoreEventMap/>
<userMap:UsersMainEventMap />

View File

@ -98,7 +98,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
}
]]>
</mx:Script>
<mx:VBox width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
<mx:VBox width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5" horizontalAlign="right">
<mx:HBox width="100%">
<mx:TextArea borderSkin="{null}"
editable="false"
@ -125,9 +125,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:VBox>
</mx:HBox>
<mx:HRule width="100%" />
<mx:HBox width="100%" horizontalAlign="right">
<mx:Button id="cancelBtn" label="Cancel"
click="onCancelClicked()" styleName="micSettingsWindowPlaySoundButtonStyle" />
</mx:HBox>
<mx:Button id="cancelBtn" label="Cancel"
click="onCancelClicked()" styleName="micSettingsWindowPlaySoundButtonStyle" />
</mx:VBox>
</mx:TitleWindow>

View File

@ -49,14 +49,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]>
</mx:Script>
<mx:VBox width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
<mx:Canvas width="100%">
<mx:TextArea borderSkin="{null}"
editable="false"
text="Chrome Change Microphone"
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
</mx:Canvas>
<mx:TextArea borderSkin="{null}"
editable="false"
text="Chrome Change Microphone"
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
<mx:HBox width="100%">
<mx:Text width="100%" text="Show the list of microphones."
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
@ -78,8 +76,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:Image source="@Embed('assets/chrome-reload-page.png')"/>
</mx:HBox>
<mx:HRule width="100%"/>
<mx:Spacer height="10"/>
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18">
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="10">
<mx:Text width="100%" text="If no microphone worked, try joining the voice conference using Flash."
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
<mx:Button id="noButton"

View File

@ -54,14 +54,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]>
</mx:Script>
<mx:VBox width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
<mx:Canvas width="100%">
<mx:TextArea borderSkin="{null}"
editable="false"
text="Joining Voice Conference"
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
</mx:Canvas>
<mx:TextArea borderSkin="{null}"
editable="false"
text="Joining Voice Conference"
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
<mx:HBox width="100%">
<mx:Text width="100%" text="Click Allow so Chrome can use microphone in the conference."
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />

View File

@ -58,14 +58,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]>
</mx:Script>
<mx:VBox width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
<mx:Canvas width="100%">
<mx:TextArea borderSkin="{null}"
editable="false"
text="Chrome Microphone Permissions"
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
</mx:Canvas>
<mx:TextArea borderSkin="{null}"
editable="false"
text="Chrome Microphone Permissions"
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
<mx:HBox width="100%">
<mx:Text width="100%" text="Click Allow to give Chrome permission to use your microphone."
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />

View File

@ -52,14 +52,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:Script>
<mx:VBox width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
<mx:Canvas width="100%">
<mx:TextArea borderSkin="{null}"
editable="false"
text="Don't be that guy."
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
</mx:Canvas>
<mx:TextArea borderSkin="{null}"
editable="false"
text="Don't be that guy."
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
<mx:HBox width="100%">
<mx:Text width="100%" text="Recommend you use a headset or earbuds. Otherwise, you will create echo."
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />

View File

@ -64,14 +64,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:Script>
<mx:VBox width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
<mx:Canvas width="100%">
<mx:TextArea borderSkin="{null}"
editable="false"
text="Firefox Change Microphone"
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
</mx:Canvas>
<mx:TextArea borderSkin="{null}"
editable="false"
text="Firefox Change Microphone"
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
<mx:HBox width="100%">
<mx:Text width="100%" text="Choose your mic and then click Share."
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
@ -83,8 +81,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:Image source="@Embed('assets/ff-show-mic.png')"/>
</mx:HBox>
<mx:HRule width="100%"/>
<mx:Spacer height="10"/>
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18">
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="10">
<mx:Text width="100%" text="If no microphone worked, try joining the voice conference using Flash."
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
<mx:Button id="noButton"

View File

@ -53,14 +53,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:Script>
<mx:VBox width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
<mx:Canvas width="100%">
<mx:TextArea borderSkin="{null}"
editable="false"
text="Joining Voice Conference"
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
</mx:Canvas>
<mx:TextArea borderSkin="{null}"
editable="false"
text="Joining Voice Conference"
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
<mx:HBox width="100%">
<mx:Text width="100%" text="Click Share so Firefox can use mic in the conference."
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />

View File

@ -58,14 +58,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:Script>
<mx:VBox width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
<mx:Canvas width="100%">
<mx:TextArea borderSkin="{null}"
editable="false"
text="Firefox Microphone Permissions"
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
</mx:Canvas>
<mx:TextArea borderSkin="{null}"
editable="false"
text="Firefox Microphone Permissions"
styleName="micSettingsWindowTitleStyle"
width="400"
left="0"/>
<mx:HBox width="100%">
<mx:Text width="100%" text="Choose your mic and then click Share."
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />

View File

@ -29,6 +29,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mate:Listener type="{FlashEchoTestStartedEvent.ECHO_TEST_STARTED}" method="handleFlashEchoTestStartedEvent" />
<mate:Listener type="{FlashEchoTestStoppedEvent.ECHO_TEST_STOPPED}" method="handleFlashEchoTestStoppedEvent" />
<mate:Listener type="{FlashEchoTestFailedEvent.ECHO_TEST_FAILED}" method="handleFlashEchoTestFailedEvent" />
<mate:Listener type="{FlashJoinedVoiceConferenceEvent.JOINED_VOICE_CONFERENCE}" method="handleFlashJoinedVoiceConferenceEvent" />
@ -56,6 +57,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
import org.bigbluebutton.modules.phone.PhoneOptions;
import org.bigbluebutton.modules.phone.events.AudioSelectionWindowEvent;
import org.bigbluebutton.modules.phone.events.CallEchoTestAppEvent;
import org.bigbluebutton.modules.phone.events.FlashEchoTestFailedEvent;
import org.bigbluebutton.modules.phone.events.FlashEchoTestHasAudioEvent;
import org.bigbluebutton.modules.phone.events.FlashEchoTestNoAudioEvent;
import org.bigbluebutton.modules.phone.events.FlashEchoTestStartedEvent;
@ -71,12 +73,15 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] private var FLASH_ECHO_TEST_STATE:String = "flashEchoTestState";
[Bindable] private var FLASH_MIC_SETTING:String = "flashMicSettings";
[Bindable] private var FLASH_ECHO_TEST:String = "flashEchoTest";
[Bindable] private var FLASH_MIC_TEST_FAILED_STATE:String = "flashMicTestFailedState";
[Bindable] private var FLASH_MIC_TEST_CONNECTING:String = "connecting";
[Embed(source="assets/audio-test.mp3")]
[Bindable] private var soundClass:Class;
private var sound:Sound = new soundClass() as Sound;
private var soundChannel:SoundChannel;
private var dotTimer:Timer = new Timer(200, 0);
private var micActivityTimer:Timer;
private var mic:Microphone;
private var audioMicLevelDetected:int = 0;
@ -164,7 +169,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private function setupForMicLoopbackTest():void {
setCurrentState(FLASH_MIC_SETTING_STATE);
var tempArr:Array = new Array();
tempArr.push("0%", ResourceUtil.getInstance().getString('bbb.micSettings.micRecordVolume.label'),"100%");
micRecordVolume.labels = tempArr;
@ -201,6 +206,14 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
playingAudio = false;
}
}
private function dotAnimate(e:TimerEvent):void {
if (lblConnectDots.text.length > 5) {
lblConnectDots.text = "";
} else {
lblConnectDots.text += ".";
}
}
private function soundCompleteHandler(e:Event):void {
playingAudio = false;
@ -212,8 +225,16 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
comboMicList.enabled = true;
echoTestButton.enabled = true;
}
private function handleFlashEchoTestFailedEvent(event:FlashEchoTestFailedEvent):void {
doingEchoTest = false;
comboMicList.enabled = true;
echoTestButton.enabled = true;
setupForEchoTestFailed()
}
private function handleFlashEchoTestStartedEvent(event:FlashEchoTestStartedEvent):void {
dotTimer.stop();
echoTestButton.enabled = false;
showEchoTestAudioPrompt();
}
@ -225,7 +246,14 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private function echoTestButtonClickHandler():void {
echoTestButton.enabled = false;
comboMicList.enabled = false;
doingEchoTest = true;
doingEchoTest = true;
setCurrentState(FLASH_MIC_TEST_CONNECTING);
lblConnectMessage.text = ResourceUtil.getInstance().getString('bbb.micSettings.connectingtoecho');
dotTimer.addEventListener(TimerEvent.TIMER, dotAnimate);
dotTimer.start();
dispatchEvent(new FlashStartEchoTestCommand(mic.index, mic.name));
}
@ -277,6 +305,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private function noButtonClicked():void {
trace(LOG + "Echo test failed.");
dispatchEvent(new FlashEchoTestNoAudioEvent());
testMicrophoneLoopback();
setupForMicLoopbackTest();
}
@ -285,6 +314,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
testMicrophoneLoopback();
}
private function setupForEchoTestFailed():void
{
dotTimer.stop();
trace(LOG + "Setting state to " + FLASH_MIC_TEST_FAILED_STATE);
setCurrentState(FLASH_MIC_TEST_FAILED_STATE);
}
]]>
</mx:Script>
@ -297,8 +333,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
</mx:HBox>
<mx:HRule width="100%"/>
<mx:Spacer height="10"/>
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18">
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="10">
<mx:Text width="100%" text="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestMicPrompt')}"
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
<mx:Button id="yesButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestAudioYes')}"
@ -339,6 +374,24 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:AddChild>
</mx:State>
<mx:State name="{FLASH_MIC_TEST_FAILED_STATE}">
<mx:AddChild relativeTo="displayMicNextToThis" position="after" >
<mx:HBox width="100%" height="100%" verticalAlign="middle" horizontalAlign="center">
<mx:Label width="100%" text="{ResourceUtil.getInstance().getString('bbb.micSettings.connectingtoecho.error')}" textAlign="center" styleName="micSettingsWindowHearFromHeadsetLabelStyle" />
</mx:HBox>
</mx:AddChild>
</mx:State>
<mx:State name="{FLASH_MIC_TEST_CONNECTING}">
<mx:AddChild relativeTo="displayMicNextToThis" position="after">
<mx:HBox width="100%" height="100%" verticalAlign="middle" horizontalAlign="center">
<mx:Label id="lblConnectMessage" textAlign="right" styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
<mx:Label id="lblConnectDots" width="20" textAlign="left" styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
</mx:HBox>
</mx:AddChild>
</mx:State>
</mx:states>
<mx:VBox id="mainContainer" width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
@ -365,8 +418,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<!-- Play Sound, Join and Cancel buttons -->
<mx:HRule width="100%"/>
<mx:Spacer height="10"/>
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18">
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="10">
<mx:Button id="echoTestButton" label="Next"
click="echoTestButtonClickHandler()" styleName="micSettingsWindowPlaySoundButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.micSettings.playSound.toolTip')}"/>

View File

@ -95,8 +95,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
tabIndex="{baseIndex}" width="100%" left="0"/>
<mx:HRule width="100%"/>
<mx:Spacer height="20"/>
<mx:HBox verticalAlign="top" width="100%">
<mx:HBox verticalAlign="top" width="100%" paddingTop="20">
<mx:Label width="70%" styleName="lockSettingsDefaultLabelStyle" text="{ResourceUtil.getInstance().getString('bbb.lockSettings.feature')}" fontWeight="bold" />
<mx:Label styleName="lockSettingsDefaultLabelStyle" text="{ResourceUtil.getInstance().getString('bbb.lockSettings.enabled')}" fontWeight="bold" />
</mx:HBox>
@ -147,9 +146,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:HBox>
<mx:HRule width="100%"/>
<mx:Spacer height="20"/>
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18">
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="20">
<mx:Button id="saveBtn" label="{ResourceUtil.getInstance().getString('bbb.lockSettings.save')}"
click="onSaveClicked()" tabIndex="{baseIndex+8}"
toolTip="{ResourceUtil.getInstance().getString('bbb.lockSettings.save.toolTip')}"/>

View File

@ -588,8 +588,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:Label
htmlText="{ResourceUtil.getInstance().getString('bbb.mainshell.copyrightLabel2',[appVersion])}"
id="copyrightLabel2"
selectable="false" />
<mx:Spacer width="20"/>
selectable="false" paddingRight="20"/>
<mx:Spacer width="100%" id="spacer" />
<mx:Label
text="[Tunnelling]"

View File

@ -38,8 +38,8 @@ $Id: $
<mate:Listener type="{ShortcutEvent.MUTE_ME_EVENT}" method="toggleMuteMeState" />
<mate:Listener type="{EventConstants.USER_TALKING}" method="handleUserTalking" />
<mate:Listener type="{LockControlEvent.CHANGED_LOCK_SETTINGS}" method="lockSettingsChanged" />
<mate:Listener type="{BBBEvent.USER_VOICE_JOINED}" method="handleLeftVoiceConferenceEvent" />
<mate:Listener type="{BBBEvent.USER_VOICE_LEFT}" method="handleJoinedVoiceConferenceEvent" />
<mate:Listener type="{BBBEvent.USER_VOICE_JOINED}" method="handleJoinedVoiceConferenceEvent" />
<mate:Listener type="{BBBEvent.USER_VOICE_LEFT}" method="handleLeftVoiceConferenceEvent" />
<mate:Listener type="{BBBEvent.USER_VOICE_MUTED}" method="handleVoiceMutedEvent" />
<mx:Script>

View File

@ -34,19 +34,24 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
mouseOut="onRecordButtonMouseOut(event)" >
<mate:Listener type="{BBBEvent.CHANGE_RECORDING_STATUS}" method="onRecordingStatusChanged" />
<mate:Listener type="{FlashJoinedVoiceConferenceEvent.JOINED_VOICE_CONFERENCE}" method="handleFlashJoinedVoiceConference" />
<mate:Listener type="{WebRTCCallEvent.WEBRTC_CALL_STARTED}" method="handleWebRTCCallStarted" />
<mx:Script>
<![CDATA[
import com.asfusion.mate.events.Dispatcher;
import mx.controls.Alert;
import mx.events.CloseEvent;
import org.bigbluebutton.main.events.BBBEvent;
import org.bigbluebutton.core.managers.UserManager;
import org.bigbluebutton.main.events.BBBEvent;
import org.bigbluebutton.modules.phone.events.FlashJoinedVoiceConferenceEvent;
import org.bigbluebutton.modules.phone.events.WebRTCCallEvent;
import org.bigbluebutton.util.i18n.ResourceUtil;
private var recordingFlag:Boolean;
private var firstAudioJoin:Boolean = true;
private function confirmChangeRecordingStatus():void {
trace("Confirming recording status change!!!!");
@ -116,6 +121,28 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
}
}
private function handleFlashJoinedVoiceConference(e:FlashJoinedVoiceConferenceEvent):void {
showRecordingNotification();
}
private function handleWebRTCCallStarted(e:WebRTCCallEvent):void {
showRecordingNotification();
}
private function showRecordingNotification():void {
if (firstAudioJoin && this.visible && !this.selected && UserManager.getInstance().getConference().amIModerator()) {
var alert:Alert = Alert.show(ResourceUtil.getInstance().getString("bbb.mainToolbar.recordBtn..notification.message1") + "\n\n" + ResourceUtil.getInstance().getString("bbb.mainToolbar.recordBtn..notification.message2"), ResourceUtil.getInstance().getString("bbb.mainToolbar.recordBtn..notification.title"), Alert.OK, this);
var newX:Number = this.x;
var newY:Number = this.y + this.height + 5;
alert.validateNow();
alert.move(newX, newY);
firstAudioJoin = false;
}
}
private function onRecordButtonMouseOver(event:MouseEvent):void {
if (UserManager.getInstance().getConference().amIModerator()) {
this.styleName = this.selected? "recordButtonStyleStop": "recordButtonStyleStart";

View File

@ -164,8 +164,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
</mx:HBox>
<mx:HRule width="100%"/>
<mx:Spacer height="10"/>
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18">
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="10">
<mx:Text width="100%" text="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestMicPrompt')}"
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
<mx:Button id="yesButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestAudioYes')}"

View File

@ -0,0 +1,14 @@
package org.bigbluebutton.modules.phone.events
{
import flash.events.Event;
public class FlashEchoTestFailedEvent extends Event
{
public static const ECHO_TEST_FAILED:String = "flash echo test failed event";
public function FlashEchoTestFailedEvent()
{
super(ECHO_TEST_FAILED, true, false);
}
}
}

View File

@ -1,13 +1,16 @@
package org.bigbluebutton.modules.phone.managers
{
import com.asfusion.mate.events.Dispatcher;
import com.asfusion.mate.events.Dispatcher;
import flash.external.ExternalInterface;
import flash.media.Microphone;
import flash.media.Microphone;
import org.bigbluebutton.core.UsersUtil;
import org.bigbluebutton.core.model.MeetingModel;
import org.bigbluebutton.modules.phone.PhoneOptions;
import org.bigbluebutton.modules.phone.events.FlashCallConnectedEvent;
import org.bigbluebutton.modules.phone.events.FlashCallDisconnectedEvent;
import org.bigbluebutton.modules.phone.events.FlashEchoTestFailedEvent;
import org.bigbluebutton.modules.phone.events.FlashEchoTestHasAudioEvent;
import org.bigbluebutton.modules.phone.events.FlashEchoTestNoAudioEvent;
import org.bigbluebutton.modules.phone.events.FlashEchoTestStartedEvent;
@ -225,7 +228,12 @@
trace(LOG + "handling FlashStopEchoTestCommand, current state: " + state);
if (state == IN_ECHO_TEST) {
hangup();
}
}
else if (state == CALLING_INTO_ECHO_TEST)
{
state = INITED;
hangup();
}
}
public function handleFlashEchoTestHasAudioEvent(event:FlashEchoTestHasAudioEvent):void {
@ -277,6 +285,7 @@
switch (state) {
case IN_CONFERENCE:
state = INITED;
dispatcher.dispatchEvent(new FlashLeftVoiceConferenceEvent());
break;
case ON_LISTEN_ONLY_STREAM:
state = INITED;
@ -292,6 +301,11 @@
trace(LOG + "Flash echo test stopped, now joining the voice conference.");
callIntoVoiceConference();
break;
case CALLING_INTO_ECHO_TEST:
state = INITED;
trace(LOG + "Unsuccessfully called into the echo test application.");
dispatcher.dispatchEvent(new FlashEchoTestFailedEvent());
break;
}
}
@ -305,6 +319,7 @@
trace(LOG + "ignoring join voice conf as usingFlash=[" + usingFlash + "] or eventMic=[" + !event.mic + "]");
}
break;
default:
trace("Ignoring join voice as state=[" + state + "]");
}
@ -316,7 +331,6 @@
// this is the case when the user was connected to webrtc and then leaves the conference
return;
}
hangup();
}

View File

@ -39,13 +39,10 @@
]]>
</mx:Script>
<mx:VBox width="100%" height="100%">
<mx:Spacer height="5"/>
<mx:HBox width="100%" height="25" horizontalAlign="center">
<mx:Spacer width="3"/>
<mx:Label text="{_question}" fontSize="12" styleName="micSettingsWindowTitleStyle"/>
<mx:HBox width="100%" height="25" horizontalAlign="center" paddingTop="5">
<mx:Label text="{_question}" fontSize="12" styleName="micSettingsWindowTitleStyle" paddingLeft="3"/>
</mx:HBox>
<mx:Spacer height="5"/>
<mx:VBox width="100%" height="100%" horizontalAlign="center">
<mx:VBox width="100%" height="100%" horizontalAlign="center" paddingTop="5">
<mx:ColumnChart id="barChart" dataProvider="{_responses}" showDataTips="true" width="100%" height="100%">
<mx:horizontalAxis>
<mx:CategoryAxis dataProvider="{_responses}" categoryField="response" />
@ -55,8 +52,7 @@
</mx:series>
</mx:ColumnChart>
<mx:HBox width="100%" horizontalAlign="center" borderStyle="none">
<mx:Spacer width="5"/>
<mx:Legend dataProvider="{barChart}"/>
<mx:Legend dataProvider="{barChart}" paddingLeft="5"/>
</mx:HBox>
</mx:VBox>
</mx:VBox>

View File

@ -40,13 +40,10 @@
]]>
</mx:Script>
<mx:VBox width="100%" height="100%">
<mx:Spacer height="5"/>
<mx:HBox width="100%" height="25" horizontalAlign="center">
<mx:Spacer width="3"/>
<mx:Label text="{_question}" fontSize="12" styleName="micSettingsWindowTitleStyle"/>
<mx:HBox width="100%" height="25" horizontalAlign="center" paddingTop="5">
<mx:Label text="{_question}" fontSize="12" styleName="micSettingsWindowTitleStyle" paddingLeft="3"/>
</mx:HBox>
<mx:Spacer height="5"/>
<mx:VBox width="100%" height="100%" horizontalAlign="center">
<mx:VBox width="100%" height="100%" horizontalAlign="center" paddingTop="5">
<mx:PieChart id="pieChart" dataProvider="{_responses}" showDataTips="true"
width="100%" height="100%">
<mx:series>
@ -55,9 +52,8 @@
</mx:series>
</mx:PieChart>
<mx:HBox width="100%" horizontalAlign="center" borderStyle="none">
<mx:Spacer width="5"/>
<mx:Legend dataProvider="{pieChart}" direction="horizontal" borderStyle="none"
labelPlacement="left" horizontalGap="10" width="100%" />
labelPlacement="left" horizontalGap="10" width="100%" paddingLeft="5"/>
</mx:HBox>
</mx:VBox>

View File

@ -81,62 +81,41 @@
]]>
</mx:Script>
<mx:HBox width="100%" height="25" horizontalAlign="left">
<mx:Spacer width="3"/>
<mx:Label text="Create New Poll" styleName="micSettingsWindowTitleStyle"/>
<mx:Label text="Create New Poll" styleName="micSettingsWindowTitleStyle" paddingLeft="3"/>
</mx:HBox>
<mx:VBox width="90%" height="90%" horizontalAlign="center" borderStyle="solid" borderThickness="1">
<mx:HBox width="100%" height="20" horizontalAlign="left">
<mx:Spacer width="3"/>
<mx:Label id="titleLabel" text="Title" styleName="presentationNamesLabelStyle"/>
<mx:Label id="titleLabel" text="Title" styleName="presentationNamesLabelStyle" paddingLeft="3"/>
</mx:HBox>
<mx:Spacer height="5"/>
<mx:HBox width="96%" height="25">
<mx:Spacer width="10"/>
<mx:TextInput id="pollTitle" width="100%" text="Type in your title" editable="true" maxChars="250"/>
<mx:HBox width="96%" height="25" paddingTop="5">
<mx:TextInput id="pollTitle" width="100%" text="Type in your title" editable="true" maxChars="250" paddingLeft="10"/>
</mx:HBox>
<mx:Spacer height="3"/>
<mx:HBox width="100%" height="20" horizontalAlign="left">
<mx:Spacer width="3"/>
<mx:Label id="questionLabel" text="Question" styleName="presentationNamesLabelStyle"/>
<mx:HBox width="100%" height="20" horizontalAlign="left" paddingTop="3">
<mx:Label id="questionLabel" text="Question" styleName="presentationNamesLabelStyle" paddingLeft="3"/>
</mx:HBox>
<mx:Spacer height="5"/>
<mx:HBox width="96%" height="75">
<mx:Spacer width="10"/>
<mx:TextArea id="pollQuestion" width="100%" height="100%" wordWrap="true" text="Type in your questions" editable="true" maxChars="1000"/>
<mx:HBox width="96%" height="75" paddingTop="5">
<mx:TextArea id="pollQuestion" width="100%" height="100%" wordWrap="true" text="Type in your questions" editable="true" maxChars="1000" paddingLeft="10"/>
</mx:HBox>
<mx:Spacer height="3"/>
<mx:HBox width="100%" height="20" horizontalAlign="left">
<mx:Spacer width="3"/>
<mx:Label id="answersLabel" text="Answers" styleName="presentationNamesLabelStyle"/>
<mx:HBox width="100%" height="20" horizontalAlign="left" paddingTop="3">
<mx:Label id="answersLabel" text="Answers" styleName="presentationNamesLabelStyle" paddingLeft="3"/>
</mx:HBox>
<mx:HBox width="100%" height="20" horizontalAlign="left">
<mx:Spacer width="10"/>
<mx:Label id="hintAnswersLabel" text="Start every answer with a new line" fontSize="12" styleName="presentationNamesLabelStyle"/>
<mx:Label id="hintAnswersLabel" text="Start every answer with a new line" fontSize="12" styleName="presentationNamesLabelStyle" paddingLeft="10"/>
</mx:HBox>
<mx:Spacer height="5"/>
<mx:HBox width="96%" height="150">
<mx:Spacer width="10"/>
<mx:TextArea id="pollAnswers" width="100%" height="100%" wordWrap="true" text="Answers" maxChars="2000"/>
<mx:HBox width="96%" height="150" paddingTop="5">
<mx:TextArea id="pollAnswers" width="100%" height="100%" wordWrap="true" text="Answers" maxChars="2000" paddingLeft="10"/>
</mx:HBox>
<mx:Spacer height="3"/>
<mx:CheckBox id="multiple_response"
<mx:CheckBox id="multiple_response" paddingTop="3" paddingBottom="5"
label="{ResourceUtil.getInstance().getString('bbb.polling.createPoll.moreThanOneResponse')}"
tabIndex="{baseIndex+4}"/>
<mx:Spacer height="5"/>
</mx:VBox>
<mx:HBox width="100%" height="35" horizontalAlign="right">
<mx:Button label="Create" styleName="presentationUploadShowButtonStyle" click="createPoll()"/>
<mx:Spacer width="5"/>
<mx:Button label="Cancel" styleName="presentationUploadShowButtonStyle" click="close()"/>
<mx:Spacer width="5"/>
<mx:HBox width="100%" height="35" horizontalAlign="right" paddingBottom="5">
<mx:Button label="Create" styleName="presentationUploadShowButtonStyle" click="createPoll()" paddingRight="5"/>
<mx:Button label="Cancel" styleName="presentationUploadShowButtonStyle" click="close()" paddingRight="5"/>
</mx:HBox>
<mx:Spacer height="5"/>
</mx:Panel>

View File

@ -53,40 +53,30 @@
<mx:VBox width="100%" height="50%" borderStyle="solid" borderThickness="1">
<mx:HBox width="100%" height="20" horizontalAlign="left">
<mx:Spacer width="3"/>
<mx:Label id="pollsLabel" text="Select a poll from the list." styleName="presentationNamesLabelStyle"/>
<mx:Label id="pollsLabel" text="Select a poll from the list." styleName="presentationNamesLabelStyle" paddingLeft="3"/>
</mx:HBox>
<mx:Spacer height="5"/>
<mx:HBox width="96%" height="150">
<mx:Spacer width="10"/>
<mx:HBox width="96%" height="150" paddingTop="5" paddingBottom="3">
<mx:List id="pollsList" width="100%" height="100%" alternatingItemColors="[#EFEFEF, #FEFEFE]" allowMultipleSelection="false"
itemRenderer="org.bigbluebutton.modules.polling.views.CreatedPollsRenderer"
dragEnabled="false" dataProvider="{_polls}">
dragEnabled="false" dataProvider="{_polls}" paddingLeft="10">
</mx:List>
</mx:HBox>
<mx:Spacer height="3"/>
</mx:VBox>
<mx:Spacer height="5"/>
<mx:HBox width="100%" height="25" horizontalAlign="left">
<mx:HBox width="100%" height="25" horizontalAlign="left" paddingTop="5">
<mx:Label text="Custom Poll" styleName="micSettingsWindowTitleStyle"/>
</mx:HBox>
<mx:VBox width="100%" height="15%" borderStyle="solid" borderThickness="1">
<mx:HBox width="100%" height="25">
<mx:Spacer width="5"/>
<mx:Label id="customPollsLabel" text="Create a custom poll" styleName="presentationNamesLabelStyle"/>
<mx:Label id="customPollsLabel" text="Create a custom poll" styleName="presentationNamesLabelStyle" paddingLeft="5"/>
</mx:HBox>
<mx:HBox width="100%" height="30" horizontalAlign="center">
<mx:HBox width="100%" height="30" horizontalAlign="center" paddingBottom="3">
<mx:Button label="Create Custom Poll" height="25" click="createPoll()"/>
</mx:HBox>
<mx:Spacer height="3"/>
</mx:VBox>
<mx:Spacer height="5"/>
<mx:HBox width="100%" height="35" horizontalAlign="right">
<mx:HBox width="100%" height="35" horizontalAlign="right" paddingTop="5">
<mx:Button label="Close" styleName="presentationUploadShowButtonStyle" click="close()"/>
</mx:HBox>
</mx:VBox>

View File

@ -88,27 +88,22 @@
<mx:RadioButton groupName="charttype" id="pieChart" label="Pie Chart" value="piechart" width="100" />
</mx:HBox>
-->
<mx:Spacer id="spacer" height="5"/>
<mx:HBox height="5%" width="100%" horizontalAlign="right">
<mx:Spacer width="5"/>
<mx:Label text="Time remaining:" fontSize="12" styleName="micSettingsWindowTitleStyle" visible="true" />
<mx:Label id="timeRemaining" text="{pollTimeRemaining}" fontSize="12" styleName="micSettingsWindowTitleStyle" visible="true" />
<mx:Spacer width="100%"/>
<mx:Button id="btnStop" label="Stop Polling" visible="{_showStopButton}" click="stop()"/>
<mx:Spacer width="5"/>
<mx:Button id="btnClose" label="Close" click="close()"/>
<mx:Spacer width="5"/>
<mx:HBox id="pollResultBox" height="5%" width="100%" horizontalAlign="right" paddingTop="5">
<mx:Label text="Time remaining:" fontSize="12" styleName="micSettingsWindowTitleStyle" visible="true" paddingLeft="5"/>
<mx:Label id="timeRemaining" text="{pollTimeRemaining}" fontSize="12" styleName="micSettingsWindowTitleStyle" visible="true"/>
<mx:Button id="btnStop" label="Stop Polling" visible="{_showStopButton}" click="stop()" paddingRight="5"/>
<mx:Button id="btnClose" label="Close" click="close()" paddingRight="5"/>
</mx:HBox>
</mx:VBox>
<mx:states>
<mx:State name="PieChart" >
<mx:AddChild relativeTo="{spacer}" position="before" >
<mx:AddChild relativeTo="{pollResultBox}" position="before" >
<poll:DisplayResultPieChartPanel width="100%" height="80%" viewModel="{viewModel}" pollID="{pollID}" horizontalAlign="center"/>
</mx:AddChild>
</mx:State>
<mx:State name="BarChart">
<mx:AddChild relativeTo="{spacer}" position="before">
<mx:AddChild relativeTo="{pollResultBox}" position="before">
<poll:DisplayResultBarChartPanel width="100%" height="80%" viewModel="{viewModel}" pollID="{pollID}" horizontalAlign="center"/>
</mx:AddChild>
</mx:State>

View File

@ -90,23 +90,17 @@
</mx:Script>
<mx:HBox width="100%" height="20" horizontalAlign="left">
<mx:Spacer width="3"/>
<mx:Label id="questionLabel" text="Question" styleName="presentationNamesLabelStyle"/>
<mx:Label id="questionLabel" text="Question" styleName="presentationNamesLabelStyle" paddingLeft="3"/>
</mx:HBox>
<mx:Spacer height="5"/>
<mx:HBox width="96%" height="30">
<mx:Spacer width="10"/>
<mx:Label id="questionTextLabel" text="{_question}" fontSize="12" styleName="presentationNamesLabelStyle"/>
<mx:HBox width="96%" height="30" paddingTop="5">
<mx:Label id="questionTextLabel" text="{_question}" fontSize="12" styleName="presentationNamesLabelStyle" paddingLeft="10"/>
</mx:HBox>
<mx:Spacer height="3"/>
<mx:HBox width="100%" height="20" horizontalAlign="left">
<mx:Spacer width="3"/>
<mx:Label id="answersLabel" text="Answers" styleName="presentationNamesLabelStyle"/>
<mx:HBox width="100%" height="20" horizontalAlign="left" paddingTop="3">
<mx:Label id="answersLabel" text="Answers" styleName="presentationNamesLabelStyle" paddingLeft="3"/>
</mx:HBox>
<mx:HBox>
<mx:Spacer width="10"/>
<mx:VBox id="answersBox">
<mx:VBox id="answersBox" paddingLeft="10">
<mx:RadioButtonGroup id="rbGroup" itemClick="handleCard(event);"/>
<!-- Placeholder for the responses -->
</mx:VBox>

View File

@ -79,35 +79,25 @@
]]>
</mx:Script>
<mx:HBox width="100%" height="25" horizontalAlign="left">
<mx:Spacer width="3"/>
<mx:Label text="Take Poll" styleName="micSettingsWindowTitleStyle"/>
<mx:Label text="Take Poll" styleName="micSettingsWindowTitleStyle" paddingLeft="3"/>
</mx:HBox>
<mx:VBox width="90%" height="90%" horizontalAlign="left" borderStyle="solid" borderThickness="1">
<mx:HBox width="100%" height="20" horizontalAlign="left">
<mx:Spacer width="3"/>
<mx:Label id="titleLabel" text="Title" styleName="presentationNamesLabelStyle"/>
<mx:Label id="titleLabel" text="Title" styleName="presentationNamesLabelStyle" paddingLeft="3"/>
</mx:HBox>
<mx:Spacer height="5"/>
<mx:HBox width="96%" height="25">
<mx:Spacer width="10"/>
<mx:Label id="titleTextLabel" text="{_title}" fontSize="12" styleName="presentationNamesLabelStyle"/>
<mx:HBox width="96%" height="25" paddingTop="5">
<mx:Label id="titleTextLabel" text="{_title}" fontSize="12" styleName="presentationNamesLabelStyle" paddingLeft="10"/>
</mx:HBox>
<mx:Spacer height="3"/>
<poll:QuestionRenderer viewModel="{viewModel}" pollID="{pollID}" responseCollector="{responseCollector}"/>
<mx:Spacer height="5"/>
<poll:QuestionRenderer viewModel="{viewModel}" pollID="{pollID}" responseCollector="{responseCollector}" paddingTop="3" paddingBottom="5"/>
</mx:VBox>
<mx:HBox width="100%" height="35" horizontalAlign="right">
<mx:Button label="Submit" styleName="presentationUploadShowButtonStyle" click="onSubmit()"/>
<mx:Spacer width="5"/>
<mx:Button label="Don't Submit" styleName="presentationUploadShowButtonStyle" click="close()"/>
<mx:Spacer width="5"/>
<mx:HBox width="100%" height="35" horizontalAlign="right" paddingBottom="5">
<mx:Button label="Submit" styleName="presentationUploadShowButtonStyle" click="onSubmit()" paddingRight="5"/>
<mx:Button label="Don't Submit" styleName="presentationUploadShowButtonStyle" click="close()" paddingRight="5"/>
</mx:HBox>
<mx:Spacer height="5"/>
</mx:Panel>

View File

@ -133,62 +133,43 @@
]]>
</mx:Script>
<mx:HBox width="100%" height="25" horizontalAlign="left">
<mx:Spacer width="3"/>
<mx:Label text="Update Poll" styleName="micSettingsWindowTitleStyle"/>
<mx:Label text="Update Poll" styleName="micSettingsWindowTitleStyle" paddingLeft="3"/>
</mx:HBox>
<mx:VBox width="90%" height="90%" horizontalAlign="center" borderStyle="solid" borderThickness="1">
<mx:HBox width="100%" height="20" horizontalAlign="left">
<mx:Spacer width="3"/>
<mx:Label id="titleLabel" text="Title" styleName="presentationNamesLabelStyle"/>
<mx:Label id="titleLabel" text="Title" styleName="presentationNamesLabelStyle" paddingLeft="3"/>
</mx:HBox>
<mx:Spacer height="5"/>
<mx:HBox width="96%" height="25">
<mx:Spacer width="10"/>
<mx:TextInput id="pollTitle" width="100%" text="{_title}" editable="true" maxChars="250"/>
<mx:HBox width="96%" height="25" paddingTop="5">
<mx:TextInput id="pollTitle" width="100%" text="{_title}" editable="true" maxChars="250" paddingLeft="10"/>
</mx:HBox>
<mx:Spacer height="3"/>
<mx:HBox width="100%" height="20" horizontalAlign="left">
<mx:Spacer width="3"/>
<mx:Label id="questionLabel" text="Question" styleName="presentationNamesLabelStyle"/>
<mx:HBox width="100%" height="20" horizontalAlign="left" paddingTop="3">
<mx:Label id="questionLabel" text="Question" styleName="presentationNamesLabelStyle" paddingLeft="3"/>
</mx:HBox>
<mx:Spacer height="5"/>
<mx:HBox width="96%" height="75">
<mx:Spacer width="10"/>
<mx:TextArea id="pollQuestion" width="100%" height="100%" wordWrap="true" text="{qvo.question}" editable="true" maxChars="1000"/>
<mx:HBox width="96%" height="75" paddingTop="5">
<mx:TextArea id="pollQuestion" width="100%" height="100%" wordWrap="true" text="{qvo.question}" editable="true" maxChars="1000" paddingLeft="10"/>
</mx:HBox>
<mx:Spacer height="3"/>
<mx:HBox width="100%" height="20" horizontalAlign="left">
<mx:Spacer width="3"/>
<mx:Label id="answersLabel" text="Answers" styleName="presentationNamesLabelStyle"/>
<mx:HBox width="100%" height="20" horizontalAlign="left" paddingLeft="3">
<mx:Label id="answersLabel" text="Answers" styleName="presentationNamesLabelStyle" paddingLeft="3"/>
</mx:HBox>
<mx:HBox width="100%" height="20" horizontalAlign="left">
<mx:Spacer width="10"/>
<mx:Label id="hintAnswersLabel" text="Start every answer with a new line" fontSize="12" styleName="presentationNamesLabelStyle"/>
<mx:Label id="hintAnswersLabel" text="Start every answer with a new line" fontSize="12" styleName="presentationNamesLabelStyle" paddingLeft="10"/>
</mx:HBox>
<mx:Spacer height="5"/>
<mx:HBox width="96%" height="150">
<mx:Spacer width="10"/>
<mx:TextArea id="pollAnswers" width="100%" height="100%" wordWrap="true" text="{_answersText}" maxChars="2000"/>
<mx:HBox width="96%" height="150" paddingTop="5">
<mx:TextArea id="pollAnswers" width="100%" height="100%" wordWrap="true" text="{_answersText}" maxChars="2000" paddingLeft="10"/>
</mx:HBox>
<mx:Spacer height="3"/>
<mx:CheckBox id="multiple_response" selected="{qvo.multiResponse}"
<mx:CheckBox id="multiple_response" selected="{qvo.multiResponse}" paddingTop="3" paddingBottom="5"
label="{ResourceUtil.getInstance().getString('bbb.polling.createPoll.moreThanOneResponse')}"
tabIndex="{baseIndex+4}"/>
<mx:Spacer height="5"/>
</mx:VBox>
<mx:HBox width="100%" height="35" horizontalAlign="right">
<mx:Button label="Update" styleName="presentationUploadShowButtonStyle" click="onUpdate()"/>
<mx:Spacer width="5"/>
<mx:Button label="Cancel" styleName="presentationUploadShowButtonStyle" click="close()"/>
<mx:Spacer width="5"/>
<mx:HBox width="100%" height="35" horizontalAlign="right" paddingBottom="5">
<mx:Button label="Update" styleName="presentationUploadShowButtonStyle" click="onUpdate()" paddingRight="5"/>
<mx:Button label="Cancel" styleName="presentationUploadShowButtonStyle" click="close()" paddingRight="5"/>
</mx:HBox>
<mx:Spacer height="5"/>
</mx:Panel>

View File

@ -9,6 +9,8 @@ package org.bigbluebutton.modules.present.services
import org.bigbluebutton.modules.present.events.PageChangedEvent;
import org.bigbluebutton.modules.present.events.PageMovedEvent;
import org.bigbluebutton.modules.present.events.PresentationChangedEvent;
import org.bigbluebutton.modules.present.events.RemovePresentationEvent;
import org.bigbluebutton.modules.present.events.UploadEvent;
import org.bigbluebutton.modules.present.model.Page;
import org.bigbluebutton.modules.present.model.Presentation;
import org.bigbluebutton.modules.present.model.PresentationModel;
@ -149,5 +151,18 @@ package org.bigbluebutton.modules.present.services
trace(LOG + "Switching presentation but presentation [" + presVO.id + "] is not current [" + presVO.isCurrent() + "]");
}
}
public function removePresentation(presentationID:String):void {
var removedEvent:RemovePresentationEvent = new RemovePresentationEvent(RemovePresentationEvent.PRESENTATION_REMOVED_EVENT);
removedEvent.presentationName = presentationID;
dispatcher.dispatchEvent(removedEvent);
if(presentationID == model.getCurrentPresentation().id) {
var uploadEvent:UploadEvent = new UploadEvent(UploadEvent.CLEAR_PRESENTATION);
dispatcher.dispatchEvent(uploadEvent);
}
model.removePresentation(presentationID);
}
}
}

View File

@ -197,10 +197,12 @@ package org.bigbluebutton.modules.present.services.messaging
}
private function handleRemovePresentationCallback(msg:Object):void {
trace(LOG + "***TODO: handleRemovePresentationCallback " + msg.msg + " **** \n");
var e:RemovePresentationEvent = new RemovePresentationEvent(RemovePresentationEvent.PRESENTATION_REMOVED_EVENT);
e.presentationName = msg.presentationID;
// dispatcher.dispatchEvent(e);
trace(LOG + "***DOING: handleRemovePresentationCallback " + msg.msg + " **** \n");
var map:Object = JSON.parse(msg.msg);
if(map.hasOwnProperty("presentationID")) {
service.removePresentation(map.presentationID);
}
}
private function handleConversionCompletedUpdateMessageCallback(msg:Object) : void {

View File

@ -39,15 +39,18 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mate:Listener type="{ConversionUnsupportedDocEvent.UNSUPPORTED_DOC}" method="handleUnsupportedDocument"/>
<mate:Listener type="{ConversionPageCountError.PAGE_COUNT_ERROR}" method="handlePageCountFailed"/>
<mate:Listener type="{ConversionPageCountMaxed.PAGE_COUNT_MAXED}" method="handlePageCountExceeded"/>
<mate:Listener type="{RemovePresentationEvent.PRESENTATION_REMOVED_EVENT}" method="handlePresentationRemoved" />
<mx:Script>
<![CDATA[
import com.asfusion.mate.events.Dispatcher;
import mx.collections.*;
import mx.events.FlexEvent;
import mx.events.ValidationResultEvent;
import mx.managers.PopUpManager;
import mx.utils.*;
import mx.validators.*;
import mx.validators.*;
import org.bigbluebutton.common.Images;
import org.bigbluebutton.common.LogUtil;
import org.bigbluebutton.modules.present.commands.UploadFileCommand;
@ -280,6 +283,15 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private function enableClosing():void {
okCancelBtn.enabled = true;
}
private function handlePresentationRemoved(e:RemovePresentationEvent):void {
for(var i:int = 0; i < presentationNamesAC.length; i++) {
if(e.presentationName == presentationNamesAC.getItemAt(i).id) {
presentationNamesAC.removeItemAt(i);
return;
}
}
}
]]>
</mx:Script>

View File

@ -479,11 +479,17 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private function clearPresentation(e:UploadEvent):void{
slideView.visible = false;
slideView.visible = false;
slideView.slideLoader.source = null;
slideView.setSelectedSlide(0);
btnSlideNum.label = "";
displaySlideNavigationControls(false);
backButton.visible = false;
forwardButton.visible = false;
zoomSlider.visible = false;
btnSlideNum.visible = false;
btnFitToWidth.visible = false;
btnFitToPage.visible = false;
// Change the title of the window.
currentPresentation = ResourceUtil.getInstance().getString('bbb.presentation.title');

View File

@ -190,8 +190,8 @@ package org.bigbluebutton.modules.present.ui.views.models
}
public function onMove(deltaX:Number, deltaY:Number):void {
_calcPageX += deltaX;
_calcPageY += deltaY;
_calcPageX += deltaX / MYSTERY_NUM;
_calcPageY += deltaY / MYSTERY_NUM;
onResizeMove();
calcViewedRegion();

View File

@ -20,7 +20,7 @@
$Id: $
-->
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"
<mx:Box xmlns:mx="http://www.adobe.com/2006/mxml"
verticalScrollPolicy="off" horizontalScrollPolicy="off">
<mx:Script>
<![CDATA[
@ -31,4 +31,4 @@
fontWeight="{data.me ? 'bold' : 'normal'}"
color="{data.me ? 0x003399 : 0x000000}"
toolTip="{data.name}"/>
</mx:HBox>
</mx:Box>

View File

@ -227,13 +227,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:Script>
<mx:Button id="muteUnmuteBtn" visible="false" click="onMuteUnmuteClicked(event)"
width="{BUTTONS_SIZE}" height="{BUTTONS_SIZE}" styleName="videoUnmutedButtonStyle"/>
<mx:Spacer width="2"/>
<mx:Button id="switchPresenter" visible="false" click="onSwitchPresenterClicked(event)"
width="{BUTTONS_SIZE}" height="{BUTTONS_SIZE}" styleName="videoSwitchPresenterButtonStyle"/>
<mx:Spacer width="2"/>
width="{BUTTONS_SIZE}" height="{BUTTONS_SIZE}" styleName="videoSwitchPresenterButtonStyle" paddingTop="2"/>
<mx:Button id="ejectUserBtn" visible="false" click="onKickUserClicked(event)"
width="{BUTTONS_SIZE}" height="{BUTTONS_SIZE}" styleName="videoEjectUserButtonStyle"/>
<mx:Spacer width="2"/>
width="{BUTTONS_SIZE}" height="{BUTTONS_SIZE}" styleName="videoEjectUserButtonStyle" paddingTop="2"/>
<mx:Button id="privateChatBtn" click="onPrivateChatClicked(event)"
width="{BUTTONS_SIZE}" height="{BUTTONS_SIZE}" styleName="videoPrivateChatButtonStyle"/>
width="{BUTTONS_SIZE}" height="{BUTTONS_SIZE}" styleName="videoPrivateChatButtonStyle" paddingTop="2"/>
</mx:HBox>

View File

@ -348,8 +348,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<wbBtns:PanZoomButton id="panzoomBtn"
tabIndex="{baseIndex}"
visible="{showWhiteboardToolbar}"/>
<mx:Spacer height="10" visible="{showWhiteboardToolbar}"/>
<wbBtns:ScribbleButton id="scribbleBtn"
<wbBtns:ScribbleButton id="scribbleBtn" paddingLeft="{showWhiteboardToolbar ? 10 : 0}"
tabIndex="{baseIndex+1}"
visible="{showWhiteboardToolbar}"/>
<wbBtns:RectangleButton id="rectangleBtn"
@ -368,15 +367,15 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
tabIndex="{baseIndex+6}"
visible="{showWhiteboardToolbar}"/>
<mx:Spacer height="5" visible="{showWhiteboardToolbar}"/>
<wbBtns:ClearButton id="clearBtn"
tabIndex="{baseIndex+7}"
visible="{showWhiteboardToolbar}"/>
visible="{showWhiteboardToolbar}"
paddingLeft="{showWhiteboardToolbar ? 5 : 0}"/>
<wbBtns:UndoButton id="undoBtn"
tabIndex="{baseIndex+8}"
visible="{showWhiteboardToolbar}"/>
visible="{showWhiteboardToolbar}"
paddingRight="{showWhiteboardToolbar ? 5 : 0}"/>
<mx:Spacer height="5" visible="{showWhiteboardToolbar}"/>
<!--
Properties that were removed from original color picker: