| <?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="restrictedUserListInner" extends="baseRoomInnerList" |
| width="$once{ parent.width }" height="${ parent.height }" > |
| |
| <attribute name="selectedItem" value="null" /> |
| |
| <attribute name="listType" value="eventUserListTable" type="string" /> |
| |
| <attribute name="sortType" value="alphabetical" type="string" /> |
| |
| <handler name="oninit"> |
| <![CDATA[ |
| this.initList(); |
| ]]> |
| </handler> |
| |
| <method name="initialAddItem" args="object"> |
| <![CDATA[ |
| if ($debug) Debug.write("restrictedUserListInner::initialAddItem : ",object.publicSID); |
| |
| //Check for duplicates |
| if (object.isSuperModerator) { |
| object.lastname += " *"; |
| } |
| |
| //Add item to list |
| if (this._table.renderList == null) { |
| this._table.renderList = new Array(); |
| } |
| |
| object.isSelected = false; |
| this._table.renderList.push(object); |
| ]]> |
| </method> |
| |
| <method name="addItem" args="object"> |
| <![CDATA[ |
| if ($debug) Debug.write("restrictedUserListInner::addItem: ",object.publicSID); |
| |
| //Check for duplicates |
| if (object.isSuperModerator) { |
| object.lastname += " *"; |
| } |
| |
| object.selfItem = false; |
| //Add item to list |
| if (this._table.renderList == null) { |
| this._table.renderList = new Array(); |
| } |
| |
| object.isSelected = false; |
| this._table.renderList.push(object); |
| this.sortUserList(); |
| |
| this._table.scheduleRenderContent(); |
| this.moderationPanel.updateIcons(); |
| ]]> |
| </method> |
| |
| <method name="sortAndRenderList"> |
| this.sortUserList(); |
| this._table.renderContent(); |
| </method> |
| |
| <method name="sortUserList"> |
| <![CDATA[ |
| if (this.sortType == "alphabetical") { |
| function sortByName(a,b) { |
| if(a.firstname.toLowerCase() < b.firstname.toLowerCase()) return -1; |
| else if(a.firstname.toLowerCase() > b.firstname.toLowerCase()) return 1; |
| else return 0; |
| } |
| this._table.renderList.sort(sortByName); |
| } else { |
| function sortByStreamId(a,b) { |
| if(Number(a.streamid) == Number(b.streamid)) return 0; |
| else if(Number(a.streamid) > Number(b.streamid)) return 1; |
| else return -1; |
| } |
| this._table.renderList.sort(sortByStreamId); |
| } |
| ]]> |
| </method> |
| |
| <method name="initList"> |
| if ($debug) Debug.write("initList :: restrictedUserListInner"); |
| </method> |
| |
| <method name="clearList"> |
| if ($debug) Debug.write("clearList :: restrictedUserListInner"); |
| </method> |
| |
| <method name="disconnectclient" args="publicSID"> |
| <![CDATA[ |
| for (var i=0;i<this._table.renderList.length;i++) { |
| if (this._table.renderList[i].publicSID == publicSID) { |
| this._table.renderList.splice(i,1); |
| break; |
| } |
| } |
| this._table.renderContent(); |
| this.moderationPanel.updateIcons(); |
| ]]> |
| </method> |
| |
| <method name="getUserListItemByPublicSID" args="publicSID"> |
| <![CDATA[ |
| var v = null; |
| var vList = this._table._innerlist._inn._inn.subviews; |
| for (var i = 0; i < vList.length; ++i) { |
| if (vList[i].refObj.publicSID == publicSID) { |
| v = vList[i]; |
| break; |
| } |
| } |
| return v; |
| ]]> |
| </method> |
| |
| <view name="userStatus" layout="axis:y"> |
| <view> |
| <view resource="userstatus_multiframe_rsc" frame="1" /> |
| <labelText x="16" labelid="677" /> |
| </view> |
| <view> |
| <view resource="userstatus_multiframe_rsc" frame="2" /> |
| <labelText x="16" labelid="678" /> |
| </view> |
| <view> |
| <view resource="userstatus_multiframe_rsc" frame="3" /> |
| <labelText x="16" labelid="679" /> |
| </view> |
| </view> |
| |
| <moderationMiniIconsEventUserList name="_applyAndStatusIcons" x="$once{ parent.width-this.width-20 }" 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> |
| |
| |
| <turnOverListOrderedPaged name="_table" showTopBar="false" x="1" |
| height="${ parent.height-30-parent.moderationPanel.height }" |
| y="30" itemHeight="40" listLabelId="1001" headerHeight="0" |
| listItemName="restrictedUserListItem" showHScrollbar="hidden" |
| multiselect="false" width="268"> |
| |
| <attribute name="currentSelectedIndex" value="null" /> |
| |
| <attribute name="resizeDelegate" value="null"/> |
| <attribute name="resizeDelegateStarted" value="false" type="boolean"/> |
| |
| <attribute name="isLoaded" value="false" type="boolean"/> |
| |
| <attribute name="renderDelegate" value="null"/> |
| <attribute name="renderDelegateStarted" value="false" type="boolean"/> |
| |
| <handler name="onheight" args="h"> |
| if (this.isLoaded) { |
| if ($debug) Debug.write("isLoaded True onheight ",h); |
| if (!this.resizeDelegateStarted) { |
| this.resizeDelegateStarted = true; |
| lz.Timer.addTimer( this.resizeDelegate, 1000 ); |
| } else { |
| lz.Timer.resetTimer( this.resizeDelegate, 1000 ); |
| } |
| } |
| </handler> |
| |
| <handler name="oninit"> |
| this.resizeDelegate = new LzDelegate( this, "renderByHeightChange" ); |
| this.renderDelegate = new LzDelegate( this, "renderByNewUser" ); |
| this.addHeaderItem(1001,260); |
| </handler> |
| |
| <method name="scheduleRenderContent"> |
| if ($debug) Debug.warn("scheduleRenderContent "); |
| if (!this.renderDelegateStarted) { |
| this.renderDelegateStarted = true; |
| lz.Timer.addTimer( this.renderDelegate, 1000 ); |
| } else { |
| if ($debug) Debug.warn("More then one user was arriving within 1 Second - Postpone the Rendering to prevent too much reloading"); |
| lz.Timer.resetTimer( this.renderDelegate, 1000 ); |
| } |
| </method> |
| |
| <method name="renderByNewUser" args="refObj"> |
| this.renderDelegateStarted = false; |
| this.renderContent(); |
| </method> |
| |
| <method name="renderByHeightChange" args="refObj"> |
| |
| if ($debug) Debug.write("..:: renderByHeightChange ::..",refObj); |
| |
| lz.Timer.removeTimer( this.resizeDelegate ); |
| this.resizeDelegateStarted = false; |
| |
| this.clearList(); |
| this._innerlist._inn.initItems(this.listItemName); |
| |
| this.renderContent(); |
| </method> |
| |
| <handler name="onclickedItem" args="refObj"> |
| <![CDATA[ |
| if ($debug) Debug.write("onclickedItem ",refObj); |
| |
| if (this.currentSelectedIndex != null) { |
| this.renderList[this.currentSelectedIndex]["isselected"] = false; |
| } |
| |
| this.currentSelectedIndex = refObj.itemId; |
| this.renderList[refObj.itemId]["isselected"] = true; |
| |
| var list = this._innerlist._inn._inn; |
| for (var i=0;i<list.subviews.length;i++){ |
| list.subviews[i].deselect(); |
| list.subviews[i].hideModeratorIcons(); |
| } |
| |
| refObj.select(); |
| refObj.initModeratorIcons(); |
| ]]> |
| </handler> |
| |
| <method name="renderContent"> |
| <![CDATA[ |
| this.isLoaded = true; |
| var list = this._innerlist._inn._inn; |
| |
| if (this.renderList == null) { |
| this.renderList = new Array(); |
| } |
| //this.renderList = records; |
| var records = this.renderList; |
| this._innerlist._inn.setAttribute("y",0); |
| this._innerlist._inn._inn.setAttribute("height",records.length*this.itemHeight); |
| this._innerlist._inn.resetItems(); |
| |
| if ($debug) Debug.write(":: renderContent ::",this.renderList.length,list.subviews.length); |
| |
| this._records.setAttribute("text",records.length); |
| |
| for (var i=0;i<list.subviews.length;i++){ |
| if (records.length > i) { |
| |
| list.subviews[i].setAttribute("clickable",true); |
| list.subviews[i].refObj = records[i]; |
| |
| if (records[i]["isselected"] && records[i].isselected) { |
| list.subviews[i].isselected = true; |
| list.subviews[i].onmouseout.sendEvent(); |
| list.subviews[i].initModeratorIcons(); |
| } else { |
| list.subviews[i].isselected = false; |
| list.subviews[i].onmouseout.sendEvent(); |
| list.subviews[i].hideModeratorIcons(); |
| } |
| |
| list.subviews[i].setAttribute("user_id",records[i].user_id); |
| list.subviews[i].setAttribute("firstname",records[i].firstname); |
| list.subviews[i].setAttribute("isSuperModerator",records[i].isSuperModerator); |
| list.subviews[i].setAttribute("lastname",records[i].lastname); |
| list.subviews[i].setAttribute("connectedSince",records[i].connectedSince); |
| list.subviews[i].setAttribute("canDraw",records[i].canDraw); |
| list.subviews[i].setAttribute("canShare",records[i].canShare); |
| list.subviews[i].setAttribute("canRemote",records[i].canRemote); |
| list.subviews[i].setAttribute("canGiveAudio",records[i].canGiveAudio); |
| list.subviews[i].setAttribute("micMuted",records[i].micMuted); |
| list.subviews[i].setAttribute("isMod",records[i].isMod); |
| list.subviews[i].isBroadcasting = records[i].isBroadcasting; |
| list.subviews[i].setAttribute("selfItem",records[i].selfItem); |
| list.subviews[i].streamid = records[i].streamid; |
| list.subviews[i].setAttribute("username",records[i].username); |
| list.subviews[i].setAttribute("formatedDate",records[i].formatedDate); |
| |
| list.subviews[i].setAttribute("itemId",i); |
| |
| } else { |
| |
| list.subviews[i].refObj = null; |
| |
| list.subviews[i].isselected = false; |
| list.subviews[i].onmouseout.sendEvent(); |
| list.subviews[i].hideModeratorIcons(); |
| |
| list.subviews[i].setAttribute("user_id",""); |
| list.subviews[i].setAttribute("firstname",""); |
| list.subviews[i].setAttribute("isSuperModerator",""); |
| list.subviews[i].setAttribute("lastname",""); |
| list.subviews[i].setAttribute("connectedSince",""); |
| list.subviews[i].setAttribute("canDraw",false); |
| list.subviews[i].setAttribute("canShare",false); |
| list.subviews[i].setAttribute("canRemote",false); |
| list.subviews[i].setAttribute("canGiveAudio",false); |
| list.subviews[i].setAttribute("micMuted",false); |
| list.subviews[i].setAttribute("isMod",false); |
| list.subviews[i].isBroadcasting = false; |
| list.subviews[i].setAttribute("selfItem",false); |
| list.subviews[i].streamid = ""; |
| list.subviews[i].setAttribute("username",""); |
| list.subviews[i].setAttribute("formatedDate",""); |
| list.subviews[i].setAttribute("itemId",""); |
| |
| list.subviews[i].setAttribute("clickable",false); |
| } |
| } |
| ]]> |
| </method> |
| |
| <handler name="onScrollItem" args="item"> |
| <![CDATA[ |
| if (this.renderList.length > item.itemId) { |
| item.setAttribute("clickable",true); |
| item.refObj = this.renderList[item.itemId]; |
| |
| if (this.renderList[item.itemId]["isselected"] && this.renderList[item.itemId].isselected) { |
| item.isselected = true; |
| item.onmouseout.sendEvent(); |
| item.initModeratorIcons(); |
| } else { |
| item.isselected = false; |
| item.onmouseout.sendEvent(); |
| item.hideModeratorIcons(); |
| } |
| |
| if ($debug) Debug.write(item.itemId,this.renderList[item.itemId].isMod,this.renderList[item.itemId].publicSID); |
| |
| item.setAttribute("user_id",this.renderList[item.itemId].user_id); |
| item.setAttribute("firstname",this.renderList[item.itemId].firstname); |
| item.setAttribute("isSuperModerator",this.renderList[item.itemId].isSuperModerator); |
| item.setAttribute("lastname",this.renderList[item.itemId].lastname); |
| item.setAttribute("connectedSince",this.renderList[item.itemId].connectedSince); |
| item.setAttribute("canDraw",this.renderList[item.itemId].canDraw); |
| item.setAttribute("canShare",this.renderList[item.itemId].canShare); |
| item.setAttribute("canRemote",this.renderList[item.itemId].canRemote); |
| item.setAttribute("canGiveAudio",this.renderList[item.itemId].canGiveAudio); |
| item.setAttribute("micMuted",this.renderList[item.itemId].micMuted); |
| item.isBroadcasting = this.renderList[item.itemId].isBroadcasting; |
| item.setAttribute("isMod",this.renderList[item.itemId].isMod); |
| item.setAttribute("selfItem",this.renderList[item.itemId].selfItem); |
| item.streamid = this.renderList[item.itemId].streamid; |
| item.setAttribute("username",this.renderList[item.itemId].username); |
| item.setAttribute("formatedDate",this.renderList[item.itemId].formatedDate); |
| |
| item.setAttribute("itemId",item.itemId); |
| |
| item.updateIconByModScroll(); |
| |
| } else { |
| item.isselected = false; |
| item.onmouseout.sendEvent(); |
| item.hideModeratorIcons(); |
| |
| item.refObj = null; |
| |
| item.setAttribute("user_id",""); |
| item.setAttribute("firstname",""); |
| item.setAttribute("isSuperModerator",""); |
| item.setAttribute("lastname",""); |
| item.setAttribute("connectedSince",""); |
| item.setAttribute("canDraw",false); |
| item.setAttribute("canShare",false); |
| item.setAttribute("canRemote",false); |
| item.setAttribute("canGiveAudio",false); |
| item.setAttribute("micMuted",false); |
| item.setAttribute("isMod",false); |
| item.isBroadcasting = false; |
| item.setAttribute("selfItem",false); |
| item.streamid = "" |
| item.setAttribute("username",""); |
| item.setAttribute("formatedDate",""); |
| |
| item.setAttribute("itemId",""); |
| |
| item.setAttribute("clickable",false); |
| } |
| |
| ]]> |
| </handler> |
| |
| </turnOverListOrderedPaged> |
| |
| <view name="moderationPanel" clip="true" |
| height="${ (canvas.ismoderator) ? 40 : 0 }" |
| y="${ parent.height - this.height - 2 }"> |
| |
| <handler name="onismoderator" reference="canvas" args="m"> |
| if ($debug) Debug.write("###### ismoderator ",m); |
| <![CDATA[ |
| this.updateIcons(); |
| ]]> |
| </handler> |
| |
| <handler name="onmicMutedStatusChangedItem" reference="canvas" args="roomClientObj"> |
| <![CDATA[ |
| |
| if ($debug) Debug.write(" :: onmicMutedStatusChangedItem :: ",roomClientObj.micMuted); |
| |
| var vList = parent._table.renderList; |
| for (var i=0;i<vList.length;i++) { |
| //vList[i].updateIconByMod(); |
| if (vList[i].publicSID == roomClientObj.publicSID) { |
| parent._table.renderList[i].micMuted = roomClientObj.micMuted; |
| break; |
| } |
| } |
| |
| //search for the user and update its drawStatusIcon |
| var vList = parent._table._innerlist._inn._inn.subviews; |
| for (var i=0;i<vList.length;i++) { |
| //vList[i].updateIconByMod(); |
| if (vList[i].refObj.publicSID == roomClientObj.publicSID) { |
| vList[i].refObj.micMuted = roomClientObj.micMuted; |
| vList[i].micMuted = roomClientObj.micMuted; |
| vList[i].updateModeratorIcons(); |
| break; |
| } |
| } |
| |
| |
| parent._applyAndStatusIcons.updateIcons(); |
| |
| ]]> |
| </handler> |
| |
| <handler name="ondrawAllowStatus" reference="canvas" args="drawObject"> |
| <![CDATA[ |
| |
| if ($debug) Debug.write(" :: ondrawAllowStatus :: ",drawObject.canDraw); |
| |
| var vList = parent._table.renderList; |
| for (var i=0;i<vList.length;i++) { |
| //vList[i].updateIconByMod(); |
| if (vList[i].publicSID == drawObject.publicSID) { |
| parent._table.renderList[i].canDraw = drawObject.canDraw; |
| parent._table.renderList[i].canShare = drawObject.canShare; |
| parent._table.renderList[i].canRemote = drawObject.canRemote; |
| break; |
| } |
| } |
| |
| //search for the user and update its drawStatusIcon |
| var vList = parent._table._innerlist._inn._inn.subviews; |
| for (var i=0;i<vList.length;i++) { |
| //vList[i].updateIconByMod(); |
| if (vList[i].refObj.publicSID == drawObject.publicSID) { |
| vList[i].refObj.canDraw = drawObject.canDraw; |
| vList[i].canDraw = drawObject.canDraw; |
| vList[i].canShare = drawObject.canShare; |
| vList[i].canRemote = drawObject.canRemote; |
| vList[i].updateIconByModScroll(); |
| vList[i].updateModeratorIcons(); |
| break; |
| } |
| } |
| |
| parent._applyAndStatusIcons.updateIcons(); |
| ]]> |
| </handler> |
| |
| <handler name="onexclusiveAudioAllowStatus" reference="canvas" args="rclObject"> |
| <![CDATA[ |
| |
| if ($debug) Debug.write(" :: exclusiveAudioAllowStatus :: ",rclObject.canGiveAudio); |
| |
| var vList = parent._table.renderList; |
| for (var i=0;i<vList.length;i++) { |
| if (vList[i].publicSID == rclObject.publicSID) { |
| parent._table.renderList[i].canGiveAudio = rclObject.canGiveAudio; |
| break; |
| } |
| } |
| |
| //search for the user and update its exclusiveAudioStatusIcon |
| var vList = parent._table._innerlist._inn._inn.subviews; |
| for (var i=0;i<vList.length;i++) { |
| if (vList[i].refObj.publicSID == rclObject.publicSID) { |
| vList[i].refObj.canGiveAudio = rclObject.canGiveAudio; |
| vList[i].canGiveAudio = rclObject.canGiveAudio; |
| vList[i].updateIconByModScroll(); |
| vList[i].updateModeratorIcons(); |
| break; |
| } |
| } |
| |
| parent._applyAndStatusIcons.updateIcons(); |
| ]]> |
| </handler> |
| |
| <handler name="onlastBroadCastingUser" reference="canvas" args="userObject"> |
| <![CDATA[ |
| |
| if ($debug) Debug.write(" :: onlastBroadCastingUser :: "); |
| |
| if (!userObject.isBroadcasting) { |
| //Stop Broadcasting and close Dialog |
| //Search, stop and remove video |
| parent.parent.removeVideoByUser(userObject); |
| } |
| |
| var vList = parent._table.renderList; |
| for (var i=0;i<vList.length;i++) { |
| if (vList[i].publicSID == userObject.publicSID) { |
| parent._table.renderList[i].isBroadcasting = userObject.isBroadcasting; |
| break; |
| } |
| } |
| |
| //search for the user and update its drawStatusIcon |
| var vList = parent._table._innerlist._inn._inn.subviews; |
| for (var i=0;i<vList.length;i++) { |
| if (vList[i].refObj.publicSID == userObject.publicSID) { |
| vList[i].isBroadcasting = userObject.isBroadcasting; |
| vList[i].updateModeratorIcons(); |
| break; |
| } |
| } |
| |
| parent._applyAndStatusIcons.updateIcons(); |
| ]]> |
| </handler> |
| |
| <method name="updateIcons"> |
| <![CDATA[ |
| |
| if ($debug) Debug.write(" :: updateIcons :: "); |
| |
| for (var i=0;i<parent._table.renderList.length;i++) { |
| |
| for (var k=0;k<canvas.newModeratorList.length;k++) { |
| |
| var item = canvas.newModeratorList[k]; |
| |
| if (parent._table.renderList[i].publicSID == item.publicSID) { |
| |
| if (parent._table.renderList[i].isMod == false) { |
| if ($debug) Debug.info("updateIcons Found RR ",i,item.publicSID); |
| parent._table.renderList[i].isMod = true; |
| |
| var itemView = this.getItemByPublicSID(item.publicSID); |
| if (itemView != null) { |
| itemView.setAttribute("isMod",true); |
| itemView.updateModeratorIcons(); |
| } |
| } |
| |
| } |
| |
| } |
| |
| for (var k=0;k<canvas.removeModeratorList.length;k++) { |
| |
| var item = canvas.removeModeratorList[k]; |
| |
| if (parent._table.renderList[i].publicSID == item.publicSID) { |
| |
| if (parent._table.renderList[i].isMod == true) { |
| if ($debug) Debug.info("RE updateIcons Found RR ",i,item.publicSID); |
| parent._table.renderList[i].isMod = false; |
| |
| var itemView = this.getItemByPublicSID(item.publicSID); |
| if (itemView != null) { |
| itemView.setAttribute("isMod",false); |
| itemView.updateModeratorIcons(); |
| } |
| } |
| |
| } |
| |
| } |
| |
| } |
| |
| parent._applyAndStatusIcons.updateIcons(); |
| ]]> |
| </method> |
| |
| <method name="getItemByPublicSID" args="publicSID"> |
| <![CDATA[ |
| var vList = parent._table._innerlist._inn._inn.subviews; |
| |
| for (var i=0;i<vList.length;i++) { |
| if (vList[i].refObj.publicSID == publicSID) { |
| return vList[i]; |
| } |
| } |
| |
| return null; |
| ]]> |
| </method> |
| |
| <labelText labelid="680" width="270" x="0" multiline="true" y="0" /> |
| </view> |
| |
| </class> |
| |
| |
| </library> |