⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 personalgroupmanager.cs

📁 破解的飞信源代码
💻 CS
📖 第 1 页 / 共 5 页
字号:
            base.Owner.SendSipMessage(req);
            return true;
        }

        public bool AsyncSearchGroup(string category, string keyword, int page, AsyncBizOperation op)
        {
            SipRequest req = base.Owner.CreateSipRequest("S");
            req.Message.AddHeader(new SipcEventHeader("PGSearchGroup"));
            req.Context = op;
            StringWriter tw = new StringWriter();
            XmlHelper.CreateXmlWriterForSipRequest(tw, null, delegate (XmlWriter writer, object context) {
                writer.WriteStartElement("condition");
                if (category != string.Empty)
                {
                    writer.WriteAttributeString("category", category);
                }
                if (page > 0)
                {
                    writer.WriteAttributeString("page-no", page.ToString());
                }
                if (keyword != string.Empty)
                {
                    writer.WriteAttributeString("keywords", keyword);
                }
                writer.WriteEndElement();
                writer.WriteStartElement("result-fields");
                writer.WriteAttributeString("attributes", "all");
                writer.WriteEndElement();
            });
            req.Message.Body = tw.ToString();
            tw.Dispose();
            req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncSearchPersonalGroup);
            ErrorHelper.HandleSendRequestErrorAndTimeout(req);
            base.Owner.SendSipMessage(req);
            return true;
        }

        private void AsyncSendKeepAlive(object sender, EventArgs e)
        {
            lock (base.Owner.PersonalGroups.SyncRoot)
            {
                using (IEnumerator<PersonalGroup> enumerator = base.Owner.PersonalGroups.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        PersonalGroup group = enumerator.get_Current();
                        if ((group.GroupConversation != null) && (group.GroupConversation.Dialogs.Count != 0))
                        {
                            group.GroupConversation.Dialogs[0].AsyncKeepAlive();
                        }
                    }
                }
            }
        }

        public void AsyncSetAllGroupPresence(AsyncBizOperation op)
        {
            this.AsyncSetPresence(null, op);
        }

        public void AsyncSetMemberPermission(PersonalGroupMember member, AsyncBizOperation op)
        {
            SipRequest req = base.Owner.CreateSipRequest("S");
            req.Message.AddHeader(new SipcEventHeader("PGSetMemberPermission"));
            op.ContextForBiz = member;
            req.Context = op;
            StringWriter tw = new StringWriter();
            XmlHelper.CreateXmlWriterForSipRequest(tw, member, delegate (XmlWriter writer, object context) {
                PersonalGroupMember member = context as PersonalGroupMember;
                writer.WriteStartElement("group");
                writer.WriteAttributeString("uri", member.OwnerGroup.Uri.Raw);
                writer.WriteStartElement("member");
                writer.WriteAttributeString("uri", member.Uri.Raw);
                writer.WriteAttributeString("permission", ((int) member.GroupMemeberInfo.GroupUserIdentity.Value).ToString());
                writer.WriteEndElement();
            });
            req.Message.Body = tw.ToString();
            tw.Dispose();
            req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncSetMemberPermission);
            ErrorHelper.HandleSendRequestErrorAndTimeout(req);
            base.Owner.SendSipMessage(req);
        }

        public void AsyncSetPresence(PersonalGroup group, AsyncBizOperation op)
        {
            this.AsyncSetPresence(group, op, null);
        }

        private void AsyncSetPresence(PersonalGroup group, AsyncBizOperation op, string presence)
        {
            op.ContextForBiz = group;
            SipRequest req = base.Owner.CreateSipRequest("S");
            req.Message.AddHeader(new SipcEventHeader("PGSetPresence"));
            req.Context = op;
            StringWriter tw = new StringWriter();
            XmlHelper.CreateXmlWriterForSipRequest(tw, group, delegate (XmlWriter writer, object context) {
                PersonalGroup group1 = group;
                writer.WriteStartElement("groups");
                if (presence == null)
                {
                    presence = "400";
                    if (this.Owner.Presence.MainPresence == MainPresence.Invisible)
                    {
                        presence = "0";
                    }
                }
                if (group1 != null)
                {
                    writer.WriteStartElement("group");
                    writer.WriteAttributeString("uri", group1.Uri.Raw);
                    writer.WriteStartElement("presence");
                    writer.WriteStartElement("basic");
                    writer.WriteAttributeString("value", presence);
                    writer.WriteAttributeString("client-type", "PC");
                    writer.WriteEndElement();
                    writer.WriteEndElement();
                    writer.WriteEndElement();
                }
                else
                {
                    lock (this.Owner.PersonalGroups.SyncRoot)
                    {
                        using (IEnumerator<PersonalGroup> enumerator = this.Owner.PersonalGroups.GetEnumerator())
                        {
                            while (enumerator.MoveNext())
                            {
                                PersonalGroup group2 = enumerator.get_Current();
                                writer.WriteStartElement("group");
                                writer.WriteAttributeString("uri", group2.Uri.Raw);
                                writer.WriteStartElement("presence");
                                writer.WriteStartElement("basic");
                                writer.WriteAttributeString("value", presence);
                                writer.WriteAttributeString("client-type", "PC");
                                writer.WriteEndElement();
                                writer.WriteEndElement();
                                writer.WriteEndElement();
                            }
                        }
                    }
                }
                writer.WriteEndElement();
            });
            req.Message.Body = tw.ToString();
            tw.Dispose();
            req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncSetPresence);
            ErrorHelper.HandleSendRequestErrorAndTimeout(req);
            base.Owner.SendSipMessage(req);
        }

        internal void AsyncStartAllGroupConversation()
        {
            lock (base.Owner.PersonalGroups.SyncRoot)
            {
                using (IEnumerator<PersonalGroup> enumerator = base.Owner.PersonalGroups.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        PersonalGroup group = enumerator.get_Current();
                        this.AsyncStartGroupConversation(group);
                    }
                }
            }
        }

        public void AsyncStartGroupConversation(PersonalGroup group)
        {
            if (!group.UserInfo.IsRejctOrWaitingApprove && ((group.GroupConversation == null) || (group.GroupConversation.CurrentDialog == null)))
            {
                Imps.Client.Core.Conversation conv = new Imps.Client.Core.Conversation(base.Owner);
                Dialog item = new PersonalGroupDialog(conv, group);
                conv.Dialogs.Add(item);
                item.ContentType = MessageContentType.HtmlFragment;
                item.AsyncSendInvite();
                group.GroupConversation = conv;
            }
        }

        public void AsyncSubscribeAllGroup(AsyncBizOperation op, bool subPresense)
        {
            this.AsyncSubscribeGroup(null, op, subPresense);
        }

        public void AsyncSubscribeGroup(PersonalGroup group, AsyncBizOperation op, bool subPresense)
        {
            SipRequest req = base.Owner.CreateSipRequest("SUB", this._subscribeCallId, this._subscribeCesq++);
            req.Message.AddHeader(new SipcEventHeader("PGPresence"));
            op.ContextForBiz = group;
            req.Context = op;
            StringWriter tw = new StringWriter();
            XmlHelper.CreateXmlWriterForSipRequest(tw, group, delegate (XmlWriter writer, object context) {
                PersonalGroup group = context as PersonalGroup;
                List<PersonalGroup> list = new List<PersonalGroup>();
                if (group != null)
                {
                    list.Add(group);
                }
                else
                {
                    lock (this.Owner.PersonalGroups.SyncRoot)
                    {
                        using (IEnumerator<PersonalGroup> enumerator = this.Owner.PersonalGroups.GetEnumerator())
                        {
                            while (enumerator.MoveNext())
                            {
                                PersonalGroup group2 = enumerator.get_Current();
                                list.Add(group2);
                            }
                        }
                    }
                }
                writer.WriteStartElement("subscription");
                writer.WriteStartElement("groups");
                List<PersonalGroup>.Enumerator enumerator2 = list.GetEnumerator();
                try
                {
                    while (enumerator2.MoveNext())
                    {
                        PersonalGroup group3 = enumerator2.get_Current();
                        writer.WriteStartElement("group");
                        writer.WriteAttributeString("uri", group3.Uri.Raw);
                        writer.WriteEndElement();
                    }
                }
                finally
                {
                    enumerator2.Dispose();
                }
                writer.WriteEndElement();
                writer.WriteStartElement("presence");
                writer.WriteStartElement("basic");
                writer.WriteAttributeString("attributes", "all");
                writer.WriteEndElement();
                writer.WriteStartElement("member");
                if (subPresense)
                {
                    writer.WriteAttributeString("attributes", "all");
                }
                else
                {
                    writer.WriteAttributeString("attributes", "identity");
                }
                writer.WriteEndElement();
                writer.WriteStartElement("management");
                writer.WriteAttributeString("attributes", "all");
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.WriteEndElement();
            });
            req.Message.Body = tw.ToString();
            tw.Dispose();
            req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.finalResponseReceived_AsyncSubscribeGroup);
            ErrorHelper.HandleSendRequestErrorAndTimeout(req);
            base.Owner.SendSipMessage(req);
        }

        public bool AsyncUndoApply(PersonalGroup group, AsyncBizOperation op)
        {
            SipRequest req = base.Owner.CreateSipRequest("S");
            req.Message.AddHeader(new SipcEventHeader("PGCancelApplication"));
            op.ContextForBiz = group;
            req.Context = op;
            StringWriter tw = new StringWriter();
            XmlHelper.CreateXmlWriterForSipRequest(tw, group, delegate (XmlWriter writer, object context) {
                string raw = (context as PersonalGroup).Uri.Raw;
                writer.WriteStartElement("applications");
                writer.WriteStartElement("application");
                writer.WriteAttributeString("group-uri", raw);
                writer.WriteEndElement();
                writer.WriteEndElement();
            });
            req.Message.Body = tw.ToString();
            tw.Dispose();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -