private void LoadModeMenuItems() { if (ModeMenuItems == null) { ModeMenuItems = new ObservableCollection <MenuItem>(); } else { ModeMenuItems.Clear(); } var modes = Enum.GetNames(typeof(MeetingMode)); foreach (var mode in modes) { var newModeMenu = new MenuItem(); newModeMenu.Header = EnumHelper.GetDescription(typeof(MeetingMode), Enum.Parse(typeof(MeetingMode), mode)); newModeMenu.Command = ModeChangedCommand; newModeMenu.CommandParameter = mode; ModeMenuItems.Add(newModeMenu); } CurModeName = EnumHelper.GetDescription(typeof(MeetingMode), _viewLayoutService.MeetingMode); }
//command handlers private async Task JoinMeetingAsync() { GlobalData.Instance.ViewArea = new ViewArea() { Width = _meetingView.ActualWidth, Height = _meetingView.ActualHeight }; uint[] uint32SOfNonDataArray = { (uint)_meetingView.PictureBox1.Handle.ToInt32(), (uint)_meetingView.PictureBox2.Handle.ToInt32(), (uint)_meetingView.PictureBox3.Handle.ToInt32(), (uint)_meetingView.PictureBox4.Handle.ToInt32(), }; foreach (var hwnd in uint32SOfNonDataArray) { Log.Logger.Debug($"【figure hwnd】:{hwnd}"); } uint[] uint32SOfDataArray = { (uint)_meetingView.PictureBox5.Handle.ToInt32() }; foreach (var hwnd in uint32SOfDataArray) { Log.Logger.Debug($"【data hwnd】:{hwnd}"); } JoinMeetingResult joinMeetingResult = await _sdkService.JoinMeeting(MeetingId, uint32SOfNonDataArray, uint32SOfNonDataArray.Length, uint32SOfDataArray, uint32SOfDataArray.Length); //if failed to join meeting, needs to roll back if (joinMeetingResult.m_result.m_rc != 0) { Log.Logger.Error( $"【join meeting result】:result={joinMeetingResult.m_result.m_rc}, msg={joinMeetingResult.m_result.m_message}"); switch (joinMeetingResult.m_result.m_rc) { case 13: joinMeetingResult.m_result.m_message = Messages.WarningNoCamera; break; case 14: joinMeetingResult.m_result.m_message = Messages.WarningNoMicrophone; break; case 15: case -1009: joinMeetingResult.m_result.m_message = Messages.WarningNoSpeaker; break; case -915: joinMeetingResult.m_result.m_message = Messages.WarningInvalidMeetingNo; break; case -914: joinMeetingResult.m_result.m_message = Messages.WarningMeetingHasBeenEnded; break; } _startMeetingCallbackEvent(false, joinMeetingResult.m_result.m_message); _meetingView.Close(); } else { //if join meeting successfully, then make main view invisible _startMeetingCallbackEvent(true, ""); //if not speaker, then clear mode menu items if (!_sdkService.IsSpeaker) { ModeMenuItems.Clear(); IsSpeaker = Visibility.Collapsed; } else { IsSpeaker = Visibility.Visible; } if (_lessonDetail.Id > 0) { ResponseResult result = await _bmsService.UpdateMeetingStatus(_lessonDetail.Id, _userInfo.UserId, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), string.Empty); HasErrorMsg(result.Status, result.Message); } } }