blob: 441e4d5ec46b7da2913a73715e87a46e4a901fe9 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<library>
<class name="participants" extends="baseRoomInnerList"
height="$once{ parent.height-34 }">
<!--- holds a references to the videoview which is broadcasting -->
<attribute name="broadCastViewRef" value="null" />
<handler name="oninit">
//set modus
canvas.thishib.modus = "conference";
//set reference, this reference will be cleared at *ontabcontenctleave* event
canvas._videocontainer=this;
// Reconnect User to its Room Id
canvas.thishib.userScope = canvas.thishib.currentroomid;
var src = hib.getUrl();
if( $debug ) Debug.write("videoContainer: canvas.thishib: ",canvas.thishib.src,canvas.thishib);
if (canvas.thishib.src != src) {
canvas.thishib.setAttribute('src',src);
canvas.thishib.reconnectionAction = true;
canvas.thishib.reconnectObjRef = this;
canvas.thishib.disconnect();
} else {
//The user is already in the correct Scope
this.reconnectSuccess();
}
</handler>
<method name="initList">
//
</method>
<commonVideoComponentAdapter name="_videoviewcontent" />
<method name="reconnectSuccess">
if ($debug) Debug.write("User Reloged In");
//Send to SWF10 video-container to connect on the conference room url
//and wait for the as3ConnectionSuccess-Event
this._videoviewcontent.reconnectSuccess(false);
</method>
<!---
We need to wait till the video-container / as3 app has the connection established
otherwise it can happen that the video tries to start playing before the rtmp-connection
was established
-->
<method name="as3ConnectionSuccess">
if ($debug) Debug.write("as3ConnectionSuccess continue loading");
//set default values and get already availible streams
//it can happen that if you click to exit the room the views are not
//not cleaned up yet and you receive this event from the LocalConnection
if (this["getRoomModeratorsByRoomId"]) {
this.getRoomModeratorsByRoomId.doCall();
}
</method>
<!---
Returns a list of all moderators of the current room and parses
if the current user should receive the supermoderator flag or not
-->
<netRemoteCallHib name="getRoomModeratorsByRoomId" funcname="conferenceservice.getRoomModeratorsByRoomId"
remotecontext="$once{ canvas.thishib }" >
<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
<netparam><method name="getValue">return hib.currentroomid;</method></netparam>
<handler name="ondata" args="value">
<![CDATA[
if ($debug) Debug.write("getRoomModeratorsByRoomId: ",value);
canvas.becomeSuperModerator = false;
parent.setRoomValues.applyDefaultModeration = canvas.becomemoderator;
canvas.becomeSuperModerator = canvas.becomemoderator;
if (!canvas.becomeSuperModerator) {
for (var i=0;i<value.length;i++) {
if (value[i].user.user_id == canvas.user_id) {
parent.setRoomValues.applyDefaultModeration = true;
canvas.becomeSuperModerator = value[i].isSuperModerator;
if ($debug) Debug.info("Make this User to an Moderator");
break;
}
}
}
if ($debug) Debug.write("canvas.becomemoderator: ",canvas.becomemoderator);
if ($debug) Debug.write("canvas.becomeSuperModerator: ",canvas.becomeSuperModerator);
canvas.currentusercolor = canvas.getColorForUser();
var organisation_id = 1;
if ($debug) Debug.write(hib.userobject);
if ($debug) Debug.write(hib.currentdomainObj);
if (hib.currentdomainObj != null) {
organisation_id = hib.currentdomainObj.organisation_id
}
this.parent.setRoomValues.organisation_id = organisation_id;
if ($debug) Debug.write("setRoomValues CALL: ");
this.parent.setRoomValues.doCall();
]]>
</handler>
</netRemoteCallHib>
<!---
Returns a list of all users currently in the conference room
-->
<netRemoteCallHib name="setRoomValues" funcname="setRoomValues" remotecontext="$once{ canvas.thishib }" >
<attribute name="applyDefaultModeration" value="false" type="boolean" />
<attribute name="organisation_id" value="0" type="number" />
<netparam><method name="getValue">return hib.currentroomid;</method></netparam>
<netparam><method name="getValue">return parent.applyDefaultModeration;</method></netparam>
<netparam><method name="getValue">return canvas.becomeSuperModerator;</method></netparam>
<netparam><method name="getValue">return parent.organisation_id;</method></netparam>
<netparam><method name="getValue">return canvas.currentusercolor;</method></netparam>
<handler name="ondata" args="roomStatus">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("+++++++++++++++++");
if ($debug) Debug.write("+++++++++++++++++ setRoomValues1: ",roomStatus);
if (roomStatus.roomFull) {
canvas.thishib.showFullMessage = true;
canvas.thishib.disconnect();
}
if (roomStatus.browserStatus.browserInited) {
var tObj = new Object();
tObj[0] = "newBrowserURL";
tObj[1] = roomStatus.browserStatus.currentURL;
canvas.startBrowser(tObj);
}
var value = roomStatus.clientList;
for (var i = 0; i < value.length; ++i){
if ( value[i].streamid == canvas.streamid ) {
canvas.isAllowedToDraw = value[i].canDraw;
}
//if ($debug) Debug.write("getClientListScope value: ",value[i]);
this.parent.addItem(value[i].connectedSince,value[i].isMod,value[i].streamid,value[i].username,
'',value[i].formatedDate,value[i].userpos,value[i].usercolor,value[i]);
}
//this content must be inited _after_ setting the default values
canvas.thishib.getCurrentModeratorList.doCall();
canvas.thishib.checkLzRecording.doCall();
if (canvas._currentChatPanel.visible) {
canvas._currentChatPanel.toggleopen();
}
]]>
</handler>
</netRemoteCallHib>
<!---
invoked if another client logs into the room
after choosing devices
-->
<method name="setAVSettingsToClient" args="rcl">
this._videoviewcontent.setAVSettingsToClient(rcl);
</method>
<method name="receiveExclusiveAudioFlag" args="publicSID">
<![CDATA[
if ($debug) Debug.write("receiveExclusiveAudioFlag: ",publicSID);
var obj = this._participants.getUserListItemByPublicSID(publicSID);
for (var i=0; i<obj.parent.subviews.length; i++) {
var item = obj.parent.subviews[i];
var rcl = new Object();
rcl.publicSID = item.refObj.publicSID;
rcl.micMuted = !(publicSID == item.refObj.publicSID);
canvas.setMuteStatus(rcl);
}
]]>
</method>
<method name="addItem" args="connectedSince,isMod,streamid,username,userroom,formatedDate,position,color,object">
<![CDATA[
if ($debug) Debug.write("initializeStreams addItem: ",connectedSince,object);
//Do init only in case this stream is NOT the same as we are
if (streamid!=canvas.streamid){
//if ($debug) Debug.write("???????? object.isBroadcasting :: ",object.isBroadcasting);
this._videoviewcontent.createVideo(object.publicSID, object.firstname+' '+object.lastname, object.broadCastID, object.avsettings, -1, object);
}
//do add self too
this._participants.addItem(object);
]]>
</method>
<method name="setSpeakingByPos" args="publicSID,bool">
var tObj = this._participants.getUserListItemByPublicSID(publicSID);
if (tObj != null) {
tObj._miniIcons._loudness.loudness.setAttribute('opacity', bool ? 1 : 0.2);
}
this._videoviewcontent.setSpeakingByPos(publicSID, bool);
</method>
<method name="closeStreamClient" args="publicSID">
this._videoviewcontent.closeStreamClient(publicSID);
</method>
<method name="updateMuteStatusVideoView" args="roomClient">
this._videoviewcontent.updateMuteStatusVideoView(roomClient);
</method>
<method name="disconnectclient" args="publicSID">
this._videoviewcontent.disconnectclient(publicSID);
this._participants.disconnectclient(publicSID);
</method>
<method name="resetAllValues">
this._videoviewcontent.resetAllValues();
</method>
<!--
invoked whenever a User starts to Stream Video in this Room,
interviewPodId has only a meaning in the Room Type Interview
-->
<method name="startStream" args="publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight">
this._videoviewcontent.startStream(publicSID,broadcastId,firstname,lastname,interviewPodId,VWidth,VHeight);
</method>
<method name="addClientItem" args="connectedSince,isMod,streamid,username,room_id,formatedDate,position,color,object">
<![CDATA[
if ($debug) Debug.write("### initializeStreams addClientItem: ",connectedSince,isMod,streamid,username,room_id,formatedDate);
if (canvas.publicSID != object.publicSID){
if ($debug) Debug.write("### initializeStreams createVideoObject: ", object);
this._videoviewcontent.createVideoObject(object.publicSID, false, -1, object);
}
//Do Add it anyway
this._participants.addItem(object);
]]>
</method>
<moderationMiniIconsEventUserList name="_applyAndStatusIcons" x="2" y="2" >
<handler name="onismoderator" reference="canvas" args="m">
this.updateIcons();
</handler>
<handler name="ondrawAllowStatus" reference="canvas" args="drawObject">
this.updateIcons();
</handler>
<handler name="onexclusiveAudioAllowStatus" reference="canvas" args="rclObject">
this.updateIcons();
</handler>
<handler name="onlastBroadCastingUser" reference="canvas" args="userObject">
this.updateIcons();
</handler>
<handler name="onmicMutedStatusChangedItem" reference="canvas" args="userObject">
this.updateIcons();
</handler>
</moderationMiniIconsEventUserList>
<participantList name="_participants" />
</class>
</library>