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