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/04/30 17:29:57 UTC

[45/50] [abbrv] openmeetings git commit: [OPENMEETINGS-551] fallback handling and volume slider are added

[OPENMEETINGS-551] fallback handling and volume slider are added


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

Branch: refs/heads/master
Commit: a600e321f9dd4ccc8a1efe3cd7f2bb8ccf0877f0
Parents: a4d2a56
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Apr 21 01:27:01 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Apr 21 01:27:01 2017 +0000

----------------------------------------------------------------------
 .../openmeetings/db/entity/basic/Client.java    | 11 ++++--
 .../flex/org/apache/openmeetings/OmVideo.as     | 37 ++++++++++++--------
 .../apache/openmeetings/web/room/RoomPanel.html | 12 +++++++
 .../apache/openmeetings/web/room/RoomPanel.java | 29 ++++++++++-----
 .../org/apache/openmeetings/web/room/room.js    | 24 +++++++++++++
 .../web/room/sidebar/RoomSidebar.java           |  2 +-
 openmeetings-web/src/main/webapp/css/room.css   | 14 +++++++-
 7 files changed, 102 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a600e321/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
index 0f8fc82..19e9787 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
@@ -342,7 +342,7 @@ public class Client implements IClient {
 		return true;
 	}
 
-	public JSONObject toJson() {
+	public JSONObject toJson(boolean self) {
 		JSONObject u = new JSONObject();
 		if (user != null) {
 			JSONObject a = new JSONObject();
@@ -356,7 +356,7 @@ public class Client implements IClient {
 				a.put("country", user.getAddress().getCountry());
 			}
 		}
-		return new JSONObject()
+		JSONObject json = new JSONObject()
 				.put("user", u)
 				.put("uid", uid)
 				.put("rights", new JSONArray(rights))
@@ -364,7 +364,12 @@ public class Client implements IClient {
 				.put("pod", pod)
 				.put("broadcastId", broadcastId)
 				.put("width", width)
-				.put("height", height);
+				.put("height", height)
+				.put("self", self);
+		if (self) {
+			json.put("cam", cam).put("mic", mic);
+		}
+		return json;
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a600e321/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as b/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
index 5538f46..c32e8a2 100644
--- a/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
+++ b/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
@@ -45,6 +45,7 @@ public class OmVideo {
 	public var height:int;
 	private var mode:String;
 	private var params:Object;
+	private var url:String;
 	private var fallback:Boolean;
 
 	public function OmVideo(ui:UIComponent, params:Object) {
@@ -97,9 +98,6 @@ public class OmVideo {
 	private function createStream():void {
 		debug("createStream: ");
 		ns = new NetStream(nc);
-		//see: http://livedocs.adobe.com/flash/9.0_de/ActionScriptLangRefV3/flash/net/NetStream.html
-		//according to the docs the construct to catch event has to be implemented like this.
-		//var t = this;
 		ns.client = {
 			onMetaData: function(metadata:Object):void {
 				debug("onMetaData: ", metadata);
@@ -137,7 +135,6 @@ public class OmVideo {
 
 		if (cam != null) {
 			ns.attachCamera(cam);
-			//invokes Method in baseVideoView which shows the cam
 			attachCamera(cam);
 
 			var videoStreamSettings:VideoStreamSettings = null;
@@ -166,17 +163,33 @@ public class OmVideo {
 		}
 	}
 
+	private function _connect(url:String):void {
+		nc.connect(url, {
+			uid: params.uid
+			, sid: params.sid
+			, nativeSsl: 'best' == params.proxyType
+		});
+	}
+
 	private function connect(callback:Function):void {
 		if (nc == null || !nc.connected) {
-			var url:String = params.url;  //TODO fallback
+			url = params.url;
 			debug("NetConnection is not connected", url);
 			nc = new NetConnection();
 			nc.addEventListener(NetStatusEvent.NET_STATUS, function onConnectionStatus(e:NetStatusEvent):void {
 				debug("ConnectionStatus: " + e.info.code);
-				if (e.info.code == "NetConnection.Connect.Success") {
-					callback();
-				} else {
-					//TODO
+				switch (e.info.code) {
+					case 'NetConnection.Connect.Failed':
+						if (!fallback) {
+							fallback = true;
+							url = params.fallback;
+							_connect(url);
+						}
+						break;
+					case 'NetConnection.Connect.Success':
+						callback();
+						break;
+					//TODO other cases
 				}
 			});
 			nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, function (event:AsyncErrorEvent):void {
@@ -197,11 +210,7 @@ public class OmVideo {
 					debug("id: " + id); //TODO save connection id
 				}
 			};
-			nc.connect(url, {
-				uid: params.uid
-				, sid: params.sid
-				, nativeSsl: 'best' == params.proxyType
-			});
+			_connect(url);
 		} else {
 			callback();
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a600e321/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
index 87afb87..3f30083 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
@@ -46,6 +46,18 @@
 		<div id="user-video">
 			<div class="video"></div>
 		</div>
+		<div id="video-volume-btn">
+			<a class="ui-dialog-titlebar-volume ui-corner-all ui-state-default" href="#" title="volume" role="button" data-toggle="dropdown">
+				<span class="ui-icon ui-icon-triangle-2-n-s">volume</span>
+			</a>
+			<ul class="dropdown-menu video volume">
+				<li>
+					<div class="slider">
+						<div class="ui-slider-handle handle"></div>
+					</div>
+				</li>
+			</ul>
+		</div>
 	</div>
 </wicket:panel>
 </html>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a600e321/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 315acc0..0cf02f3 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
@@ -161,7 +161,7 @@ public class RoomPanel extends BasePanel {
 		for (Client c: getRoomClients(getRoom().getId()) ){
 			boolean self = getClient().getUid().equals(c.getUid());
 			if (!self) {
-				JSONObject json = c.toJson().put("sid", getSid()).put("self", self);
+				JSONObject json = c.toJson(self).put("sid", getSid());
 				// TODO we should check if client is screenShare, see onEvent newStream case.
 				target.appendJavaScript(String.format("VideoManager.play(%s);", json));
 			}
@@ -344,7 +344,7 @@ public class RoomPanel extends BasePanel {
 								log.error("Not existing user has stopped recording {} !!!!", uid);
 								return;
 							}
-							c.getActivities().remove(Client.Activity.record);
+							c.remove(Client.Activity.record);
 						}
 						break;
 					case recordingStarted:
@@ -356,17 +356,30 @@ public class RoomPanel extends BasePanel {
 								log.error("Not existing user has started recording {} !!!!", recordingUser);
 								return;
 							}
-							c.getActivities().add(Client.Activity.record);
+							c.set(Client.Activity.record);
 						}
 						break;
 					case sharingStoped:
-						//TODO check sharingUser == ((TextRoomMessage)m).getText();
-						sharingUser = null;
-						menu.update(handler);
+						{
+							sharingUser = null;
+							Client c = getOnlineClient(((TextRoomMessage)m).getText());
+							if (c == null) {
+								log.error("Not existing user has started sharing {} !!!!", sharingUser);
+								return;
+							}
+							c.remove(Client.Activity.share);
+							menu.update(handler);
+						}
 						break;
 					case sharingStarted:
 						{
 							sharingUser = ((TextRoomMessage)m).getText();
+							Client c = getOnlineClient(sharingUser);
+							if (c == null) {
+								log.error("Not existing user has started sharing {} !!!!", sharingUser);
+								return;
+							}
+							c.set(Client.Activity.share);
 							menu.update(handler);
 						}
 						break;
@@ -374,7 +387,7 @@ public class RoomPanel extends BasePanel {
 						{
 							Client c = getOnlineClient(((TextRoomMessage)m).getText());
 							handler.appendJavaScript(String.format("VideoManager.update(%s);"
-									, c.toJson().put("sid", getSid()).put("self", getClient().getUid().equals(c.getUid()))));
+									, c.toJson(getClient().getUid().equals(c.getUid())).put("sid", getSid())));
 							sidebar.update(handler);
 							menu.update(handler);
 							wb.update(handler);
@@ -386,7 +399,7 @@ public class RoomPanel extends BasePanel {
 						Client c = getOnlineClient(obj.getString("uid"));
 						boolean self = getClient().getUid().equals(c.getUid());
 						if (!self) {
-							JSONObject json = c.toJson().put("sid", getSid()).put("self", self);
+							JSONObject json = c.toJson(self).put("sid", getSid());
 							if (obj.optBoolean("screenShare", false)) {
 								json.put("screenShare", true)
 									.put("uid", obj.getString("suid")) // unique screen-sharing ID

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a600e321/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 cd182c0..1b2d687 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,6 +63,30 @@ var Video = (function() {
 			, dblclick: "collapse"
 		});
 		t = v.parent().find('.ui-dialog-titlebar').attr('title', name);
+		v.parent().find('.ui-dialog-titlebar-buttonpane').append($('#video-volume-btn').children().clone());
+		var volume = v.parent().find('.dropdown-menu.video.volume');
+		v.parent().find('.ui-dialog-titlebar-volume').click(function(e) {
+			e.stopImmediatePropagation();
+			volume.toggle();
+		}).dblclick(function(e) {
+			e.stopImmediatePropagation();
+		});
+		var handle = v.parent().find('.slider .handle');
+		v.parent().find('.slider').slider({
+			orientation: 'vertical'
+			, range: 'min'
+			, min: 0
+			, max: 100
+			, value: 60
+			, slide: function(event, ui) {
+			}
+			, create: function() {
+				handle.text($(this).slider("value"));
+			}
+			, slide: function(event, ui) {
+				handle.text(ui.value);
+			}
+		});
 		vc = v.find('.video');
 		vc.width(_w).height(_h);
 		//broadcast

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a600e321/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 168bea9..17b6973 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
@@ -414,7 +414,7 @@ public class RoomSidebar extends Panel {
 			}
 			Pod pod = c.getPod();
 			c.setPod(getRequest().getRequestParameters().getParameterValue(PARAM_POD).toOptionalInteger());
-			if (pod != Pod.none && pod != c.getPod()) {
+			if (pod != null && pod != Pod.none && pod != c.getPod()) {
 				//pod has changed, no need to toggle
 				c.set(a);
 			} else {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a600e321/openmeetings-web/src/main/webapp/css/room.css
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/room.css b/openmeetings-web/src/main/webapp/css/room.css
index 04d3a2b..cf437c1 100644
--- a/openmeetings-web/src/main/webapp/css/room.css
+++ b/openmeetings-web/src/main/webapp/css/room.css
@@ -354,10 +354,22 @@
 }
 .ui-dialog.video, .ui-dialog.video .ui-dialog-titlebar, .ui-dialog.video .ui-dialog-content {
 	padding: 0;
+}
+.ui-dialog.video .ui-dialog-content {
 	overflow: hidden;
 }
 .ui-dialog.video .ui-dialog-titlebar {
-	padding-left:10px
+	padding-left: 10px
+}
+.dropdown-menu.video.volume, .dropdown-menu.video.volume li {
+	width: 20px;
+	min-width: 20px;
+	border-radius: 0;
+	border: 0;
+	box-shadow: initial;
+	left: 50px;
+	top: -50px;
+	background-color: transparent;
 }
 .ui-dialog.video .title {
 	font-weight: bold;