public void startContextCall(List<string> selectedUserList)
 {
     if (null != selectedUserList && selectedUserList.Count>0)
     {
         MakeCallBusiness call = new MakeCallBusiness();
         StringBuilder str = new StringBuilder();
         string strContact ="";
         for (int index = 0; index < selectedUserList.Count; index++)
         {
             str = new StringBuilder(selectedUserList[index]);
             call.insertMember(0,str);
             strContact+=(str+";");
         }
         if (call.startContextCall() == 0) //插件呼叫管理模块的发起上下文呼叫业务接口
         {
             WinCall winCall = new WinCall(toolbar.Lync, SingletonObj.LoginInfo.LyncName + ";" + strContact.TrimEnd(';'));
             winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
             winCall.Show();
             winCall.Title = "Calling: " + str.ToString();
             toolbar.Lync.winCall = winCall;
         }
         else
         {
             DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2);
             return;
         }
     }
 }
Esempio n. 2
0
 public void startContextCall(List <string> selectedUserList)
 {
     if (null != selectedUserList && selectedUserList.Count > 0)
     {
         MakeCallBusiness call       = new MakeCallBusiness();
         StringBuilder    str        = new StringBuilder();
         string           strContact = "";
         for (int index = 0; index < selectedUserList.Count; index++)
         {
             str = new StringBuilder(selectedUserList[index]);
             call.insertMember(0, str);
             strContact += (str + ";");
         }
         if (call.startContextCall() == 0) //插件呼叫管理模块的发起上下文呼叫业务接口
         {
             WinCall winCall = new WinCall(toolbar.Lync, SingletonObj.LoginInfo.LyncName + ";" + strContact.TrimEnd(';'));
             winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
             winCall.Show();
             winCall.Title        = "Calling: " + str.ToString();
             toolbar.Lync.winCall = winCall;
         }
         else
         {
             DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2);
             return;
         }
     }
 }
 private void button_Click(object sender, RoutedEventArgs e)
 {
     //二次拨号
     MakeCallBusiness call = new MakeCallBusiness();
     string str =(((sender as Button).Content as StackPanel).Children[0] as Image).Tag.ToString();
     txtNumber.Text += str;
     call.SendDTMF(Convert.ToChar(str));
     txtNumber.Focus();
     txtNumber.Select(txtNumber.Text.Length, 0);
 }
Esempio n. 4
0
        private void button_Click(object sender, RoutedEventArgs e)
        {
            //二次拨号
            MakeCallBusiness call = new MakeCallBusiness();
            string           str  = (((sender as Button).Content as StackPanel).Children[0] as Image).Tag.ToString();

            txtNumber.Text += str;
            call.SendDTMF(Convert.ToChar(str));
            txtNumber.Focus();
            txtNumber.Select(txtNumber.Text.Length, 0);
        }
        private void DeclineCommandProcess()
        {
            isAnswerMessage = false;
            if (!isVideo)
            {
                callBusiness.RejectCall();  //超时不做这个动作,只关界面   2015/7/28
            }
            else
            {
                MakeCallBusiness bus = new MakeCallBusiness();
                bus.RejectVideoCall();
            }
            winCallReceive.isCloseButton = false;

            //7/27
            winCallReceive.lync.setBtn();   //先设置图形
            //if (winCallReceive.lync.toolBar.JointType == PhoneJointType.PC_Device)
            //{
            //    if (winCallReceive.lync.winCall.btnVideo.IsEnabled == false)
            //    {
            //        winCallReceive.lync.winCall.btnVideo.IsEnabled = true;
            //        UpdateImage.UpdateData(winCallReceive.lync.winCall.imgVideo, "/Image/call/video_1.png");
            //    }

            //}

            if (winCallReceive.Visibility == Visibility.Visible)
            {
                winCallReceive.Close();
                winCallReceive.lync.isHave = false;
            }
            string name = StringHelper.GetSubString(winCallReceive.callName);
            string url  = StringHelper.GetLyncUrl(name);

            HistoryQueryBusiness query = new HistoryQueryBusiness();

            query.InsertCallHistory(CallHistoryType.HISTORY_CALL_MISSED, url, name, -1);
        }
        private void FinishCommandProcess()
        {
            //2015/7/27   为空和数字校验
            if ("" == winCallReceive.txtOtherPhone.Text.Trim())
            {
                DialogShow.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"), 2);
                return;
            }
            if (IsValidPhoneNumber(winCallReceive.txtOtherPhone.Text) == false)
            {
                DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
                return;
            }
            if (winCallReceive.UcPhoneNo == winCallReceive.txtOtherPhone.Text || winCallReceive.UcPhoneNo1 == winCallReceive.txtOtherPhone.Text)
            {
                DialogShow.Show(StringHelper.FindLanguageResource("Cannottansfer"), StringHelper.FindLanguageResource("error"), 2);
                return;
            }
            MakeCallBusiness bus = new MakeCallBusiness();

            bus.ForwardCall((int)MemberType.UC_IPPHONE, winCallReceive.txtOtherPhone.Text.ToString());
            winCallReceive.Close();
        }
        private void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            if (txtNumber.Text.ToString().Trim() == "" || txtNumber.Text.ToString()== "")
            {
                return;
            }
            else
            {
                boolnum(txtNumber.Text.ToString());
            }
            if (boolnum(txtNumber.Text.ToString()) == true)
            {
                //modify by jinyeqing  00327190  2015/6/10  添加号码时先看是否是UC用户,如果是按照UC帐号添加,不是就按话机号码添加
                MakeCallBusiness call = new MakeCallBusiness();
                StringBuilder ucName = new StringBuilder(100);

                string strLyncURI = StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName);
                if (call.GetUCAccountByPhoneNo(txtNumber.Text.ToString().Trim(), ucName) != "" && call.GetUCAccountByPhoneNo(txtNumber.Text.ToString().Trim(), ucName) != null)
                {

                    foreach (DataRow d in dtSelectedContact.Rows)
                    {
                        if (d["Phone"].ToString() == txtNumber.Text.ToString())
                        {
                            DialogShow.Show(StringHelper.FindLanguageResource("theNumisExist"), StringHelper.FindLanguageResource("error"), 2);
                            return;
                        }
                        if (d["Url"].ToString() == ucName + strLyncURI)   //2015/8/6  如果URL 一致,则不添加
                        {
                            DialogShow.Show(StringHelper.FindLanguageResource("theNameisExist"), StringHelper.FindLanguageResource("error"), 2);
                            return;
                        }
                    }
                    DataRow dr = dtSelectedContact.NewRow();
                    string str = txtNumber.Text.ToString();
                    int page=0;
                    GetAllLyncContacts(str, page);
                    dtSource = dtContact.Copy();
                    string name = "";
                    //modify by 00327190 2015/8/6  如果号码是UC用户,则连用户名一起查出来,这样为了避免加人重复
                    UserConfigBusiness conf = new UserConfigBusiness();
                    STContact con = new STContact();
                    string name1 = StringHelper.GetSubString(ucName.ToString());
                    int iRet1 = conf.GetContactInfo(new StringBuilder(name1), ref con);
                    if (0 == iRet1)
                    {
                        name = con.name_;
                    }
                    //modify by 00327190 2015/8/6  如果号码是UC用户,则连用户名一起查出来,这样为了避免加人重复

                    for (int i = 0; i < dtSource.Rows.Count; i++)
                    {
                        if (dtSource.Rows[i]["URL"].ToString().Trim() == call.GetUCAccountByPhoneNo(txtNumber.Text.ToString(), ucName) + strLyncURI)
                        {
                            name = dtSource.Rows[i]["NAME"].ToString().Trim();
                        }
                    }
                    dr[0] = name;
                    //2015/8/24    UTF8 转码UNICODE
                    //byte[] buffer1 = Encoding.Default.GetBytes(call.GetUCAccountByPhoneNo(txtNumber.Text.ToString(), ucName));
                    //byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.Default, buffer1, 0, buffer1.Length);
                    //string item1 = Encoding.Default.GetString(buffer2, 0, buffer2.Length);
                    //dr[1] = item1 + strLyncURI;
                    dr[1] = call.GetUCAccountByPhoneNo(txtNumber.Text.ToString(), ucName) + strLyncURI;
                    dr[2] = txtNumber.Text.ToString();
                    dtSelectedContact.Rows.Add(dr);
                    listSelectedContact.DataContext = null;
                    listSelectedContact.DataContext = dtSelectedContact;
                    listSelectedContact.ScrollIntoView(listSelectedContact.Items[dtSelectedContact.Rows.Count - 1], listSelectedContact.Columns[0]);

                    txtName.Text = "";
                    txtNumber.Text = "";
                }
                //之前没有if ,只有中间的循环体部分
                else
                {
                    foreach (DataRow d in dtSelectedContact.Rows)
                    {
                        if (d["Phone"].ToString() == txtNumber.Text.ToString())
                        {
                            return;
                        }
                    }
                    DataRow dr = dtSelectedContact.NewRow();
                    dr[0] = txtName.Text.ToString();
                    dr[2] = txtNumber.Text.ToString();
                    dtSelectedContact.Rows.Add(dr);
                    listSelectedContact.DataContext = null;
                    listSelectedContact.DataContext = dtSelectedContact;
                    listSelectedContact.ScrollIntoView(listSelectedContact.Items[dtSelectedContact.Rows.Count - 1], listSelectedContact.Columns[0]);

                    txtName.Text = "";
                    txtNumber.Text = "";
                }

                //是否是盲转窗体
                if (isBlindTransCall)
                {
                    btnOK_Click(null, null);
                }
            }
            else
            {
                lync.winCall.OpenDialogTiming(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
                return;
            }
        }
 private void FinishCommandProcess()
 {
     //2015/7/27   为空和数字校验
     if ("" == winCallReceive.txtOtherPhone.Text.Trim())
     {
         DialogShow.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"), 2);
         return;
     }
     if (IsValidPhoneNumber(winCallReceive.txtOtherPhone.Text)==false)
     {
         DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
         return;
     }
     if (winCallReceive.UcPhoneNo == winCallReceive.txtOtherPhone.Text || winCallReceive.UcPhoneNo1 == winCallReceive.txtOtherPhone.Text)
     {
         DialogShow.Show(StringHelper.FindLanguageResource("Cannottansfer"), StringHelper.FindLanguageResource("error"), 2);
         return;
     }
     MakeCallBusiness bus = new MakeCallBusiness();
     bus.ForwardCall((int)MemberType.UC_IPPHONE, winCallReceive.txtOtherPhone.Text.ToString());
     winCallReceive.Close();
 }
        private void DeclineCommandProcess()
        {
            isAnswerMessage = false;
            if (!isVideo)
            {
                callBusiness.RejectCall();  //超时不做这个动作,只关界面   2015/7/28
            }
            else
            {
                MakeCallBusiness bus = new MakeCallBusiness();
                bus.RejectVideoCall();
            }
            winCallReceive.isCloseButton = false;

            //7/27
            winCallReceive.lync.setBtn();   //先设置图形
            //if (winCallReceive.lync.toolBar.JointType == PhoneJointType.PC_Device)
            //{
            //    if (winCallReceive.lync.winCall.btnVideo.IsEnabled == false)
            //    {
            //        winCallReceive.lync.winCall.btnVideo.IsEnabled = true;
            //        UpdateImage.UpdateData(winCallReceive.lync.winCall.imgVideo, "/Image/call/video_1.png");
            //    }

            //}

            if (winCallReceive.Visibility == Visibility.Visible )
            {
                winCallReceive.Close();
                winCallReceive.lync.isHave = false;
            }
            string name = StringHelper.GetSubString(winCallReceive.callName);
            string url = StringHelper.GetLyncUrl(name);

            HistoryQueryBusiness query = new HistoryQueryBusiness();
            query.InsertCallHistory(CallHistoryType.HISTORY_CALL_MISSED, url, name, -1);
        }
