Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1778259&r1=1778258&r2=1778259&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java Wed Jan 11 09:15:37 2017 @@ -232,9 +232,11 @@ public class Application extends Authent rcl.setIsSuperModerator(client.hasRight(Right.superModerator)); rcl.setIsMod(client.hasRight(Right.moderator)); rcl.setIsBroadcasting(client.hasRight(Right.audio)); - rcl.setCanVideo(client.hasRight(Right.video) && client.hasActivity(Activity.broadcastV)); + rcl.setCanVideo(client.hasRight(Right.video) && client.isCamEnabled() && client.hasActivity(Activity.broadcastV)); rcl.setCanDraw(client.hasRight(Right.whiteBoard)); if (client.hasActivity(Activity.broadcastA) || client.hasActivity(Activity.broadcastV)) { + rcl.setVWidth(client.getWidth()); + rcl.setVHeight(client.getHeight()); if (client.getPod() != Pod.none) { rcl.setInterviewPodId(client.getPod() == Pod.left ? 1 : 2); }
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=1778259&r1=1778258&r2=1778259&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 Wed Jan 11 09:15:37 2017 @@ -38,6 +38,7 @@ import org.apache.openmeetings.web.room. import org.apache.openmeetings.web.room.RoomPanel.Action; import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.json.JSONObject; import org.apache.wicket.core.request.handler.IPartialPageRequestHandler; import org.apache.wicket.extensions.markup.html.tabs.ITab; import org.apache.wicket.markup.head.IHeaderResponse; @@ -50,6 +51,7 @@ import org.apache.wicket.markup.html.pan import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; +import org.apache.wicket.util.string.StringValue; import org.apache.wicket.util.string.Strings; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; @@ -62,11 +64,13 @@ public class RoomSidebar extends Panel { public static final String FUNC_TOGGLE_RIGHT = "toggleRight"; public static final String FUNC_TOGGLE_ACTIVITY = "toggleActivity"; public static final String FUNC_ACTION = "roomAction"; + public static final String FUNC_SETTINGS = "avSettings"; public static final String PARAM_ACTION = "action"; public static final String PARAM_ACTIVITY = "activity"; public static final String PARAM_RIGHT = "right"; public static final String PARAM_UID = "uid"; public static final String PARAM_POD = "pod"; + public static final String PARAM_SETTINGS = "s"; private final RoomPanel room; private final TabbedPanel tabs; private final ITab userTab; @@ -91,12 +95,12 @@ public class RoomSidebar extends Panel { @Override protected void respond(AjaxRequestTarget target) { try { - String uid = getRequest().getRequestParameters().getParameterValue(PARAM_UID).toString(); + String uid = getRequest().getRequestParameters().getParameterValue(PARAM_UID).toString(); if (Strings.isEmpty(uid)) { return; } if (room.getClient().hasRight(Right.moderator)) { - Action a = Action.valueOf(getRequest().getRequestParameters().getParameterValue(PARAM_ACTION).toString()); + Action a = Action.valueOf(getRequest().getRequestParameters().getParameterValue(PARAM_ACTION).toString()); kickedClient = getOnlineClient(uid); if (kickedClient == null) { return; @@ -121,11 +125,11 @@ public class RoomSidebar extends Panel { @Override protected void respond(AjaxRequestTarget target) { try { - String uid = getRequest().getRequestParameters().getParameterValue(PARAM_UID).toString(); + String uid = getRequest().getRequestParameters().getParameterValue(PARAM_UID).toString(); if (Strings.isEmpty(uid)) { return; } - Right right = Right.valueOf(getRequest().getRequestParameters().getParameterValue(PARAM_RIGHT).toString()); + Right right = Right.valueOf(getRequest().getRequestParameters().getParameterValue(PARAM_RIGHT).toString()); if (room.getClient().hasRight(Right.moderator)) { Client client = getOnlineClient(uid); if (client == null) { @@ -158,11 +162,11 @@ public class RoomSidebar extends Panel { @Override protected void respond(AjaxRequestTarget target) { try { - String uid = getRequest().getRequestParameters().getParameterValue(PARAM_UID).toString(); + String uid = getRequest().getRequestParameters().getParameterValue(PARAM_UID).toString(); if (Strings.isEmpty(uid)) { return; } - Activity a = Activity.valueOf(getRequest().getRequestParameters().getParameterValue(PARAM_ACTIVITY).toString()); + Activity a = Activity.valueOf(getRequest().getRequestParameters().getParameterValue(PARAM_ACTIVITY).toString()); Client c = getOnlineClient(uid); if (c == null) { return; @@ -176,6 +180,15 @@ public class RoomSidebar extends Panel { } } if (activityAllowed(c, a, room.getRoom())) { + if (a == Activity.broadcastA && !c.isMicEnabled()) { + return; + } + if (a == Activity.broadcastV && !c.isCamEnabled()) { + return; + } + if (a == Activity.broadcastAV && !c.isMicEnabled() && !c.isCamEnabled()) { + return; + } Pod pod = c.getPod(); c.setPod(getRequest().getRequestParameters().getParameterValue(PARAM_POD).toOptionalInteger()); if (pod != Pod.none && pod != c.getPod()) { @@ -191,6 +204,23 @@ public class RoomSidebar extends Panel { } } }; + private final AbstractDefaultAjaxBehavior avSettings = new AbstractDefaultAjaxBehavior() { + private static final long serialVersionUID = 1L; + + @Override + protected void respond(AjaxRequestTarget target) { + StringValue s = getRequest().getRequestParameters().getParameterValue(PARAM_SETTINGS); + if (!s.isEmpty()) { + JSONObject o = new JSONObject(s.toString()); + room.getClient().setCam(o.getInt("cam")); + room.getClient().setMic(o.getInt("mic")); + boolean interview = Room.Type.interview == room.getRoom().getType(); + room.getClient().setWidth(interview ? 320 : o.getInt("width")); + room.getClient().setHeight(interview ? 260 : o.getInt("height")); + room.broadcast(target, room.getClient()); + } + } + }; public RoomSidebar(String id, final RoomPanel room) { super(id); @@ -204,12 +234,12 @@ public class RoomSidebar extends Panel { public boolean isVisible() { return true; } - + @Override public IModel<String> getTitle() { return Model.of(getString("613")); } - + @Override public WebMarkupContainer getPanel(String containerId) { return new UserFragment(containerId, "user-panel"); @@ -222,12 +252,12 @@ public class RoomSidebar extends Panel { public boolean isVisible() { return showFiles; } - + @Override public IModel<String> getTitle() { return Model.of(getString("614")); } - + @Override public WebMarkupContainer getPanel(String containerId) { return new FileFragment(containerId, "file-panel"); @@ -245,23 +275,24 @@ public class RoomSidebar extends Panel { room.kickUser(target, kickedClient); } }); - add(toggleRight, toggleActivity, roomAction); + add(toggleRight, toggleActivity, roomAction, avSettings); } - + @Override public void renderHead(IHeaderResponse response) { super.renderHead(response); response.render(new PriorityHeaderItem(getNamedFunction(FUNC_TOGGLE_RIGHT, toggleRight, explicit(PARAM_RIGHT), explicit(PARAM_UID)))); response.render(new PriorityHeaderItem(getNamedFunction(FUNC_TOGGLE_ACTIVITY, toggleActivity, explicit(PARAM_ACTIVITY), explicit(PARAM_UID), explicit(PARAM_POD)))); response.render(new PriorityHeaderItem(getNamedFunction(FUNC_ACTION, roomAction, explicit(PARAM_ACTION), explicit(PARAM_UID)))); + response.render(new PriorityHeaderItem(getNamedFunction(FUNC_SETTINGS, avSettings, explicit(PARAM_SETTINGS)))); } - + private ListView<Client> updateUsers() { //TODO do we need sort?? users.setList(getRoomClients(room.getRoom().getId())); return users; } - + public class UserFragment extends Fragment { private static final long serialVersionUID = 1L; @@ -271,7 +302,7 @@ public class RoomSidebar extends Panel { add(updateUsers()); } } - + public class FileFragment extends Fragment { private static final long serialVersionUID = 1L; @@ -300,7 +331,7 @@ public class RoomSidebar extends Panel { public boolean isShowFiles() { return showFiles; } - + public void showUpload(IPartialPageRequestHandler handler) { upload.open(handler); } Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java?rev=1778259&r1=1778258&r2=1778259&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java Wed Jan 11 09:15:37 2017 @@ -72,6 +72,8 @@ public abstract class ClientIcon extends //request/remove cls.append(CLS_CLICKABLE); add(AttributeAppender.replace("onclick", getScript())); + } else { + add(AttributeAppender.replace("onclick", "")); } internalUpdate(); add(AttributeAppender.replace("title", getTitle())); Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/RefreshIcon.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/RefreshIcon.java?rev=1778259&r1=1778258&r2=1778259&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/RefreshIcon.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/RefreshIcon.java Wed Jan 11 09:15:37 2017 @@ -18,15 +18,13 @@ */ package org.apache.openmeetings.web.room.sidebar.icon; -import static org.apache.openmeetings.web.room.sidebar.RoomSidebar.FUNC_ACTION; - import org.apache.openmeetings.web.app.Client; +import org.apache.openmeetings.web.app.Client.Activity; import org.apache.openmeetings.web.room.RoomPanel; -import org.apache.openmeetings.web.room.RoomPanel.Action; public class RefreshIcon extends ClientIcon { private static final long serialVersionUID = 1L; - + public RefreshIcon(String id, Client client, RoomPanel room) { super(id, client, room); mainCssClass = "restart "; @@ -36,20 +34,20 @@ public class RefreshIcon extends ClientI protected String getTitle() { return getString("610"); } - + @Override protected String getAlign() { return ALIGN_RIGHT; } - + @Override protected boolean isClickable() { - return false;//TODO broadcasting return self || room.getClient().hasRight(right) && !client.hasRight(Right.superModerator); + return client.hasActivity(Activity.broadcastA) || client.hasActivity(Activity.broadcastV); } - + @Override protected String getScript() { - return String.format("%s('%s', '%s');", FUNC_ACTION, Action.refresh.name(), client.getUid()); + return String.format("document.getElementById('lzapp').refreshAv('%s');", client.getUid()); } @Override Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/CamActivityIcon.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/CamActivityIcon.java?rev=1778259&r1=1778258&r2=1778259&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/CamActivityIcon.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/CamActivityIcon.java Wed Jan 11 09:15:37 2017 @@ -37,7 +37,7 @@ public class CamActivityIcon extends Roo } @Override - protected boolean isClickable() { - return true; + public boolean isEnabled() { + return client.isCamEnabled(); } } Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/MicActivityIcon.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/MicActivityIcon.java?rev=1778259&r1=1778258&r2=1778259&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/MicActivityIcon.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/MicActivityIcon.java Wed Jan 11 09:15:37 2017 @@ -37,7 +37,7 @@ public class MicActivityIcon extends Roo } @Override - protected boolean isClickable() { - return true; + public boolean isEnabled() { + return client.isMicEnabled(); } } Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/RoomActivityIcon.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/RoomActivityIcon.java?rev=1778259&r1=1778258&r2=1778259&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/RoomActivityIcon.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/RoomActivityIcon.java Wed Jan 11 09:15:37 2017 @@ -31,6 +31,7 @@ import org.apache.openmeetings.web.room. public abstract class RoomActivityIcon extends ClientIcon { private static final long serialVersionUID = 1L; private static final String CLS_ENABLED = "enabled "; + private static final String CLS_DISABLED = "disabled"; protected final Activity activity; protected final Pod pod = Pod.none; @@ -50,9 +51,16 @@ public abstract class RoomActivityIcon e } @Override + protected boolean isClickable() { + return isEnabled(); + } + + @Override protected void internalUpdate() { setVisible(visible()); - if (client.hasActivity(activity)) { + if (!isEnabled()) { + cssClass.append(CLS_DISABLED); + } else if (client.hasActivity(activity)) { cssClass.append(CLS_ENABLED); } } 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=1778259&r1=1778258&r2=1778259&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 Wed Jan 11 09:15:37 2017 @@ -228,6 +228,10 @@ .activity.mic.ui-icon { background-image: url(images/microphone_enable.png); } +.activity.ui-icon.disabled { + -webkit-filter: grayscale(100%); /* Safari 6.0 - 9.0 */ + filter: grayscale(100%); +} .activity.mic.enabled.ui-icon { background-image: url(images/microphone_disable.png); }
