www.pudn.com > lphant-v1.00-src.zip > FormFriends.cs
#region Copyright (c)2003 Juanjo < http://lphant.sourceforge.net >
/*
* This file is part of eLePhant
* Copyright (C)2003 Juanjo < j_u_a_n_j_o@users.sourceforge.net / http://lphant.sourceforge.net >
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#endregion
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Text;
using System.Text.RegularExpressions;
using System.Net;
using eLePhant.eDonkey;
using eLePhant.Types;
namespace eLePhant.Client
{
///
/// Summary description for FormFriends.
///
public class FormFriends : System.Windows.Forms.Form
{
private System.Windows.Forms.Panel panel1;
private System.ComponentModel.IContainer components;
private CkernelGateway krnGateway;
private InterfaceClient m_LastClient;
private Crownwood.Magic.Controls.TabControl tabMessages;
private eLePhantListView listViewFriends;
private System.Windows.Forms.TextBox textBoxMessage;
private System.Windows.Forms.Button buttonSend;
private string m_LastMessage;
private System.Windows.Forms.Panel panel2;
private SFriend[] m_Friends;
private System.Windows.Forms.Button buttonAddFriend;
private System.Windows.Forms.Panel panelAddFriend;
private System.Windows.Forms.Label labelIP;
private System.Windows.Forms.Label labelPort;
private System.Windows.Forms.TextBox textBoxIP;
private System.Windows.Forms.TextBox textBoxPort;
private System.Windows.Forms.Button buttonAddFriendOk;
private System.Windows.Forms.Button buttonAddFriendCancel;
private System.Windows.Forms.Label labelName;
private System.Windows.Forms.TextBox textBoxName;
private System.Windows.Forms.Label labelUserHash;
private System.Windows.Forms.TextBox textBoxUserHash;
private System.Windows.Forms.Label labelOptional;
private System.Windows.Forms.ImageList imageListFriends;
private ContextMenu ContextMenuFriends;
public FormFriends()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
Initialize();
tabMessages.Appearance = Crownwood.Magic.Controls.TabControl.VisualAppearance.MultiBox;
tabMessages.PositionTop = true;
tabMessages.PositionTop = true;
tabMessages.ShowArrows = true;
tabMessages.ShowClose = true;
tabMessages.ShrinkPagesToFit = false;
tabMessages.ClosePressed += new EventHandler(OnClosePressed);
m_Globalize();
}
private void m_Globalize()
{
listViewFriends.Columns.Clear();
listViewFriends.Columns.Add(eLePhantForm.Globalization["LBL_FRIENDS"],134,false /*HorizontalAlignment.Left*/);
//labelFriends.Text = eLePhantForm.Globalization["LBL_FRIENDS"];
buttonSend.Text = eLePhantForm.Globalization["LBL_SEND"];
ContextMenuFriends.MenuItems[0].Text=eLePhantForm.Globalization["LBL_SENDMESSAGE"];
ContextMenuFriends.MenuItems[1].Text=eLePhantForm.Globalization["LBL_VIEWFILES"];
ContextMenuFriends.MenuItems[3].Text=eLePhantForm.Globalization["LBL_RENAMEFRIEND"];
ContextMenuFriends.MenuItems[4].Text=eLePhantForm.Globalization["LBL_DELETEFRIEND"];
ContextMenuFriends.MenuItems[6].Text=eLePhantForm.Globalization["LBL_FRIENDSLOT"];
buttonAddFriendCancel.Text = eLePhantForm.Globalization["LBL_CANCEL"];
labelIP.Text = eLePhantForm.Globalization["LBL_IP_OR_ID"];
labelName.Text = eLePhantForm.Globalization["LBL_NAME"];
labelPort.Text = eLePhantForm.Globalization["LBL_PORT"];
labelUserHash.Text = eLePhantForm.Globalization["LBL_USERHASH"];
buttonAddFriend.Text = eLePhantForm.Globalization["LBL_ADDFRIEND"];
labelOptional.Text = "(" + eLePhantForm.Globalization["LBL_OPTIONAL"] + ")";
}
public void Globalize()
{
m_Globalize();
}
private void Initialize()
{
ContextMenuFriends = new ContextMenu();
ContextMenuFriends.MenuItems.Add("Send message",new EventHandler(OnSendMessage));
ContextMenuFriends.MenuItems.Add("View files",new EventHandler(OnViewFiles));
ContextMenuFriends.MenuItems.Add("-");
ContextMenuFriends.MenuItems.Add("Rename friend",new EventHandler(OnRenameFriend));
ContextMenuFriends.MenuItems.Add("Delete friend",new EventHandler(OnDeleteFriend));
ContextMenuFriends.MenuItems.Add("-");
ContextMenuFriends.MenuItems.Add("Friend slot",new EventHandler(OnFriendSlot));
listViewFriends.ContextMenu = ContextMenuFriends;
listViewFriends.DoubleClick+=new EventHandler(OnSendMessage);
ContextMenuFriends.Popup+=new EventHandler(ContextMenuFriends_Popup);
listViewFriends.DefaultCustomDraw=true;
}
private void OnAddFriend(object sender, System.EventArgs e)
{
if (tabMessages.TabPages.Count <=0) return;
if (tabMessages.SelectedTab==null) return;
InterfaceClient source=(InterfaceClient)tabMessages.SelectedTab.Tag;
krnGateway.AddFriend(source);
}
private void OnSendMessage(object sender, System.EventArgs e)
{
if (listViewFriends.SelectedItems.Count<=0) return;
int index = listViewFriends.SelectedIndices[0];
InterfaceClient source = new InterfaceClient();
source.ID = m_Friends[index].ID;
source.Name = m_Friends[index].Name;
if (m_Friends[index].OurName!="") source.Name=m_Friends[index].OurName;
source.Port = m_Friends[index].Port;
source.ServerIP = m_Friends[index].ServerIP;
source.Software = m_Friends[index].Software;
source.Version = m_Friends[index].Version;
source.UserHash = m_Friends[index].UserHash;
krnGateway.StartChatSession(source);
}
private void OnViewFiles(object sender, System.EventArgs e)
{
if (listViewFriends.SelectedItems.Count<=0) return;
int index = listViewFriends.SelectedIndices[0];
InterfaceClient source = new InterfaceClient();
source.ID = m_Friends[index].ID;
source.Name = m_Friends[index].Name;
if (m_Friends[index].OurName!="") source.Name=m_Friends[index].OurName;
source.Port = m_Friends[index].Port;
source.ServerIP = m_Friends[index].ServerIP;
source.Software = m_Friends[index].Software;
source.Version = m_Friends[index].Version;
source.UserHash = m_Friends[index].UserHash;
krnGateway.RequestSharedList(source.ID,source.Port,source.ServerIP,source.UserHash);
}
private void OnDeleteFriend(object sender, System.EventArgs e)
{
if (listViewFriends.SelectedItems.Count<=0) return;
int index = listViewFriends.SelectedIndices[0];
krnGateway.DeleteFriend(m_Friends[index].UserHash, m_Friends[index].ID, m_Friends[index].Port);
}
private void OnFriendSlot(object sender, System.EventArgs e)
{
if (listViewFriends.SelectedItems.Count<=0) return;
int index = listViewFriends.SelectedIndices[0];
m_Friends[index].FriendSlot=!m_Friends[index].FriendSlot;
listViewFriends.SelectedItems[0].ImageIndex=m_Friends[index].FriendSlot ? 1 :0;
krnGateway.ChangeFriendSlotAssigned(m_Friends[index].ID,m_Friends[index].UserHash,m_Friends[index].Port,m_Friends[index].FriendSlot);
}
private void ContextMenuFriends_Popup(object sender, EventArgs e)
{
ContextMenuFriends.MenuItems[0].DefaultItem=true;
foreach (MenuItem item in ContextMenuFriends.MenuItems)
{
item.Enabled=(listViewFriends.SelectedItems.Count>0);
}
if (listViewFriends.SelectedItems.Count<=0) return;
int index = listViewFriends.SelectedIndices[0];
ContextMenuFriends.MenuItems[6].Checked=m_Friends[index].FriendSlot;
}
private void OnRenameFriend(object sender, System.EventArgs e)
{
if (listViewFriends.SelectedItems.Count<=0) return;
int index = listViewFriends.SelectedIndices[0];
buttonAddFriend_Click(sender, e);
if (m_Friends[index].OurName!="")
{
textBoxName.Text=m_Friends[index].OurName;
}
else
{
textBoxName.Text=m_Friends[index].Name;
}
buttonAddFriendOk.Text=eLePhantForm.Globalization["LBL_RENAME"];
textBoxUserHash.Enabled=false;
textBoxIP.Enabled=false;
textBoxPort.Enabled=false;
if (m_Friends[index].UserHash !=null)
{
textBoxUserHash.Text=Convert.ToBase64String(m_Friends[index].UserHash);
} else textBoxUserHash.Text="";
textBoxIP.Text=m_Friends[index].ID.ToString();
textBoxPort.Text=m_Friends[index].Port.ToString();
}
private void OnChangeFriend(object sender, System.EventArgs e)
{
if(panelAddFriend.Visible) OnRenameFriend(sender,e);
}
public void LoadFriendsList()
{
listViewFriends.Items.Clear();
m_Friends = krnGateway.GetFriends();
for (int n=0;n!=m_Friends.Length;n++)
{
string nameFriend = m_Friends[n].Name;
if (m_Friends[n].OurName!="") nameFriend=m_Friends[n].OurName;
listViewFriends.Items.Add(nameFriend,m_Friends[n].FriendSlot ? 1 :0);
}
}
public void Connect(CkernelGateway in_krnGateway)
{
krnGateway=in_krnGateway;
krnGateway.OnNewChatMessage+=new SourceEvent(m_OnNewChatMessage);
krnGateway.OnStartChatSession+=new ClientEvent(m_OnStartChatSession);
LoadFriendsList();
}
private void m_OnStartChatSession(InterfaceClient client)
{
m_LastClient=client;
m_LastMessage="";
MethodInvoker mi = new MethodInvoker(this.m_ProcessMessage);
this.BeginInvoke(mi);
}
private void m_OnNewChatMessage(InterfaceClient client, string message)
{
m_LastClient=client;
m_LastMessage=message;
MethodInvoker mi = new MethodInvoker(this.m_ProcessMessage);
this.BeginInvoke(mi);
}
private static string m_HashToString(byte[] Hash)
{
string strResult=BitConverter.ToString(Hash);
strResult=strResult.Replace("-", "");
return strResult;
}
private void m_ProcessMessage()
{
if ((m_LastClient.UserHash==null) && (m_LastClient.ID==0||m_LastClient.Port==0)) return;
Crownwood.Magic.Controls.TabPage messagePage=null;
foreach (Crownwood.Magic.Controls.TabPage page in tabMessages.TabPages)
{
InterfaceClient clicomp=(InterfaceClient)page.Tag;
if ((clicomp.UserHash!=null)&& (m_LastClient.UserHash!=null))
{
if (m_HashToString(m_LastClient.UserHash)==m_HashToString(clicomp.UserHash))
{
messagePage=page;
break;
}
}
else
{
if ((m_LastClient.ID==clicomp.ID)&&(m_LastClient.Port==clicomp.Port))
{
messagePage=page;
break;
}
}
}
if (messagePage==null)
{
RichTextBox textBoxMsg=new RichTextBox();
textBoxMsg.BackColor=Color.White;
textBoxMsg.Multiline=true;
textBoxMsg.ReadOnly=true;
textBoxMsg.BorderStyle=BorderStyle.FixedSingle;
textBoxMsg.ScrollBars=RichTextBoxScrollBars.Both;
textBoxMsg.Dock=DockStyle.Fill;
textBoxMsg.ForeColor=eLePhantForm.Skin.GetColor("TextBoxForeColor");
textBoxMsg.BackColor=eLePhantForm.Skin.GetColor("TextBoxBackColor");
textBoxMsg.DetectUrls=true;
textBoxMsg.LinkClicked+=new LinkClickedEventHandler(Link_Clicked);
//textBoxMsg.ContextMenu.MenuItems.Add("-");
textBoxMsg.ContextMenu = new ContextMenu();
textBoxMsg.ContextMenu.MenuItems.Add("Add to friends",new EventHandler(OnAddFriend));
messagePage = new Crownwood.Magic.Controls.TabPage(m_LastClient.Name, textBoxMsg, null);
messagePage.Tag=m_LastClient;
tabMessages.TabPages.Add(messagePage);
tabMessages.SelectedIndex=tabMessages.TabPages.Count-1;
if (m_LastMessage.Length>0) textBoxMsg.Text=DateTime.Now.ToString()+"<-"+m_LastMessage+"\r\n";
textBoxMessage.Focus();
}
else
{
RichTextBox textBox=(RichTextBox)messagePage.Control;
tabMessages.SelectedIndex=tabMessages.TabPages.IndexOf(messagePage);
if (m_LastMessage.Length>0)
{
textBox.Text+=DateTime.Now.ToString()+"<-"+m_LastMessage+"\r\n";
Win32.SendMessage(textBox.Handle,Win32.WM_VSCROLL, (IntPtr)Win32.SB_BOTTOM,(IntPtr)0);
}
}
}
protected void OnClosePressed(object sender,EventArgs e)
{
if (tabMessages.SelectedIndex<0) return;
tabMessages.TabPages.RemoveAt(tabMessages.SelectedIndex);
}
///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.panel1 = new System.Windows.Forms.Panel();
this.buttonAddFriend = new System.Windows.Forms.Button();
this.listViewFriends = new eLePhant.Client.eLePhantListView();
this.panelAddFriend = new System.Windows.Forms.Panel();
this.textBoxUserHash = new System.Windows.Forms.TextBox();
this.labelOptional = new System.Windows.Forms.Label();
this.textBoxName = new System.Windows.Forms.TextBox();
this.labelName = new System.Windows.Forms.Label();
this.buttonAddFriendCancel = new System.Windows.Forms.Button();
this.buttonAddFriendOk = new System.Windows.Forms.Button();
this.textBoxPort = new System.Windows.Forms.TextBox();
this.textBoxIP = new System.Windows.Forms.TextBox();
this.labelPort = new System.Windows.Forms.Label();
this.labelIP = new System.Windows.Forms.Label();
this.labelUserHash = new System.Windows.Forms.Label();
this.tabMessages = new Crownwood.Magic.Controls.TabControl();
this.textBoxMessage = new System.Windows.Forms.TextBox();
this.buttonSend = new System.Windows.Forms.Button();
this.panel2 = new System.Windows.Forms.Panel();
this.imageListFriends = new System.Windows.Forms.ImageList(this.components);
this.panel1.SuspendLayout();
this.panelAddFriend.SuspendLayout();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.panel1.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(235)), ((System.Byte)(241)), ((System.Byte)(250)));
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel1.Controls.Add(this.buttonAddFriend);
this.panel1.Controls.Add(this.listViewFriends);
this.panel1.Controls.Add(this.panelAddFriend);
this.panel1.Location = new System.Drawing.Point(8, 6);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(168, 367);
this.panel1.TabIndex = 0;
//
// buttonAddFriend
//
this.buttonAddFriend.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonAddFriend.Location = new System.Drawing.Point(6, 190);
this.buttonAddFriend.Name = "buttonAddFriend";
this.buttonAddFriend.Size = new System.Drawing.Size(154, 23);
this.buttonAddFriend.TabIndex = 2;
this.buttonAddFriend.Text = "Add Friend";
this.buttonAddFriend.Click += new System.EventHandler(this.buttonAddFriend_Click);
//
// listViewFriends
//
this.listViewFriends.AllowColumnReorder = true;
this.listViewFriends.AutoArrange = false;
this.listViewFriends.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.listViewFriends.DefaultCustomDraw = true;
this.listViewFriends.FullRowSelect = true;
this.listViewFriends.FullyCustomHeader = true;
this.listViewFriends.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.listViewFriends.HideSelection = false;
this.listViewFriends.IncreaseHeaderHeight = 0;
this.listViewFriends.Location = new System.Drawing.Point(6, 2);
this.listViewFriends.Name = "listViewFriends";
this.listViewFriends.Size = new System.Drawing.Size(154, 186);
this.listViewFriends.sortColumn = -1;
this.listViewFriends.TabIndex = 0;
this.listViewFriends.View = System.Windows.Forms.View.Details;
this.listViewFriends.SelectedIndexChanged += new System.EventHandler(this.OnChangeFriend);
//
// panelAddFriend
//
this.panelAddFriend.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(222)), ((System.Byte)(231)), ((System.Byte)(247)));
this.panelAddFriend.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panelAddFriend.Controls.Add(this.textBoxUserHash);
this.panelAddFriend.Controls.Add(this.labelOptional);
this.panelAddFriend.Controls.Add(this.textBoxName);
this.panelAddFriend.Controls.Add(this.labelName);
this.panelAddFriend.Controls.Add(this.buttonAddFriendCancel);
this.panelAddFriend.Controls.Add(this.buttonAddFriendOk);
this.panelAddFriend.Controls.Add(this.textBoxPort);
this.panelAddFriend.Controls.Add(this.textBoxIP);
this.panelAddFriend.Controls.Add(this.labelPort);
this.panelAddFriend.Controls.Add(this.labelIP);
this.panelAddFriend.Controls.Add(this.labelUserHash);
this.panelAddFriend.Location = new System.Drawing.Point(6, 190);
this.panelAddFriend.Name = "panelAddFriend";
this.panelAddFriend.Size = new System.Drawing.Size(154, 168);
this.panelAddFriend.TabIndex = 3;
this.panelAddFriend.Visible = false;
//
// textBoxUserHash
//
this.textBoxUserHash.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.textBoxUserHash.Location = new System.Drawing.Point(4, 88);
this.textBoxUserHash.Name = "textBoxUserHash";
this.textBoxUserHash.Size = new System.Drawing.Size(144, 20);
this.textBoxUserHash.TabIndex = 6;
this.textBoxUserHash.Text = "";
//
// labelOptional
//
this.labelOptional.BackColor = System.Drawing.Color.Transparent;
this.labelOptional.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.labelOptional.Location = new System.Drawing.Point(82, 74);
this.labelOptional.Name = "labelOptional";
this.labelOptional.Size = new System.Drawing.Size(62, 18);
this.labelOptional.TabIndex = 10;
this.labelOptional.Text = "(optional)";
this.labelOptional.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// textBoxName
//
this.textBoxName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.textBoxName.Location = new System.Drawing.Point(4, 18);
this.textBoxName.Name = "textBoxName";
this.textBoxName.Size = new System.Drawing.Size(144, 20);
this.textBoxName.TabIndex = 9;
this.textBoxName.Text = "My new friend";
//
// labelName
//
this.labelName.Location = new System.Drawing.Point(2, 4);
this.labelName.Name = "labelName";
this.labelName.Size = new System.Drawing.Size(100, 18);
this.labelName.TabIndex = 8;
this.labelName.Text = "Name";
//
// buttonAddFriendCancel
//
this.buttonAddFriendCancel.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonAddFriendCancel.Location = new System.Drawing.Point(4, 140);
this.buttonAddFriendCancel.Name = "buttonAddFriendCancel";
this.buttonAddFriendCancel.Size = new System.Drawing.Size(144, 23);
this.buttonAddFriendCancel.TabIndex = 7;
this.buttonAddFriendCancel.Text = "Cancel";
this.buttonAddFriendCancel.Click += new System.EventHandler(this.buttonAddFriendCancel_Click);
//
// buttonAddFriendOk
//
this.buttonAddFriendOk.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonAddFriendOk.Location = new System.Drawing.Point(4, 114);
this.buttonAddFriendOk.Name = "buttonAddFriendOk";
this.buttonAddFriendOk.Size = new System.Drawing.Size(144, 23);
this.buttonAddFriendOk.TabIndex = 6;
this.buttonAddFriendOk.Text = "Ok";
this.buttonAddFriendOk.Click += new System.EventHandler(this.buttonAddFriendOk_Click);
//
// textBoxPort
//
this.textBoxPort.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.textBoxPort.Location = new System.Drawing.Point(110, 52);
this.textBoxPort.Name = "textBoxPort";
this.textBoxPort.Size = new System.Drawing.Size(38, 20);
this.textBoxPort.TabIndex = 5;
this.textBoxPort.Text = "";
this.textBoxPort.TextChanged += new System.EventHandler(this.textBoxPort_TextChanged);
//
// textBoxIP
//
this.textBoxIP.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.textBoxIP.Location = new System.Drawing.Point(4, 52);
this.textBoxIP.Name = "textBoxIP";
this.textBoxIP.Size = new System.Drawing.Size(94, 20);
this.textBoxIP.TabIndex = 4;
this.textBoxIP.Text = "";
//
// labelPort
//
this.labelPort.Location = new System.Drawing.Point(102, 40);
this.labelPort.Name = "labelPort";
this.labelPort.Size = new System.Drawing.Size(52, 23);
this.labelPort.TabIndex = 3;
this.labelPort.Text = "Port";
//
// labelIP
//
this.labelIP.Location = new System.Drawing.Point(2, 40);
this.labelIP.Name = "labelIP";
this.labelIP.Size = new System.Drawing.Size(68, 23);
this.labelIP.TabIndex = 2;
this.labelIP.Text = "IP or ID";
//
// labelUserHash
//
this.labelUserHash.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(235)), ((System.Byte)(241)), ((System.Byte)(250)));
this.labelUserHash.Location = new System.Drawing.Point(2, 74);
this.labelUserHash.Name = "labelUserHash";
this.labelUserHash.Size = new System.Drawing.Size(116, 18);
this.labelUserHash.TabIndex = 0;
this.labelUserHash.Text = "User Hash";
//
// tabMessages
//
this.tabMessages.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tabMessages.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(235)), ((System.Byte)(241)), ((System.Byte)(250)));
this.tabMessages.HideTabsMode = Crownwood.Magic.Controls.TabControl.HideTabsModes.ShowAlways;
this.tabMessages.Location = new System.Drawing.Point(8, 4);
this.tabMessages.Name = "tabMessages";
this.tabMessages.PositionTop = true;
this.tabMessages.ShowArrows = true;
this.tabMessages.ShowClose = true;
this.tabMessages.ShrinkPagesToFit = false;
this.tabMessages.Size = new System.Drawing.Size(412, 327);
this.tabMessages.TabIndex = 3;
//
// textBoxMessage
//
this.textBoxMessage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBoxMessage.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.textBoxMessage.Location = new System.Drawing.Point(8, 337);
this.textBoxMessage.Name = "textBoxMessage";
this.textBoxMessage.Size = new System.Drawing.Size(328, 20);
this.textBoxMessage.TabIndex = 2;
this.textBoxMessage.Text = "";
this.textBoxMessage.KeyUp += new System.Windows.Forms.KeyEventHandler(this.textBoxMessage_KeyUp);
//
// buttonSend
//
this.buttonSend.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonSend.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonSend.Location = new System.Drawing.Point(340, 337);
this.buttonSend.Name = "buttonSend";
this.buttonSend.Size = new System.Drawing.Size(80, 21);
this.buttonSend.TabIndex = 14;
this.buttonSend.Text = "Send";
this.buttonSend.Click += new System.EventHandler(this.buttonSend_Click);
//
// panel2
//
this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel2.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(235)), ((System.Byte)(241)), ((System.Byte)(250)));
this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel2.Controls.Add(this.tabMessages);
this.panel2.Controls.Add(this.textBoxMessage);
this.panel2.Controls.Add(this.buttonSend);
this.panel2.Location = new System.Drawing.Point(180, 6);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(430, 367);
this.panel2.TabIndex = 15;
//
// imageListFriends
//
this.imageListFriends.ImageSize = new System.Drawing.Size(16, 16);
this.imageListFriends.TransparentColor = System.Drawing.Color.Transparent;
//
// FormFriends
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(222)), ((System.Byte)(231)), ((System.Byte)(247)));
this.ClientSize = new System.Drawing.Size(618, 380);
this.Controls.Add(this.panel1);
this.Controls.Add(this.panel2);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "FormFriends";
this.Text = "FormFriends";
this.panel1.ResumeLayout(false);
this.panelAddFriend.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private void buttonSend_Click(object sender, System.EventArgs e)
{
if ((tabMessages.SelectedIndex<0)||(textBoxMessage.Text.Length<=0)) return;
Crownwood.Magic.Controls.TabPage messagePage=tabMessages.TabPages[tabMessages.SelectedIndex];
InterfaceClient client=(InterfaceClient)messagePage.Tag;
RichTextBox textBox=(RichTextBox)messagePage.Control;
textBox.Text+=DateTime.Now.ToString()+"->"+textBoxMessage.Text+"\r\n";
Win32.SendMessage(textBox.Handle,Win32.WM_VSCROLL, (IntPtr)Win32.SB_BOTTOM,(IntPtr)0);
krnGateway.SendChatMessage(client.ID,client.Port,client.ServerIP,client.UserHash,textBoxMessage.Text);
textBoxMessage.Text="";
}
private void textBoxMessage_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyData==Keys.Enter) buttonSend_Click(this,null);
}
private void buttonAddFriend_Click(object sender, System.EventArgs e)
{
panelAddFriend.Visible=true;
buttonAddFriend.Visible=false;
buttonAddFriendOk.Text=eLePhantForm.Globalization["LBL_ADD"];
textBoxName.Text=eLePhantForm.Globalization["LBL_MYNEWFRIEND"];
textBoxIP.Text="";
textBoxPort.Text="";
textBoxUserHash.Text="";
textBoxUserHash.Enabled=true;
textBoxIP.Enabled=true;
textBoxPort.Enabled=true;
}
private void buttonAddFriendOk_Click(object sender, System.EventArgs e)
{
bool validate = false;
uint ip;
ip=0;
if ((textBoxIP.Text!="") && (textBoxName.Text!="") && (textBoxPort.Text!=""))
{
//validate ip or id
//if (Regex.IsMatch(textBoxIP.Text, @"^(((?<=255\\d{1,3})\.){3}(?<=255\\d{1,3}))$"))
if (Regex.IsMatch(textBoxIP.Text, @"^(((\d{1,3})\.){3}(\d{1,3}))$"))
{
try
{
IPAddress DirectionIP=IPAddress.Parse(textBoxIP.Text);
ip=BitConverter.ToUInt32(DirectionIP.GetAddressBytes(),0);
}
catch
{
ip=0;
}
}
if ((ip==0) && (Regex.IsMatch(textBoxIP.Text,@"^\d{9,12}$")))
{
ip=Convert.ToUInt32(textBoxIP.Text);
}
//validate port
if ((ip!=0) && (Regex.IsMatch(textBoxPort.Text,@"^\d{1,5}$")) && Convert.ToInt32(textBoxPort.Text)<=65535)
{
validate=true;
}
if ((!textBoxIP.Enabled)&&(!textBoxPort.Enabled)) validate=true;
}
if (validate)
{
SFriend friend= new SFriend();
friend.Name = textBoxName.Text;
friend.OurName = textBoxName.Text;
if (textBoxUserHash.Text!="")
{
byte[] x = new byte[textBoxUserHash.Text.Length];
x = Convert.FromBase64String( textBoxUserHash.Text );
friend.UserHash=x;
}
friend.ID = ip;
friend.FriendSlot=false;
friend.Port = Convert.ToUInt16(textBoxPort.Text);
panelAddFriend.Visible=false;
krnGateway.AddFriend(friend);
buttonAddFriend.Visible=true;
}
else
{
//send a message box
}
}
private void buttonAddFriendCancel_Click(object sender, System.EventArgs e)
{
panelAddFriend.Visible=false;
buttonAddFriend.Visible=true;
}
private void textBoxPort_TextChanged(object sender, System.EventArgs e)
{
//validar que textboxport es un número
}
public void ApplySkin()
{
BackColor=eLePhantForm.Skin.GetColor("defaultBackColor");
panel1.BackColor=eLePhantForm.Skin.GetColor("panelsBackColor");
panel2.BackColor=eLePhantForm.Skin.GetColor("panelsBackColor");
panelAddFriend.BackColor=eLePhantForm.Skin.GetColor("panelsBackColor");
tabMessages.BackColor=eLePhantForm.Skin.GetColor("panelsBackColor");
tabMessages.ForeColor=eLePhantForm.Skin.GetColor("labelsForeColor");
//labelFriends.ForeColor=eLePhantForm.Skin.GetColor("labelsForeColor");
//labelFriends.BackColor=eLePhantForm.Skin.GetColor("labelsBackColor");
labelIP.ForeColor=eLePhantForm.Skin.GetColor("labelsForeColor");
labelIP.BackColor=eLePhantForm.Skin.GetColor("labelsBackColor");
labelName.ForeColor=eLePhantForm.Skin.GetColor("labelsForeColor");
labelName.BackColor=eLePhantForm.Skin.GetColor("labelsBackColor");
labelOptional.ForeColor=eLePhantForm.Skin.GetColor("labelsForeColor");
labelOptional.BackColor=eLePhantForm.Skin.GetColor("labelsBackColor");
labelPort.ForeColor=eLePhantForm.Skin.GetColor("labelsForeColor");
labelPort.BackColor=eLePhantForm.Skin.GetColor("labelsBackColor");
labelUserHash.ForeColor=eLePhantForm.Skin.GetColor("labelsForeColor");
labelUserHash.BackColor=eLePhantForm.Skin.GetColor("labelsBackColor");
textBoxName.ForeColor=eLePhantForm.Skin.GetColor("TextBoxForeColor");
textBoxName.BackColor=eLePhantForm.Skin.GetColor("TextBoxBackColor");
textBoxIP.ForeColor=eLePhantForm.Skin.GetColor("TextBoxForeColor");
textBoxIP.BackColor=eLePhantForm.Skin.GetColor("TextBoxBackColor");
textBoxPort.ForeColor=eLePhantForm.Skin.GetColor("TextBoxForeColor");
textBoxPort.BackColor=eLePhantForm.Skin.GetColor("TextBoxBackColor");
textBoxUserHash.ForeColor=eLePhantForm.Skin.GetColor("TextBoxForeColor");
textBoxUserHash.BackColor=eLePhantForm.Skin.GetColor("TextBoxBackColor");
textBoxMessage.ForeColor=eLePhantForm.Skin.GetColor("TextBoxForeColor");
textBoxMessage.BackColor=eLePhantForm.Skin.GetColor("TextBoxBackColor");
buttonAddFriend.BackColor=eLePhantForm.Skin.GetColor("ButtonBackColor");
buttonAddFriend.ForeColor=eLePhantForm.Skin.GetColor("ButtonForeColor");
buttonAddFriendCancel.BackColor=eLePhantForm.Skin.GetColor("ButtonBackColor");
buttonAddFriendCancel.ForeColor=eLePhantForm.Skin.GetColor("ButtonForeColor");
buttonAddFriendOk.BackColor=eLePhantForm.Skin.GetColor("ButtonBackColor");
buttonAddFriendOk.ForeColor=eLePhantForm.Skin.GetColor("ButtonForeColor");
buttonSend.BackColor=eLePhantForm.Skin.GetColor("ButtonBackColor");
buttonSend.ForeColor=eLePhantForm.Skin.GetColor("ButtonForeColor");
listViewFriends.ForeColor=eLePhantForm.Skin.GetColor("listsForeColor");
listViewFriends.BackColor=eLePhantForm.Skin.GetColor("listsBackColor");
listViewFriends.headerForeColor=eLePhantForm.Skin.GetColor("listsHeaderForeColor");
listViewFriends.headerBackColor=eLePhantForm.Skin.GetColor("listsHeaderBackColor");
m_SetFlatScrollBar(eLePhantForm.Skin.GetColor("listsScrollBarBackColor").ToArgb());
imageListFriends.Images.Clear();
imageListFriends.Images.Add(eLePhantForm.Skin.GetBitmap("Friend"));
imageListFriends.Images.Add(eLePhantForm.Skin.GetBitmap("FriendSlot"));
listViewFriends.SmallImageList=imageListFriends;
this.Refresh();
}
private void m_SetFlatScrollBar(int color)
{
IntPtr stylePtr;
int style;
stylePtr=Win32.SendMessage(listViewFriends.Handle, 4151, IntPtr.Zero , IntPtr.Zero);
style=stylePtr.ToInt32();
style+=256;
stylePtr=(IntPtr)style;
Win32.SendMessage(listViewFriends.Handle, 4150, IntPtr.Zero , stylePtr);
Win32.FlatSB_SetScrollProp(listViewFriends.Handle,0x80,(IntPtr)color,true);
Win32.FlatSB_SetScrollProp(listViewFriends.Handle,0x40,(IntPtr)color,true);
}
private void Link_Clicked(object sender, System.Windows.Forms.LinkClickedEventArgs e)
{
System.Diagnostics.Process.Start(e.LinkText);
}
}
}