Esempio n. 10
0
        private void button_Click(object sender, RoutedEventArgs e)
        {
            Image img = ((sender as Button).Content as StackPanel).Children[0] as Image;

            if (img.Tag.ToString() == "call")
            {
                if (txtNumber.Text.ToString() == "")
                {
                    return;
                }
                if (Lync.winCall != null)
                {
                    this.Close();
                    Dialog.Show(StringHelper.FindLanguageResource("TwoCallsSameTime"), StringHelper.FindLanguageResource("error"));
                    return;
                }
                //拨号
                MakeCallBusiness call   = new MakeCallBusiness();
                StringBuilder    ucName = new StringBuilder(100);
                call.GetUCAccount(txtNumber.Text.ToString(), ucName);
                string str = null;

                if (ucName.ToString() == "")
                {
                    str = txtNumber.Text.ToString();
                    call.insertMember((int)MemberType.UC_IPPHONE, new StringBuilder(str));
                }
                else
                {
                    str = ucName + StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName);
                    call.insertMember((int)MemberType.UC_ACCOUNT, ucName);
                }

                if (call.startContextCall() == 0)   //modify by 00327190  2015/6/18 只要返回值不为0,就不能执行以下操作
                {
                    this.Close();

                    WinCall winCall = new WinCall(Lync, SingletonObj.LoginInfo.LyncName + ";" + str.ToString());
                    winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                    winCall.Show();
                    Lync.winCall = winCall;
                }
                else
                {
                    this.Close();
                    DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2);
                    return;
                }
            }
            else if (img.Tag.ToString() == "back")
            {
                if (txtNumber.Text.Length > 0)
                {
                    txtNumber.Text = txtNumber.Text.Substring(0, txtNumber.Text.Length - 1);
                }
            }
            else
            {
                txtNumber.Text = txtNumber.Text + img.Tag.ToString();
                txtNumber.Focus();
                txtNumber.Select(txtNumber.Text.Length, 0);
            }
        }
        private void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            if (txtNumber.Text.ToString().Trim() == "" || txtNumber.Text.ToString() == "")
            {
                return;
            }
            else
            {
                boolnum(txtNumber.Text.ToString());
            }
            if (boolnum(txtNumber.Text.ToString()) == true)
            {
                //modify by jinyeqing  00327190  2015/6/10  添加号码时先看是否是UC用户,如果是按照UC帐号添加,不是就按话机号码添加
                MakeCallBusiness call   = new MakeCallBusiness();
                StringBuilder    ucName = new StringBuilder(100);

                string strLyncURI = StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName);
                if (call.GetUCAccountByPhoneNo(txtNumber.Text.ToString().Trim(), ucName) != "" && call.GetUCAccountByPhoneNo(txtNumber.Text.ToString().Trim(), ucName) != null)
                {
                    foreach (DataRow d in dtSelectedContact.Rows)
                    {
                        if (d["Phone"].ToString() == txtNumber.Text.ToString())
                        {
                            DialogShow.Show(StringHelper.FindLanguageResource("theNumisExist"), StringHelper.FindLanguageResource("error"), 2);
                            return;
                        }
                        if (d["Url"].ToString() == ucName + strLyncURI)   //2015/8/6  如果URL 一致,则不添加
                        {
                            DialogShow.Show(StringHelper.FindLanguageResource("theNameisExist"), StringHelper.FindLanguageResource("error"), 2);
                            return;
                        }
                    }
                    DataRow dr   = dtSelectedContact.NewRow();
                    string  str  = txtNumber.Text.ToString();
                    int     page = 0;
                    GetAllLyncContacts(str, page);
                    dtSource = dtContact.Copy();
                    string name = "";
                    //modify by 00327190 2015/8/6  如果号码是UC用户,则连用户名一起查出来,这样为了避免加人重复
                    UserConfigBusiness conf  = new UserConfigBusiness();
                    STContact          con   = new STContact();
                    string             name1 = StringHelper.GetSubString(ucName.ToString());
                    int iRet1 = conf.GetContactInfo(new StringBuilder(name1), ref con);
                    if (0 == iRet1)
                    {
                        name = con.name_;
                    }
                    //modify by 00327190 2015/8/6  如果号码是UC用户,则连用户名一起查出来,这样为了避免加人重复

                    for (int i = 0; i < dtSource.Rows.Count; i++)
                    {
                        if (dtSource.Rows[i]["URL"].ToString().Trim() == call.GetUCAccountByPhoneNo(txtNumber.Text.ToString(), ucName) + strLyncURI)
                        {
                            name = dtSource.Rows[i]["NAME"].ToString().Trim();
                        }
                    }
                    dr[0] = name;
                    //2015/8/24    UTF8 转码UNICODE
                    //byte[] buffer1 = Encoding.Default.GetBytes(call.GetUCAccountByPhoneNo(txtNumber.Text.ToString(), ucName));
                    //byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.Default, buffer1, 0, buffer1.Length);
                    //string item1 = Encoding.Default.GetString(buffer2, 0, buffer2.Length);
                    //dr[1] = item1 + strLyncURI;
                    dr[1] = call.GetUCAccountByPhoneNo(txtNumber.Text.ToString(), ucName) + strLyncURI;
                    dr[2] = txtNumber.Text.ToString();
                    dtSelectedContact.Rows.Add(dr);
                    listSelectedContact.DataContext = null;
                    listSelectedContact.DataContext = dtSelectedContact;
                    listSelectedContact.ScrollIntoView(listSelectedContact.Items[dtSelectedContact.Rows.Count - 1], listSelectedContact.Columns[0]);

                    txtName.Text   = "";
                    txtNumber.Text = "";
                }
                //之前没有if ,只有中间的循环体部分
                else
                {
                    foreach (DataRow d in dtSelectedContact.Rows)
                    {
                        if (d["Phone"].ToString() == txtNumber.Text.ToString())
                        {
                            return;
                        }
                    }
                    DataRow dr = dtSelectedContact.NewRow();
                    dr[0] = txtName.Text.ToString();
                    dr[2] = txtNumber.Text.ToString();
                    dtSelectedContact.Rows.Add(dr);
                    listSelectedContact.DataContext = null;
                    listSelectedContact.DataContext = dtSelectedContact;
                    listSelectedContact.ScrollIntoView(listSelectedContact.Items[dtSelectedContact.Rows.Count - 1], listSelectedContact.Columns[0]);

                    txtName.Text   = "";
                    txtNumber.Text = "";
                }

                //是否是盲转窗体
                if (isBlindTransCall)
                {
                    btnOK_Click(null, null);
                }
            }
            else
            {
                lync.winCall.OpenDialogTiming(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
                return;
            }
        }
        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            if (Lync.winCall != null)
            {
                DialogShow.Show(StringHelper.FindLanguageResource("Youareincallalready"), StringHelper.FindLanguageResource("error"), 2);  //不能同时发起两路通话
                return;
            }
            List <CallItem> list  = new List <CallItem>();
            int             index = -1;

            if (tabControlCall.SelectedIndex == 0)
            {
                list  = listMissed.DataContext as List <CallItem>;
                index = listMissed.SelectedIndex;
            }
            else if (tabControlCall.SelectedIndex == 1)
            {
                list  = listAnswered.DataContext as List <CallItem>;
                index = listAnswered.SelectedIndex;
            }
            else if (tabControlCall.SelectedIndex == 2)
            {
                list  = listDialed.DataContext as List <CallItem>;
                index = listDialed.SelectedIndex;
            }
            else if (tabControlCall.SelectedIndex == 3)
            {
                list  = listAll.DataContext as List <CallItem>;
                index = listAll.SelectedIndex;
            }

            if (index < 0)
            {
                return;
            }
            CallItem item = list[index];

            MakeCallBusiness call = new MakeCallBusiness();
            MemberType       type;

            if (item.Phone.IndexOf("@") < 0)
            {
                type = MemberType.UC_IPPHONE;
            }
            else
            {
                type = MemberType.UC_ACCOUNT;
            }
            string str = "";

            if (item.Phone.IndexOf(":") != -1)
            {
                str = item.Phone.Substring(item.Phone.IndexOf(":") + 1);
            }
            else
            {
                str = item.Phone;
            }
            //2015/8/24    UNICODE  转码   UTF8
            //byte[] buffer1 = Encoding.UTF8.GetBytes(str.Trim().Replace(" ",""));
            //byte[] buffer2 = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, buffer1, 0, buffer1.Length);
            //string item1 = Encoding.UTF8.GetString(buffer2,0, buffer2.Length);
            //call.insertMember((int)type, new StringBuilder(item1));
            call.insertMember((int)type, new StringBuilder(str));
            if (call.startContextCall() == 0)
            {
                str                   = SingletonObj.LoginInfo.LyncName + ";" + str;
                Lync.winCall          = new WinCall(Lync, str);
                Lync.winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                Lync.winCall.Show();
            }
            else
            {
                Dialog.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"));
                return;
            }
        }
