示例#1
0
        private void lsb1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            WeChatFriendShow accout = lsb1.SelectedValue as WeChatFriendShow;
            TreeNode         nodes  = lsb1.DataContext as TreeNode;

            if (accout == null || nodes == null)
            {
                return;
            }
            var selNode = nodes.TreeNodes.FirstOrDefault(t => t.Text == accout.Nick);
            var views   = DataViewPluginAdapter.Instance.GetView("微信", selNode.Type);

            tbdetail.Items.Clear();
            foreach (var v in views)
            {
                v.SelectedDataChanged += OnSelectedDataChanged;
                TabItem ti = new TabItem()
                {
                    Header = v.PluginInfo.Name
                };
                ti.Content = v.GetControl(new DataViewPluginArgument()
                {
                    CurrentNode = selNode
                });
                tbdetail.Items.Add(ti);
            }

            OnSelectedDataChanged?.Invoke(lsb1.SelectedValue);
        }
示例#2
0
        /// <summary>
        /// 选择了某个联系人,在右侧显示对话
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lsb1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            DataViewPluginArgument arg = lsb1.DataContext as DataViewPluginArgument;

            if (arg == null)
            {
                return;
            }
            WeChatFriendShow accout = lsb1.SelectedItem as WeChatFriendShow;
            TreeNode         nodes  = arg.CurrentData as TreeNode;

            if (accout == null || nodes == null)
            {
                return;
            }
            var selNode = nodes.TreeNodes.FirstOrDefault(t => t.Text == accout.Nick);   //获取选择的好友
            var views   = DataViewPluginAdapter.Instance.GetView(arg.DataSource.PluginInfo.Guid, selNode.Type, new DataViewConfigure()
            {
                IsDefaultGridViewVisibleWhenMultiviews = true
            });

            tbdetail.Items.Clear();
            foreach (var v in views)    //生成消息列表显示视图列表
            {
                v.SelectedDataChanged += OnSelectedDataChanged;
                tbdetail.Items.Add(v.ToControl(new DataViewPluginArgument()
                {
                    CurrentData = selNode, DataSource = arg.DataSource
                }));
            }
            tbdetail.SelectedIndex = tbdetail.HasItems ? 0 : -1;

            OnSelectedDataChanged?.Invoke(lsb1.SelectedValue);
        }
示例#3
0
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            WeChatFriendShow accout = values[0] as WeChatFriendShow;
            TreeNode         nodes  = values[1] as TreeNode;

            if (accout == null || nodes == null)
            {
                return(null);
            }
            return(nodes.TreeNodes.FirstOrDefault(t => t.Text == accout.Nick));
        }
示例#4
0
        private void GetFriendInfo(string xmlText, ref WeChatFriendShow friendInfo)
        {
            if (xmlText.IsInvalid())
            {
                return;
            }
            var xml = new XmlDocument();

            try
            {
                xml.LoadXml("<Root>" + xmlText + "</Root>");
            }
            catch
            {
                return;
            }
            friendInfo.HeadUrl = GetXmlNodeValueByKey(xml, "HeadImgHDUrl");
            //friendInfo.WeiBoAddr = string.Format("{0}({1})", GetXmlNodeValueByKey(xml, "weibonickname"), GetXmlNodeValueByKey(xml, "weiboaddress"));
            friendInfo.Address = string.Format("{0}-{1}-{2}", GetXmlNodeValueByKey(xml, "country"), GetXmlNodeValueByKey(xml, "province"), GetXmlNodeValueByKey(xml, "city"));
            //friendInfo.QQ = GetXmlNodeValueByKey(xml, "qquin");
            //friendInfo.QQNick = GetXmlNodeValueByKey(xml, "qqnickname");
        }
示例#5
0
        /// <summary>
        /// 构建好友信息
        /// </summary>
        /// <param name="data"></param>
        /// <param name="friendInfo"></param>
        private void CreateWeChatFriendShow(dynamic data, ref WeChatFriendShow friendInfo)
        {
            friendInfo.DataState    = DynamicConvert.ToEnumByValue <EnumDataState>(data.XLY_DataType, EnumDataState.Normal);
            friendInfo.WeChatId     = DynamicConvert.ToSafeString(data.UsrName);
            friendInfo.WeChatAccout = DynamicConvert.ToSafeString(data.Alias);
            friendInfo.Nick         = DynamicConvert.ToSafeString(data.NickName);
            friendInfo.Email        = DynamicConvert.ToSafeString(data.Email);
            friendInfo.Mobile       = DynamicConvert.ToSafeString(data.Mobile);
            friendInfo.Remark       = DynamicConvert.ToSafeString(data.ConRemark);
            friendInfo.Signature    = DynamicConvert.ToSafeString(data.Signature);

            if (DynamicConvert.ToSafeString(data.Sex) == "1")
            {
                friendInfo.Gender = EnumSex.Male;
            }
            else
            {
                friendInfo.Gender = EnumSex.Female;
            }

            friendInfo.FriendType = GetFriendType(friendInfo.WeChatId,
                                                  DynamicConvert.ToSafeString(data.certificationFlag), DynamicConvert.ToSafeString(data.imgStatus), DynamicConvert.ToSafeString(data.type));

            GetFriendInfo(DynamicConvert.ToSafeString(data.ConStrRes2), ref friendInfo);

            if (friendInfo.Remark.IsInvalid())
            {
                friendInfo.Remark = DynamicConvert.ToSafeString(data.RemarkName);
            }
            if (friendInfo.Address.IsInvalid())
            {
                friendInfo.Address = string.Format("{0}-{1}-{2}", DynamicConvert.ToSafeString(data.Country), DynamicConvert.ToSafeString(data.Province), DynamicConvert.ToSafeString(data.City));
            }

            friendInfo.HeadPng = GetHeadImage(friendInfo.WeChatId);
        }
示例#6
0
        /// <summary>
        /// 获取通讯录  包括好友和群聊
        /// </summary>
        private void LoadAllContacts()
        {
            LsAllFriends      = new List <WeChatFriendShow>();
            LsAllGroupFriends = new List <WeChatGroupShow>();

            #region 从MM.sqlite的Friend表获取好友信息

            var sql = @"SELECT
                            f.*, 
                            e.*
                        FROM
                            Friend f
                        LEFT JOIN Friend_Ext e ON f.UsrName = e.UsrName";
            MainContext.UsingSafeConnection(sql, r =>
            {
                dynamic data;
                WeChatFriendShow friendInfo;

                while (r.Read())
                {
                    data = r.ToDynamic();

                    if (DynamicConvert.ToSafeString(data.UsrName).Contains("@chatroom"))
                    {
                        LsAllGroupFriends.Add(CreateWeChatGroupShow(data));
                    }
                    else
                    {
                        friendInfo = new WeChatFriendShow();
                        CreateWeChatFriendShow(data, ref friendInfo);

                        LsAllFriends.Add(friendInfo);
                    }
                }
            });

            #endregion

            #region 从WCDB_Contact.sqlite的表Friend获取好友信息

            string WCDBPath = Path.Combine(MD5AccountPath, "DB", "WCDB_Contact.sqlite");
            if (FileHelper.IsValid(WCDBPath))
            {
                List <char> listC = new List <char>();
                for (int i = 0; i < 32; i++)
                {
                    listC.Add((char)i);
                }
                listC.Add((char)127);
                var arrC = listC.ToArray();//分割字符

                using (var WCDB = new SqliteContext(WCDBPath))
                {
                    WCDB.UsingSafeConnection("SELECT * FROM Friend WHERE imgStatus != 1", r =>
                    {//imgStatus为1的记录为系统功能
                        dynamic fd;
                        DynamicEx dy;
                        WeChatFriendShow friendInfo;

                        while (r.Read())
                        {
                            fd = r.ToDynamic();

                            dy = new DynamicEx();
                            dy.Set("UsrName", fd.userName);
                            dy.Set("type", fd.type);
                            dy.Set("certificationFlag", fd.certificationFlag);
                            dy.Set("imgStatus", fd.imgStatus);
                            dy.Set("XLY_DataType", "2");

                            byte[] dbContactRemark = fd.dbContactRemark;
                            if (dbContactRemark.IsValid())
                            {//获取昵称、备注、修改后微信号
                                GetdbContactRemark(dbContactRemark, ref dy);
                            }

                            byte[] dbContactProfile = fd.dbContactProfile;
                            if (dbContactProfile.IsValid())
                            {//获取位置和签名
                                GetdbContactProfile(dbContactProfile, ref dy);
                            }

                            byte[] dbContactChatRoom = fd.dbContactChatRoom;
                            if (dbContactChatRoom.IsValid())
                            {//获取群组成员列表
                                var dArr = System.Text.Encoding.UTF8.GetString(dbContactChatRoom).Split(arrC, StringSplitOptions.RemoveEmptyEntries).ToList();
                                if (dArr.IsValid())
                                {
                                    string ConChatRoomMem   = dArr.FirstOrDefault(d => d.Contains(";"));
                                    string ConChatRoomOwner = "";
                                    if (dArr.IndexOf(ConChatRoomMem) + 1 < dArr.Count)
                                    {//群组的创建者在群组成员后面
                                        ConChatRoomOwner = dArr[dArr.IndexOf(ConChatRoomMem) + 1];
                                    }

                                    if (0 == dArr.IndexOf(ConChatRoomMem))
                                    {//如果成员的索引是0,前面会多出一个随机的字符
                                        ConChatRoomMem = ConChatRoomMem.Substring(1);
                                    }

                                    dy.Set("ConChatRoomMem", ConChatRoomMem);
                                    dy.Set("ConChatRoomOwner", ConChatRoomOwner);
                                }
                            }

                            if (DynamicConvert.ToSafeString(fd.userName).Contains("@chatroom"))
                            {
                                LsAllGroupFriends.Add(CreateWeChatGroupShow(dy));
                            }
                            else
                            {
                                friendInfo = new WeChatFriendShow();
                                CreateWeChatFriendShow(dy, ref friendInfo);

                                LsAllFriends.Add(friendInfo);
                            }
                        }
                    });
                }
            }

            #endregion
        }