Started the GUI implementation of AudioSettingsView.
This commit is contained in:
parent
c8e34b199c
commit
1fd917eec7
@ -10,6 +10,8 @@ package org.bigbluebutton.air.main.views {
|
||||
private var _background:Rect;
|
||||
|
||||
public function TopToolbarAIR() {
|
||||
super();
|
||||
|
||||
_background = new Rect();
|
||||
_background.percentHeight = 100;
|
||||
_background.percentWidth = 100;
|
||||
|
@ -2,9 +2,13 @@ package org.bigbluebutton.air.settings {
|
||||
|
||||
import org.bigbluebutton.air.settings.views.SettingsViewMediatorAIR;
|
||||
import org.bigbluebutton.air.settings.views.TopToolbarMediatorSettings;
|
||||
import org.bigbluebutton.air.settings.views.TopToolbarMediatorSubSettings;
|
||||
import org.bigbluebutton.air.settings.views.TopToolbarSettings;
|
||||
import org.bigbluebutton.air.settings.views.TopToolbarSubSettings;
|
||||
import org.bigbluebutton.air.settings.views.audio.AudioSettingsViewMediatorAIR;
|
||||
import org.bigbluebutton.lib.main.views.TopToolbarBase;
|
||||
import org.bigbluebutton.lib.settings.views.SettingsViewBase;
|
||||
import org.bigbluebutton.lib.settings.views.audio.AudioSettingsViewBase;
|
||||
|
||||
import robotlegs.bender.extensions.matching.TypeMatcher;
|
||||
import robotlegs.bender.extensions.mediatorMap.api.IMediatorMap;
|
||||
@ -28,7 +32,9 @@ package org.bigbluebutton.air.settings {
|
||||
*/
|
||||
private function mediators():void {
|
||||
mediatorMap.map(SettingsViewBase).toMediator(SettingsViewMediatorAIR);
|
||||
mediatorMap.map(AudioSettingsViewBase).toMediator(AudioSettingsViewMediatorAIR);
|
||||
mediatorMap.mapMatcher(new TypeMatcher().allOf(TopToolbarBase, TopToolbarSettings)).toMediator(TopToolbarMediatorSettings);
|
||||
mediatorMap.mapMatcher(new TypeMatcher().allOf(TopToolbarBase, TopToolbarSubSettings)).toMediator(TopToolbarMediatorSubSettings);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,18 @@
|
||||
package org.bigbluebutton.air.settings.views {
|
||||
import flash.events.MouseEvent;
|
||||
|
||||
import org.bigbluebutton.air.common.PageEnum;
|
||||
import org.bigbluebutton.air.main.views.TopToolbarMediatorAIR;
|
||||
|
||||
public class TopToolbarMediatorSubSettings extends TopToolbarMediatorAIR {
|
||||
|
||||
override protected function leftButtonClickHandler(e:MouseEvent):void {
|
||||
uiSession.pushPage(PageEnum.SETTINGS);
|
||||
}
|
||||
|
||||
override protected function rightButtonClickHandler(e:MouseEvent):void {
|
||||
// @todo: add save logic
|
||||
uiSession.pushPage(PageEnum.SETTINGS);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package org.bigbluebutton.air.settings.views {
|
||||
import mx.core.FlexGlobals;
|
||||
|
||||
import org.bigbluebutton.air.main.views.TopToolbarAIR;
|
||||
|
||||
public class TopToolbarSubSettings extends TopToolbarAIR {
|
||||
public function TopToolbarSubSettings() {
|
||||
super();
|
||||
|
||||
leftButton.styleName = "icon-left-arrow topButton topLeftButton";
|
||||
rightButton.styleName = "topButton topRightButton";
|
||||
}
|
||||
|
||||
override protected function updateDisplayList(w:Number, h:Number):void {
|
||||
super.updateDisplayList(w, h);
|
||||
rightButton.setStyle("iconFont", FlexGlobals.topLevelApplication["getStyle"]("fontFamily"));
|
||||
rightButton.setStyle("fontFamily", FlexGlobals.topLevelApplication["getStyle"]("fontFamily"));
|
||||
rightButton.label = "SAVE";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,41 +1,32 @@
|
||||
package org.bigbluebutton.air.settings.views.audio {
|
||||
|
||||
import spark.components.Button;
|
||||
import spark.components.HSlider;
|
||||
import spark.components.ToggleSwitch;
|
||||
import spark.primitives.Rect;
|
||||
import spark.layouts.HorizontalAlign;
|
||||
import spark.layouts.VerticalLayout;
|
||||
|
||||
public class AudioSettingsView extends AudioSettingsViewBase implements IAudioSettingsView {
|
||||
import org.bigbluebutton.air.common.views.NoTabView;
|
||||
import org.bigbluebutton.air.main.views.TopToolbarAIR;
|
||||
import org.bigbluebutton.air.settings.views.TopToolbarSubSettings;
|
||||
import org.bigbluebutton.lib.settings.views.audio.AudioSettingsViewBase;
|
||||
|
||||
public class AudioSettingsView extends NoTabView {
|
||||
private var _settingsView:AudioSettingsViewBase;
|
||||
|
||||
public function dispose():void {
|
||||
public function AudioSettingsView() {
|
||||
super();
|
||||
|
||||
var vLayout:VerticalLayout = new VerticalLayout();
|
||||
vLayout.gap = 0;
|
||||
vLayout.horizontalAlign = HorizontalAlign.CENTER;
|
||||
layout = vLayout;
|
||||
|
||||
_settingsView = new AudioSettingsViewBase();
|
||||
_settingsView.percentHeight = 100;
|
||||
_settingsView.percentWidth = 100;
|
||||
addElement(_settingsView);
|
||||
}
|
||||
|
||||
public function get enableMic():ToggleSwitch {
|
||||
return enableMic0;
|
||||
}
|
||||
|
||||
public function get enableAudio():ToggleSwitch {
|
||||
return enableAudio0;
|
||||
}
|
||||
|
||||
public function get enablePushToTalk():ToggleSwitch {
|
||||
return enablePushToTalk0;
|
||||
}
|
||||
|
||||
public function get continueBtn():Button {
|
||||
return continueToMeeting;
|
||||
}
|
||||
|
||||
public function get gainSlider():HSlider {
|
||||
return gainSlider0;
|
||||
}
|
||||
|
||||
public function get micActivity():Rect {
|
||||
return micActivity0;
|
||||
}
|
||||
|
||||
public function get micActivityMask():Rect {
|
||||
return micActivityMask0;
|
||||
override protected function createToolbar():TopToolbarAIR {
|
||||
return new TopToolbarSubSettings();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,125 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<views:NoTabView xmlns:fx="http://ns.adobe.com/mxml/2009"
|
||||
xmlns:s="library://ns.adobe.com/flex/spark"
|
||||
xmlns:mx="library://ns.adobe.com/flex/mx"
|
||||
xmlns:views="org.bigbluebutton.air.common.views.*"
|
||||
styleName="audioSettings">
|
||||
|
||||
<s:Scroller width="100%"
|
||||
height="100%">
|
||||
<s:VGroup width="100%"
|
||||
height="100%"
|
||||
horizontalAlign="center">
|
||||
|
||||
|
||||
<s:Line width="90%">
|
||||
<s:stroke>
|
||||
<s:SolidColorStroke color="{getStyle('lineColor')}"
|
||||
weight="{getStyle('lineWeight')}" />
|
||||
</s:stroke>
|
||||
</s:Line>
|
||||
<s:HGroup width="90%"
|
||||
height="7%"
|
||||
verticalAlign="middle"
|
||||
horizontalAlign="right">
|
||||
<s:Label width="100%"
|
||||
text="{resourceManager.getString('resources', 'audioSettings.enableAudio')}" />
|
||||
<s:ToggleSwitch id="enableAudio0" />
|
||||
</s:HGroup>
|
||||
<s:Line width="90%">
|
||||
<s:stroke>
|
||||
<s:SolidColorStroke color="{getStyle('lineColor')}"
|
||||
weight="{getStyle('lineWeight')}" />
|
||||
</s:stroke>
|
||||
</s:Line>
|
||||
<s:HGroup width="90%"
|
||||
height="7%"
|
||||
verticalAlign="middle"
|
||||
horizontalAlign="right">
|
||||
<s:Label width="100%"
|
||||
text="{resourceManager.getString('resources', 'audioSettings.enableMic')}" />
|
||||
<s:ToggleSwitch id="enableMic0" />
|
||||
</s:HGroup>
|
||||
<s:Line width="90%">
|
||||
<s:stroke>
|
||||
<s:SolidColorStroke color="{getStyle('lineColor')}"
|
||||
weight="{getStyle('lineWeight')}" />
|
||||
</s:stroke>
|
||||
</s:Line>
|
||||
<s:HGroup width="90%"
|
||||
height="7%"
|
||||
verticalAlign="middle"
|
||||
horizontalAlign="right">
|
||||
<s:Label width="100%"
|
||||
text="{resourceManager.getString('resources', 'audioSettings.pushToTalk')}" />
|
||||
<s:ToggleSwitch id="enablePushToTalk0" />
|
||||
</s:HGroup>
|
||||
<s:Line width="90%">
|
||||
<s:stroke>
|
||||
<s:SolidColorStroke color="{getStyle('lineColor')}"
|
||||
weight="{getStyle('lineWeight')}" />
|
||||
</s:stroke>
|
||||
</s:Line>
|
||||
|
||||
|
||||
<s:HGroup width="90%"
|
||||
height="7%"
|
||||
verticalAlign="middle"
|
||||
horizontalAlign="right">
|
||||
<s:Label width="100%"
|
||||
text="{resourceManager.getString('resources', 'audioSettings.micGain')}" />
|
||||
|
||||
<s:Rect id="micActivity0"
|
||||
height="{gainSlider0.height/2}"
|
||||
width="{gainSlider0.width}"
|
||||
includeInLayout="false"
|
||||
x="{gainSlider0.x}"
|
||||
y="{gainSlider0.y + micActivity0.height/2}">
|
||||
<s:fill>
|
||||
<s:LinearGradient>
|
||||
<s:GradientEntry color="{getStyle('greenColor')}"
|
||||
ratio="0.00" />
|
||||
<s:GradientEntry color="{getStyle('yellowColor')}"
|
||||
ratio="0.8" />
|
||||
<s:GradientEntry color="{getStyle('redColor')}"
|
||||
ratio="1" />
|
||||
|
||||
</s:LinearGradient>
|
||||
</s:fill>
|
||||
</s:Rect>
|
||||
|
||||
<s:Rect id="micActivityMask0"
|
||||
height="{micActivity0.height}"
|
||||
width="{micActivity0.width}"
|
||||
includeInLayout="false"
|
||||
x="{micActivity0.x}"
|
||||
y="{micActivity0.y}">
|
||||
<s:fill>
|
||||
<s:SolidColor color="#FFFFFF" />
|
||||
</s:fill>
|
||||
</s:Rect>
|
||||
|
||||
|
||||
<s:HSlider id="gainSlider0"
|
||||
width="90%"
|
||||
value="5"
|
||||
skinClass="spark.skins.android4.HSliderSkin" />
|
||||
</s:HGroup>
|
||||
<s:Line width="90%">
|
||||
<s:stroke>
|
||||
<s:SolidColorStroke color="{getStyle('lineColor')}"
|
||||
weight="{getStyle('lineWeight')}" />
|
||||
</s:stroke>
|
||||
</s:Line>
|
||||
|
||||
|
||||
<s:Spacer height="10%" />
|
||||
|
||||
<s:Button id="continueToMeeting"
|
||||
width="90%"
|
||||
label="{resourceManager.getString('resources', 'audioSettings.continue')}"
|
||||
styleName="userSettingsButton logoutButton contentFontSize" />
|
||||
|
||||
</s:VGroup>
|
||||
</s:Scroller>
|
||||
</views:NoTabView>
|
@ -1,156 +0,0 @@
|
||||
package org.bigbluebutton.air.settings.views.audio {
|
||||
|
||||
import flash.events.Event;
|
||||
import flash.events.MouseEvent;
|
||||
import flash.events.TimerEvent;
|
||||
import flash.utils.Timer;
|
||||
|
||||
import mx.core.FlexGlobals;
|
||||
import mx.resources.ResourceManager;
|
||||
|
||||
import org.bigbluebutton.air.main.models.IUISession;
|
||||
import org.bigbluebutton.lib.common.models.ISaveData;
|
||||
import org.bigbluebutton.lib.main.models.IUserSession;
|
||||
import org.bigbluebutton.lib.user.models.User;
|
||||
import org.bigbluebutton.lib.user.models.UserList;
|
||||
import org.bigbluebutton.lib.voice.commands.ShareMicrophoneSignal;
|
||||
|
||||
import robotlegs.bender.bundles.mvcs.Mediator;
|
||||
|
||||
public class AudioSettingsViewMediator extends Mediator {
|
||||
|
||||
[Inject]
|
||||
public var view:IAudioSettingsView;
|
||||
|
||||
[Inject]
|
||||
public var userSession:IUserSession;
|
||||
|
||||
[Inject]
|
||||
public var userUISession:IUISession;
|
||||
|
||||
[Inject]
|
||||
public var saveData:ISaveData;
|
||||
|
||||
[Inject]
|
||||
public var shareMicrophoneSignal:ShareMicrophoneSignal;
|
||||
|
||||
private var micActivityTimer:Timer = null;
|
||||
|
||||
override public function initialize():void {
|
||||
userSession.userList.userChangeSignal.add(userChangeHandler);
|
||||
FlexGlobals.topLevelApplication.topActionBar.pageName.text = ResourceManager.getInstance().getString('resources', 'audioSettings.title');
|
||||
var userMe:User = userSession.userList.me;
|
||||
view.continueBtn.addEventListener(MouseEvent.CLICK, onContinueClick);
|
||||
view.enableAudio.addEventListener(Event.CHANGE, onEnableAudioClick);
|
||||
view.enableMic.addEventListener(Event.CHANGE, onEnableMicClick);
|
||||
view.enablePushToTalk.addEventListener(Event.CHANGE, onEnablePushToTalkClick);
|
||||
view.gainSlider.addEventListener(Event.CHANGE, gainChange);
|
||||
userSession.lockSettings.disableMicSignal.add(disableMic);
|
||||
disableMic(userSession.lockSettings.disableMic && userMe.role != User.MODERATOR && !userMe.presenter && userMe.locked);
|
||||
view.enableAudio.selected = (userMe.voiceJoined || userMe.listenOnly);
|
||||
view.enablePushToTalk.enabled = view.enableMic.selected = userMe.voiceJoined;
|
||||
view.enablePushToTalk.selected = (userSession.pushToTalk || userSession.phoneOptions.autoJoin);
|
||||
FlexGlobals.topLevelApplication.topActionBar.backBtn.visible = true;
|
||||
FlexGlobals.topLevelApplication.topActionBar.profileBtn.visible = false;
|
||||
loadMicGain();
|
||||
micActivityTimer = new Timer(100);
|
||||
micActivityTimer.addEventListener(TimerEvent.TIMER, micActivity);
|
||||
micActivityTimer.start();
|
||||
view.continueBtn.visible = userSession.phoneOptions.autoJoin;
|
||||
}
|
||||
|
||||
private function loadMicGain():void {
|
||||
var gain:Number = saveData.read("micGain") as Number;
|
||||
if (!isNaN(gain)) {
|
||||
view.gainSlider.value = gain / 10;
|
||||
}
|
||||
}
|
||||
|
||||
private function setMicGain(gain:Number):void {
|
||||
if (userSession.voiceStreamManager) {
|
||||
userSession.voiceStreamManager.setDefaultMicGain(gain);
|
||||
if (!userSession.pushToTalk && userSession.voiceStreamManager.mic) {
|
||||
userSession.voiceStreamManager.mic.gain = gain;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function gainChange(e:Event):void {
|
||||
var gain:Number = e.target.value * 10
|
||||
saveData.save("micGain", gain);
|
||||
setMicGain(gain);
|
||||
}
|
||||
|
||||
private function micActivity(e:TimerEvent):void {
|
||||
if (userSession.voiceStreamManager && userSession.voiceStreamManager.mic) {
|
||||
view.micActivityMask.width = view.gainSlider.width - (view.gainSlider.width * userSession.voiceStreamManager.mic.activityLevel / 100);
|
||||
view.micActivityMask.x = view.micActivity.x + view.micActivity.width - view.micActivityMask.width;
|
||||
}
|
||||
}
|
||||
|
||||
private function disableMic(disable:Boolean):void {
|
||||
if (disable) {
|
||||
view.enableMic.enabled = false;
|
||||
view.enableMic.selected = false;
|
||||
} else {
|
||||
view.enableMic.enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private function onContinueClick(event:Event):void {
|
||||
userUISession.popPage();
|
||||
}
|
||||
|
||||
private function onEnableAudioClick(event:Event):void {
|
||||
if (!view.enableAudio.selected) {
|
||||
view.enableMic.selected = false;
|
||||
view.enablePushToTalk.enabled = false;
|
||||
userSession.pushToTalk = false;
|
||||
}
|
||||
var audioOptions:Object = new Object();
|
||||
audioOptions.shareMic = userSession.userList.me.voiceJoined = view.enableMic.selected && view.enableAudio.selected;
|
||||
audioOptions.listenOnly = userSession.userList.me.listenOnly = !view.enableMic.selected && view.enableAudio.selected;
|
||||
shareMicrophoneSignal.dispatch(audioOptions);
|
||||
}
|
||||
|
||||
private function onEnableMicClick(event:Event):void {
|
||||
view.enablePushToTalk.enabled = view.enableMic.selected;
|
||||
if (view.enableMic.selected) {
|
||||
view.enableAudio.selected = true;
|
||||
}
|
||||
userSession.pushToTalk = (view.enablePushToTalk.selected && view.enablePushToTalk.enabled);
|
||||
var audioOptions:Object = new Object();
|
||||
audioOptions.shareMic = userSession.userList.me.voiceJoined = view.enableMic.selected && view.enableAudio.selected;
|
||||
audioOptions.listenOnly = userSession.userList.me.listenOnly = !view.enableMic.selected && view.enableAudio.selected;
|
||||
shareMicrophoneSignal.dispatch(audioOptions);
|
||||
}
|
||||
|
||||
private function onEnablePushToTalkClick(event:Event):void {
|
||||
userSession.pushToTalk = view.enablePushToTalk.selected;
|
||||
}
|
||||
|
||||
private function userChangeHandler(user:User, type:int):void {
|
||||
if (user.me) {
|
||||
if (type == UserList.LISTEN_ONLY) {
|
||||
view.enableAudio.selected = user.voiceJoined || user.listenOnly;
|
||||
view.enableMic.selected = user.voiceJoined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override public function destroy():void {
|
||||
super.destroy();
|
||||
userSession.lockSettings.disableMicSignal.remove(disableMic);
|
||||
view.continueBtn.removeEventListener(MouseEvent.CLICK, onContinueClick);
|
||||
view.enableAudio.removeEventListener(Event.CHANGE, onEnableAudioClick);
|
||||
view.enableMic.removeEventListener(Event.CHANGE, onEnableMicClick);
|
||||
if (micActivityTimer) {
|
||||
micActivityTimer.removeEventListener(TimerEvent.TIMER, micActivity);
|
||||
}
|
||||
view.enablePushToTalk.removeEventListener(Event.CHANGE, onEnablePushToTalkClick);
|
||||
view.gainSlider.removeEventListener(Event.CHANGE, gainChange);
|
||||
userSession.userList.userChangeSignal.remove(userChangeHandler);
|
||||
userSession.phoneOptions.autoJoin = false;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,145 @@
|
||||
package org.bigbluebutton.air.settings.views.audio {
|
||||
import flash.utils.Timer;
|
||||
|
||||
import org.bigbluebutton.air.main.models.IUISession;
|
||||
import org.bigbluebutton.lib.common.models.ISaveData;
|
||||
import org.bigbluebutton.lib.main.models.IUserSession;
|
||||
import org.bigbluebutton.lib.settings.views.audio.AudioSettingsViewMediator;
|
||||
import org.bigbluebutton.lib.voice.commands.ShareMicrophoneSignal;
|
||||
|
||||
public class AudioSettingsViewMediatorAIR extends AudioSettingsViewMediator {
|
||||
|
||||
[Inject]
|
||||
public var userSession:IUserSession;
|
||||
|
||||
[Inject]
|
||||
public var userUISession:IUISession;
|
||||
|
||||
[Inject]
|
||||
public var saveData:ISaveData;
|
||||
|
||||
[Inject]
|
||||
public var shareMicrophoneSignal:ShareMicrophoneSignal;
|
||||
|
||||
private var micActivityTimer:Timer = null;
|
||||
|
||||
override public function initialize():void {
|
||||
/* userSession.userList.userChangeSignal.add(userChangeHandler);
|
||||
FlexGlobals.topLevelApplication.topActionBar.pageName.text = ResourceManager.getInstance().getString('resources', 'audioSettings.title');
|
||||
var userMe:User = userSession.userList.me;
|
||||
view.continueBtn.addEventListener(MouseEvent.CLICK, onContinueClick);
|
||||
view.enableAudio.addEventListener(Event.CHANGE, onEnableAudioClick);
|
||||
view.enableMic.addEventListener(Event.CHANGE, onEnableMicClick);
|
||||
view.enablePushToTalk.addEventListener(Event.CHANGE, onEnablePushToTalkClick);
|
||||
view.gainSlider.addEventListener(Event.CHANGE, gainChange);
|
||||
userSession.lockSettings.disableMicSignal.add(disableMic);
|
||||
disableMic(userSession.lockSettings.disableMic && userMe.role != User.MODERATOR && !userMe.presenter && userMe.locked);
|
||||
view.enableAudio.selected = (userMe.voiceJoined || userMe.listenOnly);
|
||||
view.enablePushToTalk.enabled = view.enableMic.selected = userMe.voiceJoined;
|
||||
view.enablePushToTalk.selected = (userSession.pushToTalk || userSession.phoneOptions.autoJoin);
|
||||
FlexGlobals.topLevelApplication.topActionBar.backBtn.visible = true;
|
||||
FlexGlobals.topLevelApplication.topActionBar.profileBtn.visible = false;
|
||||
loadMicGain();
|
||||
micActivityTimer = new Timer(100);
|
||||
micActivityTimer.addEventListener(TimerEvent.TIMER, micActivity);
|
||||
micActivityTimer.start();
|
||||
view.continueBtn.visible = userSession.phoneOptions.autoJoin;
|
||||
*/
|
||||
}
|
||||
/*
|
||||
private function loadMicGain():void {
|
||||
var gain:Number = saveData.read("micGain") as Number;
|
||||
if (!isNaN(gain)) {
|
||||
view.gainSlider.value = gain / 10;
|
||||
}
|
||||
}
|
||||
|
||||
private function setMicGain(gain:Number):void {
|
||||
if (userSession.voiceStreamManager) {
|
||||
userSession.voiceStreamManager.setDefaultMicGain(gain);
|
||||
if (!userSession.pushToTalk && userSession.voiceStreamManager.mic) {
|
||||
userSession.voiceStreamManager.mic.gain = gain;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function gainChange(e:Event):void {
|
||||
var gain:Number = e.target.value * 10
|
||||
saveData.save("micGain", gain);
|
||||
setMicGain(gain);
|
||||
}
|
||||
|
||||
private function micActivity(e:TimerEvent):void {
|
||||
if (userSession.voiceStreamManager && userSession.voiceStreamManager.mic) {
|
||||
view.micActivityMask.width = view.gainSlider.width - (view.gainSlider.width * userSession.voiceStreamManager.mic.activityLevel / 100);
|
||||
view.micActivityMask.x = view.micActivity.x + view.micActivity.width - view.micActivityMask.width;
|
||||
}
|
||||
}
|
||||
|
||||
private function disableMic(disable:Boolean):void {
|
||||
if (disable) {
|
||||
view.enableMic.enabled = false;
|
||||
view.enableMic.selected = false;
|
||||
} else {
|
||||
view.enableMic.enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private function onContinueClick(event:Event):void {
|
||||
userUISession.popPage();
|
||||
}
|
||||
|
||||
private function onEnableAudioClick(event:Event):void {
|
||||
if (!view.enableAudio.selected) {
|
||||
view.enableMic.selected = false;
|
||||
view.enablePushToTalk.enabled = false;
|
||||
userSession.pushToTalk = false;
|
||||
}
|
||||
var audioOptions:Object = new Object();
|
||||
audioOptions.shareMic = userSession.userList.me.voiceJoined = view.enableMic.selected && view.enableAudio.selected;
|
||||
audioOptions.listenOnly = userSession.userList.me.listenOnly = !view.enableMic.selected && view.enableAudio.selected;
|
||||
shareMicrophoneSignal.dispatch(audioOptions);
|
||||
}
|
||||
|
||||
private function onEnableMicClick(event:Event):void {
|
||||
view.enablePushToTalk.enabled = view.enableMic.selected;
|
||||
if (view.enableMic.selected) {
|
||||
view.enableAudio.selected = true;
|
||||
}
|
||||
userSession.pushToTalk = (view.enablePushToTalk.selected && view.enablePushToTalk.enabled);
|
||||
var audioOptions:Object = new Object();
|
||||
audioOptions.shareMic = userSession.userList.me.voiceJoined = view.enableMic.selected && view.enableAudio.selected;
|
||||
audioOptions.listenOnly = userSession.userList.me.listenOnly = !view.enableMic.selected && view.enableAudio.selected;
|
||||
shareMicrophoneSignal.dispatch(audioOptions);
|
||||
}
|
||||
|
||||
private function onEnablePushToTalkClick(event:Event):void {
|
||||
userSession.pushToTalk = view.enablePushToTalk.selected;
|
||||
}
|
||||
|
||||
private function userChangeHandler(user:User, type:int):void {
|
||||
if (user.me) {
|
||||
if (type == UserList.LISTEN_ONLY) {
|
||||
view.enableAudio.selected = user.voiceJoined || user.listenOnly;
|
||||
view.enableMic.selected = user.voiceJoined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override public function destroy():void {
|
||||
super.destroy();
|
||||
userSession.lockSettings.disableMicSignal.remove(disableMic);
|
||||
view.continueBtn.removeEventListener(MouseEvent.CLICK, onContinueClick);
|
||||
view.enableAudio.removeEventListener(Event.CHANGE, onEnableAudioClick);
|
||||
view.enableMic.removeEventListener(Event.CHANGE, onEnableMicClick);
|
||||
if (micActivityTimer) {
|
||||
micActivityTimer.removeEventListener(TimerEvent.TIMER, micActivity);
|
||||
}
|
||||
view.enablePushToTalk.removeEventListener(Event.CHANGE, onEnablePushToTalkClick);
|
||||
view.gainSlider.removeEventListener(Event.CHANGE, gainChange);
|
||||
userSession.userList.userChangeSignal.remove(userChangeHandler);
|
||||
userSession.phoneOptions.autoJoin = false;
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package org.bigbluebutton.air.settings.views.audio {
|
||||
|
||||
import org.bigbluebutton.air.common.views.IView;
|
||||
|
||||
import spark.components.Button;
|
||||
import spark.components.HSlider;
|
||||
import spark.components.ToggleSwitch;
|
||||
import spark.primitives.Rect;
|
||||
|
||||
public interface IAudioSettingsView extends IView {
|
||||
function get enableMic():ToggleSwitch;
|
||||
function get enableAudio():ToggleSwitch;
|
||||
function get enablePushToTalk():ToggleSwitch;
|
||||
function get continueBtn():Button;
|
||||
function get gainSlider():HSlider;
|
||||
function get micActivityMask():Rect;
|
||||
function get micActivity():Rect;
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package org.bigbluebutton.lib.settings.views.audio {
|
||||
import spark.components.Group;
|
||||
|
||||
public class AudioSettingsViewBase extends Group {
|
||||
|
||||
public function AudioSettingsViewBase() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package org.bigbluebutton.lib.settings.views.audio {
|
||||
|
||||
import robotlegs.bender.bundles.mvcs.Mediator;
|
||||
|
||||
public class AudioSettingsViewMediator extends Mediator {
|
||||
|
||||
[Inject]
|
||||
public var view:AudioSettingsViewBase;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user