Exemple #1
0
 /// <summary>
 /// 被移出讨论组时调用
 /// </summary>
 /// <param name="groupId"></param>
 public void DropOutGroup(string groupId)
 {
     AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () =>
     {
         GroupInfoViewModel vm = GroupInfoList.FirstOrDefault(c => c.GroupInfo.groupId == groupId);
         if (vm == null)
         {
             return;
         }
         GroupIds.Remove(vm.GroupInfo.groupId);
         //GroupInfoList.Remove(vm);
         GroupInfoList.Remove(vm);
         GroupInfos.Remove(vm.GroupInfo);
         if (ManageGroupInfoList.Contains(vm))
         {
             ManageGroupInfoList.Remove(vm);
         }
         if (JoinGroupInfoList.Contains(vm))
         {
             JoinGroupInfoList.Remove(vm);
         }
         ManageGroupCount = ManageGroupInfoList.Count;
         JoinGroupCount   = JoinGroupInfoList.Count;
         if (ManageGroupCount == 0)
         {
             IsManageGroup = false;
         }
         if (JoinGroupCount == 0)
         {
             IsJoinGroup = false;
         }
         List <string> topics = new List <string>();
         topics.Add(vm.GroupInfo.groupId);
     });
 }
        private void ActivityDetailsView_Loaded(object sender, RoutedEventArgs e)
        {
            txtBlock.Visibility = Visibility.Visible;
            var bitmapSource = HeadImage.ImageSource as BitmapSource;

            if (bitmapSource == null)
            {
                txtBlock.Visibility = Visibility.Collapsed;
                return;
            }
            if (bitmapSource.IsDownloading)
            {
                bitmapSource.DownloadCompleted += (obj, args) =>
                {
                    AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () =>
                    {
                        txtBlock.Visibility = Visibility.Collapsed;
                    });
                };
            }
            else
            {
                AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () =>
                {
                    txtBlock.Visibility = Visibility.Collapsed;
                });
            }
        }
 public GroupMemberListViewModel(List <AntSdkGroupMember> GroupMembers, AntSdkGroupInfo groupInfo)
 {
     this.GroupInfo = groupInfo;
     _groupMembers  = GroupMembers;
     AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () =>
     {
         AntSdkGroupMember groupOwner =
             GroupMembers.FirstOrDefault(c => c.roleLevel == (int)GlobalVariable.GroupRoleLevel.GroupOwner);
         GroupOwnerId = groupOwner == null ? "" : groupOwner.userId;
         LogHelper.WriteFatal(groupInfo.groupId + "-------" + groupInfo.groupName + "群组的群主: " +
                              groupOwner?.userNum + groupOwner?.userName);
         groupAdminUser = GroupMembers.FirstOrDefault(c =>
                                                      c.roleLevel == (int)GlobalVariable.GroupRoleLevel.Admin &&
                                                      c.userId == AntSdkService.AntSdkLoginOutput.userId);
         adminCount = GroupMembers.Count(m => m.roleLevel == (int)GlobalVariable.GroupRoleLevel.Admin);
         var orderByDesGroupMembers = GroupMembers.OrderByDescending(m => m.roleLevel).ToList();
         foreach (AntSdkGroupMember user in orderByDesGroupMembers)
         {
             GroupMemberViewModel groupMemberViewModel = new GroupMemberViewModel(user, GroupOwnerId,
                                                                                  GroupInfo.groupId, this, SearchGroupName, adminCount);
             if (user.roleLevel == (int)GlobalVariable.GroupRoleLevel.GroupOwner)
             {
                 GroupMemberControlList.Insert(0, groupMemberViewModel);
             }
             else if (user.roleLevel == (int)GlobalVariable.GroupRoleLevel.Admin)
             {
                 GroupMemberControlList.Insert(GroupMemberControlList.Count > 0 ? 1 : 0, groupMemberViewModel);
             }
             else
             {
                 var userinfo =
                     AntSdkService.AntSdkListContactsEntity.users.FirstOrDefault(c => c.userId == user.userId);
                 groupMemberViewModel.KickoutGroupVisibility = groupAdminUser != null ||
                                                               GroupOwnerId ==
                                                               AntSdkService.AntSdkLoginOutput.userId
                     ? Visibility.Visible
                     : Visibility.Collapsed;
                 if (userinfo != null && userinfo.state != (int)GlobalVariable.OnLineStatus.OffLine)
                 {
                     var index =
                         GroupMemberControlList.Count(
                             m =>
                             !m.IsGroupAdminImage && !m.IsOfflineState &&
                             m.AdminImageVisibility != Visibility.Visible);
                     GroupMemberControlList.Insert(index + adminCount + 1, groupMemberViewModel);
                 }
                 else
                 {
                     GroupMemberControlList.Add(groupMemberViewModel);
                 }
             }
         }
     });
     SearchGroupNameCommand = new DelegateCommand(GroupNameSearch);
     GoMemberSessionCommand = new DelegateCommand(goMemberSession);
     GroupMemberViewModel.KickoutGroupEvent           += KickOutGroup;
     GroupMemberViewModel.ChangeManagerCompletedEvent += GroupMemberViewModel_ChangeManagerCompletedEvent;
     MemberCountPrompt = string.Format("群成员({0}人)", GroupMembers.Count);
 }
 public void UpdateGroupMembers(List <AntSdkGroupMember> GroupMembers)
 {
     AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () =>
     {
         GroupMemberControlList.Clear();
         AntSdkGroupMember admin =
             GroupMembers.FirstOrDefault(c => c.roleLevel == (int)GlobalVariable.GroupRoleLevel.GroupOwner);
         _groupMembers  = GroupMembers;
         groupAdminUser =
             GroupMembers.FirstOrDefault(
                 c =>
                 c.roleLevel == (int)GlobalVariable.GroupRoleLevel.Admin &&
                 c.userId == AntSdkService.AntSdkLoginOutput.userId);
         GroupOwnerId = (admin == null ? "" : admin.userId);
         LogHelper.WriteFatal(this.GroupInfo.groupId + "-------" + this.GroupInfo.groupName + "群组的群主: " +
                              admin?.userNum + admin?.userName);
         adminCount = GroupMembers.Count(m => m.roleLevel == (int)GlobalVariable.GroupRoleLevel.Admin);
         var orderByDesGroupMembers = GroupMembers.OrderByDescending(m => m.roleLevel).ToList();
         foreach (AntSdkGroupMember user in orderByDesGroupMembers)
         {
             GroupMemberViewModel groupMemberViewModel = new GroupMemberViewModel(user, GroupOwnerId,
                                                                                  GroupInfo.groupId, this, SearchGroupName, adminCount);
             //groupMemberViewModel.AdminCount = adminCount;
             if (user.userId == GroupOwnerId)
             {
                 GroupMemberControlList.Insert(0, groupMemberViewModel);
             }
             else if (user.roleLevel == (int)GlobalVariable.GroupRoleLevel.Admin)
             {
                 GroupMemberControlList.Insert(GroupMemberControlList.Count > 0 ? 1 : 0, groupMemberViewModel);
             }
             else
             {
                 var userinfo =
                     AntSdkService.AntSdkListContactsEntity.users.FirstOrDefault(c => c.userId == user.userId);
                 groupMemberViewModel.KickoutGroupVisibility = groupAdminUser != null ||
                                                               GroupOwnerId ==
                                                               AntSdkService.AntSdkLoginOutput.userId
                     ? Visibility.Visible
                     : Visibility.Collapsed;
                 if (userinfo != null && userinfo.state != (int)GlobalVariable.OnLineStatus.OffLine)
                 {
                     var index =
                         GroupMemberControlList.Count(
                             m =>
                             !m.IsGroupAdminImage && !m.IsOfflineState &&
                             m.AdminImageVisibility != Visibility.Visible);
                     GroupMemberControlList.Insert(index + adminCount + 1, groupMemberViewModel);
                 }
                 else
                 {
                     GroupMemberControlList.Add(groupMemberViewModel);
                 }
             }
         }
         MemberCountPrompt = string.Format("群成员({0}人)", GroupMembers.Count);
     });
 }
 /// <summary>
 /// 搜索群组成员
 /// </summary>
 public void GroupNameSearch()
 {
     AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () =>
     {
         if (string.IsNullOrWhiteSpace(SearchGroupName))
         {
             IsShowSearchList = false;
             SearchGroupMemberControlList.Clear();
             return;
         }
         if (SearchGroupMemberControlList == null)
         {
             SearchGroupMemberControlList = new ObservableCollection <GroupMemberViewModel>();
         }
         SearchGroupMemberControlList.Clear();
         if (_groupMembers != null && _groupMembers.Any())
         {
             //var groupMemberList = _groupMembers.Where(m => IsconditionsSatisfy(m.userName, m.userNum));
             //if (groupMemberList != null && groupMemberList.Any())
             //{
             //    var groupMemberOrderByList = groupMemberList.OrderBy(m => m.userName);
             //    foreach (var user in groupMemberOrderByList)
             //    {
             //        GroupMemberViewModel groupMemberViewModel = new GroupMemberViewModel(user, GroupAdminId, GroupInfo.groupId, this, SearchGroupName);
             //        groupMemberViewModel.AdminImageVisibility = Visibility.Collapsed;
             //        SearchGroupMemberControlList.Add(groupMemberViewModel);
             //    }
             //}
             foreach (var member in _groupMembers)
             {
                 string pinYin   = string.Empty;
                 var contactUser = AntSdkService.AntSdkListContactsEntity.users.FirstOrDefault(m => m.userId == member.userId);
                 if (contactUser != null && contactUser.status == 0)
                 {
                     continue;
                 }
                 if (IsconditionsSatisfy(member.userName, member.userNum, ref pinYin))
                 {
                     GroupMemberViewModel groupMemberViewModel = new GroupMemberViewModel(member, GroupOwnerId,
                                                                                          GroupInfo.groupId, this, SearchGroupName, pinYin);
                     groupMemberViewModel.AdminImageVisibility = Visibility.Collapsed;
                     SearchGroupMemberControlList.Add(groupMemberViewModel);
                 }
             }
         }
         if (!SearchGroupMemberControlList.Any())
         {
             IsExistData = false;
         }
         else
         {
             GroupMeberSelected = SearchGroupMemberControlList[0];
             IsExistData        = true;
         }
         IsShowSearchList = true;
     });
 }
