Exemple #1
0
        public void ShowExtendedViewAsync(List <ParticipantView> views)
        {
            views.ForEach(x =>
            {
                if (ExtenedViewFrameList.Any(o => o.PhoneId == x.Participant.PhoneId))
                {
                    return;
                }

                var viewFrameVisible = ExtenedViewFrameList.ToList().FirstOrDefault(o => string.IsNullOrEmpty(o.PhoneId));
                if (viewFrameVisible != null)
                {
                    viewFrameVisible.IsOpened   = true;
                    viewFrameVisible.Visibility = Visibility.Visible;
                    viewFrameVisible.PhoneId    = x.Participant.PhoneId;

                    var attendee =
                        GlobalData.Instance.Classrooms.FirstOrDefault(
                            classroom => classroom.SchoolRoomNum == x.Participant.PhoneId);

                    var displayName = string.Empty;
                    if (!string.IsNullOrEmpty(attendee?.SchoolRoomName))
                    {
                        displayName = attendee.SchoolRoomName;
                    }

                    viewFrameVisible.ViewName = x.ViewType == 1
                        ? displayName
                        : $"(课件){displayName}";

                    viewFrameVisible.ViewType  = x.ViewType;
                    viewFrameVisible.ViewOrder = ViewFrameList.Max(viewFrame => viewFrame.ViewOrder) + 1;
                }
            });
            ExtentdedLaunchLayout();

            foreach (ViewFrame orderedView in ExtenedViewFrameList.Where(o => o.IsOpened))
            {
                try
                {
                    Log.Logger.Debug($"渲染双屏 phoneId={orderedView.PhoneId}, hwnd={orderedView.Hwnd}");
                    var result = _meetingService.SetDoubleScreenRender(orderedView.PhoneId, orderedView.ViewType,
                                                                       IsDoubleScreenOn ? 1 : 0, orderedView.Hwnd);
                    Log.Logger.Debug($"渲染结果{orderedView.PhoneId},结果{result.Status}");
                }
                catch (Exception ex)
                {
                    Log.Logger.Error($"{ex}");
                }
            }
        }