コード例 #1
0
 internal QSysSoftPhoneCallStatusChangeEventArgs(QSysSoftPhone phone, QSysPhoneCallState state)
 {
     Phone = phone;
     State = state;
 }
コード例 #2
0
        void OnValueChange(QSysControl control)
        {
            if (StatusChanged != null)
            {
                if (control == RingingLEDControl)
                {
                    StatusChanged(this, new QSysSoftPhoneStatusChangeEventArgs(QSysSoftPhoneStatusChangeEventID.IsRingingStatusChanged));
                    if (this.IsRinging)
                    {
                        CallStatus = QSysPhoneCallState.Ringing;
                    }
                }
                if (control == DialStringControl)
                {
                    StatusChanged(this, new QSysSoftPhoneStatusChangeEventArgs(QSysSoftPhoneStatusChangeEventID.DialStringChanged));
                }
                if (control == DNDControl)
                {
                    StatusChanged(this, new QSysSoftPhoneStatusChangeEventArgs(QSysSoftPhoneStatusChangeEventID.DNDStatusChanged));
                }
                if (control == OffHookLEDControl)
                {
                    StatusChanged(this, new QSysSoftPhoneStatusChangeEventArgs(QSysSoftPhoneStatusChangeEventID.OffHookStatusChanged));
                }
            }

            if (control == ProgressControl)
            {
                if (StatusChanged != null)
                {
                    StatusChanged(this, new QSysSoftPhoneStatusChangeEventArgs(QSysSoftPhoneStatusChangeEventID.ProgressStatusChanged));
                }

                if (control.StringValue == "Disconnected")
                {
                    this.Connected         = false;
                    this.CallDisplayNumber = string.Empty;
                    this.CallDisplayName   = string.Empty;
                    this.IncomingCall      = false;
                    CallStatus             = QSysPhoneCallState.Disconnected;
                }

                if (control.StringValue.StartsWith("Dialing"))
                {
                    this.CallDisplayNumber = control.StringValue.Split(' ').Last();
                    this.CallDisplayName   = this.CallDisplayNumber;
                    CallStatus             = QSysPhoneCallState.Dialing;
                }

                else if (control.StringValue.StartsWith("Call in progress") || control.StringValue.StartsWith("Connected"))
                {
                    this.CallDisplayName = control.StringValue.Split(' ').Last();
                    this.Connected       = true;
                    this.IncomingCall    = false;
                    CallStatus           = QSysPhoneCallState.Connected;
                }

                else if (control.StringValue.StartsWith("Incoming call from: "))
                {
                    this.CallDisplayName = control.StringValue.Remove(0, 20);
                    this.IncomingCall    = true;
                    CallStatus           = QSysPhoneCallState.Incoming;
                }

                else if (control.StringValue.StartsWith("Incoming Call - "))
                {
                    Regex r       = new Regex(@"Incoming Call - (\S+) \(([\s\S]*)\)");
                    Match details = r.Match(control.StringValue);
                    this.CallDisplayNumber = details.Groups[1].Value;
                    this.CallDisplayName   = details.Groups[2].Value;
                    this.IncomingCall      = true;
                    CallStatus             = QSysPhoneCallState.Incoming;
                }

                else if (control.StringValue == "Idle")
                {
                    CallStatus = QSysPhoneCallState.Idle;
                }
            }
        }