Exemple #6
0
 /// <summary>
 /// 离线时增加的群组(场景:服务断开重连)
 /// </summary>
 /// <param name="groupInfos"></param>
 public void AddGroups(List <AntSdkGroupInfo> groupInfos)
 {
     AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () =>
     {
         for (int i = 0; i < groupInfos.Count; i++)
         {
             var groupInfo = groupInfos[i];
             AddGroupInfoModel(groupInfo);
         }
     });
 }
Exemple #7
0
        //加载界面集合数据
        public void LoadGroupListData()
        {
            AsyncHandler.AsyncCall(Application.Current.Dispatcher, () =>
            {
                if (GroupInfoList != null && GroupInfoList.Count > 0)
                {
                    //var groupInfoLst = GroupInfoList.Where(m => m.GroupClassify == 0);
                    //if (groupInfoLst != null)
                    //{
                    //    var tempGroupLst = groupInfoLst.ToList();
                    //    for (int i = 0; i < tempGroupLst.Count; i++)
                    //    {
                    //        var groupInfo = tempGroupLst[i];
                    //        groupInfo.GetMembers();
                    //        tempGroupLst[i] = groupInfo;
                    //    }
                    //}

                    //我管理的
                    var tempGroupInfoLst    = GroupInfoList.Where(m => m.GroupClassify == 1);
                    var groupInfoViewModels = tempGroupInfoLst as IList <GroupInfoViewModel> ?? tempGroupInfoLst.ToList();
                    if (ManageGroupInfoList.Count == 0 || ManageGroupInfoList.Count != groupInfoViewModels.Count())
                    {
                        foreach (var groupInfo in groupInfoViewModels)
                        {
                            if (!ManageGroupInfoList.Contains(groupInfo) && !JoinGroupInfoList.Contains(groupInfo))
                            {
                                ManageGroupInfoList.Add(groupInfo);
                            }
                        }
                    }

                    //我加入的
                    var tempJoinGroupInfoLst = GroupInfoList.Where(m => m.GroupClassify == 2);
                    var joinGroupInfoLst     = tempJoinGroupInfoLst as IList <GroupInfoViewModel> ?? tempJoinGroupInfoLst.ToList();
                    if (JoinGroupInfoList.Count == 0 || JoinGroupInfoList.Count != joinGroupInfoLst.Count())
                    {
                        foreach (var groupInfo in joinGroupInfoLst)
                        {
                            if (!JoinGroupInfoList.Contains(groupInfo) && !ManageGroupInfoList.Contains(groupInfo))
                            {
                                JoinGroupInfoList.Add(groupInfo);
                            }
                        }
                    }
                    ManageGroupCount = ManageGroupInfoList.Count;
                    JoinGroupCount   = JoinGroupInfoList.Count;
                    IsManageGroup    = ManageGroupCount != 0;
                    IsJoinGroup      = JoinGroupCount != 0;
                }
            }, DispatcherPriority.Background);
        }
