/// <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); } }
/// <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); } }
/// <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 { } }
/// <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 { } }
/// <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 { } }