Esempio n. 13
0
        private void CallForward_Click(object sender, RoutedEventArgs e)
        {
            if (SingletonObj.LoginInfo == null || SingletonObj.LoginInfo.UserID == null)
            {
                Dialog.Show(StringHelper.FindLanguageResource("NoUCAccount"), StringHelper.FindLanguageResource("SettingUC"));
                return;
            }
            try
            {
                MakeCallBusiness call = new MakeCallBusiness();
                STCallExData     data = new STCallExData();
                int iRet = 0;

                string buttonName = (sender as System.Windows.Controls.Button).Name;
                if (buttonName == "btnCallForwardUnCond")
                {
                    //无条件呼叫前传
                    if ((bool)this.radCallForwardUnCondEn.IsChecked)
                    {
                        data.Num = this.txtCallForwardUnCond.Text.Trim();
                        if (IsValidPhoneNumber(data.Num) == false)
                        {
                            DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
                            return;
                        }
                        else if (string.IsNullOrEmpty(data.Num))
                        {
                            Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"));
                            string str = System.Windows.Forms.Application.StartupPath;
                            lync.toolBar.BtnFWD.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\MobilePhone_2.png");
                            return;
                        }
                        else
                        {
                            iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data);
                            if (iRet == 0)
                            {
                                string str = System.Windows.Forms.Application.StartupPath;
                                lync.toolBar.BtnFWD.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\MobilePhone_3.png");
                                //2015/8/11  一旦设置了无条件前转,则其他前转全部设置为关闭
                                data.Num = string.Empty;
                                call.SetCallExService((int)ForwardServiceType.FORWARD_NOREPLY, data);
                                call.SetCallExService((int)ForwardServiceType.FORWARD_OFFLINE, data);
                                call.SetCallExService((int)ForwardServiceType.FORWARD_ONBUSY, data);
                            }
                        }
                    }
                    else
                    {
                        data.Num = string.Empty;
                        iRet    += call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data);
                        if (iRet == 0)
                        {
                            string str = System.Windows.Forms.Application.StartupPath;
                            lync.toolBar.BtnFWD.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\MobilePhone_2.png");
                        }
                    }
                }
                else if (buttonName == "btnCallForwardNoReply")
                {
                    //不回复呼叫前转
                    this.lync.toolBar.GetFWDInfo();
                    if (lync.toolBar.isSetFWDUnCond1 == true)  //如果设置了无条件前转,则不能设置其他前转
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    else
                    {
                        if ((bool)this.radCallForwardNoReplyEn.IsChecked)
                        {
                            data.Num = this.txtCallForwardNoReply.Text.Trim();
                            if (IsValidPhoneNumber(data.Num) == false)
                            {
                                DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
                                return;
                            }
                            else if (string.IsNullOrEmpty(data.Num))
                            {
                                Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"));
                                return;
                            }
                            else
                            {
                                iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_NOREPLY, data);
                            }
                        }
                        else
                        {
                            data.Num = string.Empty;
                            iRet    += call.SetCallExService((int)ForwardServiceType.FORWARD_NOREPLY, data);
                        }
                    }
                }
                else if (buttonName == "btnCallForwardBusy")
                {
                    //遇忙呼叫前转
                    this.lync.toolBar.GetFWDInfo();
                    if (lync.toolBar.isSetFWDUnCond1 == true)  //如果设置了无条件前转,则不能设置其他前转
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    else
                    {
                        if ((bool)this.radCallForwardBusyEn.IsChecked)
                        {
                            data.Num = this.txtCallForwardBusy.Text.Trim();
                            if (IsValidPhoneNumber(data.Num) == false)
                            {
                                DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
                                return;
                            }
                            else if (string.IsNullOrEmpty(data.Num))
                            {
                                Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"));
                                return;
                            }
                            else
                            {
                                iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_ONBUSY, data);
                            }
                        }
                        else
                        {
                            data.Num = string.Empty;
                            iRet    += call.SetCallExService((int)ForwardServiceType.FORWARD_ONBUSY, data);
                        }
                    }
                }
                else if (buttonName == "btnCallForwardOffline")
                {
                    //离线呼叫前转
                    this.lync.toolBar.GetFWDInfo();
                    if (lync.toolBar.isSetFWDUnCond1 == true)  //如果设置了无条件前转,则不能设置其他前转
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    else
                    {
                        if ((bool)this.radCallForwardOfflineEn.IsChecked)
                        {
                            data.Num = this.txtCallForwardOffline.Text.Trim();
                            if (IsValidPhoneNumber(data.Num) == false)
                            {
                                DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
                                return;
                            }
                            else if (string.IsNullOrEmpty(data.Num))
                            {
                                Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"));
                                return;
                            }
                            else
                            {
                                iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_OFFLINE, data);
                            }
                        }
                        else
                        {
                            data.Num = string.Empty;
                            iRet    += call.SetCallExService((int)ForwardServiceType.FORWARD_OFFLINE, data);
                        }
                    }
                }
                else if (buttonName == "btnCallForwardDND")   //DND取消了  2015/8/11
                {
                    //离线呼叫前转
                    if ((bool)this.radCallForwardDNDEn.IsChecked)
                    {
                        data.Num = this.txtCallForwardDND.Text.Trim();
                        if (IsValidPhoneNumber(data.Num) == false)
                        {
                            DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
                            return;
                        }
                        else if (string.IsNullOrEmpty(data.Num))
                        {
                            Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"));
                            return;
                        }
                        else
                        {
                            iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data);
                        }
                    }
                    else
                    {
                        data.Num = string.Empty;
                        iRet    += call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data);
                    }
                }

                if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
                {
                    LogManager.SystemLog.Error("SetCallExService error");
                    Dialog.Show(StringHelper.FindLanguageResource("FWDFailed"), StringHelper.FindLanguageResource("error"));
                }
                else
                {
                    Dialog.Show(StringHelper.FindLanguageResource("FWDSuccess"), StringHelper.FindLanguageResource("Success"));
                }
            }
            catch (System.Exception ex)
            {
                LogManager.SystemLog.Error(ex.ToString());
            }
        }
        //语音信箱转移
        private void MailForward_Click(object sender, RoutedEventArgs e)
        {
            if (SingletonObj.LoginInfo == null || SingletonObj.LoginInfo.UserID == null)
            {
                Dialog.Show(StringHelper.FindLanguageResource("NoUCAccount"), StringHelper.FindLanguageResource("SettingUC"));
                return;
            }
            try
            {
                MakeCallBusiness call = new MakeCallBusiness();
                STCallExData data = new STCallExData();
                int iRet = 0;

                string buttonName = (sender as System.Windows.Controls.Button).Name;

                if (buttonName == "btnVoiceForwardUnCond")
                {
                    //无条件转语音邮箱
                    if ((bool)this.radVoiceForwardUnCondEn.IsChecked)
                    {
                        //data.Num = this.txtVoiceForwardUnCond.Text.Trim();
                        data.Num ="1";
                        if (string.IsNullOrEmpty(data.Num))
                        {
                            Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error"));
                            string str = System.Windows.Forms.Application.StartupPath;
                            lync.toolBar.BtnMail.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\sms_2.png");
                            return;
                        }
                        else
                        {
                            iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data);
                            if (iRet == 0)
                            {
                                string str = System.Windows.Forms.Application.StartupPath;
                                lync.toolBar.BtnMail.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\sms_3.png");
                                //2015/8/11  一旦设置了无条件前转,则其他前转全部设置为关闭
                                data.Num = string.Empty;
                                call.SetCallExService((int)ForwardServiceType.VOICEMAIL_NOREPLY, data);
                                call.SetCallExService((int)ForwardServiceType.VOICEMAIL_OFFLINE, data);
                                call.SetCallExService((int)ForwardServiceType.VOICEMAIL_ONBUSY, data);
                            }
                        }
                    }
                    else
                    {
                        data.Num = string.Empty;
                        iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data);
                        if (iRet == 0)
                        {
                            string str = System.Windows.Forms.Application.StartupPath;
                            lync.toolBar.BtnMail.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\sms_2.png");
                        }
                    }
                }
                else if (buttonName == "btnVoiceForwardNoReply")
                {
                    //无应答转语音邮箱
                    this.lync.toolBar.GetMailFrwInfo();
                    if (lync.toolBar.isSetVoiceMailUnCond1 == true)  //如果设置了无条件前转,则不能设置其他前转
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    else
                    {
                        if ((bool)this.radVoiceForwardNoReplyEn.IsChecked)
                        {
                            //data.Num = this.txtVoiceForwardNoReply.Text.Trim();
                            data.Num = "1";
                            if (string.IsNullOrEmpty(data.Num))
                            {
                                Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error"));
                                return;
                            }
                            else
                            {
                                iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_NOREPLY, data);
                            }
                        }
                        else
                        {
                            data.Num = string.Empty;
                            iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_NOREPLY, data);
                        }
                    }
                }
                else if (buttonName == "btnVoiceForwardBusy")
                {
                    //遇忙转语音邮箱
                    this.lync.toolBar.GetMailFrwInfo();
                    if (lync.toolBar.isSetVoiceMailUnCond1 == true)  //如果设置了无条件前转,则不能设置其他前转
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    else
                    {
                        if ((bool)this.radVoiceForwardBusyEn.IsChecked)
                        {
                            //data.Num = this.txtVoiceForwardBusy.Text.Trim();
                            data.Num = "1";
                            if (string.IsNullOrEmpty(data.Num))
                            {
                                Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error"));
                                return;
                            }
                            else
                            {
                                iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_ONBUSY, data);
                            }
                        }
                        else
                        {
                            data.Num = string.Empty;
                            iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_ONBUSY, data);
                        }
                    }
                }
                else if (buttonName == "btnVoiceForwardOffline")
                {
                    //离线转语音邮箱
                    this.lync.toolBar.GetMailFrwInfo();
                    if (lync.toolBar.isSetVoiceMailUnCond1 == true)  //如果设置了无条件前转,则不能设置其他前转
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    else
                    {
                        if ((bool)this.radVoiceForwardOfflineEn.IsChecked)
                        {
                            //data.Num = this.txtVoiceForwardOffline.Text.Trim();
                            data.Num = "1";
                            if (string.IsNullOrEmpty(data.Num))
                            {
                                Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error"));
                                return;
                            }
                            else
                            {
                                iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_OFFLINE, data);
                            }
                        }
                        else
                        {
                            data.Num = string.Empty;
                            iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_OFFLINE, data);
                        }
                    }
                }
                else if (buttonName == "btnVoiceForwardDND")  //DND不做了  2015/8/11
                {
                    //离线呼叫前转
                    if ((bool)this.radVoiceForwardDNDEn.IsChecked)
                    {
                        //data.Num = this.txtVoiceForwardDND.Text.Trim();
                        data.Num = "1";
                        if (string.IsNullOrEmpty(data.Num))
                        {
                            Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error"));
                            return;
                        }
                        else
                        {
                            iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data);
                        }
                    }
                    else
                    {
                        data.Num = string.Empty;
                        iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data);
                    }
                }

                if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
                {
                    LogManager.SystemLog.Error("SetCallExService error");
                    //modify by jinyeqing
                    Dialog.Show(StringHelper.FindLanguageResource("FWDMailFail"), StringHelper.FindLanguageResource("error"));
                }
                else
                {
                    Dialog.Show(StringHelper.FindLanguageResource("FWDMailSuccess"), StringHelper.FindLanguageResource("Success"));
                }
            }
            catch (System.Exception ex)
            {
                LogManager.SystemLog.Error(ex.ToString());
            }
        }
        private void CallForward_Click(object sender, RoutedEventArgs e)
        {
            if (SingletonObj.LoginInfo == null || SingletonObj.LoginInfo.UserID == null)
            {
                Dialog.Show(StringHelper.FindLanguageResource("NoUCAccount"), StringHelper.FindLanguageResource("SettingUC"));
                return;
            }
            try
            {
                MakeCallBusiness call = new MakeCallBusiness();
                STCallExData data = new STCallExData();
                int iRet = 0;

                string buttonName = (sender as System.Windows.Controls.Button).Name;
                if (buttonName == "btnCallForwardUnCond")
                {
                    //无条件呼叫前传
                    if ((bool)this.radCallForwardUnCondEn.IsChecked)
                    {
                        data.Num = this.txtCallForwardUnCond.Text.Trim();
                        if (IsValidPhoneNumber(data.Num) == false)
                        {
                            DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
                            return;
                        }
                        else if (string.IsNullOrEmpty(data.Num))
                        {
                            Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"));
                            string str = System.Windows.Forms.Application.StartupPath;
                            lync.toolBar.BtnFWD.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\MobilePhone_2.png");
                            return;
                        }
                        else
                        {
                            iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data);
                            if (iRet == 0)
                            {
                                string str = System.Windows.Forms.Application.StartupPath;
                                lync.toolBar.BtnFWD.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\MobilePhone_3.png");
                                //2015/8/11  一旦设置了无条件前转,则其他前转全部设置为关闭
                                data.Num = string.Empty;
                                call.SetCallExService((int)ForwardServiceType.FORWARD_NOREPLY, data);
                                call.SetCallExService((int)ForwardServiceType.FORWARD_OFFLINE, data);
                                call.SetCallExService((int)ForwardServiceType.FORWARD_ONBUSY, data);
                            }

                        }
                    }
                    else
                    {
                        data.Num = string.Empty;
                        iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data);
                        if (iRet == 0)
                        {
                            string str = System.Windows.Forms.Application.StartupPath;
                            lync.toolBar.BtnFWD.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\MobilePhone_2.png");
                        }
                    }
                }
                else if (buttonName == "btnCallForwardNoReply")
                {
                    //不回复呼叫前转
                    this.lync.toolBar.GetFWDInfo();
                    if (lync.toolBar.isSetFWDUnCond1 == true)  //如果设置了无条件前转,则不能设置其他前转
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    else
                    {
                        if ((bool)this.radCallForwardNoReplyEn.IsChecked)
                        {
                            data.Num = this.txtCallForwardNoReply.Text.Trim();
                            if (IsValidPhoneNumber(data.Num) == false)
                            {
                                DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
                                return;
                            }
                            else if (string.IsNullOrEmpty(data.Num))
                            {
                                Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"));
                                return;
                            }
                            else
                            {
                                iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_NOREPLY, data);
                            }
                        }
                        else
                        {
                            data.Num = string.Empty;
                            iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_NOREPLY, data);
                        }
                    }
                }
                else if (buttonName == "btnCallForwardBusy")
                {
                    //遇忙呼叫前转
                    this.lync.toolBar.GetFWDInfo();
                    if (lync.toolBar.isSetFWDUnCond1 == true)  //如果设置了无条件前转,则不能设置其他前转
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    else
                    {
                        if ((bool)this.radCallForwardBusyEn.IsChecked)
                        {
                            data.Num = this.txtCallForwardBusy.Text.Trim();
                            if (IsValidPhoneNumber(data.Num) == false)
                            {
                                DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
                                return;
                            }
                            else if (string.IsNullOrEmpty(data.Num))
                            {
                                Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"));
                                return;
                            }
                            else
                            {
                                iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_ONBUSY, data);
                            }
                        }
                        else
                        {
                            data.Num = string.Empty;
                            iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_ONBUSY, data);
                        }
                    }
                }
                else if (buttonName == "btnCallForwardOffline")
                {
                    //离线呼叫前转
                    this.lync.toolBar.GetFWDInfo();
                    if (lync.toolBar.isSetFWDUnCond1 == true)  //如果设置了无条件前转,则不能设置其他前转
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    else
                    {
                        if ((bool)this.radCallForwardOfflineEn.IsChecked)
                        {
                            data.Num = this.txtCallForwardOffline.Text.Trim();
                            if (IsValidPhoneNumber(data.Num) == false)
                            {
                                DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
                                return;
                            }
                            else if (string.IsNullOrEmpty(data.Num))
                            {
                                Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"));
                                return;
                            }
                            else
                            {
                                iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_OFFLINE, data);
                            }
                        }
                        else
                        {
                            data.Num = string.Empty;
                            iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_OFFLINE, data);
                        }
                    }
                }
                else if (buttonName == "btnCallForwardDND")   //DND取消了  2015/8/11
                {
                    //离线呼叫前转
                    if ((bool)this.radCallForwardDNDEn.IsChecked)
                    {
                        data.Num = this.txtCallForwardDND.Text.Trim();
                        if (IsValidPhoneNumber(data.Num) == false)
                        {
                            DialogShow.Show(StringHelper.FindLanguageResource("Invalidnum"), StringHelper.FindLanguageResource("error"), 2);
                            return;
                        }
                        else if (string.IsNullOrEmpty(data.Num))
                        {
                            Dialog.Show(StringHelper.FindLanguageResource("PhoneNumberNullError"), StringHelper.FindLanguageResource("error"));
                            return;
                        }
                        else
                        {
                            iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data);
                        }
                    }
                    else
                    {
                        data.Num = string.Empty;
                        iRet += call.SetCallExService((int)ForwardServiceType.FORWARD_UNCONDITION, data);
                    }
                }

                if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
                {
                    LogManager.SystemLog.Error("SetCallExService error");
                    Dialog.Show(StringHelper.FindLanguageResource("FWDFailed"), StringHelper.FindLanguageResource("error"));
                }
                else
                {
                    Dialog.Show(StringHelper.FindLanguageResource("FWDSuccess"), StringHelper.FindLanguageResource("Success"));
                }
            }
            catch (System.Exception ex)
            {
                LogManager.SystemLog.Error(ex.ToString());
            }
        }
        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            if (Lync.winCall != null)
            {
                DialogShow.Show(StringHelper.FindLanguageResource("Youareincallalready"), StringHelper.FindLanguageResource("error"), 2);  //不能同时发起两路通话
                return;
            }
            List<CallItem> list = new List<CallItem>();
            int index = -1;
            if (tabControlCall.SelectedIndex == 0)
            {
                list = listMissed.DataContext as List<CallItem>;
                index = listMissed.SelectedIndex;
            }
            else if (tabControlCall.SelectedIndex == 1)
            {
                list = listAnswered.DataContext as List<CallItem>;
                index = listAnswered.SelectedIndex;
            }
            else if (tabControlCall.SelectedIndex == 2)
            {
                list = listDialed.DataContext as List<CallItem>;
                index = listDialed.SelectedIndex;
            }
            else if (tabControlCall.SelectedIndex == 3)
            {
                list = listAll.DataContext as List<CallItem>;
                index = listAll.SelectedIndex;
            }

            if (index < 0)
            {
                return;
            }
            CallItem item = list[index];

            MakeCallBusiness call = new MakeCallBusiness();
            MemberType type;
            if (item.Phone.IndexOf("@") < 0)
            {
                type = MemberType.UC_IPPHONE;
            }
            else
            {
                type = MemberType.UC_ACCOUNT;
            }
            string str = "";
            if (item.Phone.IndexOf(":") != -1)
            {
                str = item.Phone.Substring(item.Phone.IndexOf(":") + 1);
            }
            else
            {
                str = item.Phone;
            }
            //2015/8/24    UNICODE  转码   UTF8
            //byte[] buffer1 = Encoding.UTF8.GetBytes(str.Trim().Replace(" ",""));
            //byte[] buffer2 = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, buffer1, 0, buffer1.Length);
            //string item1 = Encoding.UTF8.GetString(buffer2,0, buffer2.Length);
            //call.insertMember((int)type, new StringBuilder(item1));
            call.insertMember((int)type, new StringBuilder(str));
            if (call.startContextCall() == 0)
            {
                str = SingletonObj.LoginInfo.LyncName + ";" + str;
                Lync.winCall = new WinCall(Lync, str);
                Lync.winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                Lync.winCall.Show();
            }
            else
            {
                Dialog.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"));
                return;
            }
        }
