| <?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> |
| |
| |
| <!--- |
| View for recorded contents list. |
| When you select 'Recordings' on the top menu, this class shows the list. |
| --> |
| <class name="lzRecordingsViewMain" extends="basePropertyPanelWhiteboard" labelid="858" allowToggle="false" |
| x="${ parent._navigationArea.width + parent._navigationArea.x }" |
| height="${ canvas.height - canvas.naviHeightDelta - parent._recordingsViewBottom.height }" |
| width="${ canvas.width - parent._navigationArea.width - parent._navigationArea.x }"> |
| |
| <attribute name="recordingName" value="" type="string"/> |
| |
| <!--- |
| isPaused is true if a video is running but paused |
| --> |
| <attribute name="isPaused" value="false" type="boolean"/> |
| |
| <!--- |
| Shows if there is currently a video running |
| --> |
| <attribute name="timerDelegateStarted" value="false" type="boolean"/> |
| |
| <attribute name="recordingLog" value="" type="string"/> |
| |
| <attribute name="deltaInSeconds" value="0" type="number"/> |
| |
| <!-- invoked after the connection in the audio/video container was closed --> |
| <event name="onRecordingStoppedAndDisconnected" /> |
| |
| <method name="connect"> |
| this._content._videostream.connect(); |
| </method> |
| |
| <method name="showLog"> |
| if ($debug) Debug.write("getFlvRecordingLog flvRecordingId ",this.getFlvRecordingLog.flvRecordingId); |
| this.getFlvRecordingLog.doCall(); |
| </method> |
| |
| <netRemoteCallHib name="getFlvRecordingLog" funcname="flvrecorderservice.getFlvRecordingLog" |
| remotecontext="$once{ canvas.thishib }" showLoading="false"> |
| <attribute name="flvRecordingId" value="0" type="number"/> |
| <netparam><method name="getValue">return canvas.sessionId;</method></netparam> |
| <netparam><method name="getValue">return parent.flvRecordingId;</method></netparam> |
| <handler name="ondata" args="value"> |
| <![CDATA[ |
| var tLogString = ""; |
| var headerMessage = "<br/>"+canvas.getLabelName(889); |
| for (var i = 0;i<value.length;i++) { |
| |
| tLogString += headerMessage |
| + parseDateToStringTimeSeconds(value[i].inserted) |
| + '<br/>' |
| + value[i].msgType |
| + '<br/>' |
| + value[i].fullMessage |
| + '<br/>' |
| + value[i].exitValue |
| + '<br/>'; |
| |
| } |
| |
| if ($debug) Debug.write("getFlvRecordingLog: "); |
| |
| new lz.messageRecordingWin(canvas,{error:tLogString,labelTitleId:903}); |
| ]]> |
| </handler> |
| </netRemoteCallHib> |
| |
| <method name="restartConversion" args="left,right,leftTime,rightTime"> |
| <![CDATA[ |
| if ($debug) Debug.write("restartConversion ",this.getFlvRecordingLog.flvRecordingId); |
| |
| if (left == "" || right == "" || leftTime == "" || rightTime == "") { |
| new lz.labelerrorPopup(canvas,{ |
| error:'You have to set at least 0 as value for Left, Right, Time' |
| }); |
| return; |
| } |
| |
| this.restartInterviewConversion.left = Number(left); |
| this.restartInterviewConversion.right = Number(right); |
| |
| this.restartInterviewConversion.leftTime = Math.round(Number(leftTime)); |
| this.restartInterviewConversion.rightTime = Math.round(Number(rightTime)); |
| |
| if ($debug) Debug.write("this.restartInterviewConversion.left :: ",this.restartInterviewConversion.left); |
| if ($debug) Debug.write("this.restartInterviewConversion.right :: ",this.restartInterviewConversion.right); |
| |
| this.restartInterviewConversion.doCall(); |
| ]]> |
| </method> |
| |
| <netRemoteCallHib name="restartInterviewConversion" funcname="flvrecorderservice.restartInterviewConversion" |
| remotecontext="$once{ canvas.thishib }" showLoading="false"> |
| <attribute name="flvRecordingId" value="0" type="number"/> |
| <attribute name="left" value="0" type="number"/> |
| <attribute name="right" value="0" type="number"/> |
| <attribute name="leftTime" value="0" type="number"/> |
| <attribute name="rightTime" value="0" type="number"/> |
| <netparam><method name="getValue">return canvas.sessionId;</method></netparam> |
| <netparam><method name="getValue">return parent.flvRecordingId;</method></netparam> |
| <netparam><method name="getValue">return parent.left;</method></netparam> |
| <netparam><method name="getValue">return parent.right;</method></netparam> |
| <netparam><method name="getValue">return parent.leftTime;</method></netparam> |
| <netparam><method name="getValue">return parent.rightTime;</method></netparam> |
| <handler name="ondata" args="value"> |
| if ($debug) Debug.write("restartInterviewConversion: ",value); |
| new lz.errorPopup(canvas,{error:"Re-Sampling Started, that can take some time, click on the Interview to get the status "}); |
| </handler> |
| </netRemoteCallHib> |
| |
| <method name="setNewStream" args="recording"> |
| <![CDATA[ |
| |
| this.stopStream(); |
| this.isPaused = false; |
| |
| var hasFailed = false; |
| |
| var tLogString = ""; |
| var headerMessage = "<br/>"+canvas.getLabelName(889); |
| |
| this.recordingLog = ""; |
| |
| this.recordingName = recording.fileHash; |
| |
| this.getFlvRecordingLog.flvRecordingId = recording.flvRecordingId; |
| this.restartInterviewConversion.flvRecordingId = recording.flvRecordingId; |
| |
| //Check if recording is not yet completed or if it has failed |
| // *** This is disabled for now as the Log can grow too big *** |
| for (var i = 0;i<recording.flvRecordingLog.length;i++) { |
| |
| if (recording.flvRecordingLog[i].exitValue != "0") { |
| |
| hasFailed = true; |
| tLogString += headerMessage |
| + parseDateToStringTimeSeconds(recording.flvRecordingLog[i].inserted) |
| + '<br/>' |
| + recording.flvRecordingLog[i].msgType |
| + '<br/>' |
| + recording.flvRecordingLog[i].fullMessage |
| + '<br/>'; |
| |
| } |
| |
| this.recordingLog += headerMessage |
| + parseDateToStringTimeSeconds(recording.flvRecordingLog[i].inserted) |
| + '<br/>' |
| + recording.flvRecordingLog[i].msgType |
| + '<br/>' |
| + recording.flvRecordingLog[i].fullMessage |
| + '<br/>'; |
| |
| } |
| |
| if (hasFailed) { |
| |
| if ($debug) Debug.write("tLogString "+tLogString); |
| //var tString = canvas.getLabelName(887) + tLogString; |
| |
| new lz.messageRecordingWin(canvas,{error:tLogString,labelTitleId:887}); |
| |
| } |
| |
| if (recording.previewImage != null && recording.previewImage != "") { |
| |
| this.recordingName = recording.fileHash; |
| |
| this._content.initW = recording.flvWidth; |
| this._content.initH = recording.flvHeight; |
| |
| var downloadurl = canvas.getUrl() + 'DownloadHandler?fileName='+recording.previewImage |
| +'&moduleName=lzRecorderApp&parentPath=&room_id=' |
| +'&sid='+canvas.sessionId; |
| |
| if($debug) Debug.write("lzRecorder/downloadurl "+downloadurl); |
| |
| this._content._preview.imagePreview.setAttribute("src",downloadurl) |
| |
| this._content._preview.bringToFront(); |
| |
| this._content.setItemContraints(0); |
| |
| this.deltaInSeconds = Math.round((recording.recordEnd.getTime() - recording.recordStart.getTime())/1000); |
| |
| if ($debug) Debug.write("deltaInSeconds ",this.deltaInSeconds); |
| |
| var minutes = Math.floor(this.deltaInSeconds/60); |
| |
| if ($debug) Debug.write("minutes ",minutes); |
| |
| var restSeconds = this.deltaInSeconds - ( minutes * 60 ); |
| |
| this._progress._progressbar._duration.setAttribute("text",minutes+" min "+restSeconds+" sec"); |
| |
| } else { |
| |
| var error = canvas.getLabelName(888); |
| |
| if (recording.isInterview) { |
| error += "<br/>" + canvas.getLabelName(919) + " " + recording.progressPostProcessing + "%"; |
| } |
| |
| new lz.labelerrorPopup(canvas,{error:error}); |
| |
| } |
| |
| ]]> |
| </method> |
| |
| <method name="calcProgressBar"> |
| <![CDATA[ |
| |
| var flvTime = this._content._videostream.getTime(); |
| |
| if ($debug) Debug.write("flvTime :calcProgressBar: ",flvTime); |
| parent._recordingsViewBottom.showProgress(flvTime); |
| |
| this._progress._progressbar._pointer.setAttribute("visibility","visible"); |
| |
| var tString = ""; |
| |
| if (flvTime > 60) { |
| |
| var minutes = Math.floor(flvTime/60); |
| |
| var restSeconds = Math.round(flvTime) - ( minutes * 60 ); |
| |
| tString = minutes + " min " + restSeconds + " sec"; |
| |
| } else { |
| |
| tString = Math.round(flvTime) + " sec"; |
| |
| } |
| |
| this._progress._progressbar._time.setAttribute("text",tString); |
| |
| var tNewX = Math.round((this._progress._progressbar.width / this.deltaInSeconds) * flvTime); |
| |
| this._progress._progressbar._pointer.setAttribute("x",tNewX); |
| |
| ]]> |
| </method> |
| |
| <method name="startStream"> |
| |
| if ($debug) Debug.write("startStream ",this.recordingName); |
| |
| if (this.recordingName != "") { |
| |
| this.isPaused = false; |
| |
| if (!this.timerDelegateStarted) { |
| this.timerDelegateStarted = true; |
| } |
| |
| this._content._videostream.bringToFront(); |
| this._content._videostream.playStream(this.recordingName,0); |
| } |
| </method> |
| |
| <method name="toggleStream"> |
| if (this.timerDelegateStarted) { |
| this.pauseStream(); |
| } else { |
| this.startStream(); |
| } |
| </method> |
| |
| <method name="pauseStream"> |
| this.isPaused = !this.isPaused; |
| this._content._videostream.pause(this.isPaused); |
| </method> |
| |
| <method name="seekStream" args="newX"> |
| <![CDATA[ |
| |
| if ($debug) Debug.write("seekStream ",newX); |
| |
| if (this.timerDelegateStarted) { |
| |
| var flvTime = Math.round( newX / (this._progress._progressbar.width / this.deltaInSeconds) ); |
| |
| if ($debug) Debug.write("seekStream :: this.deltaInSeconds ",this.deltaInSeconds); |
| |
| if ($debug) Debug.write("seekStream :: flvTime ",flvTime); |
| |
| this._content._videostream.seek(flvTime); |
| |
| } |
| |
| ]]> |
| </method> |
| |
| <method name="stopStreamAndCloseRecorder"> |
| this._stopStream(); |
| this._content._videostream.stopAndCloseConnection(); |
| </method> |
| |
| <method name="stopStream"> |
| this._stopStream(); |
| this._content._videostream.stop(); |
| </method> |
| |
| <!--- |
| @keywords private |
| --> |
| <method name="_stopStream"> |
| if (this.timerDelegateStarted) { |
| this.timerDelegateStarted = false; |
| } |
| parent._recordingsViewBottom.stopProgress(); |
| this._progress._progressbar._time.setAttribute("text",""); |
| this._progress._progressbar._pointer.setAttribute("x",0); |
| </method> |
| |
| <view name="_content" height="${ parent.height-22-18 }" y="22"> |
| |
| <attribute name="initH" value="480" type="number" /> |
| <attribute name="initW" value="640" type="number" /> |
| |
| <handler name="oninit"> |
| <![CDATA[ |
| var prop2 = [this, "height"]; |
| this.applyConstraintMethod("setItemContraints", prop2); |
| this.setItemContraints(0); |
| ]]> |
| </handler> |
| |
| <method name="setItemContraints" args="w"> |
| <![CDATA[ |
| var w = this.height * this.initW/this.initH; |
| this.setAttribute("width",w); |
| ]]> |
| </method> |
| |
| <view name="_preview" width="${parent.width}" height="${parent.height}" bgcolor="0x000000"> |
| <image name="imagePreview" stretches="both" |
| width="${parent.width}" height="${parent.height}" /> |
| <handler name="onclick"> |
| if ($debug) Debug.write("onclick -- toggleStream"); |
| parent.parent.toggleStream(); |
| </handler> |
| <view width="60" height="40" valign="middle" opacity="0.7" |
| align="center" bgcolor="0xFFFFFF"> |
| <view resource="lz_recorder_play" valign="middle" align="center" /> |
| </view> |
| </view> |
| |
| <lzRecordingsViewAdapter name="_videostream" width="${parent.width}" height="${parent.height}"> |
| |
| <handler name="onwidth" args="w"> |
| this.updateRecordingVideoPosition(); |
| </handler> |
| |
| <handler name="onheight" args="h"> |
| this.updateRecordingVideoPosition(); |
| </handler> |
| |
| <handler name="onUpdateRecordingStreamTime"> |
| if ($debug) Debug.write("onUpdateRecordingStreamTime "); |
| parent.parent.calcProgressBar(); |
| </handler> |
| |
| <handler name="onTogglePlayRecordingStream"> |
| if ($debug) Debug.write("onTogglePlayRecordingStream "); |
| parent.parent.toggleStream(); |
| </handler> |
| |
| <handler name="onRecordingStoppedAndDisconnected"> |
| if ($debug) Debug.write("onRecordingStoppedAndDisconnected "); |
| parent.parent.onRecordingStoppedAndDisconnected.sendEvent(); |
| </handler> |
| |
| </lzRecordingsViewAdapter> |
| |
| </view> |
| |
| <view name="_progress" height="18" valign="bottom" width="${ parent.width }" |
| bgcolor="$once{ canvas.getThemeColor('basebgcolorizer') }"> |
| |
| <view resource="flv_recorder_play_small_rsc" y="1" height="16" width="16" |
| bgcolor="$once{ canvas.getThemeColor('baseMouseOvercolorizer') }"> |
| <handler name="onmouseover"> |
| this.setAttribute("bgcolor",0xFFFFFF); |
| </handler> |
| <handler name="onmouseout"> |
| this.setAttribute("bgcolor",canvas.getThemeColor('baseMouseOvercolorizer')); |
| </handler> |
| <handler name="onclick"> |
| parent.parent.startStream(); |
| </handler> |
| <labelTooltip labelid="875" /> |
| </view> |
| |
| <view name="_progressbar" x="16" width="${ parent.width - 32 }" y="1" |
| height="16" bgcolor="$once{ canvas.getThemeColor('baseMouseOvercolorizer') }"> |
| |
| <view x="0" width="${ parent.width }" y="0" height="16" bgcolor="0xFFFFFF" opacity="0.5" /> |
| |
| <handler name="onclick"> |
| parent.parent.seekStream(this.getMouse("x")); |
| </handler> |
| |
| <view name="_pointer" resource="flv_progress_pointer_rsc" visibility="hidden" /> |
| |
| <text name="_time" resize="true" fontsize="10" /> |
| |
| <text name="_duration" align="right" resize="true" fontsize="10" /> |
| |
| </view> |
| |
| <view resource="flv_recorder_stop_small_rsc" align="right" y="1" height="16" width="16" |
| bgcolor="$once{ canvas.getThemeColor('baseMouseOvercolorizer') }"> |
| <handler name="onmouseover"> |
| this.setAttribute("bgcolor",0xFFFFFF); |
| </handler> |
| <handler name="onmouseout"> |
| this.setAttribute("bgcolor",canvas.getThemeColor('baseMouseOvercolorizer')); |
| </handler> |
| <handler name="onclick"> |
| parent.parent.stopStream(); |
| </handler> |
| <labelTooltip labelid="876" /> |
| </view> |
| |
| </view> |
| |
| </class> |
| |
| |
| |
| </library> |