Author: solomax
Date: Fri Apr 21 01:27:01 2017
New Revision: 1792160
URL: http://svn.apache.org/viewvc?rev=1792160&view=rev
Log:
[OPENMEETINGS-551] fallback handling and volume slider are added
Modified:
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
openmeetings/application/trunk/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css
Modified:
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java?rev=1792160&r1=1792159&r2=1792160&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
(original)
+++
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
Fri Apr 21 01:27:01 2017
@@ -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
Modified:
openmeetings/application/trunk/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as?rev=1792160&r1=1792159&r2=1792160&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
(original)
+++
openmeetings/application/trunk/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
Fri Apr 21 01:27:01 2017
@@ -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();
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html?rev=1792160&r1=1792159&r2=1792160&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
Fri Apr 21 01:27:01 2017
@@ -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>
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1792160&r1=1792159&r2=1792160&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
Fri Apr 21 01:27:01 2017
@@ -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
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js?rev=1792160&r1=1792159&r2=1792160&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
Fri Apr 21 01:27:01 2017
@@ -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
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java?rev=1792160&r1=1792159&r2=1792160&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
Fri Apr 21 01:27:01 2017
@@ -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 {
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css?rev=1792160&r1=1792159&r2=1792160&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css
Fri Apr 21 01:27:01 2017
@@ -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;