Esempio n. 17
0
        public void StartLoadData()
        {
            try
            {
                UCUserInfo user = new UCUserInfo();
                user = XmlHelper.GetUserConfig();

                winOptionSetting.txtAccount.Text       = user.UserID;
                winOptionSetting.comLang.SelectedIndex = Convert.ToInt32(user.Lang);

                winOptionSetting.txtPassword.Password = user.Password;
                winOptionSetting.txtPort.Text         = user.Port;
                winOptionSetting.txtServer1.Text      = user.Server;

                winOptionSetting.chkStart.IsChecked = user.AutoStart == "1" ? true : false;


                winOptionSetting.chkAvailable.IsChecked   = user.Available;
                winOptionSetting.chkUnavailable.IsChecked = user.Unavailable;
                winOptionSetting.chkBusy.IsChecked        = user.Busy;
                winOptionSetting.chkVoicemail.IsChecked   = user.Voicemail;
                winOptionSetting.txtAvailable.Text        = user.AvailableCallNumber;
                winOptionSetting.txtUnavailable.Text      = user.UnavailableCallNumber;
                winOptionSetting.txtBusy.Text             = user.BusyCallNumber;
                winOptionSetting.txtVoicemail.Text        = user.VoicemailCallNumber;

                //设置呼叫前转信息
                if (SingletonObj.LoginInfo == null || SingletonObj.LoginInfo.UserID == null)
                {
                    return;
                }
                winOptionSetting.comMicrophone.SelectedIndex = GetMicrophone();
                winOptionSetting.comSpeaker.SelectedIndex    = GetSpeaker();
                winOptionSetting.comCamera.SelectedIndex     = GetCamera();

                int iRet = (int)UCServiceRetvCode.UC_SDK_Success;

                ForwardServiceType type = ForwardServiceType.FORWARD_UNCONDITION;
                STCallExData       data = new STCallExData();
                MakeCallBusiness   call = new MakeCallBusiness();

                //无条件前传
                iRet = call.GetCallExService((int)type, ref data);
                if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
                {
                    LogManager.SystemLog.Error("GetCallExService error");
                    return;
                }
                winOptionSetting.radCallForwardUnCondEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
                winOptionSetting.txtCallForwardUnCond.Text        = data.Num;

                //遇忙前传
                type = ForwardServiceType.FORWARD_ONBUSY;
                data = new STCallExData();

                iRet = call.GetCallExService((int)type, ref data);
                if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
                {
                    LogManager.SystemLog.Error("GetCallExService error");
                    return;
                }
                winOptionSetting.radCallForwardBusyEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
                winOptionSetting.txtCallForwardBusy.Text        = data.Num;

                //无应答前传
                type = ForwardServiceType.FORWARD_NOREPLY;
                data = new STCallExData();

                iRet = call.GetCallExService((int)type, ref data);
                if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
                {
                    LogManager.SystemLog.Error("GetCallExService error");
                    return;
                }
                winOptionSetting.radCallForwardNoReplyEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
                winOptionSetting.txtCallForwardNoReply.Text        = data.Num;

                //离线前传
                type = ForwardServiceType.FORWARD_OFFLINE;
                data = new STCallExData();

                iRet = call.GetCallExService((int)type, ref data);
                if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
                {
                    LogManager.SystemLog.Error("GetCallExService error");
                    return;
                }
                winOptionSetting.radCallForwardOfflineEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
                winOptionSetting.txtCallForwardOffline.Text        = data.Num;

                //modify by 00327190   2015/7/30
                type = ForwardServiceType.VOICEMAIL_UNCONDITION; //无条件语音邮箱前转
                data = new STCallExData();
                iRet = call.GetCallExService((int)type, ref data);
                if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
                {
                    LogManager.SystemLog.Error("GetCallExService error");
                    return;
                }
                winOptionSetting.radVoiceForwardUnCondEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
                //winOptionSetting.txtVoiceForwardUnCond.Text = data.Num;   //2015/8/24

                // 无应答语音邮箱前转
                type = ForwardServiceType.VOICEMAIL_NOREPLY;
                data = new STCallExData();
                iRet = call.GetCallExService((int)type, ref data);
                if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
                {
                    LogManager.SystemLog.Error("GetCallExService error");
                    return;
                }
                winOptionSetting.radVoiceForwardNoReplyEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
                //winOptionSetting.txtVoiceForwardNoReply.Text = data.Num;   //2015/8/24

                // 遇忙语音邮箱前转
                type = ForwardServiceType.VOICEMAIL_ONBUSY;
                data = new STCallExData();
                iRet = call.GetCallExService((int)type, ref data);
                if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
                {
                    LogManager.SystemLog.Error("GetCallExService error");
                    return;
                }
                winOptionSetting.radVoiceForwardBusyEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
                //winOptionSetting.txtVoiceForwardBusy.Text = data.Num;   //2015/8/24

                // 离线语音邮箱前转
                type = ForwardServiceType.VOICEMAIL_OFFLINE;
                data = new STCallExData();
                iRet = call.GetCallExService((int)type, ref data);
                if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
                {
                    LogManager.SystemLog.Error("GetCallExService error");
                    return;
                }
                winOptionSetting.radVoiceForwardOfflineEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
                //winOptionSetting.txtVoiceForwardOffline.Text = data.Num;   //2015/8/24
            }
            catch (System.Exception ex)
            {
                LogManager.SystemLog.Error(ex.ToString());
            }
        }