Exemple #8
0
        /// <summary>
        /// 群组展示
        /// </summary>
        public void ResetGroupList()
        {
            if (GroupInfos == null)
            {
                return;
            }
            //List<string> topics = new List<string>();
            List <QueryMsgInput_Group> queryMsgInput_Groups = new List <QueryMsgInput_Group>();

            AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () =>
            {
                //System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
                foreach (AntSdkGroupInfo info in GroupInfos)
                {
                    //stopWatch.Start();
                    //int unreadCount = 0;
                    ////删除取消消息免打扰功能的记录
                    //if (noRemindGroupList != null
                    //    && noRemindGroupList.Count > 0)
                    //{
                    //    T_NoRemindGroup noRemindGroup = noRemindGroupList.FirstOrDefault(c => c.GroupId == info.groupId);
                    //    if (noRemindGroup != null)
                    //    {
                    //        if (info.state == (int)GlobalVariable.MsgRemind.Remind)
                    //        {
                    //            ThreadPool.QueueUserWorkItem(m => T_NoRemindGroupBll.Delete(noRemindGroup));
                    //        }
                    //        else
                    //        {
                    //            unreadCount = noRemindGroup.UnreadCount;
                    //            //T_NoRemindGroupBll.GetModelByKey(info.groupId);
                    //        }
                    //    }
                    //}
                    GroupIds.Add(info.groupId);
                    GroupInfoViewModel groupInfoVM = new GroupInfoViewModel(info);

                    _GroupInfoList.Add(groupInfoVM);
                    //topics.Add(info.groupId);

                    QueryMsgInput_Group queryMsgInput_Group = new QueryMsgInput_Group();
                    //queryMsgInput_Group.companyCode = GlobalVariable.CompanyCode;
                    queryMsgInput_Group.sessionId = info.groupId;
                    //queryMsgInput_Group.sendUserId = AntSdkService.AntSdkLoginOutput.userId;
                    queryMsgInput_Group.chatIndex = string.Empty; //chatIndex为空,服务端返回100条消息
                    queryMsgInput_Groups.Add(queryMsgInput_Group);
                    //stopWatch.Stop();
                    //LogHelper.WriteDebug(string.Format("[LoadAction_GroupInfoViewModel({0}毫秒)]", stopWatch.Elapsed.TotalMilliseconds));
                }
            }, DispatcherPriority.Background);
        }
 public void AddNewMember(List <AntSdkContact_User> newGroupMemberList)
 {
     AsyncHandler.AsyncCall(System.Windows.Application.Current.Dispatcher, () =>
     {
         foreach (AntSdkContact_User user in newGroupMemberList)
         {
             AntSdkGroupMember member = new AntSdkGroupMember();
             member.picture           = user.picture;
             member.position          = user.position;
             member.roleLevel         = (int)GlobalVariable.GroupRoleLevel.Ordinary;
             member.userId            = user.userId;
             member.userName          = user.userName;
             GroupMemberViewModel groupMemberViewModel = new GroupMemberViewModel(member, GroupOwnerId,
                                                                                  GroupInfo.groupId, this, SearchGroupName, adminCount);
             //groupMemberViewModel.AdminCount = adminCount;
             var userinfo =
                 AntSdkService.AntSdkListContactsEntity.users.FirstOrDefault(c => c.userId == user.userId);
             groupMemberViewModel.KickoutGroupVisibility = groupAdminUser != null ||
                                                           GroupOwnerId == AntSdkService.AntSdkLoginOutput.userId
                 ? Visibility.Visible
                 : Visibility.Collapsed;
             if (userinfo != null && userinfo.state != (int)GlobalVariable.OnLineStatus.OffLine)
             {
                 var index =
                     GroupMemberControlList.Count(
                         m =>
                         !m.IsGroupAdminImage && !m.IsOfflineState &&
                         m.AdminImageVisibility != Visibility.Visible);
                 GroupMemberControlList.Insert(index + adminCount + 1, groupMemberViewModel);
             }
             else
             {
                 GroupMemberControlList.Add(groupMemberViewModel);
             }
             //groupMemberViewModel.KickoutGroupVisibility = groupAdminUser != null ? Visibility.Visible : Visibility.Collapsed;
             //GroupMemberControlList.Add(groupMemberViewModel);
         }
         MemberCountPrompt = string.Format("群成员({0}人)", GroupMemberControlList.Count);
     });
 }
