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

📄 vcardmanager.cs

📁 语音视频功能 里面实现了基本的QQ与语音对话
💻 CS
字号:
using System;

using gowk.core;
using gowk.core.packets;
using VCard=gowk.core.packets.VCard;
namespace gowk.core.managers
{
	/// <summary>
	/// vCardManager 的摘要说明。
	/// </summary>
	public class vCardManager:ManagerBase
	{
		
		public event JabberEventHandler vCardReceived,UpDateVCardResult;
		private VCardCollection _vCards;
		public VCardCollection vCards
		{
			get{return this._vCards;}
			set{this._vCards=value;}
		}
		private VCard _myVCard;
			public VCard MyVCard
			{
				get{return this._myVCard;}
				set{this._myVCard=value;}
			}
		private VCard _n;
		public vCardManager(JabberClient jc):base(jc)
		{
			this.vCards=new VCardCollection();
		}
		protected internal override bool OnMessage(gowk.core.packets.Packet pack)
		{
			if(!(pack is VCardIQ))return false;
			VCardIQ iq=(VCardIQ)pack;
			
			if(iq.Error==null && iq.Type==PacketType.result)
			{
				if(Jid.Equals(iq.From,this.JabberClient.Jid.ToString(),false))
				{
					this.MyVCard=iq.vCard;
				}
				else
				{
					if(this._vCards.Contains(iq.From))
					{
						this._vCards[iq.From]=iq.vCard;
					}
					else
					{
						this._vCards.Add(iq.From,iq.vCard);
					}
				}
			}

			if(this.vCardReceived!=null)
			{
				this.Invoke(this.vCardReceived,new object[]{new JabberEventArgs(pack)});	
			}
			return true;
		}
		
		private void OnUpDateVCardResult(JabberEventArgs a)
		{
			if(a.ReplyPacket!=null && a.ReplyPacket.Type==PacketType.result)
			{
				this._myVCard=this._n;
			}
			if(this.UpDateVCardResult!=null)
				this.Invoke(this.UpDateVCardResult,new object[]{a});
		}
		public void UpdateMyVCard(VCard c)
		{
			this._n=c;
			VCardIQ viq=new VCardIQ();
			viq.ID=gowk.core.IDGenerator.NewID;
			viq.vCard=c;
			viq.Type=PacketType.set;
			this.Send(viq,new JabberCallBack(this.OnUpDateVCardResult),7000);
		}
		public void GetVCard(string to)
		{
			VCardIQ viq=new VCardIQ();
			viq.To=to;
			viq.Type=PacketType.get;
			viq.ID=gowk.core.IDGenerator.NewID;
			this.Send(viq);
		}
		
		public void GetVCard(string to,JabberCallBack cb,int timeout)
		{
			VCardIQ viq=new VCardIQ();
			viq.To=to;
			viq.Type=PacketType.get;
			viq.ID=gowk.core.IDGenerator.NewID;
			this.Send(viq,cb,timeout);
		}
		public class VCardCollection:System.Collections.Hashtable
		{
			public VCard this[string jid]
			{
				get{return (VCard)base[Jid.GetBareJid(jid)];}
				set{base[Jid.GetBareJid(jid)]=value;}
			}
			public bool Contains(string jid)
			{
				return base.Contains (Jid.GetBareJid(jid));
			}
			public void Add(string jid, VCard value)
			{
				base.Add (Jid.GetBareJid(jid), value);
			}
			public bool ContainsKey(string jid)
			{
				return base.ContainsKey (Jid.GetBareJid(jid));
			}
		}
	}
}

⌨️ 快捷键说明

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