예제 #1
0
        public MeetingWindowManager(IEventAggregator eventAggregator)
        {
            _eventAggregator    = eventAggregator;
            _meetingSdkWrapper  = IoC.Get <IMeetingSdkAgent>();
            _deviceNameAccessor = IoC.Get <IDeviceNameAccessor>();

            LayoutRendererStore = new LayoutRendererStore();
            ModeDisplayerStore  = new ModeDisplayerStore();

            _layoutWindows = new List <ILayoutWindow>();
            _layoutWindows.Add(this);
        }
예제 #2
0
        public bool LayoutChange(LayoutRenderType layoutRenderType)
        {
            IScreen screen = VideoBoxManager as IScreen;

            if (layoutRenderType == LayoutRenderType.AutoLayout)
            {
                LayoutRendererStore.CurrentLayoutRenderType = layoutRenderType;

                if (ModeChange(ModeDisplayerStore.CurrentModeDisplayerType))
                {
                    //LayoutRendererStore.CurrentLayoutRenderType = layoutRenderType;
                    _eventAggregator.GetEvent <LayoutChangedEvent>().Publish(layoutRenderType);

                    return(true);
                }

                return(false);
            }
            else
            {
                try
                {
                    _eventAggregator.GetEvent <RefreshCanvasEvent>().Publish();

                    if (LayoutRendererStore.Create(layoutRenderType).Render(GetVisibleVideoBoxs(), screen.Size, GetSpecialVideoBoxName(layoutRenderType)))
                    {
                        LayoutRendererStore.CurrentLayoutRenderType = layoutRenderType;

                        _eventAggregator.GetEvent <LayoutChangedEvent>().Publish(layoutRenderType);

                        return(true);
                    }
                    else if (LayoutRendererStore.Create(LayoutRenderType.AverageLayout).Render(GetVisibleVideoBoxs(), screen.Size, GetSpecialVideoBoxName(LayoutRenderType.AverageLayout)))
                    {
                        LayoutRendererStore.CurrentLayoutRenderType = LayoutRenderType.AverageLayout;

                        _eventAggregator.GetEvent <LayoutChangedEvent>().Publish(LayoutRenderType.AverageLayout);

                        return(false);
                    }

                    return(false);
                }
                catch (Exception ex)
                {
                    MeetingLogger.Logger.LogError(ex, ex.Message);
                }

                return(false);
            }
        }
예제 #3
0
        public ExtendedWindowManager(IMeetingWindowManager meetingWindowManager, IEventAggregator eventAggregator, IMeetingSdkAgent meetingSdkAgent)
        {
            windowManager    = meetingWindowManager;
            _eventAggregator = eventAggregator;
            _meetingSdkAgent = meetingSdkAgent;

            _eventAggregator.GetEvent <VideoBoxAddedEvent>().Subscribe(AccountResourceAddedEventHandler);
            _eventAggregator.GetEvent <VideoBoxRemovedEvent>().Subscribe(AccountResourceRemovedEventHandler);

            LayoutRendererStore = new LayoutRendererStore()
            {
                CurrentLayoutRenderType = LayoutRenderType.AverageLayout,
            };

            Properties = new Dictionary <string, object>();
        }
예제 #4
0
        public VideoStreamModel[] GetVideoStreamModels(Size canvasSize)
        {
            List <IVideoBox> copiedVideoBoxs = new List <IVideoBox>();

            foreach (IVideoBox item in GetVisibleVideoBoxs())
            {
                VideoBox videoBox   = item as VideoBox;
                var      copiedItem = videoBox.Copy();
                copiedVideoBoxs.Add(copiedItem);
            }


            if (LayoutRendererStore.CurrentLayoutRenderType == LayoutRenderType.AutoLayout)
            {
                ModeDisplayerStore.Create().Display(copiedVideoBoxs, canvasSize);
            }
            else
            {
                LayoutRendererStore.Create().Render(copiedVideoBoxs, canvasSize, GetSpecialVideoBoxName(LayoutRendererStore.CurrentLayoutRenderType));
            }

            List <VideoStreamModel> videoStreamModels = new List <VideoStreamModel>();

            foreach (var copiedVideoBox in copiedVideoBoxs)
            {
                VideoStreamModel videoStreamModel = new VideoStreamModel()
                {
                    AccountId = copiedVideoBox.AccountResource.AccountModel.AccountId.ToString(),
                    Height    = (int)Math.Round(copiedVideoBox.Height),
                    StreamId  = copiedVideoBox.AccountResource.ResourceId,
                    Width     = (int)Math.Round(copiedVideoBox.Width),
                    X         = (int)Math.Round(copiedVideoBox.PosX),
                    Y         = (int)Math.Round(copiedVideoBox.PosY),
                };

                VideoBox videoBox = copiedVideoBox as VideoBox;
                videoStreamModel.VideoType = videoBox.AccountResource.MediaType == MediaType.VideoDoc ? VideoType.DataType : VideoType.VideoType;

                videoStreamModels.Add(videoStreamModel);
            }

            return(videoStreamModels.ToArray());
        }
예제 #5
0
 public bool LayoutChange(LayoutRenderType layoutRenderType)
 {
     return(LayoutRendererStore.Create(layoutRenderType).Render(GetVisibleVideoBoxs(), Size, GetSpecialVideoBoxName(layoutRenderType)));
 }