<?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 editRecordStream | |
Description: | |
This Class shows a window where you can alter you Video-/Microphone- Input-Resources | |
and start to stream. The app could also use the default values for Cam/Mic but | |
must users don't know how to alter this (wether in System-Control-Panel or by Right Clicking | |
on the Flash-Screen and *>Preferences>Camera* ) | |
So I think it is better if Users are forced to choose something from this list | |
--> | |
<class name="editRecordStreamSWF10" extends="labelExplorerBox" labelid="51" | |
width="600" height="500" x="14" y="-540" > | |
<switch> | |
<when property="$as3"> | |
<passthrough> | |
import flash.media.Camera; | |
import flash.media.Microphone; | |
import flash.net.SharedObject; | |
import flash.media.SoundCodec; | |
</passthrough> | |
</when> | |
</switch> | |
<attribute name="myvideocontainer" value="null" /> | |
<attribute name="chosenCam" value="null" /> | |
<attribute name="chosenMic" value="null" /> | |
<attribute name="chosenSetting" value="null" /> | |
<attribute name="currentClient" value="null" /> | |
<attribute name="remoteMessage" value="null" /> | |
<!--- | |
if true the user will see the dialog no matter if he has choosen "do not show again" or not | |
--> | |
<attribute name="isSyncUpdate" value="false" type="boolean" /> | |
<attribute name="doDefaultAnimation" value="true" type="boolean" /> | |
<attribute name="cam_default_width" value="240" type="number" /> | |
<attribute name="cam_default_height" value="180" type="number" /> | |
<attribute name="interviewPodId" value="0" type="number" /> | |
<attribute name="lastRecorded" value="" type="string" /> | |
<attribute name="isRunning" value="false" type="boolean" /> | |
<attribute name="recordingsCounter" value="5" type="number" /> | |
<attribute name="timerIsRunning" value="false" type="boolean" /> | |
<attribute name="counterDelegate" value="null" /> | |
<method name="startTimer"> | |
this.timerIsRunning = true; | |
this.timerWasUnmutedTheFirstTime = true; | |
lz.Timer.addTimer( this.counterDelegate, 1000 ); | |
</method> | |
<method name="count" args="calleeObj"> | |
if (this.recordingsCounter != 0){ | |
this.recordingsCounter -= 1; | |
lz.Timer.addTimer( this.counterDelegate, 1000 ); | |
this._text._info.setAttribute("text",""+this.recordingsCounter+" sec"); | |
} else { | |
this._text.setAttribute("visibility","hidden"); | |
this.doStop(); | |
this.timerIsRunning = false; | |
this.doPlay(); | |
} | |
</method> | |
<method name="startTimerToCount"> | |
if (!this.timerIsRunning) { | |
this.startTimer(); | |
} | |
</method> | |
<handler name="oninit"> | |
<![CDATA[ | |
//Make this view the upmost in the z-Index order | |
canvas.inner.bringToFront(); | |
this.counterDelegate = new LzDelegate( this, "count" ); | |
if ($debug) Debug.write("this.myvideocontainer ",this.myvideocontainer); | |
if ($debug) Debug.write("editrecordstream ###################### "); | |
canvas.videoComp_lc.client = {clb_getBroadCastId: this.clb_getBroadCastId, clb_setUserAVSettings: this.clb_setUserAVSettings}; | |
var t:SharedObject = SharedObject.getLocal('userdata'); | |
var g = t.data; | |
var save = g["savecamdata"]; | |
if ($debug) Debug.write("save: ",save,g["cam"],g["mic"],this.isSyncUpdate); | |
//In case its an Audio-Only Room this box should not close automatically | |
if ($debug) Debug.write("canvas.currentRoomObject: ", canvas.currentRoomObject); | |
if (false) { // canvas.currentRoomObject.isAudioOnly | |
this._chooseDeviceAnimation.doStart(); | |
} else { | |
//In case the user presses the Sync Button this box should | |
//not close automatically and do the user-prefered values | |
if(save && !this.isSyncUpdate && this.checkLocalDataComplete()) { | |
this.chosenCam = g["cam"]; | |
this.chosenMic = g["mic"]; | |
this.cam_default_width = g["width"]; | |
this.cam_default_height = g["height"]; | |
this.chosenSetting = g["avstored"]; | |
this.remoteMessage = new Array(); | |
this.remoteMessage[0] = 'avsettings'; | |
this.remoteMessage[2] = this.chosenSetting; | |
this.getBroadCastId.doCall(); | |
} else { | |
if (this.doDefaultAnimation && !canvas.isInterview) { | |
this._chooseDeviceAnimation.doStart(); | |
} | |
} | |
} | |
if (canvas.isInterview) { | |
if ($debug) Debug.write("Is interview ",interviewPodId); | |
this.setAttribute("x",canvas["interviewPod"+interviewPodId+"_x"]); | |
this.setAttribute("y",canvas["interviewPod"+interviewPodId+"_y"]); | |
} | |
]]> | |
</handler> | |
<method name="checkLocalDataComplete"> | |
<![CDATA[ | |
var t:SharedObject = SharedObject.getLocal('userdata'); | |
var g = t.data; | |
if (g["width"] > 0 && g["height"] > 0) { | |
return true; | |
} | |
return false; | |
]]> | |
</method> | |
<netRemoteCallHib name="getBroadCastId" funcname="getBroadCastId" | |
remotecontext="$once{ canvas.thishib }" > | |
<handler name="ondata" args="value"> | |
<![CDATA[ | |
if ($debug) Debug.write("getBroadCastId",value,canvas.publicSID); | |
parent.myvideocontainer = canvas._videoComponent.createVideoObject(canvas.publicSID, true, parent.interviewPodId, canvas.userobject); | |
if ($debug) Debug.write("parent.setUserAVSettings -1- ",parent.chosenSetting); | |
if ($debug) Debug.write("parent.setUserAVSettings -2- ",parent.remoteMessage); | |
if ($debug) Debug.write("parent.setUserAVSettings -3- ",parent.cam_default_width); | |
if ($debug) Debug.write("parent.setUserAVSettings -4- ",parent.cam_default_height); | |
if ($debug) Debug.write("parent.setUserAVSettings -5- ",canvas.currentRoomObject.rooms_id); | |
if ($debug) Debug.write("parent.setUserAVSettings -6- ",canvas.publicSID); | |
parent.setUserAVSettings.doCall(); | |
]]> | |
</handler> | |
</netRemoteCallHib> | |
<netRemoteCallHib name="setUserAVSettings" funcname="setUserAVSettings" | |
remotecontext="$once{ canvas.thishib }" > | |
<netparam><method name="getValue">return parent.parent.chosenSetting;</method></netparam> | |
<netparam><method name="getValue">return parent.parent.remoteMessage;</method></netparam> | |
<netparam><method name="getValue">return parent.parent.cam_default_width;</method></netparam> | |
<netparam><method name="getValue">return parent.parent.cam_default_height;</method></netparam> | |
<netparam><method name="getValue">return parent.parent.cam_default_height;</method></netparam> | |
<netparam><method name="getValue">return canvas.publicSID;</method></netparam> | |
<netparam><method name="getValue">return parent.parent.interviewPodId;</method></netparam> | |
<handler name="ondata" args="value"> | |
<![CDATA[ | |
if ($debug) Debug.write("setUserAVSettings",value); | |
parent.currentClient = value; | |
parent.doStartConference(); | |
]]> | |
</handler> | |
</netRemoteCallHib> | |
<method name="storelocaldata"> | |
<![CDATA[ | |
//Debug.write("sharedobject store "); | |
var t:SharedObject = SharedObject.getLocal('userdata'); | |
var g = t.data; | |
if (g==null) g = new Array(); | |
g["cam"] = this.availibleCams.getValue(); | |
g["mic"] = this.availibleMics.getValue(); | |
g["avstored"] = this.availibleSettings.getValue(); | |
g["savecamdata"] = this.holddatainSO.getValue(); | |
g["width"] = this.cam_default_width; | |
g["height"] = this.cam_default_height; | |
t.flush(); | |
]]> | |
</method> | |
<method name="doStartConference"> | |
<![CDATA[ | |
if ($debug) Debug.write("doninitalize"); | |
var valCam = this.chosenCam; | |
var valMic = this.chosenMic; | |
var settings = this.chosenSetting; | |
if (!canvas.isInterview) { | |
this.myvideocontainer.setDefaultVideoSize(this.cam_default_width,this.cam_default_height); | |
} | |
var videoview = this.myvideocontainer._chatvideoinner._videostream; | |
if ($debug) Debug.write("this.myvideocontainer: ",this.myvideocontainer); | |
if ($debug) Debug.write(valCam,valMic,settings); | |
this.myvideocontainer.setAttribute('isremote',false); | |
var _micro = null; | |
var _camera = null; | |
if (valMic != null) { | |
_micro = Microphone.getMicrophone(valMic); | |
if (_micro != null) { | |
_micro.codec = SoundCodec.NELLYMOSER; | |
//_micro.framesPerPacket = 1; | |
_micro.setSilenceLevel(0, 2000); | |
_micro.rate = 22; | |
_micro.gain = 50; | |
// this has no effect if enhanced microphone is obtained | |
//Microphone setUseEchoSupression(bool) | |
_micro.setUseEchoSuppression(true); | |
} | |
} | |
if (valCam != null) { | |
_camera = Camera.getCamera(valCam); | |
} | |
if ($debug) Debug.write("_camera.setMode: ",videoview.width,videoview.height,canvas.framesPerSecond,true); | |
//Microphone.set | |
if ($debug) Debug.write("canvas.vaquality: ",canvas.vaquality, "canvas.microphoneRateBest: ",canvas.microphoneRateBest); | |
if (_camera != null) { | |
if ($debug) Debug.write("_camera.setQuality BEST: ",canvas.isInterview,(canvas.bandwidthNeededBest*2),canvas.camQualityBest); | |
if (canvas.isInterview) { | |
//we need a fixed frame rate for the videos to merge them later on | |
_camera.setMode(videoview.width,videoview.height,24,true); | |
if ($debug) Debug.warn("IS INTERVIEW "); | |
_camera.setQuality(0,98); | |
} else { | |
_camera.setMode(videoview.width,videoview.height,canvas.framesPerSecond,true); | |
if ($debug) Debug.warn("IS NO INTERVIEW "); | |
_camera.setQuality(canvas.bandwidthNeededBest,canvas.camQualityBest); | |
} | |
} | |
if ($debug) Debug.write("settings: ", settings); | |
if ($debug) Debug.write("BroadcastId: ", this.currentClient.broadCastID); | |
switch (settings){ | |
case "s": | |
this.myvideocontainer.setAttribute("visibility","hidden"); | |
break; | |
case "vs": | |
videoview.broadcast(this.currentClient.broadCastID,_camera,null); | |
if(canvas.isInterview) { | |
canvas.videoComp_lc.send(canvas.videoComp_lc_name, "onStartBroadcast", this.currentClient.broadCastID, settings); | |
} else { | |
this.myvideocontainer.setAttribute("visibility","visible"); | |
if (this.myvideocontainer.minimized) { | |
this.myvideocontainer.reminimize(); | |
} | |
} | |
break; | |
case "av": | |
videoview.broadcast(this.currentClient.broadCastID,_camera,_micro); | |
if(canvas.isInterview) { | |
canvas.videoComp_lc.send(canvas.videoComp_lc_name, "onStartBroadcast", this.currentClient.broadCastID, settings); | |
} else { | |
this.myvideocontainer.setAttribute("visibility","visible"); | |
if (this.myvideocontainer.minimized) { | |
this.myvideocontainer.reminimize(); | |
} | |
} | |
break; | |
case "a": | |
videoview.broadcast(this.currentClient.broadCastID,null,_micro); | |
if(canvas.isInterview) { | |
canvas.videoComp_lc.send(canvas.videoComp_lc_name, "onStartBroadcast", this.currentClient.broadCastID, settings); | |
} else { | |
if (this.myvideocontainer.hidebyAudioOnly) { | |
this.myvideocontainer.setAttribute("visibility","hidden"); | |
} else { | |
this.myvideocontainer.setAttribute("visibility","visible"); | |
if (!this.myvideocontainer.minimized) { | |
this.myvideocontainer.minimize(); | |
} | |
} | |
} | |
break; | |
case "v": | |
videoview.broadcast(this.currentClient.broadCastID,_camera,null); | |
if(canvas.isInterview) { | |
canvas.videoComp_lc.send(canvas.videoComp_lc_name, "onStartBroadcast", this.currentClient.broadCastID, settings); | |
} else { | |
this.myvideocontainer.setAttribute("visibility","visible"); | |
if (this.myvideocontainer.minimized) { | |
this.myvideocontainer.reminimize(); | |
} | |
} | |
break; | |
case "n": | |
if ($debug) Debug.write("Do not Publish A/V"); | |
//Prevent from Hiding the Box in Event Modus | |
if (canvas.thishib.modus == "conference") { | |
this.myvideocontainer.setAttribute("visibility","hidden"); | |
} | |
break; | |
default: | |
if ($debug) Debug.warn("no valid device Setup chosen"); | |
break; | |
} | |
this.close(); | |
]]> | |
</method> | |
<method name="doStartRecording"> | |
<![CDATA[ | |
this._btnStartRecording.setAttribute("enabled",false); | |
this._play.setAttribute("enabled",false); | |
this.recordingsCounter = 5; | |
this._text.setAttribute("visibility","visible"); | |
this._text._info.setAttribute("text","5 sec"); | |
this.isRunning = true; | |
var valCam = this.availibleCams.getValue(); | |
var valMic = this.availibleCams.getValue(); | |
var videoview = this._video.content._publisher._chatvideoinner._videostream; | |
if ($debug) Debug.write("videoview: ",videoview); | |
if ($debug) Debug.write(valCam,valMic); | |
var _micro = null; | |
var _camera = null; | |
if (valMic != null) { | |
_micro = Microphone.getMicrophone(valMic); | |
if (_micro != null) { | |
_micro.codec = SoundCodec.NELLYMOSER; | |
_micro.framesPerPacket = 1; | |
_micro.setSilenceLevel(0, 2000); | |
_micro.gain = 50; | |
// this has no effect if enhanced microphone is obtained | |
//Microphone setUseEchoSupression(bool) | |
_micro.setUseEchoSuppression(true); | |
} | |
} | |
if (valCam != null) { | |
_camera = Camera.getCamera(valCam); | |
} | |
if ($debug) Debug.write("_camera.setMode: ",videoview.width,videoview.height,canvas.framesPerSecond,true); | |
//Microphone.set | |
if ($debug) Debug.write("canvas.vaquality: ",canvas.vaquality, "canvas.microphoneRateBest: ",canvas.microphoneRateBest); | |
if (_camera != null) { | |
if ($debug) Debug.write("_camera.setQuality BEST: ",this.isInterview,(canvas.bandwidthNeededBest*2),canvas.camQualityBest); | |
if (this.isInterview) { | |
_camera.setMode(videoview.width,videoview.height,24,true); | |
if ($debug) Debug.warn("IS INTERVIEW "); | |
_camera.setQuality(0,98); | |
} else { | |
_camera.setMode(videoview.width,videoview.height,canvas.framesPerSecond,true); | |
if ($debug) Debug.warn("IS NO INTERVIEW "); | |
_camera.setQuality(canvas.bandwidthNeededBest,canvas.camQualityBest); | |
} | |
} | |
//The First start-timer message will come from the Flash Object | |
if ($debug) Debug.warn("_camera.muted ",_camera.muted); | |
if ($debug) Debug.warn("_micro.muted ",_micro.muted); | |
if (!_camera.muted) { | |
this.startTimer(); | |
} | |
//start recording of client stream | |
var t = new Date(); | |
this.lastRecorded = "TEST_SETUP_"+t.getTime(); | |
this._video.content._publisher.setAttribute("visibility","visible"); | |
this._video.content._viewer.setAttribute("visibility","hidden"); | |
videoview.record(this.lastRecorded,_camera,_micro); | |
]]> | |
</method> | |
<method name="doPlay"> | |
<![CDATA[ | |
if (this.lastRecorded == "") { | |
//Error - nothing recorded yet | |
if ($debug) Debug.warn("Nothing to Play"); | |
} else { | |
this._play.setAttribute("enabled",true); | |
this._video.content._publisher.setAttribute("visibility","hidden"); | |
this._video.content._viewer.setAttribute("visibility","visible"); | |
var videoview = this._video.content._viewer._chatvideoinner._videostream; | |
videoview.justPlayStream(this.lastRecorded+".flv",0); | |
} | |
]]> | |
</method> | |
<method name="doStop"> | |
if (this.isRunning) { | |
this.isRunning = false; | |
var videoview = this._video.content._publisher._chatvideoinner._videostream; | |
this._btnStartRecording.setAttribute("enabled",true); | |
videoview._stop(); | |
this.doPlay(); | |
} | |
var videoviewViewer = this._video.content._viewer._chatvideoinner._videostream; | |
videoviewViewer._stop(); | |
</method> | |
<animator name="_chooseDeviceAnimation" start="false" attribute="y" to="40" duration="750" /> | |
<labelText fontstyle="bold" labelid="758" | |
width="${ parent.width-2 }" height="30" multiline="true" y="20" /> | |
<labelText labelid="447" fontsize="11" fontstyle="bold" | |
x="10" y="80" width="$once{ parent.width-20 }" /> | |
<resetCombobox fontsize="11" name="availibleSettings" x="10" y="100" width="280" editable="false"> | |
<switch> | |
<when property="$as3"> | |
<passthrough> | |
import flash.net.SharedObject; | |
</passthrough> | |
</when> | |
</switch> | |
<handler name="oninit"> | |
<![CDATA[ | |
if (canvas.currentRoomObject.isAudioOnly) { | |
this.addItem(canvas.getLabelName(449),"a"); | |
this.addItem(canvas.getLabelName(451),"n"); | |
} else { | |
this.addItem(canvas.getLabelName(448),"av"); | |
this.addItem(canvas.getLabelName(449),"a"); | |
this.addItem(canvas.getLabelName(450),"v"); | |
//this.addItem(canvas.getLabelName(845),"s"); | |
//this.addItem(canvas.getLabelName(846),"sv"); | |
this.addItem(canvas.getLabelName(451),"n"); | |
} | |
var t:SharedObject = SharedObject.getLocal('userdata'); | |
var g = t.data; | |
var cam = null; | |
if (g!=null){ | |
var avstored = g["avstored"]; | |
} | |
var tItem = this.getItem(String(avstored)); | |
if (tItem != null) { | |
this.selectItem(String(avstored)); | |
} else { | |
this.selectItemAt(0); | |
} | |
]]> | |
</handler> | |
<handler name="onselect"> | |
<![CDATA[ | |
var camVisible = "visible"; | |
var micVisible = "visible"; | |
var textVisible = "hidden"; | |
switch (this.getValue()){ | |
case "av": | |
break; | |
case "a": | |
camVisible = "hidden"; | |
break; | |
case "v": | |
micVisible = "hidden"; | |
break; | |
case "n": | |
camVisible = "hidden"; | |
micVisible = "hidden"; | |
textVisible = "visible"; | |
break; | |
default: | |
if ($debug) Debug.warn("no valid device Setup chosen"); | |
break; | |
} | |
this.parent.availibleCamsLabel.setAttribute("visibility",camVisible); | |
this.parent.availibleCams.setAttribute("visibility",camVisible); | |
this.parent.availibleMicsLabel.setAttribute("visibility",micVisible); | |
this.parent.availibleMics.setAttribute("visibility",micVisible); | |
this.parent.infoTextNoAV.setAttribute("visibility",textVisible); | |
this.parent.availibleResolutionsLabel.setAttribute("visibility",((canvas.isInterview) ? 'hidden' : camVisible)); | |
this.parent.availibleResolutionsWarning.setAttribute("visibility",((canvas.isInterview) ? 'hidden' : camVisible)); | |
this.parent.availibleResolutions.setAttribute("visibility",((canvas.isInterview) ? 'hidden' : camVisible)); | |
]]> | |
</handler> | |
</resetCombobox> | |
<labelText name="availibleCamsLabel" labelid="52" fontsize="11" x="10" y="140" width="$once{ parent.width-20 }" /> | |
<resetCombobox fontsize="11" name="availibleCams" x="10" y="160" width="280" editable="false"> | |
<switch> | |
<when property="$as3"> | |
<passthrough> | |
import flash.media.Camera; | |
import flash.net.SharedObject; | |
</passthrough> | |
</when> | |
</switch> | |
<handler name="oninit"> | |
<![CDATA[ | |
//Get all availible Cam's | |
var tw = Camera.names; | |
var r = ""; | |
for (var eg=0;eg<tw.length;eg++){ | |
this.addItem(tw[eg],eg); | |
r=eg; | |
} | |
var t:SharedObject = SharedObject.getLocal('userdata'); | |
var g = t.data; | |
var cam; | |
if (g != null){ | |
cam = g["cam"]; | |
if (cam == 'undefined') { | |
cam = r; | |
} | |
} else { | |
cam = r; | |
} | |
this.selectItem(String(cam)); | |
]]> | |
</handler> | |
</resetCombobox> | |
<labelText name="availibleMicsLabel" labelid="53" fontsize="11" | |
x="10" y="180" width="$once{ parent.width-20 }" /> | |
<resetCombobox fontsize="11" name="availibleMics" x="10" y="200" width="280" editable="false"> | |
<switch> | |
<when property="$as3"> | |
<passthrough> | |
import flash.media.Microphone; | |
import flash.net.SharedObject; | |
</passthrough> | |
</when> | |
</switch> | |
<handler name="oninit"> | |
<![CDATA[ | |
//Get all availible Mic's | |
var tw = Microphone.names; | |
var r = ""; | |
for (var eg=0;eg<tw.length;eg++){ | |
r=eg; | |
this.addItem(tw[eg],eg); | |
} | |
var t:SharedObject = SharedObject.getLocal('userdata'); | |
var g = t.data; | |
var mic; | |
if (g != null){ | |
mic = g["mic"]; | |
if (mic == 'undefined') { | |
mic = r; | |
} | |
} else { | |
mic = r; | |
} | |
this.selectItem(String(mic)); | |
]]> | |
</handler> | |
</resetCombobox> | |
<labelText name="infoTextNoAV" labelid="452" multiline="true" width="280" | |
fontsize="11" x="10" y="240" visibility="hidden" /> | |
<labelText name="availibleResolutionsLabel" labelid="1429" | |
fontsize="11" x="10" y="224" width="$once{ parent.width-20 }" /> | |
<view name="availibleResolutionsWarning" x="272" y="224" | |
resource="warning_icon_popup_devices_rsc" clickable="true"> | |
<labelTooltip multiline="true" labelid="1430" /> | |
</view> | |
<resetCombobox fontsize="11" name="availibleResolutions" x="10" shownitems="10" | |
y="244" width="280" editable="false"> | |
<!--- @keywords private --> | |
<attribute name="counter" value="0" /> | |
<handler name="onselect" args="item"> | |
<![CDATA[ | |
if ($debug) Debug.write("onselect w ", item.cam_width); | |
if ($debug) Debug.write("onselect h ", item.cam_height); | |
parent.setAttribute("cam_default_width",item.cam_width); | |
parent.setAttribute("cam_default_height",item.cam_height); | |
if (item.cam_width > 240) { | |
var newWidth = 600 + item.cam_width - 240; | |
if (newWidth+parent.x+10 > canvas.width) { | |
newWidth = canvas.width - 10 - this.x; | |
} | |
parent.setAttribute("width",newWidth); | |
} else { | |
parent.setAttribute("width",600); | |
} | |
if (item.cam_height > 180) { | |
var newHeight = 500 + item.cam_height - 180; | |
if (newHeight+parent.y+10 > canvas.height) { | |
newHeight = canvas.height - 10 - parent.y; | |
} | |
parent.setAttribute("height",newHeight); | |
} else { | |
parent.setAttribute("height",500); | |
} | |
]]> | |
</handler> | |
<textlistitem datapath="myConfigSet:/config/availableCameraResolutions/resolution" > | |
<switch> | |
<when property="$as3"> | |
<passthrough> | |
import flash.net.SharedObject; | |
</passthrough> | |
</when> | |
</switch> | |
<!--- @keywords private --> | |
<attribute name="cam_width" value="320" type="number" /> | |
<!--- @keywords private --> | |
<attribute name="cam_height" value="240" type="number" /> | |
<handler name="ondata"> | |
<![CDATA[ | |
// if ($debug) Debug.write("ondata ", this); | |
var type = this.datapath.xpathQuery('@type'); | |
this.cam_width = Number(this.datapath.xpathQuery('@width')); | |
this.cam_height = Number(this.datapath.xpathQuery('@height')); | |
this.setAttribute("text",""+this.cam_width+"x"+this.cam_height+" ["+type+"]"); | |
var isDefault = this.datapath.xpathQuery('@isDefault'); | |
var t:SharedObject = SharedObject.getLocal('userdata'); | |
var g = t.data; | |
var width = g["width"]; | |
var height = g["height"]; | |
if (width!=null && width > 0 && height!=null && height>0) { | |
if (width == this.cam_width && height == this.cam_height) { | |
parent.selectItemAt(parent.counter); | |
parent.onselect.sendEvent(this); | |
} | |
} else { | |
if (isDefault == "true") { | |
if ($debug) Debug.write("Found default one ",type); | |
parent.selectItemAt(parent.counter); | |
parent.onselect.sendEvent(this); | |
} | |
} | |
parent.counter+=1; | |
]]> | |
</handler> | |
</textlistitem> | |
</resetCombobox> | |
<simpleLabelButton name="_btnStartRecording" labelid="775" | |
width="140" x="150" y="280" height="28"> | |
<handler name="onclick"> | |
parent._level_meter.startLevel(); | |
parent.doStartRecording(); | |
</handler> | |
</simpleLabelButton> | |
<view x="340" y="60" name="_video" clip="true" | |
width="${ parent.width-this.x-10 }" height="${ parent.height-260 }"> | |
<view name="content"> | |
<videoObjectTestBroadcast name="_publisher" | |
width="${ parent.parent.parent.cam_default_width }" | |
height="${ parent.parent.parent.cam_default_height }"> | |
<handler name="sendCameraStatus" args="camStatus"> | |
if ($debug) Debug.write("sendCameraStatus -1- ",camStatus); | |
if (camStatus == "Camera.Unmuted") { | |
parent.parent.parent.startTimerToCount(); | |
} | |
</handler> | |
<handler name="sendMicroStatus" args="micStatus"> | |
if ($debug) Debug.write("sendMicroStatus -1- ",micStatus); | |
if (micStatus == "Microphone.Unmuted") { | |
parent.parent.parent.startTimerToCount(); | |
} | |
</handler> | |
</videoObjectTestBroadcast> | |
<videoObjectPlayTestBroadcast name="_viewer" visibility="hidden" | |
width="${ parent.parent.parent.cam_default_width }" | |
height="${ parent.parent.parent.cam_default_height }" /> | |
</view> | |
<om_vscrollbar /> | |
<om_hscrollbar /> | |
</view> | |
<view name="_text" x="340" y="60" width="240" height="180" visibility="hidden"> | |
<text name="_info" resize="true" bgcolor="0xFFFFFF" align="right" | |
fontsize="12" fontstyle="bold" /> | |
</view> | |
<simpleLabelButton name="_play" y="${ parent.height-166 }" x="490" enabled="false" | |
width="90" labelid="764" > | |
<handler name="onclick"> | |
parent.doPlay(); | |
</handler> | |
</simpleLabelButton> | |
<view name="_level_meter" x="340" y="${ parent.height-190 }" width="240" height="20" clip="true" bgcolor="0x000000"> | |
<!--- Level delegate, used to track level changes. | |
@keywords private --> | |
<attribute name="_leveldel" value="$once{new LzDelegate(this, '_updateLevel')}"/> | |
<method name="_updateLevel" args="no"> | |
<![CDATA[ | |
if (parent._video.content._publisher._chatvideoinner._videostream.micro == null) | |
{ | |
return; | |
} | |
this.setNewLevel(parent._video.content._publisher._chatvideoinner._videostream.micro.activityLevel); | |
]]> | |
</method> | |
<method name="startLevel"> | |
this._leveldel.register(lz.Idle, "onidle"); | |
</method> | |
<method name="resetNewLevel"> | |
this._leveldel.unregisterAll(); | |
this.setNewLevel(0); | |
</method> | |
<method name="setNewLevel" args="no"> | |
<![CDATA[ | |
var newLevel = (238/100) * no; | |
this._over.setAttribute("width",238-newLevel); | |
this._over.setAttribute("x",1+(newLevel)); | |
]]> | |
</method> | |
<view name="_bg" width="238" height="18" x="1" y="1" bgcolor="0xFFFFFF" /> | |
<view name="_grip" resource="level_meter_rsc" x="1" y="1" /> | |
<view name="_over" width="238" height="18" x="1" y="1" bgcolor="0xFFFFFF" /> | |
<labelText labelid="767" x="2" y="2" height="16" width="236" resize="false" /> | |
</view> | |
<view y="${ parent.height-98 }" resource="test_setup_info_rsc" x="16" /> | |
<labelText fontstyle="bold" labelid="765" x="39" y="${ parent.height-100 }" | |
width="${ parent.width-50 }" multiline="true" /> | |
<!-- Remember Me --> | |
<labelCheckbox name="holddatainSO" labelid="762" x="10" y="${ parent.height-20 }" > | |
<switch> | |
<when property="$as3"> | |
<passthrough> | |
import flash.net.SharedObject; | |
</passthrough> | |
</when> | |
</switch> | |
<handler name="oninit"> | |
var t:SharedObject = SharedObject.getLocal('userdata'); | |
var g = t.data; | |
var save = g["savecamdata"]; | |
if ($debug) Debug.write("savecamdata save: ",save); | |
if(save) this.setValue(true); | |
</handler> | |
</labelCheckbox> | |
<simpleLabelButton fontsize="11" visibility="${ (canvas.isInterview) ? 'visible' : 'hidden' }" | |
labelid="54" x="${ parent.width-220 }" y="${ parent.height-50 }" width="100"> | |
<handler name="onclick"> | |
this.parent.storelocaldata(); | |
this.parent.chosenCam = parent.availibleCams.getValue(); | |
this.parent.chosenMic = parent.availibleMics.getValue(); | |
this.parent.chosenSetting = parent.availibleSettings.getValue(); | |
this.parent.remoteMessage = new Array(); | |
this.parent.remoteMessage[0] = 'avsettings'; | |
this.parent.remoteMessage[1] = "0"; | |
this.parent.remoteMessage[2] = this.parent.chosenSetting; | |
this.parent.getBroadCastId.doCall(); | |
</handler> | |
</simpleLabelButton> | |
<simpleLabelButton fontsize="11" visibility="${ (canvas.isInterview) ? 'visible' : 'hidden' }" | |
labelid="918" x="${ parent.width-110 }" y="${ parent.height-50 }" width="100"> | |
<handler name="onclick"> | |
parent.close(); | |
</handler> | |
</simpleLabelButton> | |
<simpleLabelButton fontsize="11" visibility="${ (!canvas.isInterview) ? 'visible' : 'hidden' }" | |
labelid="761" width="160" x="${ parent.width-170 }" y="${ parent.height-50 }" height="28"> | |
<handler name="onclick"> | |
this.parent.storelocaldata(); | |
this.parent.chosenCam = parent.availibleCams.getValue(); | |
this.parent.chosenMic = parent.availibleMics.getValue(); | |
this.parent.chosenSetting = parent.availibleSettings.getValue(); | |
this.parent.remoteMessage = new Array(); | |
this.parent.remoteMessage[0] = 'avsettings'; | |
this.parent.remoteMessage[1] = "0"; | |
this.parent.remoteMessage[2] = this.parent.chosenSetting; | |
this.parent.getBroadCastId.doCall(); | |
</handler> | |
</simpleLabelButton> | |
</class> | |
</library> |