📄 vcardmanager.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 + -