Exemple #10
0
        //public void DepartmentUpdateMember(string oldDepartmentId)
        //{

        //}

        /// <summary>
        /// 联系人的职位被变更
        /// </summary>
        /// <param name="departmentId"></param>
        public void DepartmentMemberUpdate(string departmentId)
        {
            AsyncHandler.AsyncCall(Application.Current.Dispatcher, () =>
            {
                if (dicExpanderNode == null || dicExpanderNode.Count <= 0)
                {
                    return;
                }
                if (dicExpanderNode.Keys.Count == 0)
                {
                    return;
                }
                var departemntExpander =
                    dicExpanderNode.Keys.FirstOrDefault(m => m.Tag != null && m.Tag.ToString() == departmentId);
                if (departemntExpander == null)
                {
                    return;
                }
                var departemntStackPanel = departemntExpander.Content as StackPanel;
                var node = dicExpanderNode[departemntExpander];
                if (node.IsLoaded)
                {
                    RecursionLoadSource(departemntStackPanel, departmentId, node.Level);
                }
                var departInfo =
                    AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(m => m.departmentId == departmentId);
                var count = GetContactsCount(departmentId);
                if (departInfo != null)
                {
                    departemntExpander.Header = departInfo.departName + "(" + count + ")";
                    if (string.IsNullOrEmpty(departInfo.parentDepartId))
                    {
                        return;
                    }
                    DepartmentMembersCountUpdate(departInfo.parentDepartId);
                }
            });
        }