Esempio n. 18
0
        //语音信箱转移
        private void MailForward_Click(object sender, RoutedEventArgs e)
        {
            if (SingletonObj.LoginInfo == null || SingletonObj.LoginInfo.UserID == null)
            {
                Dialog.Show(StringHelper.FindLanguageResource("NoUCAccount"), StringHelper.FindLanguageResource("SettingUC"));
                return;
            }
            try
            {
                MakeCallBusiness call = new MakeCallBusiness();
                STCallExData     data = new STCallExData();
                int iRet = 0;

                string buttonName = (sender as System.Windows.Controls.Button).Name;

                if (buttonName == "btnVoiceForwardUnCond")
                {
                    //无条件转语音邮箱
                    if ((bool)this.radVoiceForwardUnCondEn.IsChecked)
                    {
                        //data.Num = this.txtVoiceForwardUnCond.Text.Trim();
                        data.Num = "1";
                        if (string.IsNullOrEmpty(data.Num))
                        {
                            Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error"));
                            string str = System.Windows.Forms.Application.StartupPath;
                            lync.toolBar.BtnMail.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\sms_2.png");
                            return;
                        }
                        else
                        {
                            iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data);
                            if (iRet == 0)
                            {
                                string str = System.Windows.Forms.Application.StartupPath;
                                lync.toolBar.BtnMail.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\sms_3.png");
                                //2015/8/11  一旦设置了无条件前转,则其他前转全部设置为关闭
                                data.Num = string.Empty;
                                call.SetCallExService((int)ForwardServiceType.VOICEMAIL_NOREPLY, data);
                                call.SetCallExService((int)ForwardServiceType.VOICEMAIL_OFFLINE, data);
                                call.SetCallExService((int)ForwardServiceType.VOICEMAIL_ONBUSY, data);
                            }
                        }
                    }
                    else
                    {
                        data.Num = string.Empty;
                        iRet    += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data);
                        if (iRet == 0)
                        {
                            string str = System.Windows.Forms.Application.StartupPath;
                            lync.toolBar.BtnMail.Image = System.Drawing.Image.FromFile(str.Substring(0, str.IndexOf("bin")) + "\\Image\\sms_2.png");
                        }
                    }
                }
                else if (buttonName == "btnVoiceForwardNoReply")
                {
                    //无应答转语音邮箱
                    this.lync.toolBar.GetMailFrwInfo();
                    if (lync.toolBar.isSetVoiceMailUnCond1 == true)  //如果设置了无条件前转,则不能设置其他前转
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    else
                    {
                        if ((bool)this.radVoiceForwardNoReplyEn.IsChecked)
                        {
                            //data.Num = this.txtVoiceForwardNoReply.Text.Trim();
                            data.Num = "1";
                            if (string.IsNullOrEmpty(data.Num))
                            {
                                Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error"));
                                return;
                            }
                            else
                            {
                                iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_NOREPLY, data);
                            }
                        }
                        else
                        {
                            data.Num = string.Empty;
                            iRet    += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_NOREPLY, data);
                        }
                    }
                }
                else if (buttonName == "btnVoiceForwardBusy")
                {
                    //遇忙转语音邮箱
                    this.lync.toolBar.GetMailFrwInfo();
                    if (lync.toolBar.isSetVoiceMailUnCond1 == true)  //如果设置了无条件前转,则不能设置其他前转
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    else
                    {
                        if ((bool)this.radVoiceForwardBusyEn.IsChecked)
                        {
                            //data.Num = this.txtVoiceForwardBusy.Text.Trim();
                            data.Num = "1";
                            if (string.IsNullOrEmpty(data.Num))
                            {
                                Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error"));
                                return;
                            }
                            else
                            {
                                iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_ONBUSY, data);
                            }
                        }
                        else
                        {
                            data.Num = string.Empty;
                            iRet    += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_ONBUSY, data);
                        }
                    }
                }
                else if (buttonName == "btnVoiceForwardOffline")
                {
                    //离线转语音邮箱
                    this.lync.toolBar.GetMailFrwInfo();
                    if (lync.toolBar.isSetVoiceMailUnCond1 == true)  //如果设置了无条件前转,则不能设置其他前转
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("Cannottransfer"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    else
                    {
                        if ((bool)this.radVoiceForwardOfflineEn.IsChecked)
                        {
                            //data.Num = this.txtVoiceForwardOffline.Text.Trim();
                            data.Num = "1";
                            if (string.IsNullOrEmpty(data.Num))
                            {
                                Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error"));
                                return;
                            }
                            else
                            {
                                iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_OFFLINE, data);
                            }
                        }
                        else
                        {
                            data.Num = string.Empty;
                            iRet    += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_OFFLINE, data);
                        }
                    }
                }
                else if (buttonName == "btnVoiceForwardDND")  //DND不做了  2015/8/11
                {
                    //离线呼叫前转
                    if ((bool)this.radVoiceForwardDNDEn.IsChecked)
                    {
                        //data.Num = this.txtVoiceForwardDND.Text.Trim();
                        data.Num = "1";
                        if (string.IsNullOrEmpty(data.Num))
                        {
                            Dialog.Show(StringHelper.FindLanguageResource("MailNumberNullError"), StringHelper.FindLanguageResource("error"));
                            return;
                        }
                        else
                        {
                            iRet += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data);
                        }
                    }
                    else
                    {
                        data.Num = string.Empty;
                        iRet    += call.SetCallExService((int)ForwardServiceType.VOICEMAIL_UNCONDITION, data);
                    }
                }

                if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
                {
                    LogManager.SystemLog.Error("SetCallExService error");
                    //modify by jinyeqing
                    Dialog.Show(StringHelper.FindLanguageResource("FWDMailFail"), StringHelper.FindLanguageResource("error"));
                }
                else
                {
                    Dialog.Show(StringHelper.FindLanguageResource("FWDMailSuccess"), StringHelper.FindLanguageResource("Success"));
                }
            }
            catch (System.Exception ex)
            {
                LogManager.SystemLog.Error(ex.ToString());
            }
        }
        /// <summary>
        /// 获取指定页数的数据
        /// Access to the  data of specified page
        /// </summary>
        /// <param name="strSearchKey">查询关键字</param>
        /// <param name="strSearchKey">Query keywords</param>
        void GetPageLyncContacts(string strSearchKey = "", int page = 0)
        {
            dtContact = new DataTable();
            dtContact.Columns.Add("Name");
            dtContact.Columns.Add("Url");
            dtContact.Columns.Add("Phone");

            if (dtSelectedContact.Columns.Count == 0)
            {
                dtSelectedContact.Columns.Add("Name");
                dtSelectedContact.Columns.Add("Url");
                dtSelectedContact.Columns.Add("Phone");
            }

            MakeCallBusiness call = new MakeCallBusiness();
            //Number of queries per query
            //每次查询的数量
            int count = 100;
            int iSizeSTContactList = Marshal.SizeOf(typeof(STContactList));
            int iSizeSTContact = Marshal.SizeOf(typeof(STContact));
            int uiBufSize = (iSizeSTContactList + iSizeSTContact * (count - 1));
            byte[] pSTContactList = new byte[uiBufSize];

            UCServiceRetvCode iRet = (UCServiceRetvCode)call.GetEntContactList(strSearchKey, page * count, page * count + count - 1, pSTContactList);
            if (UCServiceRetvCode.UC_SDK_Success == iRet)
            {
                string strLyncURI = StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName);
                IntPtr tempInfoIntPtr = Marshal.AllocHGlobal((int)iSizeSTContactList);
                byte[] tempInfoByte = new byte[iSizeSTContactList];
                try
                {

                    iRet = (UCServiceRetvCode)call.GetEntContactList(strSearchKey, page * count, page * count + count - 1, pSTContactList);
                    if (UCServiceRetvCode.UC_SDK_Success == iRet)
                    {
                        Marshal.Copy(pSTContactList, 0, tempInfoIntPtr, (int)iSizeSTContactList);
                        STContactList head = (STContactList)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STContactList));
                        this.labTotal.Content = "/" + ((head.iTotal % count) == 0 ? (head.iTotal / count == 0 ? 1 : head.iTotal / count).ToString() : (head.iTotal / count + 1).ToString());
                        this.txtPage.Text = (page + 1).ToString();
                        for (int index = -1; index < (head.iTotal - 1) && index < count - 1; index++)
                        {
                            Marshal.Copy(pSTContactList, iSizeSTContactList + iSizeSTContact * index, tempInfoIntPtr, (int)iSizeSTContact);
                            STContact item = (STContact)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STContact));
                            if (item.name_ != null && item.name_ != "")
                            {
                                dtContact.Rows.Add(item.name_, string.IsNullOrEmpty(item.uri_) ? "" : item.uri_ + strLyncURI, item.mobile_);
                            }
                        }
                    }

                }
                finally
                {
                    Marshal.Release(tempInfoIntPtr);
                }

            }
            else
            {
                LogManager.SystemLog.Error("GetPageLyncContacts failed");
            }

            #region 根据lync接口查询lync用户的联系人列表
            //foreach (Microsoft.Lync.Model.Group.Group group in WinLync.LyncContactGroups)
            //{
            //    foreach (Contact contact in (ContactCollection)(group))
            //    {
            //        int index = -1;
            //        foreach (DataRow dr in dtContact.Rows)
            //        {
            //            if (dr["Url"].ToString() == contact.Uri)
            //            {
            //                index = 0;
            //            }
            //        }
            //        if (index == -1)
            //        {
            //            string phone = "";
            //            List<object> list = contact.GetContactInformation(ContactInformationType.ContactEndpoints) as List<object>;
            //            foreach (object point in list)
            //            {
            //                if (((Microsoft.Lync.Model.ContactEndpoint)point).Type == ContactEndpointType.WorkPhone)
            //                {
            //                    phone = ((Microsoft.Lync.Model.ContactEndpoint)point).DisplayName;
            //                }
            //            }
            //           string name = contact.GetContactInformation(ContactInformationType.DisplayName).ToString();
            //           dtContact.Rows.Add(name, contact.Uri, phone);

            //        }
            //    }
            //}
            #endregion
        }
        public void StartLoadData()
        {
            try
               {
               UCUserInfo user = new UCUserInfo();
               user = XmlHelper.GetUserConfig();

               winOptionSetting.txtAccount.Text = user.UserID;
               winOptionSetting.comLang.SelectedIndex = Convert.ToInt32(user.Lang);

               winOptionSetting.txtPassword.Password = user.Password;
               winOptionSetting.txtPort.Text = user.Port;
               winOptionSetting.txtServer1.Text = user.Server;

               winOptionSetting.chkStart.IsChecked = user.AutoStart == "1" ? true : false;

               winOptionSetting.chkAvailable.IsChecked = user.Available;
               winOptionSetting.chkUnavailable.IsChecked = user.Unavailable;
               winOptionSetting.chkBusy.IsChecked = user.Busy;
               winOptionSetting.chkVoicemail.IsChecked = user.Voicemail;
               winOptionSetting.txtAvailable.Text = user.AvailableCallNumber;
               winOptionSetting.txtUnavailable.Text = user.UnavailableCallNumber;
               winOptionSetting.txtBusy.Text = user.BusyCallNumber;
               winOptionSetting.txtVoicemail.Text = user.VoicemailCallNumber;

               //设置呼叫前转信息
               if (SingletonObj.LoginInfo == null || SingletonObj.LoginInfo.UserID == null)
               {
                   return;
               }
               winOptionSetting.comMicrophone.SelectedIndex = GetMicrophone();
               winOptionSetting.comSpeaker.SelectedIndex = GetSpeaker();
               winOptionSetting.comCamera.SelectedIndex = GetCamera();

               int iRet = (int)UCServiceRetvCode.UC_SDK_Success;

               ForwardServiceType type = ForwardServiceType.FORWARD_UNCONDITION;
               STCallExData data = new STCallExData();
               MakeCallBusiness call = new MakeCallBusiness();

               //无条件前传
               iRet  = call.GetCallExService((int)type, ref data);
               if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
               {
                   LogManager.SystemLog.Error("GetCallExService error");
                   return;
               }
               winOptionSetting.radCallForwardUnCondEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
               winOptionSetting.txtCallForwardUnCond.Text = data.Num;

               //遇忙前传
               type = ForwardServiceType.FORWARD_ONBUSY;
               data = new STCallExData();

               iRet = call.GetCallExService((int)type, ref data);
               if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
               {
                   LogManager.SystemLog.Error("GetCallExService error");
                   return;
               }
               winOptionSetting.radCallForwardBusyEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
               winOptionSetting.txtCallForwardBusy.Text = data.Num;

               //无应答前传
               type = ForwardServiceType.FORWARD_NOREPLY;
               data = new STCallExData();

               iRet = call.GetCallExService((int)type, ref data);
               if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
               {
                   LogManager.SystemLog.Error("GetCallExService error");
                   return;
               }
               winOptionSetting.radCallForwardNoReplyEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
               winOptionSetting.txtCallForwardNoReply.Text = data.Num;

               //离线前传
               type = ForwardServiceType.FORWARD_OFFLINE;
               data = new STCallExData();

               iRet = call.GetCallExService((int)type, ref data);
               if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
               {
                   LogManager.SystemLog.Error("GetCallExService error");
                   return;
               }
               winOptionSetting.radCallForwardOfflineEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
               winOptionSetting.txtCallForwardOffline.Text = data.Num;

               //modify by 00327190   2015/7/30
               type = ForwardServiceType.VOICEMAIL_UNCONDITION;  //无条件语音邮箱前转
               data = new STCallExData();
               iRet = call.GetCallExService((int)type, ref data);
               if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
               {
                   LogManager.SystemLog.Error("GetCallExService error");
                   return;
               }
               winOptionSetting.radVoiceForwardUnCondEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
               //winOptionSetting.txtVoiceForwardUnCond.Text = data.Num;   //2015/8/24

               // 无应答语音邮箱前转
               type = ForwardServiceType.VOICEMAIL_NOREPLY;
               data = new STCallExData();
               iRet = call.GetCallExService((int)type, ref data);
               if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
               {
                   LogManager.SystemLog.Error("GetCallExService error");
                   return;
               }
               winOptionSetting.radVoiceForwardNoReplyEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
               //winOptionSetting.txtVoiceForwardNoReply.Text = data.Num;   //2015/8/24

               // 遇忙语音邮箱前转
               type = ForwardServiceType.VOICEMAIL_ONBUSY;
               data = new STCallExData();
               iRet = call.GetCallExService((int)type, ref data);
               if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
               {
                   LogManager.SystemLog.Error("GetCallExService error");
                   return;
               }
               winOptionSetting.radVoiceForwardBusyEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
               //winOptionSetting.txtVoiceForwardBusy.Text = data.Num;   //2015/8/24

               // 离线语音邮箱前转
               type = ForwardServiceType.VOICEMAIL_OFFLINE;
               data = new STCallExData();
               iRet = call.GetCallExService((int)type, ref data);
               if (iRet != (int)UCServiceRetvCode.UC_SDK_Success)
               {
                   LogManager.SystemLog.Error("GetCallExService error");
                   return;
               }
               winOptionSetting.radVoiceForwardOfflineEn.IsChecked = (string.IsNullOrEmpty(data.Num) ? false : true);
               //winOptionSetting.txtVoiceForwardOffline.Text = data.Num;   //2015/8/24

               }
               catch (System.Exception ex)
               {
               LogManager.SystemLog.Error(ex.ToString());
               }
        }
        /// <summary>
        /// 处理另一进程发过来的消息
        /// </summary>
        /// <param name="cds"></param>
        void LyncMessageProcess(COPYDATASTRUCT cds)
        {
            try
            {
                LogManager.SystemLog.Debug(cds.cbData);
                if (cds.lpData == "LogOutUC")//注销UC
                {
                    StartSignOutUC();
                }
                else if (cds.lpData == "LoginUC")//登录
                {
                    if (SingletonObj.LoginInfo == null || SingletonObj.LoginInfo.UserID == null)
                    {
                        StartLoginUC();
                    }
                }
                else if (cds.lpData != "")
                {
                    if (SingletonObj.LoginInfo == null)
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("NoLogin"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    if (winCall == null)
                    {
                        string[] strList = cds.lpData.Split(';');
                        if (strList.Count((x) => { return x.IndexOf("phone-context") > -1 ? true : false; }) > 0)
                        {
                            List<string> strListTemp = new List<string>();
                            for (int i = 0; i < strList.Length; i++)
                            {
                                if (strList[i].IndexOf("phone-context") < 0)
                                {
                                    strListTemp.Add(strList[i]);
                                }
                            }
                            strList = new string[strListTemp.Count];
                            cds.lpData = "";
                            for (int i = 0; i < strListTemp.Count; i++)
                            {
                                cds.lpData += strListTemp[i] + ";";
                                strList[i] = strListTemp[i];
                            }

                            cds.lpData = cds.lpData.Substring(0, cds.lpData.Length - 1);
                        }
                        MakeCallBusiness call = new MakeCallBusiness();
                        StringBuilder str = new StringBuilder();
                        string type = strList[0];
                        if (type == "VideoCall")//视频呼叫
                        {
                            if (this.isHave == true)  //有接听界面,则不允许做视频操作
                            {
                                DialogShow.Show(StringHelper.FindLanguageResource("TwoCallsSameTime"), StringHelper.FindLanguageResource("error"), 2);
                                return;
                            }
                            else
                            {
                                if (strList.Length > 3)
                                {
                                    Dialog.Show(StringHelper.FindLanguageResource("NoMultiplePersonVideo"), StringHelper.FindLanguageResource("error"));
                                    return;
                                }

                                if (toolBar.JointType == PhoneJointType.IPPhone_Device)
                                {
                                    Dialog.Show(StringHelper.FindLanguageResource("NoSupportVideo"), StringHelper.FindLanguageResource("error"));
                                    return;
                                }
                                //call.insertMember((int)MemberType.UC_ACCOUNT, new StringBuilder(strList[2]));
                                //winCall = new WinCall(this, cds.lpData);
                                //winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                                //winCall.Show();
                                //modify by 00327190  之前是只有上面隐掉的,会有问题,纯话机和UC账户要分开   2015/9/18
                                if (strList[2].IndexOf("@") != -1)
                                {
                                    call.insertMember((int)MemberType.UC_ACCOUNT, new StringBuilder(strList[2]));
                                    winCall = new WinCall(this, cds.lpData);
                                    winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                                    winCall.Show();
                                }
                                else  //如果是纯数字,则再分能不能查到对应的UC用户  2015/9/21
                                {
                                    StringBuilder ucName = new StringBuilder(100);
                                    call.GetUCAccountByPhoneNo(strList[2], ucName);
                                    if (ucName.ToString() == "")  //纯话机   2015/9/21
                                    {
                                        call.insertMember((int)MemberType.UC_IPPHONE, new StringBuilder(strList[2]));
                                        winCall = new WinCall(this, cds.lpData);
                                        winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                                        winCall.Show();
                                    }
                                    else
                                    {
                                        call.insertMember((int)MemberType.UC_ACCOUNT, new StringBuilder(strList[2]));
                                        winCall = new WinCall(this, cds.lpData);
                                        winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                                        winCall.Show();
                                    }
                                }
                               
                            }

                        }
                        else
                        {
                            //modify byjinyeqing  2015/6/3  多于20人不可以显示出来
                            if (strList.Length > 21)   //第一行是call  所以应该是21  
                            {
                                DialogShow.Show(StringHelper.FindLanguageResource("somanypeople"), StringHelper.FindLanguageResource("error"), 2);
                                return;
                            }
                            if (strList.Length == 3)  //两人会话的操作(逻辑上为了与多人会议区别开来 modify by jinyeqing 2015/6/19)
                            {
                                str = new StringBuilder(strList[2].Substring(strList[2].IndexOf(':') + 1).TrimEnd('>'));
                                string a = ";" + str.ToString().Trim();
                                if (boolnum(str.ToString().Trim()) == false)     //不为纯数字就报警 ,若为纯数字,可能为话机用户,这里就不做和UC匹配的校验                               
                                //if (call.insertMember((int)MemberType.UC_ACCOUNT, str) != 0)  //moidify by jinyeqing 2015/6/8 以前没有if判断
                                {
                                    if (call.insertMember((int)MemberType.UC_ACCOUNT, str) != 0)
                                    //if (call.GetUCAccountByPhoneNo(str.ToString(), ucName) == "" || call.GetUCAccountByPhoneNo(str.ToString(), ucName) == null)  
                                    {
                                        string message = str + " " + StringHelper.FindLanguageResource("NoSuchUCAccount");
                                        DialogShow.Show(message, StringHelper.FindLanguageResource("error"), 2);
                                        cds.lpData = cds.lpData.Replace(a, "");
                                        this.isUcCount = false;
                                        call.startContextCall();
                                        return;
                                    }

                                }
                                else  //纯数字能找到UC账户的,就把数字替换成UCname 
                                {
                                    StringBuilder ucName = new StringBuilder(100);
                                    call.GetUCAccountByPhoneNo(str.ToString(), ucName);
                                    string strTemp = null;

                                    if (ucName.ToString() == "")
                                    {
                                        strTemp = str.ToString();
                                        call.insertMember((int)MemberType.UC_IPPHONE, new StringBuilder(strTemp));
                                    }
                                    else
                                    {
                                        strTemp = ucName + StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName);
                                        call.insertMember((int)MemberType.UC_ACCOUNT, ucName);
                                        cds.lpData = cds.lpData.Replace(str.ToString().Trim(), strTemp);
                                    }
                                }
                                if (call.startContextCall() == 0)
                                {
                                    winCall = new WinCall(this, cds.lpData.Substring(cds.lpData.IndexOf(';') + 1));
                                    winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                                    winCall.Show();
                                }
                                else
                                {
                                    DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2);
                                    return;

                                }
                            }
                            else   //三人至20人的会议 
                            {
                                if (this.isHave == true)  //有接听界面,则不允许做会议操作
                                {
                                    DialogShow.Show(StringHelper.FindLanguageResource("TwoCallsSameTime"), StringHelper.FindLanguageResource("error"), 2);
                                    return;
                                }
                                else
                                {
                                    for (int index = 2; index < strList.Length; index++)
                                    {
                                        str = new StringBuilder(strList[index].Substring(strList[index].IndexOf(':') + 1).TrimEnd('>'));

                                        string a = ";" + str.ToString().Trim();
                                        StringBuilder ucName = new StringBuilder(100);
                                       // call.insertMember((int)MemberType.UC_ACCOUNT, str);
                                        //modify by 00327190  之前是只有上面隐掉的,会有问题,纯话机和UC账户要分开   2015/9/18
                                        if (str.ToString().IndexOf("@") != -1)
                                        {
                                            call.insertMember((int)MemberType.UC_ACCOUNT, str);
                                        }
                                        else  //如果是纯数字,则再分能不能查到对应的UC用户  2015/9/21
                                        {                                           
                                            call.GetUCAccountByPhoneNo(str.ToString(), ucName);                                           
                                            if (ucName.ToString() == "")  //纯话机 
                                            {
                                                call.insertMember((int)MemberType.UC_IPPHONE, str);
                                            }
                                            else
                                            {
                                                call.insertMember((int)MemberType.UC_ACCOUNT, ucName);
                                            }

                                        }

                                    }
                                    call.startContextCall();
                                    winCall = new WinCall(this, cds.lpData.Substring(cds.lpData.IndexOf(';') + 1));
                                    winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                                    winCall.Show();
                                }

                            }
                        }
                    }
                    else
                    {
                        DialogShow.Show(StringHelper.FindLanguageResource("Youareincallalready"), StringHelper.FindLanguageResource("error"), 2);  //不能同时发起两路通话
                        return;
                    }
                }
            }
            catch (System.Exception ex)
            {
                LogManager.SystemLog.Error(ex.ToString());
            }

        }
        private void button_Click(object sender, RoutedEventArgs e)
        {
            Image img = ((sender as Button).Content as StackPanel).Children[0] as Image;
            if (img.Tag.ToString() == "call")
            {
                if (txtNumber.Text.ToString()=="")
                {
                    return;
                }
                if (Lync.winCall!=null)
                {
                    this.Close();
                    Dialog.Show(StringHelper.FindLanguageResource("TwoCallsSameTime"), StringHelper.FindLanguageResource("error"));
                    return;
                }
                //拨号
                MakeCallBusiness call = new MakeCallBusiness();
                StringBuilder ucName = new StringBuilder(100);
                call.GetUCAccount(txtNumber.Text.ToString(), ucName);
                string str = null;

                if (ucName.ToString()=="")
                {
                    str = txtNumber.Text.ToString();
                    call.insertMember((int)MemberType.UC_IPPHONE, new StringBuilder(str));
                }
                else
                {
                    str = ucName + StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName);
                    call.insertMember((int)MemberType.UC_ACCOUNT, ucName);
                }

                if (call.startContextCall() == 0)   //modify by 00327190  2015/6/18 只要返回值不为0,就不能执行以下操作
                {
                    this.Close();

                    WinCall winCall = new WinCall(Lync, SingletonObj.LoginInfo.LyncName + ";" + str.ToString());
                    winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                    winCall.Show();
                    Lync.winCall = winCall;
                }
                else
                {
                    this.Close();
                    DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2);
                    return;
                }
            }
            else if (img.Tag.ToString() == "back")
            {
                if (txtNumber.Text.Length > 0)
                {
                    txtNumber.Text = txtNumber.Text.Substring(0, txtNumber.Text.Length - 1);
                }
            }
            else
            {
                txtNumber.Text = txtNumber.Text + img.Tag.ToString();
                txtNumber.Focus();
                txtNumber.Select(txtNumber.Text.Length, 0);
            }
        }
        /// <summary>
        /// 获取前两百条数据
        /// </summary>
        /// <param name="strSearchKey">查询关键字</param>
        void GetAllLyncContacts(string strSearchKey = "", int page = 0)
        {
            dtContact = new DataTable();
            dtContact.Columns.Add("Name");
            dtContact.Columns.Add("Url");
            dtContact.Columns.Add("Phone");

            if (dtSelectedContact.Columns.Count == 0)
            {
                dtSelectedContact.Columns.Add("Name");
                dtSelectedContact.Columns.Add("Url");
                dtSelectedContact.Columns.Add("Phone");
            }

            MakeCallBusiness call = new MakeCallBusiness();

            int maxCount           = 200; //最多查询的数量
            int count              = 100; //每次查询的数量
            int iSizeSTContactList = Marshal.SizeOf(typeof(STContactList));
            int iSizeSTContact     = Marshal.SizeOf(typeof(STContact));
            int uiBufSize          = (iSizeSTContactList + iSizeSTContact * (count - 1));

            byte[] pSTContactList = new byte[uiBufSize];

            UCServiceRetvCode iRet = (UCServiceRetvCode)call.GetEntContactList(strSearchKey, page * count, page * count + count - 1, pSTContactList);

            if (UCServiceRetvCode.UC_SDK_Success == iRet)
            {
                string strLyncURI     = StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName);
                IntPtr tempInfoIntPtr = Marshal.AllocHGlobal((int)iSizeSTContactList);
                byte[] tempInfoByte   = new byte[iSizeSTContactList];
                try
                {
                    Marshal.Copy(pSTContactList, 0, tempInfoIntPtr, (int)iSizeSTContactList);
                    STContactList head = (STContactList)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STContactList));
                    this.labTotal.Content = "/" + ((head.iTotal % count) == 0 ? (head.iTotal / count == 0 ? 1 : head.iTotal / count).ToString() : (head.iTotal / count + 1).ToString());
                    this.txtPage.Text     = (page + 1).ToString();

                    //for (int index = -1; index < head.iTotal - 1 && index < count - 1; index++)
                    //{
                    //    Marshal.Copy(pSTContactList, iSizeSTContactList + iSizeSTContact * index, tempInfoIntPtr, (int)iSizeSTContact);
                    //    STContact item = (STContact)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STContact));
                    //    dtContact.Rows.Add(item.name_, string.IsNullOrEmpty(item.uri_) ? "" : item.uri_ + strLyncURI, item.mobile_);
                    //}
                    //if (head.iTotal > count)//继续查询
                    //{
                    //最多查询maxCount条数据
                    if (head.iTotal < maxCount)
                    {
                        maxCount = head.iTotal;
                    }
                    int num = maxCount % count != 0 ? (maxCount / count + 1) : maxCount / count;//需要查询的次数
                    for (int iNum = 1; iNum < num; iNum++)
                    {
                        iRet = (UCServiceRetvCode)call.GetEntContactList(strSearchKey, iNum * count, iNum * count + count - 1, pSTContactList);
                        if (UCServiceRetvCode.UC_SDK_Success == iRet)
                        {
                            Marshal.Copy(pSTContactList, 0, tempInfoIntPtr, (int)iSizeSTContactList);
                            head = (STContactList)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STContactList));

                            for (int index = -1; index < (maxCount - iNum * count - 1) && index < count - 1; index++)
                            {
                                Marshal.Copy(pSTContactList, iSizeSTContactList + iSizeSTContact * index, tempInfoIntPtr, (int)iSizeSTContact);
                                STContact item = (STContact)Marshal.PtrToStructure(tempInfoIntPtr, typeof(STContact));
                                if (item.name_ != null && item.name_ != "")
                                {
                                    dtContact.Rows.Add(item.name_, string.IsNullOrEmpty(item.uri_) ? "" : item.uri_ + strLyncURI, item.mobile_);
                                }
                            }
                        }
                        else
                        {
                            LogManager.SystemLog.Error("GetAllLyncContacts failed");
                            break;
                        }
                    }
                    //}
                }
                finally
                {
                    Marshal.Release(tempInfoIntPtr);
                }
            }
            else
            {
                LogManager.SystemLog.Error("GetAllLyncContacts failed");
            }

            #region 根据lync接口查询lync用户的联系人列表
            //foreach (Microsoft.Lync.Model.Group.Group group in WinLync.LyncContactGroups)
            //{
            //    foreach (Contact contact in (ContactCollection)(group))
            //    {
            //        int index = -1;
            //        foreach (DataRow dr in dtContact.Rows)
            //        {
            //            if (dr["Url"].ToString() == contact.Uri)
            //            {
            //                index = 0;
            //            }
            //        }
            //        if (index == -1)
            //        {
            //            string phone = "";
            //            List<object> list = contact.GetContactInformation(ContactInformationType.ContactEndpoints) as List<object>;
            //            foreach (object point in list)
            //            {
            //                if (((Microsoft.Lync.Model.ContactEndpoint)point).Type == ContactEndpointType.WorkPhone)
            //                {
            //                    phone = ((Microsoft.Lync.Model.ContactEndpoint)point).DisplayName;
            //                }
            //            }
            //           string name = contact.GetContactInformation(ContactInformationType.DisplayName).ToString();
            //           dtContact.Rows.Add(name, contact.Uri, phone);

            //        }
            //    }
            //}
            #endregion
        }