Exemplo n.º 1
0
        /// <summary>
        /// 参会人状态更改捕获事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        static void contact_ContactInformationChanged(object sender, ContactInformationChangedEventArgs e)
        {
            try
            {
                App.Current.Dispatcher.BeginInvoke(new Action(() =>
                {
                    if (Constant.lyncClient != null && Constant.lyncClient.State == ClientState.SignedIn)
                    {
                        //获取联系人
                        Contact contact = sender as Contact;
                        if (contact != null)
                        {

                            System.Collections.Generic.List<object> list = (System.Collections.Generic.List<object>)contact.GetContactInformation(ContactInformationType.EmailAddresses);
                            if (list.Count > 0 && currentParticipantsEntityList != null)
                            {
                                //double state = Convert.ToDouble(contact.GetContactInformation(ContactInformationType.Availability));

                                List<ParticipantsEntity> participantsEntityTempList = currentParticipantsEntityList.Where(item => item.LoginUri.ToLower().Equals(Convert.ToString(list[0]).ToLower())).ToList<ParticipantsEntity>();

                                if (participantsEntityTempList.Count > 0)
                                {
                                    ParticipantsEntity Participant = participantsEntityTempList[0];

                                    string uriImg = Constant.TreeServiceAddressFront + Constant.FtpServercePersonImgName + Participant.LoginName + ".png";
                                    BitmapImage btimap = new BitmapImage(new Uri(uriImg));
                                    string strState = Convert.ToString(contact.GetContactInformation(ContactInformationType.Activity));
                                    //bool imgIsExit = UriManage.RemoteFileExists(uriImg);
                                    if (strState.Equals("脱机"))
                                    {
                                        Participant.LoginState = "未登录";
                                        Participant.StateForeBrush = App.Current.Resources["NormalColorBrush"] as SolidColorBrush;
                                        Participant.HeadPortrait = ImageManage.ToGray(btimap);
                                    }
                                    else
                                    {
                                        Participant.LoginState = "在线";
                                        Participant.StateForeBrush = App.Current.Resources["GreenColorBrush"] as SolidColorBrush;
                                        Participant.HeadPortrait = btimap;
                                    }
                                    //获取当前人的公司名称
                                    Participant.Company = Convert.ToString(contact.GetContactInformation(ContactInformationType.Company));
                                    ////获取当前人的职位
                                    Participant.Position = Convert.ToString(contact.GetContactInformation(ContactInformationType.Title));
                                }
                                if (BeginRefleshDataGridCallBack != null)
                                {
                                    BeginRefleshDataGridCallBack(currentParticipantsEntityList);
                                }
                            }
                        }
                    }
                }));

            }
            catch (Exception ex)
            {
                LogManage.WriteLog(typeof(LyncHelper), ex);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 参会人状态更改捕获
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        static void contact_ContactInformationChanged(object sender, ContactInformationChangedEventArgs e)
        {
            try
            {
                //使用异步委托
                Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                {
                    //判断是否有lync实例并判断其实例的状态
                    if (ConversationCodeEnterEntity.lyncClient != null && ConversationCodeEnterEntity.lyncClient.State == ClientState.SignedIn)
                    {
                        //获取联系人
                        Contact contact = sender as Contact;
                        if (contact != null)
                        {
                            //获取相关人的邮箱地址列表
                            System.Collections.Generic.List <object> list = (System.Collections.Generic.List <object>)contact.GetContactInformation(ContactInformationType.EmailAddresses);
                            //邮箱地址列表数量不为零
                            if (list.Count > 0 && currentParticipantsEntityList != null)
                            {
                                List <ParticipantsEntity> participantsEntityTempList = currentParticipantsEntityList.Where(item => item.LoginUri.ToLower().Equals(Convert.ToString(list[0]).ToLower())).ToList <ParticipantsEntity>();

                                if (participantsEntityTempList.Count > 0)
                                {
                                    //获取对应参会人
                                    ParticipantsEntity Participant = participantsEntityTempList[0];
                                    //填充信息辅助
                                    FillLyncOnlineInfoHelper(contact, Participant);
                                }
                                //返回参会人信息
                                if (BeginRefleshDataGridCallBack != null)
                                {
                                    BeginRefleshDataGridCallBack(currentParticipantsEntityList);
                                }
                            }
                        }
                    }
                }));
            }
            catch (Exception ex)
            {
                LogManage.WriteLog(typeof(LyncHelper), ex);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 填充信息辅助
        /// </summary>
        /// <param name="contact"></param>
        /// <param name="Participant"></param>
        static void FillLyncOnlineInfoHelper(Contact contact, ParticipantsEntity Participant)
        {
            try
            {
                //获取相关人的头像地址
                string uriImg = ConversationCodeEnterEntity.TreeServiceAddressFront + ConversationCodeEnterEntity.FtpServercePersonImgName + Participant.LoginName + ".png";
                //生成专用图片
                BitmapImage btimap = new BitmapImage(new Uri(uriImg));

                //获取当前人的公司名称
                Participant.Company = Convert.ToString(contact.GetContactInformation(ContactInformationType.Company));
                ////获取当前人的职位
                Participant.Position = Convert.ToString(contact.GetContactInformation(ContactInformationType.Title));
                //获取相关联系人的活动状态
                string strState = Convert.ToString(contact.GetContactInformation(ContactInformationType.Activity));
                //头像设置
                Participant.HeadPortrait = btimap;
                //是否在线
                if (strState.Equals(notOnlineAboutLync) || strState.Equals(notOnlineAboutSky))
                {
                    //不在线,使用默认的字体和画刷
                    Participant.LoginState     = notOnlineShow;
                    Participant.StateForeBrush = NormalColorBrush;
                    Participant.HeadColor      = GrayColor;
                }
                else
                {
                    //在线,使用醒目的字体和画刷
                    Participant.LoginState     = onlineShow;
                    Participant.StateForeBrush = GreenColorBrush;
                    Participant.HeadColor      = GreenColor;
                }
            }
            catch (Exception ex)
            {
                LogManage.WriteLog(typeof(LyncHelper), ex);
            }
            finally
            {
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 填充参会人列表
        /// </summary>
        public static void FillLyncOnlineInfo(DataGrid datagrid, ObservableCollection<ParticipantsEntity> ParticipantsEntityList)
        {
            try
            {
                if (Constant.lyncClient != null)
                {
                    currentParticipantsEntityList = ParticipantsEntityList;

                    //数据清除
                    currentParticipantsEntityList.Clear();

                    //递增序号
                    int number = 0;

                    //遍历添加参会人
                    foreach (var item in Constant.ParticipantList)
                    {
                        //创建参会人子项实体
                        ParticipantsEntity participantsEntity = new ParticipantsEntity();


                        //将参会人的名称取出
                        if (Constant.DicParticipant.ContainsKey(item))
                        {
                            participantsEntity.ParticipantsName = Constant.DicParticipant[item];
                            number++;
                            //序号
                            participantsEntity.Number = number;

                            if (Constant.lyncClient != null)
                            {
                                Contact contact = Constant.lyncClient.ContactManager.GetContactByUri(item);
                                contact.ContactInformationChanged += contact_ContactInformationChanged;
                                //获取当前人的公司名称
                                participantsEntity.Company = Convert.ToString(contact.GetContactInformation(ContactInformationType.Company));
                                //获取当前人的职位
                                participantsEntity.Position = Convert.ToString(contact.GetContactInformation(ContactInformationType.Title));

                                //int state = Convert.ToInt32(contact.GetContactInformation(ContactInformationType.Availability));

                                participantsEntity.LoginUri = item;
                                participantsEntity.LoginName = item.Replace("sip:", string.Empty).Replace(Constant.UserDomain, string.Empty).Replace("@", string.Empty);
                                string uriImg = Constant.TreeServiceAddressFront + Constant.FtpServercePersonImgName + participantsEntity.LoginName + ".png";
                                BitmapImage btimap = new BitmapImage(new Uri(uriImg));
                                string strState = Convert.ToString(contact.GetContactInformation(ContactInformationType.Activity));
                                //bool imgIsExit = UriManage.RemoteFileExists(uriImg);
                                if (strState.Equals("脱机"))
                                {
                                    participantsEntity.LoginState = "未登录";
                                    participantsEntity.StateForeBrush = App.Current.Resources["NormalColorBrush"] as SolidColorBrush;
                                    participantsEntity.HeadPortrait = ImageManage.ToGray(btimap);
                                }
                                else
                                {
                                    participantsEntity.LoginState = "在线";
                                    participantsEntity.StateForeBrush = App.Current.Resources["GreenColorBrush"] as SolidColorBrush;
                                    participantsEntity.HeadPortrait = btimap;
                                }
                                //添加参会人
                                ParticipantsEntityList.Add(participantsEntity);
                            }
                        }
                    }
                    if (BeginRefleshDataGridCallBack != null)
                    {
                        BeginRefleshDataGridCallBack(currentParticipantsEntityList);
                    }
                }
            }
            catch (Exception ex)
            {
                LogManage.WriteLog(typeof(LyncHelper), ex);
            }
            finally
            {

            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// 填充参会人列表
        /// </summary>
        public static void FillLyncOnlineInfo(DataGrid datagrid)
        {
            try
            {
                if (ConversationCodeEnterEntity.lyncClient != null)
                {
                    //数据清除
                    currentParticipantsEntityList.Clear();
                    //递增序号
                    int number = 0;
                    //填充颜色
                    StyleCollection();
                    //遍历添加参会人
                    foreach (var item in ConversationCodeEnterEntity.ParticipantList)
                    {
                        //创建参会人子项实体
                        ParticipantsEntity participantsEntity = new ParticipantsEntity();

                        //将参会人的名称取出
                        if (ConversationCodeEnterEntity.DicParticipant.ContainsKey(item))
                        {
                            //获取姓名
                            participantsEntity.ParticipantsName = ConversationCodeEnterEntity.DicParticipant[item];
                            number++;
                            //序号
                            participantsEntity.Number = number;

                            if (ConversationCodeEnterEntity.lyncClient != null)
                            {
                                Contact contact = ConversationCodeEnterEntity.contactManager.GetContactByUri(item);
                                //联系人信息更改事件
                                contact.ContactInformationChanged -= contact_ContactInformationChanged;
                                //联系人信息更改事件
                                contact.ContactInformationChanged += contact_ContactInformationChanged;

                                //登录uri地址
                                participantsEntity.LoginUri = item;
                                //登录名称
                                participantsEntity.LoginName = item.Replace("sip:", string.Empty).Replace(ConversationCodeEnterEntity.UserDomain, string.Empty).Replace("@", string.Empty);
                                //填充信息辅助
                                FillLyncOnlineInfoHelper(contact, participantsEntity);
                                //添加参会人
                                currentParticipantsEntityList.Add(participantsEntity);
                            }
                        }
                    }
                    //将datagrid返回
                    if (BeginRefleshDataGridCallBack != null)
                    {
                        BeginRefleshDataGridCallBack(currentParticipantsEntityList);
                    }
                }
            }
            catch (Exception ex)
            {
                LogManage.WriteLog(typeof(LyncHelper), ex);
            }
            finally
            {
            }
        }