📄 mainform.cs
字号:
lvf.BackGroundImage.Image=skf.GetImage("/gowk_skin/images/list/head");
lvf.GScrollBar.IncreaseArrowImage.ActiveImage=skf.GetImage("/gowk_skin/images/scrollbar/scrollbar_downarrowa");
lvf.GScrollBar.IncreaseArrowImage.PressedImage=skf.GetImage("/gowk_skin/images/scrollbar/scrollbar_downarrowp");
lvf.GScrollBar.IncreaseArrowImage.NormalImage=skf.GetImage("/gowk_skin/images/scrollbar/scrollbar_downarrow");
lvf.GScrollBar.DecreaseArrowImage.ActiveImage=skf.GetImage("/gowk_skin/images/scrollbar/scrollbar_uparrowa");
lvf.GScrollBar.DecreaseArrowImage.PressedImage=skf.GetImage("/gowk_skin/images/scrollbar/scrollbar_uparrowp");
lvf.GScrollBar.DecreaseArrowImage.NormalImage=skf.GetImage("/gowk_skin/images/scrollbar/scrollbar_uparrow");
lvf.GScrollBar.ThumbImage.ActiveImage=skf.GetImage("/gowk_skin/images/scrollbar/scrollbar_thumba");
lvf.GScrollBar.ThumbImage.PressedImage=skf.GetImage("/gowk_skin/images/scrollbar/scrollbar_thumbp");
lvf.GScrollBar.ThumbImage.NormalImage=skf.GetImage("/gowk_skin/images/scrollbar/scrollbar_thumb");
lvf.View=View.SmallIcon;
// lvf.GImage.Image=gowk.common.SkinConfig.Instance.GetImage("/gowk_skin/images/list/head");
this.gListView1.Items.Add(lvf);
/* }
if(lvf.View!=View.SmallIcon)lvf.View=View.SmallIcon;*/
return lvf;
}
public void GetRoster()
{
rm.GetRoster();
}
private void rm_GetRosterResult(JabberEventArgs e)
{
if(e.ReplyPacket==null)
{
if(this.jc.State==gowk.core.State.Logined)
{
this.GetRoster();
}
return;
}//time out
IQ iq=e.ReplyPacket as IQ;
if(iq==null)
{
System.Diagnostics.Trace.WriteLine("er");
}
if(iq.Type==PacketType.error){return;}//error handing
if(iq.Type!=PacketType.result)return;
if(iq.Query==null)return;
this.niah.StopAnimate();
RosterQuery rq=(RosterQuery)iq.Query;
this.AddItems2List(rq.Items);
GListViewItem itm=this.gListView1.Items[0];
itm.Items[0].View=View.SmallIcon;
////////////////////
this.ClearLoginUI();
////////////////////
}
private void AddItems2List(Item[] items)
{
this.gListView1.Items.Clear();
GListViewItem lvfJabber=this.CreateFolder("Jabber");
GListViewItem gp_friend=new GListViewItem();
gp_friend.Text="我的好友";
gp_friend.GImage.Image=skf.GetImage("/gowk_skin/images/list/dropdown");
lvfJabber.Items.Add(gp_friend);
GListViewItem gp_pending=new GListViewItem();
gp_pending.Text="等待添加";
gp_pending.GImage.Image=skf.GetImage("/gowk_skin/images/list/dropdown");
lvfJabber.Items.Add(gp_pending);
Image tempface=this.skf.GetImage("/gowk_skin/images/face/tempface");
GListViewItem lvfMsn=this.CreateFolder("MSN");
if(items==null)return;
///////////////////////////////
this.gListView1.BeginUpdate();
////////////////////////////////
foreach(Item itm in items)
{
GListViewItem group;
if(itm.Ask!=null)
{
group=gp_pending;
}
else if(itm.Group==null || itm.Group.Trim()==String.Empty || itm.Group.Trim()==gp_friend.Text)
{
group=gp_friend;
}
else
{
group=this.GetORAddGListViewItem(lvfJabber,itm.Group);
}
GListViewItem item=new GListViewItem();
item.Tag=itm;
item.Text=itm.Name;
item.GImage.Image=tempface;
group.Items.Add(item);
}
this.SortListView();
this.gListView1.EndUpdate();
}
private void rm_RosterReceived(JabberEventArgs e)
{
IQ iq=(IQ)e.Packet;
if(iq.Query==null)return;
if(iq.Type==PacketType.error)
{
//error handing
return;
}
if(iq.Type!=PacketType.set)return;
if(iq.Query==null)return;
RosterQuery rq=(RosterQuery)iq.Query;
if(rq.Items==null)return;
this.gListView1.BeginUpdate();
GListViewItem lvfJabber=this.gListView1.Items["Jabber"];
GListViewItem gp_friend=lvfJabber.Items["我的好友"];
GListViewItem gp_pending=lvfJabber.Items["等待添加"];
Image tempface=this.skf.GetImage("/gowk_skin/images/face/tempface");
GListViewItem lvfMsn=this.gListView1.Items["MSN"];
foreach(Item itm in rq.Items)
{
GListViewItem group;
if(itm.Ask!=null)
{
group=gp_pending;
}
else if(itm.Group==null || itm.Group.Trim()==String.Empty || itm.Group.Trim()==gp_friend.Text)
{
group=gp_friend;
}
else
{
group=this.GetORAddGListViewItem(lvfJabber,itm.Group);
}
GListViewItem item=this.GetORAddGListViewItem(group,itm.Name);
item.Tag=itm;
item.Text=itm.Name;
item.GImage.Image=tempface;
}
this.SortListView();
this.gListView1.EndUpdate();
}
#endregion
#region login
bool autoLog=false;
private void RequireUILogin()
{
//
// loginPanel1
//
if(this.loginPanel1!=null)
{
this.loginPanel1.ShowLogin();
return;
}
this.loginPanel1 = new gowk.forms.LoginPanel();
this.loginPanel1.SuspendLayout();
// this.loginPanel1.Anchor = AnchorStyles.Left| AnchorStyles.Right|AnchorStyles.Top|AnchorStyles.Bottom;
// this.loginPanel1.Width=this.Width-15;
// this.loginPanel1.Location=new Point(5,50);
// this.loginPanel1.Height=this.Height-100;
this.loginPanel1.Location = new System.Drawing.Point(10,62);
this.loginPanel1.OK+=new EventHandler(loginPanel1_OK);
this.loginPanel1.CancelLogin+=new EventHandler(loginPanel1_CancelLogin);
this.loginPanel1.BackColor=Color.Transparent;
this.loginPanel1.Dock=DockStyle.Fill;
// this.loginPanel1.GBorderStyle=GBorderStyle.DashDotDot;
this.Controls.Add(this.loginPanel1);
this.Controls.SetChildIndex(this.loginPanel1,this.Controls.Count-1);
this.loginPanel1.ResumeLayout();
}
private void loginPanel1_OK(object sender, EventArgs e)
{
this.autoLog=true;
this.loginPanel1.ShowProgress();
this.Login(this.loginPanel1.User,this.loginPanel1.Pass);
}
private void ClearLoginUI()
{
if(this.Controls.Contains(this.loginPanel1))
{
Controls.Remove(this.loginPanel1);
this.loginPanel1.Dispose();
this.loginPanel1=null;
}
}
private void am_LoginResult(JabberEventArgs e)
{
if(this.jc.State==gowk.core.State.Logined)
{
if(this.gTabControl1==null || !this.Controls.Contains(this.gTabControl1))this.LoadTab();
this.GetRoster();
// this.ClearLoginUI();
}
else if(e.ReplyPacket==null)
{
this.Notify(null,"登陆超时");
if(this.autoLog)
this.Login();//try once more
}
else if(e.ReplyPacket.Type==PacketType.error)
{
// this.Notify(null,"登陆错误!");
MessageBox.Show("错误,请确认你的用户名和密码正确,\n或你已经在别的地方登陆了");
loginPanel1_CancelLogin(null,null);
}
else
{
}
}
public void Login(string uid,string pwd)
{
jc.Jid=new Jid(uid.Trim());
jc.Jid.Resouce="gowk";
jc.Password=pwd.Trim();
jc.Control=this;
this.Login();
}
public void Login()
{
/* 以下设置代理服务器,
jc.Proxy=new gowk.net.Proxy();
jc.Proxy.Port=555;
jc.Proxy.Host="192.168.0.1";*/
this.GoOnline();
}
public void GoOnline()
{
Image img=this.skf.GetImage("/gowk_skin/images/status/status1");
if(img!=null)this.niah.Animate(img);
System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(this.GoOnlineInternal));
}
public void Notify(Image img,string txt)
{
//System.Diagnostics.Trace.WriteLine(txt);
System.Windows.Forms.MessageBox.Show(txt);
}
private void GoOnlineInternal(object o)
{
// if(this.jc.Socket!=null)
// {
// this.jc.Disconnect();
// }
// if(this.jc.State!=gowk.core.State.Disconnected)
// {
// this.jc.Disconnect();
// }
try
{
this.jc.Connect();
}
catch(gowk.net.Sockets.ProxyException pe)
{
this.Notify(null,pe.Message);
return;
}
catch(System.Net.Sockets.SocketException se)
{
this.Notify(null,se.Message);
return;
}
if(this.jc.State!=gowk.core.State.Logining)return;
/* gowk.core.packets.IQ iq=new IQ();
iq.ID=gowk.core.IDGenerator.NewID;
gowk.core.packets.querys.AuthQuery aq=new gowk.core.packets.querys.AuthQuery();
aq.Username="gowhcy";
iq.Type=gowk.core.packets.PacketType.get;
iq.Query=aq;
this.am.Send(iq);*/
// System.Diagnostics.Debug.Assert(this.jc.State==gowk.core.State.Logining);
am.Login();
}
public void Logout()
{
this.autoLog=false;
this.niah.StopAnimate();
//if(this.jc!=null && this.jc.State!=gowk.core.State.Disconnected)
// this.jc.Disconnect();
if(this.jc.Socket!=null && this.jc.Socket.Connected)this.jc.Disconnect();
}
#endregion
private void notifyIcon1_MouseUp(object sender, MouseEventArgs e)
{
this.Activate();
if(e.Button==MouseButtons.Right)
{
this.gContextMenu1.Show(this,this.PointToClient(Control.MousePosition));
}
else
{
if(this.jc.State==gowk.core.State.Logined)
this._contextmenu_present.Show(this,this.PointToClient(Control.MousePosition));
}
}
private void gButton4_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
this.gContextMenu1.Show((Control)sender,new Point(e.X,e.Y));
}
private void jc_StateChange(object sender, EventArgs e)
{
switch(jc.State)
{
case gowk.core.State.Disconnected:
if(this.autoLog)this.Login();
break;
case gowk.core.State.Logined:
this.pm.Presence(null,0);
break;
case gowk.core.State.Logining:
break;
case gowk.core.State.StartStream:
break;
}
}
private void SortListView()
{
this.gListView1.BeginUpdate();
UserSorter us=new UserSorter(this.pm);
foreach(GListViewItem f in this.gListView1.Items)
{
foreach(GListViewItem g in f.Items)
{
g.Items.Sort(us);
}
}
this.gListView1.EndUpdate();
}
private void pm_StatusChanaged(JabberEventArgs e)
{
this.SortListView();
this.gListView1.Invalidate();
}
private void pm_Subcribe(JabberEventArgs e)
{
PresenceForm pf=new PresenceForm(this.jc,(Presence)e.Packet);
pf.Show();
}
private void pm_Subscribed(JabberEventArgs e)
{
}
private void gButton4_Click(object sender, System.EventArgs e)
{
}
private void vm_vCardReceived(JabberEventArgs e)
{
////////////////////////
/// to do update the list
////////////////////////
}
private void notifyIcon1_DoubleClick(object sender, System.EventArgs e)
{
this.WindowState=FormWindowState.Normal;
this.Visible=true;
this.Activate();
}
private void gButton5_Click(object sender, System.EventArgs e)
{
if(this.jc.State==gowk.core.State.Logined)
this._contextmenu_present.Show(this,this.PointToClient(Control.MousePosition));
}
private class UserSorter:System.Collections.IComparer
{
private PresenceManager pm=null;
public UserSorter(gowk.core.managers.PresenceManager pm)
{
this.pm=pm;
}
#region IComparer 成员
public int Compare(object x, object y)
{
try
{
GListViewItem ix=(GListViewItem)x;
Item itmx=ix.Tag as Item;
GListViewItem iy=(GListViewItem)y;
Item itmy=iy.Tag as Item;
bool xo=this.pm.OnlineUsers.Contains(itmx.Jid);
bool yo=this.pm.OnlineUsers.Contains(itmy.Jid);
if(xo==yo)
{
return System.String.Compare(itmx.Name,itmy.Name);
}
else if(xo)
return -1;
else
return 1;
}
catch(System.Exception ex)
{
gowk.utility.Diagnostics.Debug.Write(ex);
}
return 0;
}
#endregion
}
private void gTabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if(this.gTabControl1.SelectedIndex>0)
{
GTabPage gp=this.gTabControl1.GTabPages[this.gTabControl1.SelectedIndex];
if(gp.Controls.Count==0)
{
AxSHDocVw.AxWebBrowser aw=new AxSHDocVw.AxWebBrowser();
gp.Controls.Add(aw);
aw.Dock=DockStyle.Fill;
object flag=null,name=null,head=null,data=null;
object url=System.IO.Path.Combine(System.Environment.CurrentDirectory,"start.htm");
aw.Navigate2(ref url,ref flag,ref name,ref data,ref head);
}
}
}
private void loginPanel1_CancelLogin(object sender, EventArgs e)
{
this.Logout();
this.UnloadTab();
this.RequireUILogin();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -