Ejemplo n.º 1
0
 public void DeleteCategory(QQCategory category)
 {
     _categoryMap.TryRemove(category.Index, out category);
 }
Ejemplo n.º 2
0
 public void AddCategory(QQCategory category)
 {
     _categoryMap[category.Index] = category;
 }
Ejemplo n.º 3
0
 public void AddCategory(QQCategory category)
 {
     _categoryMap.Add(category.Index, category, AddChoice.Update);
 }
Ejemplo n.º 4
0
 public void DeleteCategory(QQCategory category)
 {
     _categoryMap.Remove(category.Index);
 }
Ejemplo n.º 5
0
        public override void OnHttpStatusOK(QQHttpResponse response)
        {
            var json = JObject.Parse(response.GetResponseString());
            var str  = JsonConvert.SerializeObject(json);


            var retcode = json["retcode"].ToObject <int>();

            if (retcode == 0)
            {
                var store = Context.Store;
                // 处理好友列表
                var results = json["result"].ToObject <JObject>();
                // 获取JSON列表信息
                var jsonCategories = results["categories"].ToObject <JArray>();
                // 获取JSON好友基本信息列表 flag/uin/categories
                var jsonFriends = results["friends"].ToObject <JArray>();
                // face/flag/nick/uin
                var jsonInfo = results["info"].ToObject <JArray>();
                // uin/markname/
                var jsonMarknames = results["marknames"].ToObject <JArray>();
                // vip_level/u/is_vip
                var jsonVipinfo = results["vipinfo"].ToObject <JArray>();

                // 默认好友列表
                var c = new QQCategory()
                {
                    Index = 0, Name = "我的好友", Sort = 0
                };
                store.AddCategory(c);
                // 初始化好友列表
                foreach (var t in jsonCategories)
                {
                    var jsonCategory = t.ToObject <JObject>();
                    var qqc          = new QQCategory();
                    qqc.Index = jsonCategory["index"].ToObject <int>();
                    qqc.Name  = jsonCategory["name"].ToString();
                    qqc.Sort  = jsonCategory["sort"].ToObject <int>();
                    store.AddCategory(qqc);
                }
                // 处理好友基本信息列表 flag/uin/categories
                foreach (var t in jsonFriends)
                {
                    var buddy      = new QQBuddy();
                    var jsonFriend = t.ToObject <JObject>();
                    var uin        = jsonFriend["uin"].ToObject <long>();
                    buddy.Uin        = uin;
                    buddy.Status     = QQStatus.OFFLINE;
                    buddy.ClientType = QQClientType.Unknown;
                    // 添加到列表中
                    var category   = jsonFriend["categories"].ToObject <int>();
                    var qqCategory = store.GetCategoryByIndex(category);
                    buddy.Category = qqCategory;
                    qqCategory.BuddyList.Add(buddy);

                    // 记录引用
                    store.AddBuddy(buddy);
                }
                // face/flag/nick/uin
                foreach (var t in jsonInfo)
                {
                    var info  = t.ToObject <JObject>();
                    var uin   = info["uin"].ToObject <long>();
                    var buddy = store.GetBuddyByUin(uin);
                    buddy.Nickname = info["nick"].ToString();
                }
                // uin/markname
                foreach (var t in jsonMarknames)
                {
                    var jsonMarkname = t.ToObject <JObject>();
                    var uin          = jsonMarkname["uin"].ToObject <long>();
                    var buddy        = store.GetBuddyByUin(uin);
                    if (buddy != null)
                    {
                        buddy.MarkName = jsonMarkname["markname"].ToString();
                    }
                }
                // vip_level/u/is_vip
                foreach (var t in jsonVipinfo)
                {
                    var vipInfo = t.ToObject <JObject>();
                    var uin     = vipInfo["u"].ToObject <long>();
                    var buddy   = store.GetBuddyByUin(uin);
                    buddy.VipLevel = vipInfo["vip_level"].ToObject <int>();
                    var isVip = vipInfo["is_vip"].ToObject <int>();
                    buddy.IsVip = isVip != 0;
                }

                NotifyActionEvent(QQActionEventType.EvtOK, store.GetCategoryList());
            }
            else
            {
                // LOG.warn("unknown retcode: " + retcode);
                NotifyActionEvent(QQActionEventType.EvtError, new QQException(QQErrorCode.ErrorHttpStatus, "unknown retcode: " + retcode));
            }
        }