Exemple #11
0
 /// <summary>
 /// 更新一级结构人数
 /// </summary>
 /// <param name="parentDepartId"></param>
 private void DepartmentMembersCountUpdate(string parentDepartId)
 {
     AsyncHandler.AsyncCall(Application.Current.Dispatcher, () =>
     {
         var rootDepartemntExpander =
             dicExpanderNode.Keys.FirstOrDefault(m => m.Tag != null && (string)m.Tag == parentDepartId);
         if (rootDepartemntExpander == null)
         {
             return;
         }
         {
             var rootDepartInfo =
                 AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(
                     m => m.departmentId == parentDepartId);
             if (rootDepartInfo == null)
             {
                 return;
             }
             var totalCount = GetContactsCount(rootDepartInfo.departmentId);
             rootDepartemntExpander.Header = rootDepartInfo.departName + "(" + totalCount + ")";
         }
     });
 }
 /// <summary>
 /// 查询(暂时支持汉字和首字母查询)
 /// </summary>
 /// <param name="condition"></param>
 public void ResetQueryCondition(string condition)
 {
     AsyncHandler.AsyncCall(Application.Current.Dispatcher, () =>
     {
         if (string.IsNullOrWhiteSpace(condition))
         {
             return;
         }
         if (QueryContactList == null)
         {
             QueryContactList = new ObservableCollection <ContactInfoViewModel>();
         }
         QueryContactList.Clear();
         try
         {
             if (AntSdkService.AntSdkListContactsEntity.users != null)
             {
                 //var userList =
                 //    AntSdkService.AntSdkListContactsEntity.contacts.users.Where(
                 //        m => IsconditionsSatisfy(m.userName, m.userNum));
                 //foreach (AntSdkContact_User user in userList)
                 //{
                 //    ContactInfoViewModel contactInfoViewModel = new ContactInfoViewModel(user, Container, condition);
                 //    contactInfoViewModel.MouseEnter = new DefaultCommand(mouseEnter);
                 //    contactInfoViewModel.MouseLeave = new DefaultCommand(mouseEnter);
                 //    contactInfoViewModel.PlaceholderWidth = 20;
                 //    QueryContactList.Add(contactInfoViewModel);
                 //}
                 var tempUsers = AntSdkService.AntSdkListContactsEntity.users.Where(m => m.status == 2);
                 var i         = 0;
                 foreach (var user in tempUsers)
                 {
                     string pinYin = string.Empty;
                     if (IsconditionsSatisfy(user.userName, user.userNum, ref pinYin))
                     {
                         i++;
                         ContactInfoViewModel contactInfoViewModel = new ContactInfoViewModel(user, Container,
                                                                                              condition, pinYin);
                         contactInfoViewModel.MouseEnter       = new DefaultCommand(mouseEnter);
                         contactInfoViewModel.MouseLeave       = new DefaultCommand(mouseEnter);
                         contactInfoViewModel.PlaceholderWidth = 20;
                         QueryContactList.Add(contactInfoViewModel);
                         if (i > 80)
                         {
                             break;
                         }
                     }
                 }
             }
             if (_groupListViewModel != null)
             {
                 //var groupList =
                 //    _groupListViewModel.GroupInfoList.Where(c => IsconditionsSatisfy(c.GroupInfo.groupName, string.Empty));
                 //foreach (GroupInfoViewModel group in groupList)
                 //{
                 //    ContactInfoViewModel contactInfoViewModel = new ContactInfoViewModel(group, Container, condition)
                 //    {
                 //        MouseEnter = new DefaultCommand(mouseEnter),
                 //        MouseLeave = new DefaultCommand(mouseEnter)
                 //    };
                 //    QueryContactList.Add(contactInfoViewModel);
                 //}
                 foreach (var group in _groupListViewModel.GroupInfoList)
                 {
                     string pinYin = string.Empty;
                     if (IsconditionsSatisfy(group.GroupName, string.Empty, ref pinYin))
                     {
                         ContactInfoViewModel contactInfoViewModel = new ContactInfoViewModel(group, Container,
                                                                                              condition, pinYin)
                         {
                             MouseEnter = new DefaultCommand(mouseEnter),
                             MouseLeave = new DefaultCommand(mouseEnter)
                         };
                         QueryContactList.Add(contactInfoViewModel);
                     }
                 }
             }
             //RaisePropertyChanged(() => QueryContactList);
         }
         catch (Exception e)
         {
             return;
         }
         if (QueryContactList.Count == 0)
         {
             BackImage = Visibility.Visible;
         }
         else
         {
             SelectContactItem = QueryContactList[0];
             BackImage         = Visibility.Collapsed;
         }
     }, DispatcherPriority.Background);
 }
