BogheApp.SessionWindow.MenuItemCall_Click C# (CSharp) Method

MenuItemCall_Click() private method

private MenuItemCall_Click ( object sender, RoutedEventArgs e ) : void
sender object
e RoutedEventArgs
return void
        private void MenuItemCall_Click(object sender, RoutedEventArgs e)
        {
            MenuItem menuItem = e.OriginalSource as MenuItem;
            if (menuItem == null) return;

            if (menuItem == this.MenuItemCall_MakeAudioCall)
            {
                if (this.AVSession == null)
                {
                    this.AVSession = MyAVSession.CreateOutgoingSession(this.sipService.SipStack, MediaType.Audio);
                    this.AVSession.MakeCall(this.remotePartyUri);
                }
                else
                {
                    LOG.Error("Already in Call");
                }
            }
            else if (menuItem == this.MenuItemCall_MakeVideoCall)
            {
                if (this.AVSession == null)
                {
                    this.AVSession = MyAVSession.CreateOutgoingSession(this.sipService.SipStack, MediaType.AudioVideo);
                    this.AVSession.MakeCall(this.remotePartyUri);
                }
                else
                {
                    LOG.Error("Already in Call");
                }
            }
            else if (menuItem == this.MenuItemCall_AddRemoveVideo)
            {
                if (this.AVSession != null && this.AVSession.IsConnected)
                {
                    if ((this.AVSession.MediaType & MediaType.Video) == MediaType.Video)
                    {
                        this.AVSession.Update(MediaType.Audio);
                    }
                    else
                    {
                        this.AVSession.Update(MediaType.AudioVideo);
                    }
                }
            }
            else if (menuItem == this.MenuItemCall_MakeTransfer)
            {
                if (this.AVSession != null && this.AVSession.IsConnected)
                {
                    lock (this.AVSession)
                    {
                        CallTransferWindow window = new CallTransferWindow();
                        window.ShowDialog();
                        if (!String.IsNullOrEmpty(window.TransferUri))
                        {
                            this.transferUri = window.TransferUri;
                            if (this.IsHeld)
                            {
                                this.AVSession.TransferCall(this.transferUri);
                            }
                            else
                            {
                                // FIXME: for now doubango will not send Hold prior to transfer
                                this.isTransfering = true;
                                this.AVSession.HoldCall();
                            }
                        }
                    }
                }
                else
                {
                    LOG.Error("Invalid State");
                }
            }
            else if (menuItem == this.MenuItemCall_HoldResume)
            {
                if (this.AVSession != null && this.AVSession.IsConnected)
                {
                    lock (this.AVSession)
                    {
                        if (this.IsHeld)
                        {
                            this.AVSession.ResumeCall();
                        }
                        else
                        {
                            this.AVSession.HoldCall();
                        }
                    }
                }
                else
                {
                    LOG.Error("Invalid State");
                }
            }
            else if (menuItem == this.MenuItemCall_Quality)
            {
                if (this.AVSession != null && this.AVSession.IsConnected)
                {
                    lock (this.AVSession)
                    {
                        if ((this.AVSession.MediaType & MediaType.Video) == MediaType.Video)
                        {
                            if (this.qosWindow == null)
                            {
                                this.qosWindow = new QoSWindow();
                                this.qosWindow.Info = this.AVSession.GetVideoQualityInfo();
                                this.qosWindow.Closed += this.qosWindow_Closed;
                            }
                            this.qosWindow.Show();
                        }
                    }
                }
                else
                {
                    LOG.Error("Invalid State");
                }
            }
            else if (menuItem == this.MenuItemCall_HangUp)
            {
                if (this.AVSession != null)
                {
                    lock (this.AVSession)
                    {
                        this.AVSession.HangUpCall();
                    }
                }
                else
                {
                    LOG.Error("Invalid State");
                }
            }
        }