independent pods, visible slide on presenter side
This commit is contained in:
parent
60904989b3
commit
0866bc01ce
@ -3,6 +3,7 @@ package org.bigbluebutton.core.apps.presentation
|
||||
import org.bigbluebutton.common2.msgs._
|
||||
import org.bigbluebutton.core.bus.MessageBus
|
||||
import org.bigbluebutton.core.running.LiveMeeting
|
||||
import org.bigbluebutton.core.util.RandomStringGenerator
|
||||
|
||||
trait PresentationUploadTokenReqMsgHdlr {
|
||||
this: PresentationApp2x =>
|
||||
@ -14,7 +15,7 @@ trait PresentationUploadTokenReqMsgHdlr {
|
||||
|
||||
// TODO move these in Pods
|
||||
def generateToken(podId: String, userId: String): String = {
|
||||
"LALA-" + podId + "-" + userId
|
||||
"LALA-" + RandomStringGenerator.randomAlphanumericString(8) + podId + "-" + userId
|
||||
}
|
||||
|
||||
def userIsAllowedToUploadInPod(podId: String, userId: String): Boolean = {
|
||||
|
@ -178,6 +178,9 @@ package org.bigbluebutton.modules.present.business
|
||||
if (currentUploadCommand != null && currentUploadCommand.filename == e.filename) {
|
||||
uploadService.upload(currentUploadCommand.podId, currentUploadCommand.filename, currentUploadCommand.file, currentUploadCommand.isDownloadable);
|
||||
currentUploadCommand = null;
|
||||
|
||||
// TODO
|
||||
uploadService = null; // reset upload service so we can use new token for consecutive upload
|
||||
} else {
|
||||
|
||||
}
|
||||
@ -236,19 +239,17 @@ package org.bigbluebutton.modules.present.business
|
||||
// service.load(fullUri, slides, slideUri);
|
||||
LOGGER.debug('number of slides={0}', [slides.size()]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* It may take a few seconds for the process to complete on the server, so we allow for some time
|
||||
* before notifying viewers the presentation has been loaded
|
||||
* @param e
|
||||
*
|
||||
*/
|
||||
public function sharePresentation(e:PresenterCommands):void{
|
||||
JSLog.warn("+++ PresentProxy:: sharePresentation1: " + e.presentationName, {});
|
||||
JSLog.warn("+++ PresentProxy:: sharePresentation2: " + e.podId, {});
|
||||
sender.sharePresentation(e.podId, e.presentationName);
|
||||
*/
|
||||
public function sharePresentation(e:PresenterCommands):void {
|
||||
sender.sharePresentation(e.podId, e.presentationName);
|
||||
}
|
||||
|
||||
|
||||
public function removePresentation(e:RemovePresentationEvent):void {
|
||||
sender.removePresentation(e.presentationName);
|
||||
}
|
||||
|
@ -6,14 +6,16 @@ package org.bigbluebutton.modules.present.commands
|
||||
{
|
||||
public static const CHANGE_PAGE_COMMAND:String = "presentation change page command";
|
||||
|
||||
public var podId:String;
|
||||
public var pageId:String;
|
||||
public var preloadCount:uint
|
||||
public var preloadCount:uint;
|
||||
|
||||
public function ChangePageCommand(pageId: String, preloadCount:uint)
|
||||
public function ChangePageCommand(podId: String, pageId: String, preloadCount:uint)
|
||||
{
|
||||
super(CHANGE_PAGE_COMMAND, true, false);
|
||||
this.podId = podId;
|
||||
this.pageId = pageId;
|
||||
this.preloadCount = preloadCount;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,12 +6,14 @@ package org.bigbluebutton.modules.present.events
|
||||
{
|
||||
public static const PRESENTATION_PAGE_CHANGED_EVENT:String = "presentation page changed event";
|
||||
|
||||
public var podId: String;
|
||||
public var pageId: String;
|
||||
|
||||
public function PageChangedEvent(pageId: String)
|
||||
public function PageChangedEvent(podId: String, pageId: String)
|
||||
{
|
||||
super(PRESENTATION_PAGE_CHANGED_EVENT, true, false);
|
||||
this.pageId = pageId;
|
||||
this.podId = podId;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,11 +7,13 @@ package org.bigbluebutton.modules.present.events
|
||||
public static const PAGE_LOADED_EVENT:String = "presentation page loaded event";
|
||||
|
||||
public var pageId: String;
|
||||
public var podId: String;
|
||||
|
||||
public function PageLoadedEvent(pageId: String)
|
||||
public function PageLoadedEvent(podId: String, pageId: String)
|
||||
{
|
||||
super(PAGE_LOADED_EVENT, true, false);
|
||||
this.pageId = pageId;
|
||||
this.podId = podId;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,12 +6,14 @@ package org.bigbluebutton.modules.present.events
|
||||
{
|
||||
public static const PRESENTATION_CHANGED_EVENT: String = "presentation changed event";
|
||||
|
||||
public var podId: String;
|
||||
public var presentationId: String;
|
||||
|
||||
public function PresentationChangedEvent(id: String)
|
||||
public function PresentationChangedEvent(_podId: String, _presid: String)
|
||||
{
|
||||
super(PRESENTATION_CHANGED_EVENT, true, false);
|
||||
presentationId = id;
|
||||
podId = _podId;
|
||||
presentationId = _presid;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,9 +18,10 @@ package org.bigbluebutton.modules.present.model
|
||||
public var xOffset: Number;
|
||||
public var yOffset: Number;
|
||||
public var widthRatio: Number;
|
||||
public var heightRatio: Number
|
||||
public var heightRatio: Number;
|
||||
|
||||
private var _pageLoadedListener:Function;
|
||||
private var _parentPodId: String;
|
||||
private var _swfLoader:URLLoader;
|
||||
private var _swfLoaded:Boolean = false;
|
||||
private var _txtLoader:URLLoader;
|
||||
@ -73,13 +74,14 @@ package org.bigbluebutton.modules.present.model
|
||||
return _txtUri;
|
||||
}
|
||||
|
||||
public function loadPage(pageLoadedListener:Function, preloadCount:uint):void {
|
||||
public function loadPage(pageLoadedListener:Function, podId: String, preloadCount:uint):void {
|
||||
if (_swfLoaded && _txtLoaded) {
|
||||
pageLoadedListener(_id, preloadCount);
|
||||
pageLoadedListener(podId, _id, preloadCount);
|
||||
return;
|
||||
}
|
||||
|
||||
_pageLoadedListener = pageLoadedListener;
|
||||
_parentPodId = podId;
|
||||
_preloadCount = preloadCount;
|
||||
|
||||
if (!_swfLoaded) loadSwf();
|
||||
@ -101,7 +103,7 @@ package org.bigbluebutton.modules.present.model
|
||||
_swfLoaded = true;
|
||||
if (_txtLoaded) {
|
||||
if (_pageLoadedListener != null) {
|
||||
_pageLoadedListener(_id, _preloadCount);
|
||||
_pageLoadedListener(_parentPodId, _id, _preloadCount);
|
||||
}
|
||||
_preloadCount = 0;
|
||||
}
|
||||
@ -122,7 +124,7 @@ package org.bigbluebutton.modules.present.model
|
||||
_txtLoaded = true;
|
||||
if (_swfLoaded) {
|
||||
if (_pageLoadedListener != null) {
|
||||
_pageLoadedListener(_id, _preloadCount);
|
||||
_pageLoadedListener(_parentPodId, _id, _preloadCount);
|
||||
}
|
||||
_preloadCount = 0;
|
||||
}
|
||||
|
@ -52,6 +52,7 @@ package org.bigbluebutton.modules.present.model
|
||||
}
|
||||
|
||||
public function addPresentation(p: Presentation):void {
|
||||
JSLog.warn("+++ PresentationModel:: addPresentation: ", {});
|
||||
_presentations.addItem(p);
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ package org.bigbluebutton.modules.present.model {
|
||||
for (var i:int = 0; i < _presentationPods.length; i++) {
|
||||
var pod: PresentationModel = _presentationPods.getItemAt(i) as PresentationModel;
|
||||
|
||||
JSLog.warn("+++ PresentationPodManager:: getPod podId=" + podId + " getPodId=" + pod.getPodId(), {});
|
||||
// JSLog.warn("+++ PresentationPodManager:: getPod podId=" + podId + " getPodId=" + pod.getPodId(), {});
|
||||
if (pod.getPodId() == podId) {
|
||||
return pod;
|
||||
}
|
||||
|
@ -8,6 +8,8 @@ package org.bigbluebutton.modules.present.services
|
||||
import org.bigbluebutton.modules.present.events.PageLoadedEvent;
|
||||
import org.bigbluebutton.modules.present.model.Page;
|
||||
import org.bigbluebutton.modules.present.model.PresentationModel;
|
||||
import org.bigbluebutton.modules.present.model.PresentationPodManager;
|
||||
import org.bigbluebutton.main.api.JSLog;
|
||||
|
||||
public class PageLoaderService
|
||||
{
|
||||
@ -15,32 +17,35 @@ package org.bigbluebutton.modules.present.services
|
||||
private var dispatcher:Dispatcher = new Dispatcher();
|
||||
|
||||
public function loadPage(cmd: ChangePageCommand):void {
|
||||
// var page:Page = PresentationModel.getInstance().getPage(cmd.pageId);
|
||||
// if (page != null) {
|
||||
// LOGGER.debug("Loading page [{0}]", [cmd.pageId]);
|
||||
// page.loadPage(pageLoadedListener, cmd.preloadCount);
|
||||
// }
|
||||
var page:Page = PresentationPodManager.getInstance().getPod(cmd.podId).getPage(cmd.pageId);
|
||||
JSLog.warn("+++ PageLoaderService:: loadPage1: " + cmd.podId + "_____" + cmd.pageId, page != null);
|
||||
if (page != null) {
|
||||
LOGGER.debug("Loading page [{0}]", [cmd.pageId]);
|
||||
page.loadPage(pageLoadedListener, cmd.podId, cmd.preloadCount);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function pageLoadedListener(pageId:String, preloadCount:uint):void {
|
||||
// var page: Page = PresentationModel.getInstance().getPage(pageId);
|
||||
// if (page != null) {
|
||||
// if (page.current) {
|
||||
// // The page has been loaded and still the current displayed page.
|
||||
// LOGGER.debug("Loaded page [{0}]. Dispatching event to display it.", [pageId]);
|
||||
// var event: PageLoadedEvent = new PageLoadedEvent(page.id);
|
||||
// dispatcher.dispatchEvent(event);
|
||||
// }
|
||||
//
|
||||
// if (preloadCount > 0) {
|
||||
// var pageIdParts:Array = pageId.split("/");
|
||||
// LOGGER.debug("after split: {0}", [pageIdParts]);
|
||||
// LOGGER.debug("trying to preload next page with id: {0}", [(parseInt(pageIdParts[1],10) + 1).toString()]);
|
||||
// var changePageCommand: ChangePageCommand = new ChangePageCommand(pageIdParts[0]+"/"+(parseInt(pageIdParts[1], 10) + 1), preloadCount-1);
|
||||
// dispatcher.dispatchEvent(changePageCommand);
|
||||
// }
|
||||
// }
|
||||
public function pageLoadedListener(podId: String, pageId:String, preloadCount:uint):void {
|
||||
var page: Page = PresentationPodManager.getInstance().getPod(podId).getPage(pageId);
|
||||
|
||||
JSLog.warn("+++ PageLoaderService:: pageLoadedListener1: " + podId + "_____" + pageId, {});
|
||||
if (page != null) {
|
||||
if (page.current) {
|
||||
// The page has been loaded and still the current displayed page.
|
||||
LOGGER.debug("Loaded page [{0}]. Dispatching event to display it.", [pageId]);
|
||||
var event: PageLoadedEvent = new PageLoadedEvent(podId, page.id);
|
||||
dispatcher.dispatchEvent(event);
|
||||
}
|
||||
|
||||
if (preloadCount > 0) {
|
||||
var pageIdParts:Array = pageId.split("/");
|
||||
LOGGER.debug("after split: {0}", [pageIdParts]);
|
||||
LOGGER.debug("trying to preload next page with id: {0}", [(parseInt(pageIdParts[1],10) + 1).toString()]);
|
||||
var changePageCommand: ChangePageCommand = new ChangePageCommand(podId, pageIdParts[0]+"/"+(parseInt(pageIdParts[1], 10) + 1), preloadCount-1);
|
||||
dispatcher.dispatchEvent(changePageCommand);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -25,43 +25,41 @@ package org.bigbluebutton.modules.present.services
|
||||
{
|
||||
private static const LOGGER:ILogger = getClassLogger(PresentationService);
|
||||
private static const NUM_PRELOAD:uint = 3;
|
||||
private var model:PresentationModel;
|
||||
private var podManager: PresentationPodManager;
|
||||
private var sender:MessageSender;
|
||||
private var receiver:MessageReceiver;
|
||||
private var dispatcher:Dispatcher;
|
||||
|
||||
public function PresentationService() {
|
||||
model = PresentationModel.getInstance();
|
||||
podManager = PresentationPodManager.getInstance();
|
||||
receiver = new MessageReceiver(this);
|
||||
dispatcher = new Dispatcher();
|
||||
}
|
||||
|
||||
public function pageChanged(pageId:String):void {
|
||||
// var np: Page = model.getPage(pageId);
|
||||
// if (np != null) {
|
||||
// var oldPage: Page = PresentationModel.getInstance().getCurrentPage();
|
||||
// if (oldPage != null) oldPage.current = false;
|
||||
//
|
||||
// np.current = true
|
||||
//// trace(LOG + "Sending page changed event. page [" + np.id + "] oldpage current=[" + oldPage.current + "] newPage current=[" + np.current + "]");
|
||||
// var changePageCommand: ChangePageCommand = new ChangePageCommand(np.id, NUM_PRELOAD);
|
||||
// dispatcher.dispatchEvent(changePageCommand);
|
||||
// }
|
||||
public function pageChanged(podId: String, pageId:String):void {
|
||||
var np: Page = podManager.getPod(podId).getPage(pageId);
|
||||
if (np != null) {
|
||||
var oldPage: Page = podManager.getPod(podId).getCurrentPage();
|
||||
if (oldPage != null) oldPage.current = false;
|
||||
|
||||
np.current = true;
|
||||
// trace(LOG + "Sending page changed event. page [" + np.id + "] oldpage current=[" + oldPage.current + "] newPage current=[" + np.current + "]");
|
||||
var changePageCommand: ChangePageCommand = new ChangePageCommand(podId, np.id, NUM_PRELOAD);
|
||||
dispatcher.dispatchEvent(changePageCommand);
|
||||
}
|
||||
}
|
||||
|
||||
public function pageMoved(pageId:String, xOffset:Number, yOffset:Number, widthRatio:Number, heightRatio:Number):void {
|
||||
var np: Page = model.getPage(pageId);
|
||||
if (np != null) {
|
||||
np.xOffset = xOffset;
|
||||
np.yOffset = yOffset;
|
||||
np.widthRatio = widthRatio;
|
||||
np.heightRatio = heightRatio;
|
||||
// trace(LOG + "Sending page moved event. page [" + np.id + "] current=[" + np.current + "]");
|
||||
var event: PageChangedEvent = new PageChangedEvent(np.id);
|
||||
dispatcher.dispatchEvent(event);
|
||||
}
|
||||
// var np: Page = model.getPage(pageId);
|
||||
// if (np != null) {
|
||||
// np.xOffset = xOffset;
|
||||
// np.yOffset = yOffset;
|
||||
// np.widthRatio = widthRatio;
|
||||
// np.heightRatio = heightRatio;
|
||||
//// trace(LOG + "Sending page moved event. page [" + np.id + "] current=[" + np.current + "]");
|
||||
// var event: PageChangedEvent = new PageChangedEvent(np.id);
|
||||
// dispatcher.dispatchEvent(event);
|
||||
// }
|
||||
}
|
||||
|
||||
private function copyPageVOToPage(p: PageVO):Page {
|
||||
@ -73,8 +71,6 @@ package org.bigbluebutton.modules.present.services
|
||||
}
|
||||
|
||||
public function addPresentations(podId: String, presos:ArrayCollection):void {
|
||||
JSLog.warn("+++ PresentationService:: addPresentations1: " + podId, {});
|
||||
JSLog.warn("+++ PresentationService:: addPresentations2: " + presos.length, {});
|
||||
for (var i:int = 0; i < presos.length; i++) {
|
||||
var pres:PresentationVO = presos.getItemAt(i) as PresentationVO;
|
||||
addPresentation(podId, pres);
|
||||
@ -83,22 +79,22 @@ package org.bigbluebutton.modules.present.services
|
||||
|
||||
public function addPresentation(podId: String, pres:PresentationVO):void {
|
||||
var presentation:Presentation = presentationVOToPresentation(pres);
|
||||
JSLog.warn("+++ PresentationService:: addPresentatioN: " + podId, {});
|
||||
JSLog.warn("+++ PresentationService:: addPresentatioN: " + podId, {});
|
||||
podManager.getPod(podId).addPresentation(presentation);
|
||||
LOGGER.debug("Added new presentation [{0}]", [presentation.id]);
|
||||
|
||||
if (presentation.current) {
|
||||
LOGGER.debug("Making presentation [{0}] current [{1}]", [presentation.id, presentation.current]);
|
||||
var event: PresentationChangedEvent = new PresentationChangedEvent(pres.id);
|
||||
var event: PresentationChangedEvent = new PresentationChangedEvent(podId, pres.id);
|
||||
dispatcher.dispatchEvent(event);
|
||||
|
||||
var curPage:Page = presentation.getCurrentPage();
|
||||
if (curPage != null) {
|
||||
var changePageCommand: ChangePageCommand = new ChangePageCommand(curPage.id, NUM_PRELOAD);
|
||||
var changePageCommand: ChangePageCommand = new ChangePageCommand(podId, curPage.id, NUM_PRELOAD);
|
||||
dispatcher.dispatchEvent(changePageCommand);
|
||||
|
||||
LOGGER.debug("Sending page moved event to position page [{0}] current=[{1}]", [curPage.id, curPage.current]);
|
||||
var pageChangedEvent: PageChangedEvent = new PageChangedEvent(curPage.id);
|
||||
var pageChangedEvent: PageChangedEvent = new PageChangedEvent(podId, curPage.id);
|
||||
dispatcher.dispatchEvent(pageChangedEvent);
|
||||
}
|
||||
}
|
||||
@ -109,7 +105,7 @@ package org.bigbluebutton.modules.present.services
|
||||
var pages:ArrayCollection = presVO.getPages() as ArrayCollection;
|
||||
for (var k:int = 0; k < pages.length; k++) {
|
||||
var page:PageVO = pages[k] as PageVO;
|
||||
var pg:Page = copyPageVOToPage(page)
|
||||
var pg:Page = copyPageVOToPage(page);
|
||||
presoPages.addItem(pg);
|
||||
}
|
||||
|
||||
@ -131,12 +127,14 @@ package org.bigbluebutton.modules.present.services
|
||||
LOGGER.debug("Making presentation [{0}] the active presentation.", [presentationId]);
|
||||
newPres.current = true;
|
||||
|
||||
var event: PresentationChangedEvent = new PresentationChangedEvent(presentationId);
|
||||
|
||||
var event: PresentationChangedEvent = new PresentationChangedEvent(podId, presentationId);
|
||||
dispatcher.dispatchEvent(event);
|
||||
|
||||
var curPage:Page = podManager.getPod(podId).getCurrentPage();
|
||||
JSLog.warn("+++ PresentationService:: changeCurrentPresentation3: " + curPage.id, curPage != null);
|
||||
if (curPage != null) {
|
||||
var changePageCommand: ChangePageCommand = new ChangePageCommand(curPage.id, NUM_PRELOAD);
|
||||
var changePageCommand: ChangePageCommand = new ChangePageCommand(podId, curPage.id, NUM_PRELOAD);
|
||||
dispatcher.dispatchEvent(changePageCommand);
|
||||
}
|
||||
} else {
|
||||
@ -145,24 +143,24 @@ package org.bigbluebutton.modules.present.services
|
||||
}
|
||||
|
||||
public function removeAllPresentations():void {
|
||||
model.removeAllPresentations();
|
||||
// model.removeAllPresentations();
|
||||
}
|
||||
|
||||
public function removePresentation(presentationID:String):void {
|
||||
var removedEvent:RemovePresentationEvent = new RemovePresentationEvent(RemovePresentationEvent.PRESENTATION_REMOVED_EVENT);
|
||||
removedEvent.presentationName = presentationID;
|
||||
dispatcher.dispatchEvent(removedEvent);
|
||||
|
||||
var currPresentation:Presentation = model.getCurrentPresentation();
|
||||
|
||||
if(currPresentation && presentationID == currPresentation.id) {
|
||||
var uploadEvent:UploadEvent = new UploadEvent(UploadEvent.CLEAR_PRESENTATION);
|
||||
dispatcher.dispatchEvent(uploadEvent);
|
||||
}
|
||||
|
||||
model.removePresentation(presentationID);
|
||||
var updateEvent:RemovePresentationEvent = new RemovePresentationEvent(RemovePresentationEvent.UPDATE_DOWNLOADABLE_FILES_EVENT);
|
||||
dispatcher.dispatchEvent(updateEvent); // this event will trigger the disabling of the download button.
|
||||
// var removedEvent:RemovePresentationEvent = new RemovePresentationEvent(RemovePresentationEvent.PRESENTATION_REMOVED_EVENT);
|
||||
// removedEvent.presentationName = presentationID;
|
||||
// dispatcher.dispatchEvent(removedEvent);
|
||||
//
|
||||
// var currPresentation:Presentation = model.getCurrentPresentation();
|
||||
//
|
||||
// if(currPresentation && presentationID == currPresentation.id) {
|
||||
// var uploadEvent:UploadEvent = new UploadEvent(UploadEvent.CLEAR_PRESENTATION);
|
||||
// dispatcher.dispatchEvent(uploadEvent);
|
||||
// }
|
||||
//
|
||||
// model.removePresentation(presentationID);
|
||||
// var updateEvent:RemovePresentationEvent = new RemovePresentationEvent(RemovePresentationEvent.UPDATE_DOWNLOADABLE_FILES_EVENT);
|
||||
// dispatcher.dispatchEvent(updateEvent); // this event will trigger the disabling of the download button.
|
||||
}
|
||||
}
|
||||
}
|
@ -70,6 +70,7 @@ package org.bigbluebutton.modules.present.services.messaging
|
||||
messageName == "SendCaptionHistoryRespMsg" ||
|
||||
messageName == "GetGroupChatMsgsRespMsg" ||
|
||||
messageName == "DoLatencyTracerMsg" ||
|
||||
messageName == "PresentationConversionUpdateEvtMsg" ||
|
||||
messageName == "ServerToClientLatencyTracerMsg") {
|
||||
|
||||
} else {
|
||||
@ -124,7 +125,10 @@ package org.bigbluebutton.modules.present.services.messaging
|
||||
}
|
||||
|
||||
private function handleSetCurrentPageEvtMsg(msg:Object):void {
|
||||
service.pageChanged(msg.body.pageId);
|
||||
JSLog.warn("__--__Presentation received: handleSetCurrentPageEvtMsg" + msg.body.podId, {});
|
||||
JSLog.warn("__--__Presentation received: handleSetCurrentPageEvtMsg" + msg.body.pageId, {});
|
||||
|
||||
service.pageChanged(msg.body.podId, msg.body.pageId);
|
||||
}
|
||||
|
||||
private function validatePage(map:Object):Boolean {
|
||||
@ -192,9 +196,6 @@ package org.bigbluebutton.modules.present.services.messaging
|
||||
var presVO: PresentationVO = processUploadedPresentation(msg.body.presentation);
|
||||
var podId: String = msg.body.podId as String;
|
||||
|
||||
JSLog.warn("+++ Receiver:: handlePresentationConversionCompletedEvtMsg1: " + podId, {});
|
||||
JSLog.warn("+++ Receiver:: handlePresentationConversionCompletedEvtMsg2: " + presVO.id, {});
|
||||
JSLog.warn("+++ Receiver:: handlePresentationConversionCompletedEvtMsg3: " + presVO.name, {});
|
||||
service.addPresentation(podId, presVO);
|
||||
|
||||
var uploadEvent:ConversionCompletedEvent = new ConversionCompletedEvent(podId, presVO.id, presVO.name);
|
||||
|
@ -141,9 +141,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
private function initData():void {
|
||||
presentOptions = Options.getOptions(PresentOptions) as PresentOptions;
|
||||
|
||||
JSLog.warn("+++ FileUploadWindow:: initData: " + podId, {});
|
||||
|
||||
}
|
||||
|
||||
private function handleThumbnailsProgressEvent(event:CreatingThumbnailsEvent):void {
|
||||
@ -230,9 +227,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
uploadCmd.isDownloadable = isDownloadable;
|
||||
uploadCmd.podId = podId;
|
||||
|
||||
|
||||
JSLog.warn("+++ FileUploadWindow:: startUpload: " + podId, {});
|
||||
|
||||
globalDispatch.dispatchEvent(uploadCmd);
|
||||
letUserDownload.visible = false;
|
||||
}
|
||||
@ -326,8 +320,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
}
|
||||
|
||||
private function handleConversionCompleted(e:ConversionCompletedEvent):void{
|
||||
JSLog.warn("+++ FileUploadWindow:: handleConversionCompleted1: " + e.presId, {});
|
||||
JSLog.warn("+++ FileUploadWindow:: handleConversionCompleted2: " + e.podId, {});
|
||||
enableClosing();
|
||||
globalDispatch.dispatchEvent(new ChangePresentationCommand(e.podId, e.presId));
|
||||
globalDispatch.dispatchEvent(new UploadEvent(UploadEvent.CLOSE_UPLOAD_WINDOW));
|
||||
|
@ -339,13 +339,15 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
}
|
||||
|
||||
private function handleDisplaySlideEvent(event:DisplaySlideEvent):void {
|
||||
var presentationModel: PresentationModel = PresentationPodManager.getInstance().getPod(podId); // GOOD
|
||||
var curPage:Page = presentationModel.getCurrentPage();
|
||||
if (curPage != null) {
|
||||
displaySlideNumber(curPage.num);
|
||||
currentSlideWidth = event.slideWidth;
|
||||
currentSlideHeight = event.slideHeight;
|
||||
fitSlideToWindowMaintainingAspectRatio();
|
||||
var presentationModel:PresentationModel = PresentationPodManager.getInstance().getPod(podId);
|
||||
if (presentationModel != null) {
|
||||
var curPage:Page = presentationModel.getCurrentPage();
|
||||
if (curPage != null) {
|
||||
displaySlideNumber(curPage.num);
|
||||
currentSlideWidth = event.slideWidth;
|
||||
currentSlideHeight = event.slideHeight;
|
||||
fitSlideToWindowMaintainingAspectRatio();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -386,34 +388,44 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
uploadPres.visible = isPresenter;
|
||||
downloadPres.visible = !isPresenter;
|
||||
|
||||
// var page:Page = PresentationModel.getInstance().getCurrentPage();
|
||||
// if (page != null) {
|
||||
// displaySlideNumber(page.num);
|
||||
// }
|
||||
// displaySlideNavigationControls(isPresenter, !!page);
|
||||
//
|
||||
// setControlBarState("presenter");
|
||||
var presentationModel:PresentationModel = PresentationPodManager.getInstance().getPod(podId);
|
||||
if (presentationModel != null) {
|
||||
var page:Page = presentationModel.getCurrentPage();
|
||||
if (page != null) {
|
||||
displaySlideNumber(page.num);
|
||||
}
|
||||
displaySlideNavigationControls(isPresenter, !!page);
|
||||
|
||||
setControlBarState("presenter");
|
||||
}
|
||||
}
|
||||
|
||||
private function handlePresentationChangedEvent(e:PresentationChangedEvent) : void {
|
||||
if (podId != e.podId) {
|
||||
return;
|
||||
}
|
||||
|
||||
var presentationModel:PresentationModel = PresentationPodManager.getInstance().getPod(podId);
|
||||
if (presentationModel != null) {
|
||||
currentPresentation = presentationModel.getCurrentPresentationName();
|
||||
|
||||
slideView.setSlides(podId);
|
||||
slideView.visible = true;
|
||||
var page : Page = presentationModel.getCurrentPage();
|
||||
if (page != null) {
|
||||
displaySlideNumber(page.num);
|
||||
}
|
||||
|
||||
if (UsersUtil.amIPresenter()) {
|
||||
displaySlideNavigationControls(true, !!page);
|
||||
}
|
||||
else {
|
||||
displaySlideNavigationControls(false, !!page)
|
||||
}
|
||||
onResetZoom();
|
||||
updateDownloadBtn();
|
||||
}
|
||||
}
|
||||
|
||||
private function handlePresentationChangedEvent(e:PresentationChangedEvent) : void {
|
||||
// currentPresentation = PresentationModel.getInstance().getCurrentPresentationName();
|
||||
//
|
||||
// slideView.setSlides();
|
||||
// slideView.visible = true;
|
||||
// var page : Page = PresentationModel.getInstance().getCurrentPage();
|
||||
// if (page != null) {
|
||||
// displaySlideNumber(page.num);
|
||||
// }
|
||||
//
|
||||
// if (UsersUtil.amIPresenter()) {
|
||||
// displaySlideNavigationControls(true, !!page);
|
||||
// }
|
||||
// else {
|
||||
// displaySlideNavigationControls(false, !!page)
|
||||
// }
|
||||
// onResetZoom();
|
||||
// updateDownloadBtn();
|
||||
}
|
||||
|
||||
|
||||
private function displaySlideNavigationControls(isPresenter:Boolean, activePresentation:Boolean):void {
|
||||
@ -471,22 +483,28 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
backButton.mouseEnabled = false;
|
||||
backButton.styleName = "presentationBackButtonDisabledStyle" + styleNameExt;
|
||||
}
|
||||
|
||||
// if (pageNumber < PresentationModel.getInstance().getNumberOfPages()) {
|
||||
// forwardButton.mouseEnabled = true;
|
||||
// forwardButton.styleName = "presentationForwardButtonStyle" + styleNameExt;
|
||||
// } else {
|
||||
// forwardButton.mouseEnabled = false;
|
||||
// forwardButton.styleName = "presentationForwardButtonDisabledStyle" + styleNameExt;
|
||||
// }
|
||||
|
||||
var presentationModel:PresentationModel = PresentationPodManager.getInstance().getPod(podId);
|
||||
if (presentationModel != null) {
|
||||
if (pageNumber < presentationModel.getNumberOfPages()) {
|
||||
forwardButton.mouseEnabled = true;
|
||||
forwardButton.styleName = "presentationForwardButtonStyle" + styleNameExt;
|
||||
} else {
|
||||
forwardButton.mouseEnabled = false;
|
||||
forwardButton.styleName = "presentationForwardButtonDisabledStyle" + styleNameExt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function displaySlideNumber(currentSlide:int):void {
|
||||
disableSlideNavigationButtons(currentSlide);
|
||||
// btnSlideNum.label = "" + currentSlide + '/' + PresentationModel.getInstance().getNumberOfPages();
|
||||
// btnSlideNum.accessibilityName = ResourceUtil.getInstance().getString('bbb.presentation.btnSlideNum.accessibilityName', [currentSlide, PresentationModel.getInstance().getNumberOfPages()])
|
||||
var presentationModel:PresentationModel = PresentationPodManager.getInstance().getPod(podId);
|
||||
if (presentationModel != null) {
|
||||
btnSlideNum.label = "" + currentSlide + '/' + presentationModel.getNumberOfPages();
|
||||
btnSlideNum.accessibilityName = ResourceUtil.getInstance().getString('bbb.presentation.btnSlideNum.accessibilityName',
|
||||
[currentSlide, presentationModel.getNumberOfPages()])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private function clearPresentation(e:UploadEvent):void{
|
||||
slideView.visible = false;
|
||||
@ -505,15 +523,17 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
}
|
||||
|
||||
private function goToPreviousSlide():void {
|
||||
// if (PresentationModel.getInstance().getCurrentPage().num > 1) {
|
||||
// dispatchEvent(new GoToPrevPageCommand());
|
||||
// }
|
||||
var presentationModel:PresentationModel = PresentationPodManager.getInstance().getPod(podId);
|
||||
if (presentationModel != null && presentationModel.getCurrentPage().num > 1) {
|
||||
dispatchEvent(new GoToPrevPageCommand());
|
||||
}
|
||||
}
|
||||
|
||||
private function goToNextSlide():void {
|
||||
// if (PresentationModel.getInstance().getCurrentPage().num < PresentationModel.getInstance().getNumberOfPages()) {
|
||||
// dispatchEvent(new GoToNextPageCommand());
|
||||
// }
|
||||
var presentationModel:PresentationModel = PresentationPodManager.getInstance().getPod(podId);
|
||||
if (presentationModel != null && presentationModel.getCurrentPage().num < presentationModel.getNumberOfPages()) {
|
||||
dispatchEvent(new GoToNextPageCommand());
|
||||
}
|
||||
}
|
||||
|
||||
private function showPercentageInDataTip(val:String):String {
|
||||
@ -664,9 +684,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
}
|
||||
|
||||
private function updateStyles():void {
|
||||
// if (PresentationModel.getInstance().getCurrentPage()) {
|
||||
// disableSlideNavigationButtons(PresentationModel.getInstance().getCurrentPage().num);
|
||||
// }
|
||||
var presentationModel:PresentationModel = PresentationPodManager.getInstance().getPod(podId);
|
||||
if (presentationModel != null && presentationModel.getCurrentPage()) {
|
||||
disableSlideNavigationButtons(presentationModel.getCurrentPage().num);
|
||||
}
|
||||
}
|
||||
|
||||
private function onPollStartButtonClicked():void {
|
||||
@ -850,14 +871,17 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
return;
|
||||
}
|
||||
|
||||
// var downloadablePresentations:ArrayCollection = PresentationModel.getInstance().getDownloadablePresentations();
|
||||
// if (presentOptions.enableDownload && downloadablePresentations.length > 0 && !UsersUtil.amIPresenter()) {
|
||||
// LOGGER.debug("Enabling download presentation button. There are {0} presentations available for downloading.", [downloadablePresentations.length]);
|
||||
// downloadPres.visible = true;
|
||||
// } else {
|
||||
// LOGGER.debug("Disabling download presentation button. There are {0} presentations available for downloading.", [downloadablePresentations.length]);
|
||||
// downloadPres.visible = false;
|
||||
// }
|
||||
var presentationModel:PresentationModel = PresentationPodManager.getInstance().getPod(podId);
|
||||
if (presentationModel != null) {
|
||||
var downloadablePresentations:ArrayCollection = presentationModel.getDownloadablePresentations();
|
||||
if (presentOptions.enableDownload && downloadablePresentations.length > 0 && !UsersUtil.amIPresenter()) {
|
||||
LOGGER.debug("Enabling download presentation button. There are {0} presentations available for downloading.", [downloadablePresentations.length]);
|
||||
downloadPres.visible = true;
|
||||
} else {
|
||||
LOGGER.debug("Disabling download presentation button. There are {0} presentations available for downloading.", [downloadablePresentations.length]);
|
||||
downloadPres.visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function receiveToolbars(wt:WhiteboardToolbar, wtt:WhiteboardTextToolbar):void {
|
||||
|
@ -64,11 +64,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
import org.bigbluebutton.modules.present.model.Page;
|
||||
import org.bigbluebutton.modules.present.model.Presentation;
|
||||
import org.bigbluebutton.modules.present.model.PresentationModel;
|
||||
import org.bigbluebutton.modules.present.model.PresentationPodManager;
|
||||
import org.bigbluebutton.modules.present.ui.views.models.SlideCalcUtil;
|
||||
import org.bigbluebutton.modules.present.ui.views.models.SlideViewModel;
|
||||
import org.bigbluebutton.modules.whiteboard.views.WhiteboardCanvas;
|
||||
import org.bigbluebutton.util.i18n.ResourceUtil;
|
||||
|
||||
import org.bigbluebutton.main.api.JSLog;
|
||||
|
||||
private static const LOGGER:ILogger = getClassLogger(SlideView);
|
||||
|
||||
[Bindable] public var zoomPercentage:Number = 100;
|
||||
@ -112,26 +114,26 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
}
|
||||
}
|
||||
|
||||
public function setSlides():void {
|
||||
// var pres: Presentation = PresentationModel.getInstance().getCurrentPresentation();
|
||||
// if (pres != null) {
|
||||
// pageCache = pres.getPages();
|
||||
// /* Create the SortField object for the "num" field in the ArrayCollection object, and make sure we do a numeric sort. */
|
||||
// var dataSortField:SortField = new SortField();
|
||||
// dataSortField.name = "num";
|
||||
// dataSortField.numeric = true;
|
||||
//
|
||||
// /* Create the Sort object and add the SortField object created earlier to the array of fields to sort on. */
|
||||
// var numericDataSort:Sort = new Sort();
|
||||
// numericDataSort.fields = [dataSortField];
|
||||
//
|
||||
// /* Set the ArrayCollection object's sort property to our custom sort, and refresh the ArrayCollection. */
|
||||
// pageCache.sort = numericDataSort;
|
||||
// pageCache.refresh();
|
||||
// thumbnailView.dataProvider = pageCache;
|
||||
// }
|
||||
public function setSlides(podId: String):void {
|
||||
var pres: Presentation = PresentationPodManager.getInstance().getPod(podId).getCurrentPresentation();
|
||||
if (pres != null) {
|
||||
pageCache = pres.getPages();
|
||||
/* Create the SortField object for the "num" field in the ArrayCollection object, and make sure we do a numeric sort. */
|
||||
var dataSortField:SortField = new SortField();
|
||||
dataSortField.name = "num";
|
||||
dataSortField.numeric = true;
|
||||
|
||||
/* Create the Sort object and add the SortField object created earlier to the array of fields to sort on. */
|
||||
var numericDataSort:Sort = new Sort();
|
||||
numericDataSort.fields = [dataSortField];
|
||||
|
||||
/* Set the ArrayCollection object's sort property to our custom sort, and refresh the ArrayCollection. */
|
||||
pageCache.sort = numericDataSort;
|
||||
pageCache.refresh();
|
||||
thumbnailView.dataProvider = pageCache;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function setSelectedSlide(slideNum:int):void {
|
||||
if (slideNum > pageCache.length) {
|
||||
LOGGER.debug("Page num [{0}] > numPages[{1}]", [slideNum, pageCache.length]);
|
||||
@ -282,21 +284,22 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
// If delta is negative, the presenter is zooming-out of the presentation.
|
||||
return delta < 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handles notification from presenter that the slide has moved.
|
||||
*/
|
||||
private function handlePageChangedEvent(e:PageChangedEvent):void {
|
||||
LOGGER.debug("Got a page changed event for page [{0}]", [e.pageId]);
|
||||
// var page:Page = PresentationModel.getInstance().getPage(e.pageId);
|
||||
// if (page != null) {
|
||||
// if (! UsersUtil.amIPresenter()) {
|
||||
// // if we are presenter, we don't need to reposition our view of the page
|
||||
// positionPage(page);
|
||||
// }
|
||||
// }
|
||||
JSLog.warn("+++--- SlideView:: handlePageChangedEvent: " + e.podId, {});
|
||||
LOGGER.debug("Got a page changed event for page [{0}]", [e.pageId]);
|
||||
var page:Page = PresentationPodManager.getInstance().getPod(e.podId).getPage(e.pageId);
|
||||
if (page != null) {
|
||||
if (! UsersUtil.amIPresenter()) {
|
||||
// if we are presenter, we don't need to reposition our view of the page
|
||||
positionPage(page);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private function positionPage(page:Page):void {
|
||||
if (page != null && page.swfData != null) {
|
||||
LOGGER.debug("Positioning page [{0}]", [page.id]);
|
||||
@ -315,22 +318,24 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
private function handlePageLoadedEvent(e:PageLoadedEvent):void {
|
||||
LOGGER.debug("Got a page loaded event for page [{0}]", [e.pageId]);
|
||||
// var page:Page = PresentationModel.getInstance().getPage(e.pageId);
|
||||
// if (page != null) {
|
||||
// setSelectedSlide(page.num);
|
||||
// slideLoader.source = page.swfData;
|
||||
// LOGGER.debug("Displaying page [{0}]", [e.pageId]);
|
||||
//// positionPage(page);
|
||||
// if (whiteboardCanvas != null) {
|
||||
// whiteboardCanvas.displayWhiteboardById(page.id);
|
||||
// }
|
||||
//
|
||||
// //slideLoader.accessibilityProperties.description = "Slide text start: " + e.slideText + " Slide text end";
|
||||
// slideLoader.accessibilityDescription = ResourceUtil.getInstance().getString("bbb.presentation.slideloader.starttext") +
|
||||
// page.txtData + ResourceUtil.getInstance().getString("bbb.presentation.slideloader.endtext");
|
||||
// slideLoader.accessibilityName = ResourceUtil.getInstance().getString("bbb.presentation.slideloader.starttext") +
|
||||
// page.txtData + ResourceUtil.getInstance().getString("bbb.presentation.slideloader.endtext");
|
||||
// }
|
||||
|
||||
JSLog.warn("+++--- SlideView:: handlePageLoadedEvent: " + e.pageId + " " + e.podId, {});
|
||||
var page:Page = PresentationPodManager.getInstance().getPod(e.podId).getPage(e.pageId);
|
||||
if (page != null) {
|
||||
setSelectedSlide(page.num);
|
||||
slideLoader.source = page.swfData;
|
||||
LOGGER.debug("Displaying page [{0}]", [e.pageId]);
|
||||
// positionPage(page);
|
||||
if (whiteboardCanvas != null) {
|
||||
whiteboardCanvas.displayWhiteboardById(page.id);
|
||||
}
|
||||
|
||||
//slideLoader.accessibilityProperties.description = "Slide text start: " + e.slideText + " Slide text end";
|
||||
slideLoader.accessibilityDescription = ResourceUtil.getInstance().getString("bbb.presentation.slideloader.starttext") +
|
||||
page.txtData + ResourceUtil.getInstance().getString("bbb.presentation.slideloader.endtext");
|
||||
slideLoader.accessibilityName = ResourceUtil.getInstance().getString("bbb.presentation.slideloader.starttext") +
|
||||
page.txtData + ResourceUtil.getInstance().getString("bbb.presentation.slideloader.endtext");
|
||||
}
|
||||
}
|
||||
|
||||
private function becomeViewer():void {
|
||||
@ -377,12 +382,18 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
}
|
||||
|
||||
private function handleSlideLoadedCompleteEvent(event:Event):void {
|
||||
|
||||
JSLog.warn("+++--- SlideView:: handleSlideLoadedCompleteEvent: ", {});
|
||||
LOGGER.debug("Page has been loaded by swfLoader.");
|
||||
slideModel.resetForNewSlide(slideLoader.contentWidth, slideLoader.contentHeight);
|
||||
dispatchNewSlideDisplayedEvent(slideModel.pageOrigW, slideModel.pageOrigH);
|
||||
slideModel.resetForNewSlide(slideLoader.contentWidth, slideLoader.contentHeight);
|
||||
dispatchNewSlideDisplayedEvent(slideModel.pageOrigW, slideModel.pageOrigH);
|
||||
}
|
||||
|
||||
|
||||
private function dispatchNewSlideDisplayedEvent(slideRealWidth:int, slideRealHeight:int):void {
|
||||
|
||||
|
||||
JSLog.warn("+++--- SlideView:: dispatchNewSlideDisplayedEvent: ", {});
|
||||
|
||||
var dispEvent:DisplaySlideEvent = new DisplaySlideEvent(DisplaySlideEvent.DISPLAY_SLIDE_EVENT);
|
||||
dispEvent.slideWidth = slideRealWidth;
|
||||
dispEvent.slideHeight = slideRealHeight;
|
||||
|
Loading…
Reference in New Issue
Block a user