Exemple #13
0
        private static void OnIsOfflineChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            AsyncHandler.AsyncCall(Application.Current.Dispatcher, () =>
            {
                var currentImage = d as ImageBrush;
                //Image currentImage=d as Image;
                if (currentImage == null)
                {
                    return;
                }
                var value   = d.GetValue(IsOfflineProperty);
                var isGray8 = value != null && (bool)value;
                if (isGray8)
                {
                    var bitmapSource = currentImage.ImageSource as BitmapSource;
                    if (bitmapSource == null)
                    {
                        return;
                    }
                    var url = currentImage.ImageSource.ToString();
                    if (url == GlobalVariable.DefaultImage.UserHeadDefaultImage)
                    {
                        var tempBitampSource     = bitmapSource.ToGrayBitmap();
                        currentImage.ImageSource = tempBitampSource;
                    }
                    else
                    {
                        try
                        {
                            if (bitmapSource.IsDownloading)
                            {
                                bitmapSource.DownloadCompleted += (sender, args) =>
                                {
                                    var backupBitmapSource = bitmapSource.CloneCurrentValue();
                                    currentImage.SetValue(BitmapSourceBackupProperty, backupBitmapSource);
                                    currentImage.ImageSource = bitmapSource.ToGrayBitmap();
                                };
                            }
                            else
                            {
                                var backupBitmapSource = bitmapSource.CloneCurrentValue();
                                currentImage.SetValue(BitmapSourceBackupProperty, backupBitmapSource);
                                var tempBitampSource     = bitmapSource.ToGrayBitmap();
                                currentImage.ImageSource = tempBitampSource;
                            }
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                    //// 建立Gray32Float的BitmapSource
                    //FormatConvertedBitmap newFormatedBitmapSource = new FormatConvertedBitmap();
                    //newFormatedBitmapSource.BeginInit();
                    //newFormatedBitmapSource.Source = currentImage.ImageSource as BitmapSource;
                    //newFormatedBitmapSource.DestinationFormat = PixelFormats.Gray32Float;
                    ////List<Color> colors = new List<Color>();
                    ////colors.Add(Colors.White);
                    ////colors.Add(Colors.DarkGoldenrod);
                    ////BitmapPalette palette = new BitmapPalette(colors);
                    ////newFormatedBitmapSource.DestinationPalette = palette;
                    //newFormatedBitmapSource.EndInit();
                    // 替换ImageSource
                }
                else
                {
                    // 图像恢复操作
                    object obj = currentImage.GetValue(BitmapSourceBackupProperty);

                    BitmapSource bs = obj as BitmapSource;
                    if (bs == null)
                    {
                        return;
                    }
                    currentImage.ImageSource = bs;
                }
            }, DispatcherPriority.Background);
        }
Exemple #14
0
        /// <summary>
        /// 展开子节点
        /// </summary>
        /// <param name="stackPanel">父面板</param>
        /// <param name="parentDepartId">父部门ID</param>
        /// <param name="level">在第几层</param>
        private void RecursionLoadSource(StackPanel stackPanel, string parentDepartId, int level)
        {
            if (AntSdkService.AntSdkListContactsEntity == null)
            {
                return;
            }
            AsyncHandler.AsyncCall(Application.Current.Dispatcher, () =>
            {
                if (AntSdkService.AntSdkListContactsEntity.departs != null)
                {
                    List <AntSdkContact_Depart> departList =
                        AntSdkService.AntSdkListContactsEntity.departs.Where(c => c.parentDepartId == parentDepartId)
                        .ToList();
                    if (AntSdkService.AntSdkListContactsEntity.users != null)
                    {
                        if (stackPanel == null)
                        {
                            stackPanel = new StackPanel();
                        }
                        List <AntSdkContact_User> userList =
                            AntSdkService.AntSdkListContactsEntity.users.Where(c => c.departmentId == parentDepartId && c.status == 2)
                            .OrderBy(c => c.userId)
                            .ToList();
                        if (userList.Count > 0)
                        {
                            stackPanel?.Children.Clear();
                            foreach (AntSdkContact_User user in userList)
                            {
                                ContactInfoView contactInfo = new ContactInfoView(user, this.Container);
                                ContactInfoViewModel contactInfoViewModel =
                                    contactInfo.DataContext as ContactInfoViewModel;
                                var tempContactInfo = ContactInfoViewModelList.FirstOrDefault(m => m.User.userId == user.userId);
                                //if (tempContactInfo?.User != null && tempContactInfo.User.departmentId == user.departmentId) continue;
                                if (tempContactInfo?.User != null && tempContactInfo.User.departmentId != user.departmentId)
                                {
                                    tempContactInfo.User = user;
                                }
                                stackPanel.Children.Add(contactInfo);
                                if (Container == GlobalVariable.ContactInfoViewContainer.ContactListView)
                                {
                                    contactInfo.MouseDown += ModifyColorOnMouseClick;
                                }
                                else if (Container == GlobalVariable.ContactInfoViewContainer.GroupEditWindowViewLeft)
                                {
                                    GroupEditWindowViewModel groupEditVM = Owner as GroupEditWindowViewModel;
                                    if (groupEditVM?.GroupMemberList != null && groupEditVM.GroupMemberList.Select(c => c.User.userId).Contains(user.userId))
                                    {
                                        if (groupEditVM.OriginalMemberIds != null &&
                                            groupEditVM.OriginalMemberIds.Contains(user.userId))
                                        {
                                            contactInfoViewModel?.SetExistGroupMember();
                                        }
                                        else
                                        {
                                            contactInfoViewModel?.OnStateImageClickEventEvent(contactInfoViewModel, true);
                                        }
                                    }
                                }
                                else if (Container == GlobalVariable.ContactInfoViewContainer.MultiContactsSelectLeft)
                                {
                                    MultiContactsSelectViewModel vm = Owner as MultiContactsSelectViewModel;
                                    if (vm != null && vm.GroupMemberList != null &&
                                        vm.GroupMemberList.Select(c => c.User.userId).Contains(user.userId))
                                    {
                                        //if (vm.OriginalMemberIds != null && vm.OriginalMemberIds.Contains(user.userId))
                                        //{
                                        //    contactInfoViewModel.SetExistGroupMember();
                                        //}
                                        //else
                                        //{
                                        contactInfoViewModel?.OnStateImageClickEventEvent(contactInfoViewModel, true);
                                        //}
                                    }
                                }

                                if (contactInfoViewModel != null)
                                {
                                    contactInfoViewModel.PlaceholderWidth = 30;
                                    ContactInfoViewModelList.Add(contactInfoViewModel);
                                }
                            }
                        }
                        else if (stackPanel?.Children.Count > 0)
                        {
                            stackPanel?.Children.Clear();
                        }
                    }

                    if (departList.Count <= 0)
                    {
                        return;
                    }
                    foreach (AntSdkContact_Depart depart in departList)
                    {
                        AdddepartData(depart, stackPanel, level);
                    }
                }
            });
        }
Exemple #15
0
 /// <summary>
 /// 部门改变
 /// </summary>
 /// <param name="departs">部门</param>
 public void DepartmentUpdate(AntSdkAddListContactsOutput_Departs departs)
 {
     AsyncHandler.AsyncCall(Application.Current.Dispatcher, () =>
     {
         if (departs.add?.Count > 0)
         {
             //如果有一级部门,先添加一级部门
             var firstLevelDeparts = departs.add.Where(m => m.parentDepartId == "0");
             foreach (var firstLevelDepart in firstLevelDeparts)
             {
                 if (dicExpanderNode == null || dicExpanderNode.Count <= 0)
                 {
                     AddFirstLevelDepartSource(firstLevelDepart);
                 }
                 else
                 {
                     var departemntExpander =
                         dicExpanderNode.Keys.FirstOrDefault(
                             m => m.Tag != null && m.Tag.ToString() == firstLevelDepart.departmentId);
                     if (departemntExpander == null)
                     {
                         AddFirstLevelDepartSource(firstLevelDepart);
                     }
                 }
             }
             //添加二级部
             var tempDeparts = departs.add.Where(m => m.parentDepartId != "0");
             foreach (var depart in tempDeparts)
             {
                 if (dicExpanderNode == null || dicExpanderNode.Count <= 0)
                 {
                     return;
                 }
                 if (dicExpanderNode.Keys.Count == 0)
                 {
                     return;
                 }
                 var departemntExpander =
                     dicExpanderNode.Keys.FirstOrDefault(
                         m => m.Tag != null && m.Tag.ToString() == depart.parentDepartId);
                 if (departemntExpander == null)
                 {
                     return;
                 }
                 var departemntStackPanel = departemntExpander.Content as StackPanel;
                 var node = dicExpanderNode[departemntExpander];
                 if (node.IsLoaded)
                 {
                     var tempDepartemntExpander =
                         dicExpanderNode.Keys.FirstOrDefault(
                             m => m.Tag != null && m.Tag.ToString() == depart.departmentId);
                     if (tempDepartemntExpander == null)
                     {
                         AdddepartData(depart, departemntStackPanel, node.Level);
                     }
                 }
             }
         }
         if (departs.delete?.Count > 0)
         {
             if (dicExpanderNode != null && dicExpanderNode.Count > 0)
             {
                 var tempDeparts = departs.delete;
                 foreach (var depart in tempDeparts)
                 {
                     var departemntExpander =
                         dicExpanderNode.Keys.FirstOrDefault(
                             m => m.Tag != null && m.Tag.ToString() == depart.departmentId);
                     if (departemntExpander == null)
                     {
                         continue;
                     }
                     var departemntStackPanel = departemntExpander.Content as StackPanel;
                     var node = dicExpanderNode[departemntExpander];
                     if (string.IsNullOrEmpty(node.ParentDepartId))
                     {
                         MainStackPanel.Children.Remove(departemntExpander);
                         dicExpanderNode.Remove(departemntExpander);
                     }
                     else
                     {
                         var parentDepartemntExpander =
                             dicExpanderNode.Keys.FirstOrDefault(
                                 m => m.Tag != null && m.Tag.ToString() == node.ParentDepartId);
                         var parentDepartemntStackPanel = parentDepartemntExpander?.Content as StackPanel;
                         if (parentDepartemntStackPanel == null)
                         {
                             continue;
                         }
                         parentDepartemntStackPanel.Children.Remove(departemntExpander);
                         dicExpanderNode.Remove(departemntExpander);
                     }
                 }
                 //var tempFirstLevelDeparts = departs.delete.Where(m => m.departmentId == "0");
                 //foreach (var depart in tempFirstLevelDeparts)
                 //{
                 //    var departemntExpander =
                 //        dicExpanderNode.Keys.FirstOrDefault(
                 //            m => m.Tag != null && m.Tag.ToString() == depart.departmentId);
                 //    if (departemntExpander == null) continue;
                 //    var departemntStackPanel = departemntExpander.Content as StackPanel;
                 //    var node = dicExpanderNode[departemntExpander];
                 //    if (node.IsLoaded)
                 //    {
                 //        departemntStackPanel?.Children.Clear();
                 //    }
                 //}
             }
         }
         if (!(departs.update?.Count > 0))
         {
             return;
         }
         {
             foreach (var depart in departs.update)
             {
                 var newDepartemntExpander =
                     dicExpanderNode?.Keys.FirstOrDefault(
                         m => m.Tag != null && (string)m.Tag == depart.departmentId);
                 if (newDepartemntExpander != null)
                 {
                     //var node = dicExpanderNode[newDepartemntExpander];
                     var departInfo =
                         AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(
                             m => m.departmentId == depart.departmentId);
                     var count = GetContactsCount(depart.departmentId);
                     if (departInfo != null)
                     {
                         newDepartemntExpander.Header = departInfo.departName + "(" + count + ")";
                     }
                 }
             }
         }
     });
 }
Exemple #16
0
 /// <summary>
 /// 联系人换部门或换公司
 /// </summary>
 /// <param name="oldDepartmentId">旧部门ID</param>
 /// <param name="newDepartmentId">新部门ID</param>
 public void UserChangeDepartemnt(string oldDepartmentId, string newDepartmentId)
 {
     AsyncHandler.AsyncCall(Application.Current.Dispatcher, () =>
     {
         if (dicExpanderNode == null || dicExpanderNode.Count <= 0)
         {
             return;
         }
         if (!string.IsNullOrEmpty(oldDepartmentId))
         {
             var departemntExpander =
                 dicExpanderNode.Keys.FirstOrDefault(m => m.Tag != null && (string)m.Tag == oldDepartmentId);
             //如果部门节点已展开,变更成员列表,否则只变更成员数量
             if (departemntExpander != null)
             {
                 var departemntStackPanel = departemntExpander.Content as StackPanel;
                 var node = dicExpanderNode[departemntExpander];
                 if (node.IsLoaded)
                 {
                     //var tempContactInfo = ContactInfoViewModelList.FirstOrDefault(m => m.User != null && m.User.userId == userId);
                     //if (tempContactInfo != null)
                     //    ContactInfoViewModelList.Remove(tempContactInfo);
                     RecursionLoadSource(departemntStackPanel, oldDepartmentId, node.Level);
                 }
                 var count      = GetContactsCount(oldDepartmentId);
                 var departInfo =
                     AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(
                         m => m.departmentId == oldDepartmentId);
                 if (departInfo != null)
                 {
                     departemntExpander.Header = departInfo.departName + "(" + count + ")";
                     if (!string.IsNullOrEmpty(departInfo.parentDepartId))
                     {
                         DepartmentMembersCountUpdate(departInfo.parentDepartId);
                     }
                 }
             }
             else
             {
                 var departInfo =
                     AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(
                         m => m.departmentId == oldDepartmentId);
                 if (departInfo != null)
                 {
                     if (string.IsNullOrEmpty(departInfo.parentDepartId))
                     {
                         //var parentDepartemntExpander =
                         //    dicExpanderNode.Keys.FirstOrDefault(
                         //        m => m.Tag != null && (string)m.Tag == departInfo.parentDepartId);
                         //var parentDepartInfo =
                         //    AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(
                         //        m => m.departmentId == departInfo.parentDepartId);
                         //if (parentDepartemntExpander != null && parentDepartInfo != null)
                         //{
                         //    var count = GetContactsCount(parentDepartInfo.departmentId);
                         //    parentDepartemntExpander.Header = parentDepartInfo.departName + "(" + count + ")";
                         //}
                         DepartmentMembersCountUpdate(departInfo.parentDepartId);
                     }
                 }
             }
         }
         if (string.IsNullOrEmpty(newDepartmentId))
         {
             return;
         }
         //用户被移到新部门
         var newDepartemntExpander =
             dicExpanderNode.Keys.FirstOrDefault(m => m.Tag != null && (string)m.Tag == newDepartmentId);
         //如果部门节点已展开,变更成员列表,否则只变更成员数量
         if (newDepartemntExpander != null)
         {
             var departemntStackPanel = newDepartemntExpander.Content as StackPanel;
             var node = dicExpanderNode[newDepartemntExpander];
             if (node.IsLoaded)
             {
                 //var tempContactInfo = ContactInfoViewModelList.FirstOrDefault(m => m.User != null && m.User.userId == userId);
                 //if (tempContactInfo != null)
                 //    ContactInfoViewModelList.Remove(tempContactInfo);
                 RecursionLoadSource(departemntStackPanel, newDepartmentId, node.Level);
             }
             var count      = GetContactsCount(newDepartmentId);
             var departInfo =
                 AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(
                     m => m.departmentId == newDepartmentId);
             if (departInfo == null)
             {
                 return;
             }
             {
                 newDepartemntExpander.Header = departInfo.departName + "(" + count + ")";
                 if (string.IsNullOrEmpty(departInfo.parentDepartId))
                 {
                     return;
                 }
                 DepartmentMembersCountUpdate(departInfo.parentDepartId);
             }
         }
         else
         {
             var departInfo =
                 AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(
                     m => m.departmentId == newDepartmentId);
             if (departInfo == null)
             {
                 return;
             }
             if (!string.IsNullOrEmpty(departInfo.parentDepartId))
             {
                 return;
             }
             {
                 DepartmentMembersCountUpdate(departInfo.parentDepartId);
                 //var parentDepartemntExpander = dicExpanderNode.Keys.FirstOrDefault(m => m.Tag != null && (string)m.Tag == departInfo.parentDepartId);
                 //var parentDepartInfo = AntSdkService.AntSdkListContactsEntity.departs.FirstOrDefault(m => m.departmentId == departInfo.parentDepartId);
                 //if (parentDepartemntExpander != null && parentDepartInfo != null)
                 //{
                 //    var count = GetContactsCount(parentDepartInfo.departmentId);
                 //    parentDepartemntExpander.Header = parentDepartInfo.departName + "(" + count + ")";
                 //}
             }
         }
     });
 }