Skip to content

Commit

Permalink
get default presentation pod working in the AIR client
Browse files Browse the repository at this point in the history
  • Loading branch information
capilkey committed Jan 11, 2018
1 parent d10d3af commit 5abc928
Show file tree
Hide file tree
Showing 8 changed files with 109 additions and 125 deletions.
Expand Up @@ -159,12 +159,12 @@ package org.bigbluebutton.lib.main.commands {
//deskshareConnection.room = conferenceParameters.room;
//deskshareConnection.connect();
//userSession.deskshareConnection = deskshareConnection;
usersService.joinMeeting();
// Query the server for chat, users, and presentation info
chatService.sendWelcomeMessage();
chatService.getGroupChats();
presentationService.getPresentationInfo();
presentationService.getPresentationPods();
meetingData.users.userChangeSignal.add(successUsersAdded);
usersService.joinMeeting();
usersService.queryForParticipants();
usersService.queryForRecordingStatus();
userSession.successJoiningMeetingSignal.remove(joiningMeetingSuccess);
Expand Down
Expand Up @@ -16,7 +16,7 @@ package org.bigbluebutton.lib.main.commands {

override public function execute():void {
trace("GoToSlideCommand.execute()");
presentationService.setCurrentPage(presentationId, pageId);
presentationService.setCurrentPage("DEFAULT_PRESENTATION_POD", presentationId, pageId);
}
}
}
Expand Up @@ -14,8 +14,6 @@ package org.bigbluebutton.lib.presentation.models {

private var _slides:ArrayCollection;

private var _changePresentation:Function;

private var _currentSlide:Slide;

private var _current:Boolean = false;
Expand All @@ -26,11 +24,10 @@ package org.bigbluebutton.lib.presentation.models {

private var _loaded:Boolean = false;

public function Presentation(fileName:String, id:String, changePresentation:Function, numOfSlides:int, isCurrent:Boolean, downloadable:Boolean):void {
public function Presentation(fileName:String, id:String, numOfSlides:int, isCurrent:Boolean, downloadable:Boolean):void {
_fileName = fileName;
_id = id;
_slides = new ArrayCollection();
_changePresentation = changePresentation;
_current = isCurrent;
_downloadable = downloadable;
}
Expand Down Expand Up @@ -69,15 +66,6 @@ package org.bigbluebutton.lib.presentation.models {
return _slides.length;
}

public function show():void {
_changePresentation(this);
}

public function finishedLoading(currentSlideNum:int):void {
_loaded = true;
_changePresentation(this, currentSlideNum);
}

public function get loaded():Boolean {
return _loaded;
}
Expand Down
Expand Up @@ -45,49 +45,38 @@ package org.bigbluebutton.lib.presentation.models {
return p;
}
}
var presentation:Presentation = new Presentation(presentationName, id, changeCurrentPresentation, numberOfSlides, current, downloadable);
var presentation:Presentation = new Presentation(presentationName, id, numberOfSlides, current, downloadable);
presentation.slideChangeSignal.add(slideChangeSignal.dispatch);
_presentations.addItem(presentation);
return presentation;
}

public function removePresentation(presentationName:String):void {
public function removePresentation(presentationId:String):void {
for (var i:int = 0; i < _presentations.length; i++) {
var p:Presentation = _presentations[i];
if (p.fileName == presentationName) {
trace("Removing presentation " + presentationName);
if (p.id == presentationId) {
trace("Removing presentation " + presentationId);
_presentations.removeItemAt(i);
}
}
}

public function getPresentation(presentationName:String):Presentation {
trace("PresentProxy::getPresentation: presentationName=" + presentationName);
public function getPresentationById(presentationId:String):Presentation {
trace("PresentProxy::getPresentation: presentationId=" + presentationId);
for (var i:int = 0; i < _presentations.length; i++) {
var p:Presentation = _presentations[i];
if (p.fileName == presentationName) {
if (p.id == presentationId) {
return p;
}
}
return null;
}

public function getPresentationByID(presentationID:String):Presentation {
trace("PresentProxy::getPresentation: presentationID=" + presentationID);
for (var i:int = 0; i < _presentations.length; i++) {
var p:Presentation = _presentations[i];
if (p.id == presentationID) {
return p;
}
}
return null;
}

public function addAnnotationHistory(whiteboardID:String, annotationArray:Array):void {
/* var whiteboardIDParts:Array = whiteboardID.split("/");
var presentationID:String = whiteboardIDParts[0];
var pageNumber:int = parseInt(whiteboardIDParts[1]) - 1;
var presentation:Presentation = getPresentationByID(presentationID);
public function addAnnotationHistory(whiteboardId:String, annotationArray:Array):void {
/* var whiteboardIdParts:Array = whiteboardId.split("/");
var presentationId:String = whiteboardIdParts[0];
var pageNumber:int = parseInt(whiteboardIdParts[1]) - 1;
var presentation:Presentation = getPresentationById(presentationId);
if (presentation != null) {
if (presentation.addAnnotationHistory(pageNumber, annotationArray)) {
if (presentation == _currentPresentation && pageNumber == _currentPresentation.currentSlideNum) {
Expand Down Expand Up @@ -129,23 +118,35 @@ package org.bigbluebutton.lib.presentation.models {
}
}

private function changeCurrentPresentation(p:Presentation):void {
currentPresentation = p;
public function setCurrentPresentation(presentationId:String):void {
if (currentPresentation && currentPresentation.id != presentationId) {
return;
}

var nextPres:Presentation = getPresentationById(presentationId);

if (nextPres != null) {
if (_currentPresentation != null) {
_currentPresentation.current = false;
}
_currentPresentation = nextPres;
_currentPresentation.current = true;
_presentationChangeSignal.dispatch();
}
}

public function setCurrentSlide(presentationId:String, slideId:String):void {
var pres:Presentation = getPresentationById(presentationId);

if (pres != null) {
pres.setCurrentSlide(slideId);
}
}

public function get currentPresentation():Presentation {
return _currentPresentation;
}

public function set currentPresentation(p:Presentation):void {
if (_currentPresentation != null) {
_currentPresentation.current = false;
}
_currentPresentation = p;
_currentPresentation.current = true;
_presentationChangeSignal.dispatch();
}

public function get presentationChangeSignal():ISignal {
return _presentationChangeSignal;
}
Expand Down
Expand Up @@ -2,10 +2,10 @@ package org.bigbluebutton.lib.presentation.services {

public interface IPresentationService {
function setupMessageSenderReceiver():void;
function getPresentationInfo():void;
function setCurrentPage(presentationId: String, pageId: String):void;
function move(presentationId:String, pageId:String, xOffset:Number, yOffset:Number, widthRatio:Number, heightRatio:Number):void;
function removePresentation(presentationId:String):void;
function setCurrentPresentation(presentationId:String):void;
function getPresentationPods():void;
function setCurrentPage(podId:String, presentationId: String, pageId: String):void;
function move(podId:String, presentationId:String, pageId:String, xOffset:Number, yOffset:Number, widthRatio:Number, heightRatio:Number):void;
function removePresentation(podId:String, presentationId:String):void;
function setCurrentPresentation(podId:String, presentationId:String):void;
}
}
Expand Up @@ -26,55 +26,48 @@ package org.bigbluebutton.lib.presentation.services {

private static const CONVERSION_COMPLETED_KEY:String = "CONVERSION_COMPLETED";

private static const DEFAULT_POD_ID:String = "DEFAULT_PRESENTATION_POD";

public var userSession:IUserSession;

public function PresentMessageReceiver() {
}

public function onMessage(messageName:String, message:Object):void {
switch (messageName) {

case "conversionUpdateMessageCallback":
handleConversionUpdateMessageCallback(message);
break;
case "generatedSlideUpdateMessageCallback":
handleGeneratedSlideUpdateMessageCallback(message);
break;
case "pageCountExceededUpdateMessageCallback":
handlePageCountExceededUpdateMessageCallback(message);
break;
case "removePresentationCallback":
handleRemovePresentationCallback(message);
break;
case "sharePresentationCallback":
handleSharePresentationCallback(message);




case "GetPresentationInfoRespMsg":
handleGetPresentationInfoRespMsg(message)
case "GetAllPresentationPodsRespMsg":
handleGetAllPresentationPodsRespMsg(message)
break;
case "PresentationConversionCompletedEvtMsg":
handlePresentationConversionCompletedEvtMsg(message);
break;
case "SetCurrentPageEvtMsg":
handleSetCurrentPageEvtMsg(message);
break;
case "SetCurrentPresentationEvtMsg":
handleSetCurrentPresentationEvtMsg(message);
break;
case "ResizeAndMovePageEvtMsg":
handleResizeAndMovePageEvtMsg(message);
break;
case "RemovePresentationEvtMsg":
handleRemovePresentationEvtMsg(message);
break;
default:
break;
}
}

private function handleGetPresentationInfoRespMsg(msg:Object):void {
trace("PresentMessageReceiver::handleGetPresentationInfoRespMsg()");
var presentations:Array = msg.body.presentations as Array;
if (msg.body.presentations) {
for (var i:int = 0; i < presentations.length; i++) {
addPresentation(presentations[i]);
private function handleGetAllPresentationPodsRespMsg(msg:Object):void {
trace("PresentMessageReceiver::handleGetAllPresentationPodsRespMsg()");
var podsArr:Array = msg.body.pods as Array;
for (var j:int = 0; j < podsArr.length; j++) {
var podObj:Object = podsArr[j] as Object;
if (podObj.id == DEFAULT_POD_ID) {
var presentations:Array = podObj.presentations as Array;
for (var k:int = 0; k < presentations.length; k++) {
addPresentation(presentations[k] as Object);
}
}
}
}
Expand All @@ -88,47 +81,49 @@ package org.bigbluebutton.lib.presentation.services {
presentation.add(new Slide(s.id, s.num, s.swfUri, s.thumbUri, s.txtUri, s.current, s.xOffset, s.yOffset, s.widthRatio, s.heightRatio));
}
if (presentation.current) {
presentation.show();
userSession.presentationList.setCurrentPresentation(presentationObject.id);
}
}

public function handlePresentationConversionCompletedEvtMsg(msg:Object):void {
trace("PresentMessageReceiver::handlePresentationConversionCompletedEvtMsg() -- new presentation [" + msg.body.presentation.name + "] uploaded");
addPresentation(msg.body.presentation);
if (msg.body.podId == DEFAULT_POD_ID) {
addPresentation(msg.body.presentation);
}
}

public function handleSetCurrentPresentationEvtMsg(msg:Object):void {
trace("PresentMessageReceiver::handleSetCurrentPresentationEvtMsg() -- change current presentation [" + msg.body.presentationId + "]");
if (msg.body.podId == DEFAULT_POD_ID) {
userSession.presentationList.setCurrentPresentation(msg.body.presentationId);
}
}

private function handleSetCurrentPageEvtMsg(msg:Object):void {
trace("PresentMessageReceiver::handleSetCurrentPageEvtMsg() -- going to slide number [" + msg.body.pageId + "]");
userSession.presentationList.currentPresentation.setCurrentSlide(msg.body.pageId);
if (msg.body.podId == DEFAULT_POD_ID) {
userSession.presentationList.setCurrentSlide(msg.body.presentationId, msg.body.pageId);
}
}

private function handleResizeAndMovePageEvtMsg(msg:Object):void {
trace("PresentMessageReceiver::handleResizeAndMovePageEvtMsg()");
userSession.presentationList.setViewedRegion(msg.body.presentationId, msg.body.pageId, msg.body.xOffset, msg.body.yOffset, msg.body.widthRatio, msg.body.heightRatio);
if (msg.body.podId == DEFAULT_POD_ID) {
userSession.presentationList.setViewedRegion(msg.body.presentationId, msg.body.pageId, msg.body.xOffset, msg.body.yOffset, msg.body.widthRatio, msg.body.heightRatio);
}
}

private function handleRemovePresentationEvtMsg(msg:Object):void {
trace("PresentMessageReceiver::handleRemovePresentationEvtMsg() -- removing presentation [" + msg.body.presentationId + "]");
if (msg.body.podId == DEFAULT_POD_ID) {
userSession.presentationList.removePresentation(msg.body.presentationId);
}
}







private function handleRemovePresentationCallback(m:Object):void {
var msg:Object = JSON.parse(m.msg);
trace("PresentMessageReceiver::handleRemovePresentationCallback() -- removing presentation [" + msg.name + "]");
userSession.presentationList.removePresentation(msg.name);
}

private function handleSharePresentationCallback(m:Object):void {
var msg:Object = JSON.parse(m.msg);
trace("PresentMessageReceiver::handleSharePresentationCallback() -- now showing presentation [" + msg.presentation.name + "]");
var presentation:Presentation = userSession.presentationList.getPresentation(msg.presentation.name);
if (presentation != null) {
presentation.show();
}
}

public function handlePageCountExceededUpdateMessageCallback(m:Object):void {
trace("PresentMessageReceiver::handlePageCountExceededUpdateMessageCallback()");
/*
Expand Down
Expand Up @@ -17,47 +17,47 @@ package org.bigbluebutton.lib.presentation.services {
trace(status);
};

public function getPresentationInfo():void {
trace("PresentMessageSender::getPresentationInfo() -- Sending [GetPresentationInfoReqMsg] message to server");
public function getPresentationPods():void {
trace("PresentMessageSender::getPresentationPods() -- Sending [GetAllPresentationPodsReqMsg] message to server");
var message:Object = {
header: {name: "GetPresentationInfoReqMsg", meetingId: conferenceParameters.meetingID, userId: conferenceParameters.internalUserID},
body: {userId: conferenceParameters.internalUserID}
header: {name: "GetAllPresentationPodsReqMsg", meetingId: conferenceParameters.meetingID, userId: conferenceParameters.internalUserID},
body: {}
};
userSession.mainConnection.sendMessage2x(defaultSuccessResponse, defaultFailureResponse, message);
}

public function setCurrentPage(presentationId: String, pageId: String):void {
public function setCurrentPage(podId: String, presentationId: String, pageId: String):void {
trace("PresentMessageSender::setCurrentPage() -- Sending [SetCurrentPagePubMsg] message to server with message [page:" + pageId + "]");
var message:Object = {
header: {name: "SetCurrentPagePubMsg", meetingId: conferenceParameters.meetingID, userId: conferenceParameters.internalUserID},
body: {presentationId: presentationId, pageId: pageId}
body: {podId: podId, presentationId: presentationId, pageId: pageId}
};
userSession.mainConnection.sendMessage2x(defaultSuccessResponse, defaultFailureResponse, message);
}

public function move(presentationId: String, pageId: String, xOffset:Number, yOffset:Number, widthRatio:Number, heightRatio:Number):void {
public function move(podId: String, presentationId: String, pageId: String, xOffset:Number, yOffset:Number, widthRatio:Number, heightRatio:Number):void {
trace("PresentMessageSender::move() -- Sending [ResizeAndMovePagePubMsg] message to server with message " + "[xOffset:" + xOffset + ", yOffset:" + yOffset + ", widthRatio:" + widthRatio + ", heightRatio:" + heightRatio + "]");
var message:Object = {
header: {name: "ResizeAndMovePagePubMsg", meetingId: conferenceParameters.meetingID, userId: conferenceParameters.internalUserID},
body: {presentationId: presentationId, pageId: pageId, xOffset: xOffset, yOffset: yOffset, widthRatio: widthRatio, heightRatio: heightRatio}
body: {podId: podId, presentationId: presentationId, pageId: pageId, xOffset: xOffset, yOffset: yOffset, widthRatio: widthRatio, heightRatio: heightRatio}
};
userSession.mainConnection.sendMessage2x(defaultSuccessResponse, defaultFailureResponse, message);
}

public function removePresentation(presentationId:String):void {
public function removePresentation(podId: String, presentationId:String):void {
trace("PresentMessageSender::removePresentation() -- Sending [RemovePresentationPubMsg] message to server with message [presentationId:" + presentationId + "]");
var message:Object = {
header: {name: "RemovePresentationPubMsg", meetingId: conferenceParameters.meetingID, userId: conferenceParameters.internalUserID},
body: {presentationId: presentationId}
body: {podId: podId, presentationId: presentationId}
};
userSession.mainConnection.sendMessage2x(defaultSuccessResponse, defaultFailureResponse, message);
}

public function setCurrentPresentation(presentationId:String):void {
public function setCurrentPresentation(podId: String, presentationId:String):void {
trace("PresentMessageSender::setCurrentPresentation() -- Sending [SetCurrentPresentationPubMsg] message to server with message [presentationId:" + presentationId + "]");
var message:Object = {
header: {name: "SetCurrentPresentationPubMsg", meetingId: conferenceParameters.meetingID, userId: conferenceParameters.internalUserID},
body: {presentationId: presentationId}
body: {podId: podId, presentationId: presentationId}
};
userSession.mainConnection.sendMessage2x(defaultSuccessResponse, defaultFailureResponse, message);
}
Expand Down

0 comments on commit 5abc928

Please sign in to comment.