<?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="commonVideoComponentAdapter" extends="node">
	

    <handler name="oninit">
    	var t = this;
        canvas.videoComp_lc.lc_switchMicMuted = function(publicSID, tMute) {
            if ($debug) Debug.write("lc_switchMicMuted", publicSID, tMute);
            canvas.thishib.switchMicMuted.setMute(publicSID, tMute);
        };
        canvas.videoComp_lc.lc_giveExclusiveAudio = function(publicSID) {
            if ($debug) Debug.write("lc_giveExclusiveAudio", publicSID);
            canvas.thishib.giveExclusiveAudio.setExclusiveAudio(publicSID);
        };
        canvas.videoComp_lc.as3ConnectionSuccess = function() {
        	//FIXME: Throws a Null Pointer Exception if the parent view was already destroyed
        	t.parent.as3ConnectionSuccess();
        }
		canvas.videoComp_lc.onInterviewPodCount = function(count) {
			//if ($debug) Debug.write(":::: onInterviewPodCount", count);
			if (canvas._drawarea["onInterviewPodCount"]) {
				canvas._drawarea.onInterviewPodCount(count);
			}
		}
    </handler>
    
    <!---
        Show the popup with the possibility to choose the device settings
        @param isSyncUpdate show the popup also if the user has clicked the "do not show again" chceckbox
        @param interviewPodId the view id
        @param tx x-position
        @param ty y-position
        @param twidth width-position
        @param theight height-position
     -->
    <method name="showDevicePopUpInterview" args="isSyncUpdate,interviewPodId,tx,ty,twidth,theight">
    	if ($debug) Debug.write("showDevicePopUpInterview ",isSyncUpdate,interviewPodId,tx,ty,twidth,theight);
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "createEditRecordStream", [isSyncUpdate, true, interviewPodId]);
    </method>
    
    <!---
        Show the popup with the possibility to choose the device settings
        @param isSyncUpdate show the popup also if the user has clicked the "do not show again" chceckbox
     -->
    <method name="showDevicePopUp" args="isSyncUpdate">
    	if ($debug) Debug.write("showDevicePopUp ",isSyncUpdate);
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "createEditRecordStream", [isSyncUpdate, false, -1]);
    </method>
    
    <!---
        Invoked after the user enters the room to connect the SWF10 app to the server via rtmp(t/s)
     -->
    <method name="reconnectSuccess" args="isInterview">
    	if ($debug) Debug.write("Send reconnectSuccess to ",canvas.rtmp_lc_name);
    	canvas.sendViaLocalConnection(canvas.rtmp_lc_name, "reconnectSuccess", [canvas.thishib.src, canvas.publicSID
    		, hib.userobject, isInterview, canvas.getHttpHost(), canvas.red5httpport]);
    </method>
    
    <handler name="onismoderator" reference="canvas" args="m">
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "ismoderatorChanged", [m]);
    </handler>

    <!---
        Creates video object
    -->
    <method name="createVideo" args="publicSID,displayName,broadcastId,avsettings,interviewPodId,object">
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "createVideo", [publicSID, displayName, broadcastId, avsettings, interviewPodId, object]);
    </method>

    <method name="createVideoObject" args="publicSID,isBroadcasting,interviewPodId,object">
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "createVideoObject", [publicSID, isBroadcasting, interviewPodId,object]);
    </method>

	<method name="batchCreateVideo" args="selfStreamId, clients">
		canvas.sendViaLocalConnection(canvas.vid_lc_name, "batchCreateVideo", [selfStreamId, clients]);
	</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">
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "startStream", [publicSID,broadcastId,firstname,lastname,interviewPodId,vWidth,vHeight]);
    </method>

    <!---
        invoked remotely by Red5-notification
        shows a green light if somebody is speaking
        @param string broadcastId broadcastId
        @param boolean bool show light on/off
    -->
    <method name="setSpeakingByPos" args="publicSID,bool">
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "setSpeakingByPos", [publicSID, bool]);
    </method>

    <!---
        stops the streaming but does not destroy the view
        @param int broadcastId broadcastId
     -->
    <method name="closeStreamClient" args="publicSID">
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "closeStreamClient", [publicSID]);
    </method>

    <!---
        stops the streaming but and destroys the view
        @param int broadcastId broadcastId
     -->
    <method name="disconnectclient" args="publicSID">
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "disconnectclient", [publicSID]);
    </method>

    <method name="resetAllValues">
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "resetAllValues",null);
    </method>

    <!---
     invoked if another client logs into the room
    after choosing devices -->
    <method name="setAVSettingsToClient" args="rcl">
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "setAVSettingsToClient", [rcl]);
    </method>

    <method name="createEditRecordStream" args="syncUpdate"><![CDATA[
        //this.syncUpdate = syncUpdate;
        //h.getBroadCastId.doCall();
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "createEditRecordStream", [syncUpdate]);
    ]]></method>

    <method name="removeVideoByUser" args="publicSID">
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "removeVideoByUser", [publicSID]);
    </method>

    <!--
        Mutes/unmutes a sound of user's video
        with the publicSID
    -->
    <method name="muteSound" args="publicSID, bool">
    	if ($debug) Debug.write("muteSound :: ",publicSID,bool);
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "muteSound", [publicSID, bool]);
    </method>

    <method name="giveExclusiveAudio" args="publicSID">
    	if ($debug) Debug.write("giveExclusiveAudio :: ",publicSID);
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "giveExclusiveAudio", [publicSID]);
    </method>

    <!---
        Updates microphone's state of roomClient
    -->
    <method name="updateMuteStatusVideoView" args="roomClient">
    	if ($debug) Debug.write("updateMuteStatusVideoView :: ",roomClient);
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "updateMuteStatusVideoView", [roomClient]);
    </method>

    <!---
        Shows the window with device settings
    -->
    <method name="changeDevice">
    	if ($debug) Debug.write("changeDevice :: ");
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "changeDevice", null);
    </method>

    <!---
        Shows the exit dialog
    -->
    <method name="exitRoom">
    	if ($debug) Debug.write("exitRoom :: ");
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "exitRoom", null);
    </method>

    <!---
        Shows the close whiteboard dialog
    -->
    <method name="closeWhiteboard">
    	if ($debug) Debug.write("closeWhiteboard :: ");
        canvas.sendViaLocalConnection(canvas.vid_lc_name, "closeWhiteboard", null);
    </method>
</class>

</library>
