You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/09/04 16:25:54 UTC

openmeetings git commit: [OPENMEETINGS-1644] 'Exclusive audio' seems to work

Repository: openmeetings
Updated Branches:
  refs/heads/master f5de9c6f7 -> ffe78cd20


[OPENMEETINGS-1644] 'Exclusive audio' seems to work


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/ffe78cd2
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/ffe78cd2
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/ffe78cd2

Branch: refs/heads/master
Commit: ffe78cd20db0b47770de64911b199d8e5a640e18
Parents: f5de9c6
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Mon Sep 4 23:25:37 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Mon Sep 4 23:25:37 2017 +0700

----------------------------------------------------------------------
 openmeetings-flash/src/main/flex/main.mxml      | 20 ++++++++-----
 .../apache/openmeetings/web/room/RoomPanel.java | 20 ++++++++-----
 .../org/apache/openmeetings/web/room/room.js    | 31 +++++++++++++-------
 .../apache/openmeetings/web/room/settings.js    |  6 ++--
 .../web/room/sidebar/RoomSidebar.java           |  9 ------
 .../web/room/sidebar/icon/UserSpeaksIcon.java   | 11 ++++---
 6 files changed, 56 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ffe78cd2/openmeetings-flash/src/main/flex/main.mxml
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/flex/main.mxml b/openmeetings-flash/src/main/flex/main.mxml
index f660fb3..05fbb8f 100644
--- a/openmeetings-flash/src/main/flex/main.mxml
+++ b/openmeetings-flash/src/main/flex/main.mxml
@@ -142,17 +142,21 @@
 					ExternalInterface.addCallback("update", function ():void {
 						video.getNc().call("check", new Responder(function (check:Object):void {
 							debug("check", check);
-							if (_hasVideo(check.activities) && hasVideo()) {
+							var pVideo:Boolean = hasVideo(), nVideo:Boolean = _hasVideo(check.activities)
+									, pAudio:Boolean = hasAudio(), nAudio:Boolean = _hasAudio(check.activities);
+							if (nVideo != pVideo || nAudio != pAudio) {
+								// activities are changed
 								activities = check.activities;
-								hasAudio() ? video.unmute() : video.mute();
-								if (mic != null) {
-									activityTimer.start();
+								if (nVideo && pVideo) {
+									nAudio ? video.unmute() : video.mute();
+									if (mic != null) {
+										activityTimer.start();
+									} else {
+										activityTimer.stop();
+									}
 								} else {
-									activityTimer.stop();
+									refreshBroadcast(null);
 								}
-							} else {
-								activities = check.activities;
-								refreshBroadcast(null);
 							}
 							//debug("Client updated: ", c);
 						}));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ffe78cd2/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 5777770..5dee0af 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -504,13 +504,12 @@ public class RoomPanel extends BasePanel {
 						JSONObject obj = new JSONObject(((TextRoomMessage)m).getText());
 						String uid = obj.getString("uid");
 						Client c = getClientBySid(obj.getString("sid"));
-						if (c == null) {
-							log.error("Not existing user in closeStream {} !!!!", obj);
-							return;
-						}
-						Client _c = getClient();
-						if (_c.getUid().equals(c.getUid())) {
-							update(c.removeStream(uid));
+						if (c != null) {
+							//c == null means client exits the room
+							Client _c = getClient();
+							if (_c.getUid().equals(c.getUid())) {
+								update(c.removeStream(uid));
+							}
 						}
 						handler.appendJavaScript(String.format("VideoManager.close('%s');", uid));
 						updateInterviewRecordingButtons(handler);
@@ -607,6 +606,13 @@ public class RoomPanel extends BasePanel {
 						break;
 					case exclusive:
 					{
+						String uid = ((TextRoomMessage)m).getText();
+						Client c = getOnlineClient(uid);
+						if (c == null) {
+							// no luck
+							return;
+						}
+						handler.appendJavaScript(String.format("if (typeof VideoManager !== 'undefined') {VideoManager.exclusive('%s');}", uid));
 					}
 						break;
 				}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ffe78cd2/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
index 198392f..a37b8f9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
@@ -63,7 +63,7 @@ var VideoUtil = (function() {
 		}
 		var wba = $(WBA_SEL);
 		var woffset = wba.offset();
-		const offsetX = 40, offsetY = 10
+		const offsetX = 20, offsetY = 10
 			, area = {left: woffset.left, top: woffset.top, right: woffset.left + wba.width(), bottom: woffset.top + wba.height()};
 		var rectNew = {
 				_left: area.left
@@ -138,7 +138,7 @@ var VideoUtil = (function() {
 })();
 var Video = (function() {
 	var self = {}, c, v, vc, t, f, swf, size, vol, slider, handle
-		, prevVolume = 0;
+		, lastVolume = 50;
 
 	function _getName() {
 		return c.user.firstName + ' ' + c.user.lastName;
@@ -195,13 +195,15 @@ var Video = (function() {
 			return;
 		}
 		if (mute) {
-			prevVolume = slider.slider("option", "value");
+			let val = slider.slider("option", "value");
+			if (val > 0) {
+				lastVolume = val;
+			}
 			slider.slider("option", "value", 0);
 			_handleVolume(0);
 		} else {
-			slider.slider("option", "value", prevVolume);
-			_handleVolume(prevVolume);
-			prevVolume = 0;
+			slider.slider("option", "value", lastVolume);
+			_handleVolume(lastVolume);
 		}
 	}
 	function _init(_c, _pos) {
@@ -264,8 +266,9 @@ var Video = (function() {
 				})
 				.click(function(e) {
 					e.stopImmediatePropagation();
-					roomAction('mute', JSON.stringify({uid: c.cuid, mute: prevVolume == 0}));
-					_mute(prevVolume == 0);
+					let muted = $(this).find('.ui-icon').hasClass('ui-icon-volume-off');
+					roomAction('mute', JSON.stringify({uid: c.cuid, mute: !muted}));
+					_mute(!muted);
 					volume.hide();
 					return false;
 				}).dblclick(function(e) {
@@ -290,12 +293,12 @@ var Video = (function() {
 				, range: 'min'
 				, min: 0
 				, max: 100
-				, value: 50
+				, value: lastVolume
 				, create: function() {
 					handle.text($(this).slider("value"));
 				}
 				, slide: function(event, ui) {
-					_handleVolume(handle, ui.value);
+					_handleVolume(ui.value);
 				}
 			});
 			if (!VideoUtil.hasAudio(c)) {
@@ -489,6 +492,13 @@ var VideoManager = (function() {
 			})
 		}
 	}
+	function _exclusive(uid) {
+		var windows = $('.video.user-video .ui-dialog-content');
+		for (var i = 0; i < windows.length; ++i) {
+			let w = $(windows[i]);
+			w.data().mute('room' + uid !== w.data('client-uid'));
+		}
+	}
 
 	self.getOptions = function() { return JSON.parse(JSON.stringify(options)); };
 	self.init = _init;
@@ -500,6 +510,7 @@ var VideoManager = (function() {
 	self.refresh = _refresh;
 	self.mute = _mute;
 	self.clickExclusive = _clickExclusive;
+	self.exclusive = _exclusive;
 	return self;
 })();
 function setRoomSizes() {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ffe78cd2/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js
index d0a408b..bed2119 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js
@@ -41,13 +41,13 @@ var VideoSettings = (function() {
 		}
 		return s;
 	}
-	function _save() {
+	function _save(refr) {
 		var _s = JSON.stringify(s);
 		localStorage.setItem('openmeetings', _s);
 		if (typeof avSettings === 'function') {
 			avSettings(_s);
 		}
-		if (typeof VideoManager !== 'undefined' && o.uid) {
+		if (refr && typeof VideoManager !== 'undefined' && o.uid) {
 			VideoManager.refresh(o.uid, s.video);
 		}
 	}
@@ -79,7 +79,7 @@ var VideoSettings = (function() {
 						primary: "ui-icon-disk"
 					}
 					, click: function() {
-						_save();
+						_save(true);
 						vs.dialog("close");
 					}
 				}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ffe78cd2/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
index caaa027..2bff5c5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
@@ -140,15 +140,6 @@ public class RoomSidebar extends Panel {
 					case exclusive:
 						if (room.getClient().hasRight(Right.exclusive)) {
 							WebSocketHelper.sendRoom(new TextRoomMessage(room.getRoom().getId(), getUserId(), RoomMessage.Type.exclusive, uid));
-							for (Client c : Application.getRoomClients(room.getRoom().getId())) {
-								if (cl.getUid().equals(c.getUid())) {
-									c.set(Activity.broadcastA);
-								} else {
-									c.remove(Activity.broadcastA);
-								}
-								Application.update(c);
-								room.broadcast(c);
-							}
 						}
 						break;
 					case mute:

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ffe78cd2/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/UserSpeaksIcon.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/UserSpeaksIcon.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/UserSpeaksIcon.java
index 5fbe056..9c4aa74 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/UserSpeaksIcon.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/UserSpeaksIcon.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.web.room.sidebar.icon;
 
-import org.apache.openmeetings.db.entity.basic.Client;
+import org.apache.openmeetings.db.entity.basic.Client.Activity;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.web.room.RoomPanel;
 
@@ -30,10 +30,13 @@ public class UserSpeaksIcon extends ClientIcon {
 		mainCssClass = "audio-activity ";
 	}
 
+	private boolean isActive() {
+		return getClient().hasActivity(Activity.broadcastA) && room.getClient().hasRight(Room.Right.exclusive);
+	}
+
 	@Override
 	protected String getTitle() {
-		final Client c = getClient();
-		return getString(c.hasRight(Room.Right.exclusive) ? "372" : "371");
+		return getString(isActive() ? "372" : "371");
 	}
 
 	@Override
@@ -43,7 +46,7 @@ public class UserSpeaksIcon extends ClientIcon {
 
 	@Override
 	protected boolean isClickable() {
-		return room.getClient().hasRight(Room.Right.exclusive);
+		return isActive();
 	}
 
 	@Override