v3.0 - System Update - Reworked storage and network systems.
|
@ -14,30 +14,31 @@ namespace MSGer.tk
|
|||
public AboutBox1()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Text = String.Format(Language.GetCuurentLanguage().Strings["about"], AssemblyTitle);
|
||||
this.Text = String.Format(Language.Translate("about"), AssemblyTitle);
|
||||
this.labelProductName.Text = AssemblyProduct;
|
||||
this.labelVersion.Text = String.Format(Language.GetCuurentLanguage().Strings["about_version"], AssemblyVersion);
|
||||
this.labelVersion.Text = String.Format(Language.Translate("about_version"), AssemblyVersion);
|
||||
this.labelCopyright.Text = AssemblyCopyright;
|
||||
|
||||
labelLicenseLink.Text = "https://www.gnu.org/copyleft/gpl.html"; //2014.04.18. - Frissitve: 2014.04.25.
|
||||
List<string> desc = new List<string>(); //2014.04.18.
|
||||
desc.Add(Language.GetCuurentLanguage().Strings["about_programmer"]); //2014.04.18.
|
||||
desc.Add(Language.Translate("about_programmer")); //2014.04.18.
|
||||
desc.Add("SzNP");
|
||||
desc.Add("http://sznp.tk");
|
||||
desc.Add("");
|
||||
desc.Add(Language.GetCuurentLanguage().Strings["about_specialthanks"]);
|
||||
desc.Add(Language.Translate("about_specialthanks"));
|
||||
desc.Add("Jonathan Kay");
|
||||
desc.Add("http://messengergeek.com");
|
||||
desc.Add(Language.GetCuurentLanguage().Strings["about_specthanks1"]);
|
||||
desc.Add(Language.Translate("about_specthanks1"));
|
||||
desc.Add("");
|
||||
desc.Add(Language.Translate("about_specthanks2"));
|
||||
desc.Add("");
|
||||
desc.Add(Language.GetCuurentLanguage().Strings["about_specthanks2"]);
|
||||
desc.Add("Allen Anderson");
|
||||
desc.Add("http://www.codeproject.com/Articles/4012/C-List-View-v");
|
||||
desc.Add(Language.GetCuurentLanguage().Strings["about_specthanks3"]);
|
||||
desc.Add(Language.Translate("about_specthanks3"));
|
||||
desc.Add("");
|
||||
desc.Add("Khendys Gordon");
|
||||
desc.Add("http://www.codeproject.com/Articles/4544/Insert-Plain-Text-and-Images-into-RichTextBox-at-R");
|
||||
desc.Add(Language.GetCuurentLanguage().Strings["about_specthanks4"]);
|
||||
desc.Add(Language.Translate("about_specthanks4"));
|
||||
textBoxDescription.Lines = desc.ToArray();
|
||||
}
|
||||
|
||||
|
|
|
@ -16,42 +16,74 @@ namespace MSGer.tk
|
|||
public AddPartner()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Text = Language.GetCuurentLanguage().Strings["addcontact"];
|
||||
label1.Text = Language.GetCuurentLanguage().Strings["addcontact"];
|
||||
label2.Text = Language.GetCuurentLanguage().Strings["addcontact_nameemail"];
|
||||
searchbtn.Text = Language.GetCuurentLanguage().Strings["addcontact_search"];
|
||||
glacialList1.Columns[0].Text = Language.GetCuurentLanguage().Strings["reg_username"];
|
||||
gobtn.Text = Language.GetCuurentLanguage().Strings["addcontact_add"];
|
||||
this.Text = Language.Translate("addcontact");
|
||||
label1.Text = Language.Translate("addcontact");
|
||||
label2.Text = Language.Translate("addcontact_nameemail");
|
||||
searchbtn.Text = Language.Translate("addcontact_search");
|
||||
glacialList1.Columns[0].Text = Language.Translate("reg_username");
|
||||
gobtn.Text = Language.Translate("addcontact_add");
|
||||
}
|
||||
|
||||
string[] username;
|
||||
/*string[] username;
|
||||
int[] uid;
|
||||
string[] message;
|
||||
int[] online;
|
||||
string[] shownname;
|
||||
string[] email;
|
||||
string[] email;*/
|
||||
List<UserInfo> FoundUsers = new List<UserInfo>();
|
||||
|
||||
private void searchbtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
glacialList1.Items.Clear();
|
||||
string[] people = Networking.SendRequest("findpeople", nameText.Text, 0, true).Split('ͦ'); //2014.04.18. 0:07 - Még nem készítettem el
|
||||
for (int x = 0, y = 0; x + 5 < people.Length; x += 6, y++)
|
||||
//string[] people = Networking.SendRequest("findpeople", nameText.Text, 0, true).Split('ͦ'); //2014.04.18. 0:07 - Még nem készítettem el
|
||||
/*byte[][] tmpret = Networking.SendUpdate(Networking.UpdateType.FindPeople, Encoding.Unicode.GetBytes(nameText.Text), false);
|
||||
if (tmpret == null)
|
||||
{
|
||||
username = new string[people.Length / 6];
|
||||
glacialList1.Items.Add(Language.Translate("networking_alone"));
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < tmpret.Length; i++)
|
||||
{
|
||||
byte[] tmpb = tmpret[i];
|
||||
string tmpstr = Encoding.Unicode.GetString(tmpb, 1, tmpb.Length - 1); //0. byte==UserID
|
||||
string[] people = tmpstr.Split('ͦ');
|
||||
for (int x = 0, y = 0; x + 5 < people.Length; x += 6, y++)
|
||||
{*/
|
||||
/*username = new string[people.Length / 6];
|
||||
uid = new int[people.Length / 6];
|
||||
message = new string[people.Length / 6];
|
||||
online = new int[people.Length / 6];
|
||||
shownname = new string[people.Length / 6];
|
||||
email = new string[people.Length / 6];
|
||||
email = new string[people.Length / 6];*/
|
||||
|
||||
username[y] = people[x];
|
||||
uid[y] = Int32.Parse(people[x + 1]);
|
||||
message[y] = people[x + 2];
|
||||
online[y] = Int32.Parse(people[x + 3]);
|
||||
shownname[y] = people[x + 4];
|
||||
email[y] = people[x + 5];
|
||||
//username[y] = people[x];
|
||||
/*var tmp = new UserInfo();
|
||||
tmp.UserName = people[x];
|
||||
tmp.UserID = Int32.Parse(people[x + 1]);
|
||||
tmp.Message = people[x + 2];
|
||||
tmp.State = Int32.Parse(people[x + 3]);
|
||||
tmp.Name = people[x + 4];
|
||||
tmp.Email = people[x + 5];
|
||||
|
||||
glacialList1.Items.Add(username[y]);
|
||||
if (!FoundUsers.Contains(tmp)) //2014.08.19.
|
||||
{
|
||||
|
||||
//glacialList1.Items.Add(username[y]);
|
||||
glacialList1.Items.Add(tmp.UserName);
|
||||
|
||||
FoundUsers.Add(tmp); //2014.08.16.
|
||||
}
|
||||
}
|
||||
}*/
|
||||
//2014.09.09. - Miután először az egészet megcsináltam, néhány nappal később az egészet elölről kezdem
|
||||
foreach (var tmp in UserInfo.KnownUsers)
|
||||
{
|
||||
if ((tmp.UserName.Contains(nameText.Text) || tmp.Name.Contains(nameText.Text) || tmp.UserID.ToString() == nameText.Text) && !FoundUsers.Contains(tmp))
|
||||
{
|
||||
glacialList1.Items.Add(tmp.UserName);
|
||||
|
||||
FoundUsers.Add(tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -61,15 +93,20 @@ namespace MSGer.tk
|
|||
if (item >= glacialList1.Items.Count)
|
||||
return;
|
||||
//2014.04.18. - Partnerinformáció mutatása
|
||||
//2014.08.16. - Megvalósítás
|
||||
//(new PartnerInformation(FoundUsers[item].Name, FoundUsers[item].State, FoundUsers[item].Message, FoundUsers[item].UserName, FoundUsers[item].UserID, FoundUsers[item].Email)).ShowDialog(); //2014.08.16.
|
||||
if (FoundUsers.Count < item)
|
||||
(new PartnerInformation(FoundUsers[item])).ShowDialog();
|
||||
}
|
||||
|
||||
private void gobtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (glacialList1.SelectedItems.Count == 0)
|
||||
if (glacialList1.SelectedItems.Count == 0 || FoundUsers.Count == 0)
|
||||
return;
|
||||
string username = ((GLItem)glacialList1.SelectedItems[0]).Text;
|
||||
string response = Networking.SendRequest("adduser", username, 0, true);
|
||||
if (Networking.SendRequest("adduser", username, 0, true) == "Success")
|
||||
//if (Networking.SendRequest("adduser", username, 0, true) == "Success")
|
||||
if (response == "Success")
|
||||
MessageBox.Show("Felhasználó felvéve az ismerőseid közé.");
|
||||
else
|
||||
MessageBox.Show("Nem sikerült felvenni a felhasználót az ismerőseid közé.\nLehet, hogy már felvetted, vagy valami hiba történt.\n(" + response + ")");
|
||||
|
|
19
MSGer.tk/ChatForm.Designer.cs
generated
|
@ -28,7 +28,7 @@
|
|||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.messageTextBox = new MSGer.tk.ExExRichTextBox();
|
||||
this.messageTextBox = new Khendys.Controls.ExRichTextBox();
|
||||
this.recentMsgTextBox = new Khendys.Controls.ExRichTextBox();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
|
@ -36,6 +36,7 @@
|
|||
this.partnerMsg = new Khendys.Controls.ExRichTextBox();
|
||||
this.partnerName = new Khendys.Controls.ExRichTextBox();
|
||||
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
|
||||
this.showicons = new System.Windows.Forms.CheckBox();
|
||||
this.panel2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
|
@ -150,12 +151,24 @@
|
|||
//
|
||||
this.openFileDialog1.FileName = "openFileDialog1";
|
||||
//
|
||||
// showicons
|
||||
//
|
||||
this.showicons.AutoSize = true;
|
||||
this.showicons.Location = new System.Drawing.Point(150, 392);
|
||||
this.showicons.Name = "showicons";
|
||||
this.showicons.Size = new System.Drawing.Size(76, 17);
|
||||
this.showicons.TabIndex = 5;
|
||||
this.showicons.Text = "showicons";
|
||||
this.showicons.UseVisualStyleBackColor = true;
|
||||
this.showicons.CheckedChanged += new System.EventHandler(this.showicons_CheckedChanged);
|
||||
//
|
||||
// ChatForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200)))));
|
||||
this.ClientSize = new System.Drawing.Size(564, 422);
|
||||
this.Controls.Add(this.showicons);
|
||||
this.Controls.Add(this.panel2);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.Controls.Add(this.recentMsgTextBox);
|
||||
|
@ -166,12 +179,13 @@
|
|||
this.Load += new System.EventHandler(this.ChatForm_Load);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private ExExRichTextBox messageTextBox;
|
||||
private Khendys.Controls.ExRichTextBox messageTextBox;
|
||||
private Khendys.Controls.ExRichTextBox recentMsgTextBox;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
|
@ -179,5 +193,6 @@
|
|||
public Khendys.Controls.ExRichTextBox partnerMsg;
|
||||
public Khendys.Controls.ExRichTextBox statusLabel;
|
||||
private System.Windows.Forms.OpenFileDialog openFileDialog1;
|
||||
private System.Windows.Forms.CheckBox showicons;
|
||||
}
|
||||
}
|
|
@ -25,50 +25,58 @@ namespace MSGer.tk
|
|||
{
|
||||
public static List<ChatForm> ChatWindows = new List<ChatForm>();
|
||||
public List<int> ChatPartners = new List<int>();
|
||||
public List<string> PendingMessages = new List<string>();
|
||||
public Thread UpdateT;
|
||||
//public List<string> PendingMessages = new List<string>();
|
||||
//public Thread UpdateT;
|
||||
public ChatForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
//Amint létrehozom, ez a kód lefut - Nem számit, hogy megjelenik-e
|
||||
|
||||
this.Text = Language.Translate("chat_title");
|
||||
showicons.Text = Language.Translate("chat_showicons");
|
||||
}
|
||||
|
||||
private void ChatForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (ChatPartners.Count == 0)
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["error"] + ": " + Language.GetCuurentLanguage().Strings["chat_nowindow"]);
|
||||
MessageBox.Show(Language.Translate("error") + ": " + Language.Translate("chat_nowindow"));
|
||||
if (ChatPartners.Count == 1)
|
||||
{
|
||||
partnerName.Text = UserInfo.Partners[ChatPartners[0]].Name;
|
||||
partnerName.Text = UserInfo.Select(ChatPartners[0]).Name;
|
||||
TextFormat.Parse(partnerName);
|
||||
partnerMsg.Text = UserInfo.Partners[ChatPartners[0]].Message;
|
||||
partnerMsg.Text = UserInfo.Select(ChatPartners[0]).Message;
|
||||
TextFormat.Parse(partnerMsg);
|
||||
switch(UserInfo.Partners[ChatPartners[0]].State)
|
||||
switch (UserInfo.Select(ChatPartners[0]).State)
|
||||
{
|
||||
case "0":
|
||||
case 0:
|
||||
{
|
||||
statusLabel.Text = Language.GetCuurentLanguage().Strings["offline"];
|
||||
statusLabel.Text = Language.Translate("offline");
|
||||
break;
|
||||
}
|
||||
case "1":
|
||||
case 1:
|
||||
{
|
||||
statusLabel.Text = Language.GetCuurentLanguage().Strings["menu_file_status_online"];
|
||||
statusLabel.Text = Language.Translate("menu_file_status_online");
|
||||
break;
|
||||
}
|
||||
case "2":
|
||||
case 2:
|
||||
{
|
||||
statusLabel.Text = Language.GetCuurentLanguage().Strings["menu_file_status_busy"];
|
||||
statusLabel.Text = Language.Translate("menu_file_status_busy");
|
||||
break;
|
||||
}
|
||||
case "3":
|
||||
case 3:
|
||||
{
|
||||
statusLabel.Text = Language.GetCuurentLanguage().Strings["menu_file_status_away"];
|
||||
statusLabel.Text = Language.Translate("menu_file_status_away");
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
statusLabel.Text = Language.Translate("networking_alone");
|
||||
break;
|
||||
}
|
||||
}
|
||||
UpdateT = new Thread(new ThreadStart(UpdateMessages));
|
||||
UpdateT.Name = "Message Update Thread (" + partnerName.Text + ")";
|
||||
UpdateT.Start();
|
||||
//UpdateT = new Thread(new ThreadStart(UpdateMessages));
|
||||
//UpdateT.Name = "Message Update Thread (" + partnerName.Text + ")";
|
||||
//UpdateT.Start();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -91,7 +99,9 @@ namespace MSGer.tk
|
|||
* Csinálja úgy, mint a képeknél, hogy a legutóbbi üzenetlekérés dátumához igazodjon, és csak a legújabb üzeneteket
|
||||
* töltse le
|
||||
*/
|
||||
PendingMessages.Add(messageTextBox.Text);
|
||||
//PendingMessages.Add(messageTextBox.Text);
|
||||
if (!Networking.SendChatMessage(this, messageTextBox.Text))
|
||||
MessageBox.Show(Language.Translate("networking_alone"));
|
||||
messageTextBox.Focus();
|
||||
messageTextBox.Text = "";
|
||||
messageTextBox.ReadOnly = false;
|
||||
|
@ -103,9 +113,9 @@ namespace MSGer.tk
|
|||
{
|
||||
if (messageTextBox.Text == "\n")
|
||||
messageTextBox.Text = "";
|
||||
#if emoticons
|
||||
#if emoticons
|
||||
TextFormat.Parse((ExExRichTextBox)sender);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,8 +123,8 @@ namespace MSGer.tk
|
|||
{
|
||||
Process.Start(e.LinkText);
|
||||
}
|
||||
public void UpdateMessages()
|
||||
{
|
||||
//public void UpdateMessages()
|
||||
//{
|
||||
/*
|
||||
* 2014.03.21.
|
||||
* updatemessages: küldje el, hogy mikor kapott utoljára üzenetet ÉS az új üzeneteket,
|
||||
|
@ -126,71 +136,35 @@ namespace MSGer.tk
|
|||
* ----
|
||||
* Az új üzeneteket egy listában tárolja, majd amikor továbbitja őket, törölje a listából fokozatosan
|
||||
* (ahogy összeállitja a karakterláncot, mindig törölje azt az üzenetet a listából
|
||||
*
|
||||
* 2014.08.08.
|
||||
* Az UpdateListAndChat thread kezelje ezt is,
|
||||
* az updatemessages packet-et csak akkor küldje el, ha új üzenet érkezik,
|
||||
* a régebbi üzeneteket (getrecentmessages) tárolja el lokálisan, mint minden egyéb adatát
|
||||
*/
|
||||
while (ChatWindows.Count != 0 && !this.IsDisposed && MainForm.MainThread.IsAlive)
|
||||
{
|
||||
try
|
||||
{
|
||||
string tmpstring = "";
|
||||
for (int i = 0; i < ChatPartners.Count; i++)
|
||||
{
|
||||
tmpstring += UserInfo.Partners[ChatPartners[i]].UserID;
|
||||
if (i + 1 < ChatPartners.Count)
|
||||
tmpstring += ","; //Több emberrel is beszélhet
|
||||
}
|
||||
tmpstring += "ͦ"; //2014.03.27.
|
||||
if (PendingMessages.Count == 0)
|
||||
{
|
||||
tmpstring += "NoMSG" + "ͦ";
|
||||
}
|
||||
while (PendingMessages.Count > 0)
|
||||
{
|
||||
tmpstring += PendingMessages[0] + "ͦ"; //Nem az i-nél tevékenykedik, hanem a 0-nál
|
||||
PendingMessages.RemoveAt(0);
|
||||
}
|
||||
if (tmpstring.Length > 0)
|
||||
{ //Küldje el a lekérést
|
||||
string[] response = Networking.SendRequest("updatemessages", tmpstring, 0, true).Split('ͦ');
|
||||
if (response == null || response.Length == 0 || response[0] == "Fail")
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["msgupdate_error"]);
|
||||
//0 - Frissitési idő; 1 - Üzenetküldő; 2 - Üzenet; 3 - Üzenetküldés időpontja
|
||||
if (response[0] != "NoChange")
|
||||
{
|
||||
for (int x = 0; x + 2 < response.Length; x += 3)
|
||||
{
|
||||
string[] cmd = response[x + 1].Split(' ');
|
||||
switch (cmd[0])
|
||||
{
|
||||
case "//sendfile":
|
||||
string[] ipportname = cmd[1].Split(':');
|
||||
IPAddress ipAddr = IPAddress.Parse(ipportname[0]);
|
||||
var permission = new SocketPermission(NetworkAccess.Accept, TransportType.Tcp, "", SocketPermission.AllPorts);
|
||||
var ipEndPoint = new IPEndPoint(ipAddr, Int32.Parse(ipportname[1]));
|
||||
var receiverSock = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
|
||||
receiverSock.Connect(ipEndPoint);
|
||||
var ns = new NetworkStream(receiverSock);
|
||||
var fs = new FileStream(ipportname[2], FileMode.Create);
|
||||
break;
|
||||
}
|
||||
TMessage = "\n" + ((Int32.Parse(response[x]) == CurrentUser.UserID) ? CurrentUser.Name : UserInfo.Partners[Int32.Parse(response[x])].Name) + " " + Language.GetCuurentLanguage().Strings["said"] + " (" + Program.UnixTimeToDateTime(response[x + 2]).ToString("yyyy.MM.dd. HH:mm:ss") + "):\n" + response[x + 1]+"\n";
|
||||
this.Invoke(new LoginForm.MyDelegate(SetThreadValues));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(InvalidOperationException)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//while (ChatWindows.Count != 0 && !this.IsDisposed && MainForm.MainThread.IsAlive)
|
||||
//{
|
||||
//}
|
||||
//}
|
||||
|
||||
private void ChatForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
ChatWindows.Remove(this);
|
||||
}
|
||||
|
||||
public static string TMessage;
|
||||
public static ChatForm GetChatFormByUsers(IEnumerable<int> users) //2014.08.08. - IEnumerable: 2014.08.16.
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < ChatWindows.Count; i++)
|
||||
{
|
||||
if (ChatWindows[i].ChatPartners.HasSameElementsAs(users))
|
||||
break;
|
||||
}
|
||||
return (i != ChatWindows.Count) ? ChatWindows[i] : null; //== --> !=: 2014.09.22.
|
||||
}
|
||||
|
||||
//public static string TMessage;
|
||||
public string TMessage;
|
||||
public int SetThreadValues()
|
||||
{
|
||||
recentMsgTextBox.AppendText(TMessage);
|
||||
|
@ -209,7 +183,8 @@ namespace MSGer.tk
|
|||
Stream st = new FileStream(openFileDialog1.FileName, FileMode.Open);
|
||||
try
|
||||
{
|
||||
if (CurrentUser.CopyToMemoryOnFileSend)
|
||||
//if (CurrentUser.CopyToMemoryOnFileSend)
|
||||
if (new FileInfo(openFileDialog1.FileName).Length > Int64.Parse(Storage.Settings["filelen"]))
|
||||
{
|
||||
List<byte> buf = new List<byte>();
|
||||
int b;
|
||||
|
@ -222,7 +197,7 @@ namespace MSGer.tk
|
|||
st = new MemoryStream(buf.ToArray(), false);
|
||||
}
|
||||
}
|
||||
catch(OutOfMemoryException)
|
||||
catch (OutOfMemoryException)
|
||||
{ //A MemoryStream-et nem hozza létre, ezzel elméletileg memóriát felszabadítva
|
||||
st.Seek(0, SeekOrigin.Begin);
|
||||
}
|
||||
|
@ -237,13 +212,14 @@ namespace MSGer.tk
|
|||
break;
|
||||
}
|
||||
}
|
||||
string ret = Networking.SendRequest("setip", spform.Partners[0] + 'ͦ' + localIP.ToString() + ":" + Settings.Default.port + ":" + openFileDialog1.FileName, 0, true);
|
||||
var ipAddr = IPAddress.Parse(ret);
|
||||
//string ret = Networking.SendRequest("setip", spform.Partners[0] + 'ͦ' + localIP.ToString() + ":" + Settings.Default.port + ":" + openFileDialog1.FileName, 0, true);
|
||||
//var ipAddr = IPAddress.Parse(ret);
|
||||
IPAddress ipAddr = null; //Használja fel a partner ismert IP-címét
|
||||
Socket sListener;
|
||||
SocketPermission permission;
|
||||
permission = new SocketPermission(NetworkAccess.Accept, TransportType.Tcp, "", SocketPermission.AllPorts);
|
||||
sListener = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
|
||||
var ipEndPoint = new IPEndPoint(ipAddr, Settings.Default.port);
|
||||
var ipEndPoint = new IPEndPoint(ipAddr, Int32.Parse(Storage.Settings["port"]));
|
||||
sListener.Listen(1);
|
||||
ST = st; //Átadja az adatfolyamot a nyilvánosabb változónak
|
||||
AsyncCallback aCallback = new AsyncCallback(SendFile_AcceptCallback);
|
||||
|
@ -262,5 +238,21 @@ namespace MSGer.tk
|
|||
{
|
||||
Console.WriteLine("SendFile: " + bytesRead + " / " + totalBytesToRead);
|
||||
}
|
||||
|
||||
public string CurrentMessage = "";
|
||||
private void showicons_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (showicons.Checked)
|
||||
{
|
||||
CurrentMessage = messageTextBox.Text;
|
||||
messageTextBox.Enabled = false;
|
||||
TextFormat.Parse(messageTextBox);
|
||||
}
|
||||
else
|
||||
{
|
||||
messageTextBox.Text = CurrentMessage;
|
||||
messageTextBox.Enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
@ -14,20 +15,264 @@ namespace MSGer.tk
|
|||
* Információátrendezés: Property-k használata; Minden felhasználóhoz egy-egy User class
|
||||
* Ez a class használható lenne az aktuális felhsaználó információinak tárolására
|
||||
*/
|
||||
public static int UserID = 0;
|
||||
//public static int UserID = 0;
|
||||
public static int UserID
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_userid"))
|
||||
Storage.LoggedInSettings.Add("currentuser_userid", "0");
|
||||
return Int32.Parse(Storage.LoggedInSettings["currentuser_userid"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_userid"))
|
||||
Storage.LoggedInSettings.Add("currentuser_userid", "0");
|
||||
Storage.LoggedInSettings["currentuser_userid"] = value.ToString();
|
||||
}
|
||||
}
|
||||
//public static int[] PartnerIDs = new int[1024];
|
||||
public static string Name = "";
|
||||
//public static string Name = "";
|
||||
public static string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_name"))
|
||||
Storage.LoggedInSettings.Add("currentuser_name", "");
|
||||
return Storage.LoggedInSettings["currentuser_name"];
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_name"))
|
||||
Storage.LoggedInSettings.Add("currentuser_name", "");
|
||||
var tmp = UserInfo.Select(CurrentUser.UserID);
|
||||
if (tmp != null)
|
||||
tmp.Name = value;
|
||||
Storage.LoggedInSettings["currentuser_name"] = value;
|
||||
SendUpdate();
|
||||
}
|
||||
}
|
||||
//public static Language Language = Language.English; //2014.04.19.
|
||||
public static Language Language;
|
||||
public static string Message = "";
|
||||
public static string State = "";
|
||||
public static string UserName = "";
|
||||
public static string Email = "";
|
||||
/// <summary>
|
||||
/// Átmásolja-e a memóriába az egész fájlt a küldés előtt.
|
||||
/// Nagy méretű fájloknál nem ajánlott, különben igen a fájl esetleges elérhetetlensége miatt.
|
||||
/// 2014.06.15.
|
||||
/// </summary>
|
||||
public static bool CopyToMemoryOnFileSend = true;
|
||||
//public static Language Language;
|
||||
public static Language Language
|
||||
{
|
||||
get
|
||||
{
|
||||
return Language.FromString(Storage.Settings["lang"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
Storage.Settings["lang"] = value.ToString();
|
||||
}
|
||||
}
|
||||
//public static string Message = "";
|
||||
public static string Message
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_message"))
|
||||
Storage.LoggedInSettings.Add("currentuser_message", "");
|
||||
return Storage.LoggedInSettings["currentuser_message"];
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_message"))
|
||||
Storage.LoggedInSettings.Add("currentuser_message", "");
|
||||
var tmp = UserInfo.Select(CurrentUser.UserID);
|
||||
if (tmp != null)
|
||||
tmp.Message = value;
|
||||
Storage.LoggedInSettings["currentuser_message"] = value;
|
||||
SendUpdate();
|
||||
}
|
||||
}
|
||||
//public static string State = "";
|
||||
public static int State
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_state"))
|
||||
Storage.LoggedInSettings.Add("currentuser_state", "0");
|
||||
return Int32.Parse(Storage.LoggedInSettings["currentuser_state"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_state"))
|
||||
Storage.LoggedInSettings.Add("currentuser_state", "0");
|
||||
var tmp = UserInfo.Select(CurrentUser.UserID);
|
||||
if (tmp != null)
|
||||
tmp.State = value;
|
||||
Storage.LoggedInSettings["currentuser_state"] = value.ToString();
|
||||
SendUpdate();
|
||||
}
|
||||
}
|
||||
//public static string UserName = "";
|
||||
public static string UserName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_username"))
|
||||
Storage.LoggedInSettings.Add("currentuser_username", "");
|
||||
return Storage.LoggedInSettings["currentuser_username"];
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_username"))
|
||||
Storage.LoggedInSettings.Add("currentuser_username", "");
|
||||
var tmp = UserInfo.Select(CurrentUser.UserID);
|
||||
if (tmp != null)
|
||||
tmp.UserName = value;
|
||||
Storage.LoggedInSettings["currentuser_username"] = value;
|
||||
SendUpdate();
|
||||
}
|
||||
}
|
||||
//public static string Email = "";
|
||||
public static string Email
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_email"))
|
||||
Storage.LoggedInSettings.Add("currentuser_email", "");
|
||||
return Storage.LoggedInSettings["currentuser_email"];
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_email"))
|
||||
Storage.LoggedInSettings.Add("currentuser_email", "");
|
||||
var tmp = UserInfo.Select(CurrentUser.UserID);
|
||||
if (tmp != null)
|
||||
tmp.Email = value;
|
||||
Storage.LoggedInSettings["currentuser_email"] = value;
|
||||
SendUpdate();
|
||||
}
|
||||
}
|
||||
//private static IPAddress[] ips = new IPAddress[2];
|
||||
/*public static IPAddress[] IPs //2014.08.29.
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.Settings.ContainsKey("myip"))
|
||||
Storage.LoggedInSettings.Add("myip", "127.0.0.1");
|
||||
string[] strs = Storage.LoggedInSettings["myip"].Split(';');
|
||||
*var ips = new IPAddress[strs.Length];
|
||||
for (int i = 0; i < ips.Length; i++)
|
||||
{
|
||||
ips[i] = IPAddress.Parse(strs[i]);
|
||||
}*
|
||||
IPAddress[] ips = strs.Select(entry => IPAddress.Parse(entry)).ToArray();
|
||||
return ips;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.Settings.ContainsKey("myip"))
|
||||
Storage.Settings.Add("myip", "");
|
||||
string[] strs = value.Select(entry => entry.ToString()).ToArray();
|
||||
Storage.Settings["myip"] = String.Join(";", strs);
|
||||
}
|
||||
}*/
|
||||
//public static IPAddress[] IPs { get; set; }
|
||||
//private static List<IPAddress> ips = new List<IPAddress>();
|
||||
/*public static List<IPAddress> IPs
|
||||
{
|
||||
get
|
||||
{
|
||||
return ips;
|
||||
}
|
||||
set
|
||||
{
|
||||
ips = value;
|
||||
}
|
||||
}*/
|
||||
public static IPAddress IP;
|
||||
/*public static IPAddress IP
|
||||
{
|
||||
get
|
||||
{
|
||||
return IPAddress.Parse(Storage.Settings["myip"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
Storage.Settings["myip"] = value.ToString();
|
||||
}
|
||||
}*/
|
||||
public static string[] Keys
|
||||
{ //2014.09.08-09.
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_keys"))
|
||||
Storage.LoggedInSettings.Add("currentuser_keys", "");
|
||||
var tmp = new string[100]; //Mindig 100 elemű tömb legyen
|
||||
Storage.LoggedInSettings["currentuser_keys"].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).CopyTo(tmp, 0);
|
||||
return tmp;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_keys"))
|
||||
Storage.LoggedInSettings.Add("currentuser_keys", "");
|
||||
string x = "";
|
||||
//Storage.LoggedInSettings["currentuser_keys"] = value.Select(new Func<string, string>(delegate { var x = ""; foreach (var item in value) { x += item + ";"; } return x; }));
|
||||
foreach (var item in value)
|
||||
{
|
||||
x += item;
|
||||
x += ";";
|
||||
}
|
||||
Storage.LoggedInSettings["currentuser_keys"] = x;
|
||||
}
|
||||
}
|
||||
public static int KeyIndex
|
||||
{ //2014.09.09.
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_keyindex"))
|
||||
Storage.LoggedInSettings.Add("currentuser_keyindex", "0");
|
||||
return Int32.Parse(Storage.LoggedInSettings["currentuser_keyindex"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_keyindex"))
|
||||
Storage.LoggedInSettings.Add("currentuser_keyindex", "0");
|
||||
Storage.LoggedInSettings["currentuser_keys"] = value.ToString();
|
||||
}
|
||||
}
|
||||
public static bool SendChanges = false;
|
||||
///// <summary>
|
||||
///// Átmásolja-e a memóriába az egész fájlt a küldés előtt.
|
||||
///// Nagy méretű fájloknál nem ajánlott, különben igen a fájl esetleges elérhetetlensége miatt.
|
||||
///// 2014.06.15.
|
||||
///// </summary>
|
||||
//public static bool CopyToMemoryOnFileSend = true; - Automatikusan érzékelje (2014.08.18.)
|
||||
|
||||
public static void SendUpdate()
|
||||
{ //2014.08.30.
|
||||
/*
|
||||
* CurrentUser.SendUpdate()
|
||||
* Bármi változás történik, elküldi mindenkinek
|
||||
*/
|
||||
if (!SendChanges)
|
||||
return;
|
||||
string retstr = "";
|
||||
retstr += UserID + "_name=" + Name + "\n";
|
||||
retstr += UserID + "_message=" + Message + "\n";
|
||||
retstr += UserID + "_state=" + State + "\n";
|
||||
retstr += UserID + "_username=" + UserName + "\n";
|
||||
retstr += UserID + "_email=" + Email + "\n";
|
||||
retstr += UserID + "_ispartner=" + false + "\n"; //Ellenőrizze le, amikor megkapja
|
||||
retstr += UserID + "_lastupdate=" + Program.DateTimeToUnixTime(DateTime.Now);
|
||||
while (true)
|
||||
{
|
||||
byte[][] resp = Networking.SendUpdate(Networking.UpdateType.ListUpdate, Encoding.Unicode.GetBytes(retstr), false);
|
||||
bool fine = false;
|
||||
if (resp == null || resp.Length == 0)
|
||||
break;
|
||||
//foreach (var item in resp) //Ha sehonnan nem kapott választ (egy perc után), újrapróbálkozik
|
||||
foreach (var item in resp) //Ha sehonnan nem kapott választ (egy perc után), újrapróbálkozik
|
||||
{
|
||||
//if (item[4] == 0x01) //Az első 4 byte a UserID
|
||||
if (Networking.ParsePacket(item).Data[0] == 0x01) //2014.09.19.
|
||||
fine = true;
|
||||
}
|
||||
if (fine)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
|
@ -13,10 +15,50 @@ namespace MSGer.tk
|
|||
|
||||
public Dictionary<string, string> Strings = new Dictionary<string, string>();
|
||||
|
||||
public Language(string lang)
|
||||
private Language(string lang)
|
||||
{
|
||||
UsedLangs.Add(lang, this);
|
||||
}
|
||||
public Language() //2014.09.06.
|
||||
{
|
||||
if (!Directory.Exists("languages"))
|
||||
Directory.CreateDirectory("languages");
|
||||
string[] files = Directory.GetFiles("languages");
|
||||
if (files.Length == 0)
|
||||
{
|
||||
MessageBox.Show("Error: No languages found.");
|
||||
return; //Még nem jelentkezett be, ezért ki fog lépni
|
||||
}
|
||||
for (int x = 0; x < files.Length; x++)
|
||||
{
|
||||
string[] lines = File.ReadAllLines(files[x]);
|
||||
var dict = lines.Select(l => l.Split('=')).ToDictionary(a => a[0], a => a[1]);
|
||||
//(new Language(files[x].Split('\\')[files[x].Split('\\').Length - 1].Split('.')[0])).Strings = dict; //Eltárol egy új nyelvet, majd a szövegeket hozzátársítja
|
||||
new Language(new FileInfo(files[x]).Name.Split('.')[0]).Strings = dict; //(FileInfo: 2014.09.01.) - Eltárol egy új nyelvet, majd a szövegeket hozzátársítja
|
||||
}
|
||||
|
||||
if (Language.FromString(Storage.Settings["lang"]) == null)
|
||||
{
|
||||
MessageBox.Show("Error: Could not find language: " + Storage.Settings["lang"]);
|
||||
return;
|
||||
}
|
||||
CurrentUser.Language = Language.FromString(Storage.Settings["lang"]);
|
||||
if (CurrentUser.Language == null)
|
||||
{
|
||||
//MessageBox.Show("Error: The specified language is not found.\nTo quickly solve this, copy the preffered language file in languages folder to the same place with the name of \"" + Storage.Settings["lang"] + "\"\nYou can then change the language in your preferences later.");
|
||||
//return;
|
||||
if (Language.UsedLangs.ContainsKey("en"))
|
||||
{
|
||||
MessageBox.Show("Error: The specified language (" + Storage.Settings["lang"] + ") is not found.\nThe program will use english that you can change later.");
|
||||
Storage.Settings["lang"] = "en";
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Error: The specified language (" + Storage.Settings["lang"] + "), nor enlish are found.\nPlease download translations.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return UsedLangs.FirstOrDefault(x => x.Value == this).Key;
|
||||
|
@ -24,18 +66,30 @@ namespace MSGer.tk
|
|||
public static Language FromString(string value)
|
||||
{
|
||||
Language tmp = null;
|
||||
try
|
||||
/*try
|
||||
{
|
||||
tmp = UsedLangs[value];
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}*/
|
||||
UsedLangs.TryGetValue(value, out tmp);
|
||||
return tmp;
|
||||
}
|
||||
public static Language GetCuurentLanguage()
|
||||
{
|
||||
return Language.FromString(Settings.Default.lang);
|
||||
return Language.FromString(Storage.Settings["lang"]);
|
||||
}
|
||||
public static string Translate(string id)
|
||||
{ //2014.08.19.
|
||||
Language lang = GetCuurentLanguage();
|
||||
if (lang.Strings.ContainsKey(id))
|
||||
return lang.Strings[id];
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Translation string not found: " + id + "\nIn file: " + lang + ".txt");
|
||||
return "Str not found";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
17
MSGer.tk/LoginForm.Designer.cs
generated
|
@ -37,6 +37,7 @@
|
|||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.textBox3 = new System.Windows.Forms.TextBox();
|
||||
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
|
||||
this.linkLabel2 = new System.Windows.Forms.LinkLabel();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
|
@ -134,6 +135,20 @@
|
|||
this.linkLabel1.VisitedLinkColor = System.Drawing.Color.Blue;
|
||||
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.RegistrateLink);
|
||||
//
|
||||
// linkLabel2
|
||||
//
|
||||
this.linkLabel2.AutoSize = true;
|
||||
this.linkLabel2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.linkLabel2.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||
this.linkLabel2.Location = new System.Drawing.Point(23, 175);
|
||||
this.linkLabel2.Name = "linkLabel2";
|
||||
this.linkLabel2.Size = new System.Drawing.Size(66, 13);
|
||||
this.linkLabel2.TabIndex = 8;
|
||||
this.linkLabel2.TabStop = true;
|
||||
this.linkLabel2.Text = "forgotpass";
|
||||
this.linkLabel2.VisitedLinkColor = System.Drawing.Color.Blue;
|
||||
this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel2_LinkClicked);
|
||||
//
|
||||
// LoginForm
|
||||
//
|
||||
this.AcceptButton = this.button1;
|
||||
|
@ -141,6 +156,7 @@
|
|||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200)))));
|
||||
this.ClientSize = new System.Drawing.Size(394, 471);
|
||||
this.Controls.Add(this.linkLabel2);
|
||||
this.Controls.Add(this.linkLabel1);
|
||||
this.Controls.Add(this.textBox3);
|
||||
this.Controls.Add(this.button1);
|
||||
|
@ -172,5 +188,6 @@
|
|||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.TextBox textBox3;
|
||||
private System.Windows.Forms.LinkLabel linkLabel1;
|
||||
private System.Windows.Forms.LinkLabel linkLabel2;
|
||||
}
|
||||
}
|
|
@ -15,11 +15,11 @@ namespace MSGer.tk
|
|||
public LoginForm_RegistrationForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
label1.Text = Language.GetCuurentLanguage().Strings["registration"];
|
||||
label2.Text = Language.GetCuurentLanguage().Strings["reg_code"];
|
||||
label3.Text = Language.GetCuurentLanguage().Strings["reg_username"];
|
||||
label4.Text = Language.GetCuurentLanguage().Strings["login_password"];
|
||||
registerButton.Text = Language.GetCuurentLanguage().Strings["registration"];
|
||||
label1.Text = Language.Translate("registration");
|
||||
label2.Text = Language.Translate("reg_code");
|
||||
label3.Text = Language.Translate("reg_username");
|
||||
label4.Text = Language.Translate("login_password");
|
||||
registerButton.Text = Language.Translate("registration");
|
||||
}
|
||||
|
||||
private void registerButton_Click(object sender, EventArgs e)
|
||||
|
@ -27,39 +27,44 @@ namespace MSGer.tk
|
|||
registerButton.Enabled = false;
|
||||
if (codeText.TextLength == 0 || userText.TextLength == 0 || passText.TextLength == 0 || emailText.TextLength == 0)
|
||||
{
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["reg_emptyfield"], Language.GetCuurentLanguage().Strings["error"]);
|
||||
MessageBox.Show(Language.Translate("reg_emptyfield"), Language.Translate("error"));
|
||||
registerButton.Enabled = true;
|
||||
return;
|
||||
}
|
||||
string response = Networking.SendRequest("register", codeText.Text + "ͦ" + userText.Text + "ͦ" + LoginForm.CalculateMD5Hash(passText.Text) + "ͦ" + emailText.Text, 2, false);
|
||||
if(response=="code")
|
||||
{
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["reg_codeerr"], Language.GetCuurentLanguage().Strings["error"]);
|
||||
MessageBox.Show(Language.Translate("reg_codeerr"), Language.Translate("error"));
|
||||
registerButton.Enabled = true;
|
||||
}
|
||||
else if (response == "uname")
|
||||
{
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["reg_nameerr"], Language.GetCuurentLanguage().Strings["error"]);
|
||||
MessageBox.Show(Language.Translate("reg_nameerr"), Language.Translate("error"));
|
||||
registerButton.Enabled = true;
|
||||
}
|
||||
else if (response == "ulen")
|
||||
{
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["reg_namelen"], Language.GetCuurentLanguage().Strings["error"]);
|
||||
MessageBox.Show(Language.Translate("reg_namelen"), Language.Translate("error"));
|
||||
registerButton.Enabled = true;
|
||||
}
|
||||
else if (response == "plen")
|
||||
{
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["reg_passlen"], Language.GetCuurentLanguage().Strings["error"]);
|
||||
MessageBox.Show(Language.Translate("reg_passlen"), Language.Translate("error"));
|
||||
registerButton.Enabled = true;
|
||||
}
|
||||
else if (response == "email")
|
||||
{
|
||||
MessageBox.Show(Language.Translate("reg_email"), Language.Translate("error"));
|
||||
registerButton.Enabled = true;
|
||||
}
|
||||
else if (response == "Success!")
|
||||
{
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["reg_success"]);
|
||||
MessageBox.Show(Language.Translate("reg_success"));
|
||||
Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["unknown_error"] + ":\n" + response);
|
||||
MessageBox.Show(Language.Translate("unknown_error") + ":\n" + response);
|
||||
registerButton.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
using System;
|
||||
//#define LOCAL_SERVER
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
|
@ -17,40 +19,43 @@ namespace MSGer.tk
|
|||
{
|
||||
public partial class LoginForm : Form
|
||||
{
|
||||
public static string UserCode="";
|
||||
public static string UserCode = "";
|
||||
public static Thread LThread;
|
||||
private void LoginForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
List<string> tmp; //E-mail - 2014.04.02.
|
||||
if (Settings.Default.email.Length != 0)
|
||||
tmp = Settings.Default.email.Split(',').ToList<string>();
|
||||
if (Storage.Settings["email"].Length != 0)
|
||||
tmp = Storage.Settings["email"].Split(',').ToList<string>();
|
||||
else tmp = new List<string>();
|
||||
//textBox1.Text = tmp[0];
|
||||
//textBox1.Text = tmp[tmp.Count - 1]; //2014.07.08.
|
||||
tmp.Add("");
|
||||
textBox1.Text = tmp[Settings.Default.lastusedemail]; //2014.07.08.
|
||||
textBox1.Text = tmp[Int32.Parse(Storage.Settings["lastusedemail"])]; //2014.07.08.
|
||||
textBox1.AutoCompleteCustomSource.AddRange(tmp.ToArray());
|
||||
this.Activate();
|
||||
this.Activate();
|
||||
}
|
||||
public LoginForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Text = Language.GetCuurentLanguage().Strings["login"];
|
||||
label1.Text = Language.GetCuurentLanguage().Strings["login"];
|
||||
label3.Text = Language.GetCuurentLanguage().Strings["login_password"];
|
||||
button1.Text = Language.GetCuurentLanguage().Strings["login"];
|
||||
linkLabel1.Text = Language.GetCuurentLanguage().Strings["registration"];
|
||||
this.Text = Language.Translate("login");
|
||||
label1.Text = Language.Translate("login");
|
||||
label3.Text = Language.Translate("login_password");
|
||||
button1.Text = Language.Translate("login");
|
||||
linkLabel1.Text = Language.Translate("registration");
|
||||
linkLabel2.Text = Language.Translate("forgotpassword");
|
||||
textBox3.Text = "";
|
||||
List<string> lines = new List<string>();
|
||||
lines.Add(Language.GetCuurentLanguage().Strings["login_desc1"]);
|
||||
lines.Add(Language.Translate("login_desc1"));
|
||||
lines.Add("");
|
||||
lines.Add(Language.GetCuurentLanguage().Strings["login_desc2"]);
|
||||
lines.Add(Language.Translate("login_desc2"));
|
||||
textBox3.Lines = lines.ToArray();
|
||||
}
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (button1.Text == Language.GetCuurentLanguage().Strings["button_cancel"])
|
||||
if (button1.Text == Language.Translate("button_cancel"))
|
||||
{
|
||||
ResetAfterLogin();
|
||||
ResetAfterLogin(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -81,10 +86,6 @@ namespace MSGer.tk
|
|||
// Spin for a while waiting for the started thread to become
|
||||
// alive:
|
||||
while (!LThread.IsAlive) ;
|
||||
|
||||
// Put the Main thread to sleep for 1 millisecond to allow oThread
|
||||
// to do some work:
|
||||
Thread.Sleep(1);
|
||||
}
|
||||
}
|
||||
public delegate int MyDelegate();
|
||||
|
@ -107,16 +108,29 @@ namespace MSGer.tk
|
|||
Closeable = false;
|
||||
Dispose(); //2014.04.04.
|
||||
}
|
||||
textBox1.Enabled = false; //2014.09.01.
|
||||
textBox2.Enabled = false; //2014.09.01.
|
||||
return 0;
|
||||
}
|
||||
public int ResetAfterLogin(bool stoplogint)
|
||||
{
|
||||
button1.Enabled = false;
|
||||
Request.Abort();
|
||||
if (stoplogint) //2014.09.01.
|
||||
//{
|
||||
LThread.Abort(); //2014.09.01.
|
||||
//Networking.ReceiverConnection.Client.Shutdown(System.Net.Sockets.SocketShutdown.Receive); //2014.09.19.
|
||||
//}
|
||||
button1.Text = Language.Translate("login");
|
||||
button1.Enabled = true;
|
||||
linkLabel1.Enabled = true;
|
||||
textBox1.Enabled = true; //2014.09.01.
|
||||
textBox2.Enabled = true; //2014.09.01.
|
||||
return 0;
|
||||
}
|
||||
public int ResetAfterLogin()
|
||||
{
|
||||
Request.Abort();
|
||||
button1.Enabled = false;
|
||||
button1.Text = Language.GetCuurentLanguage().Strings["login"];
|
||||
button1.Enabled = true;
|
||||
linkLabel1.Enabled = true;
|
||||
return 0;
|
||||
{ //2014.09.01.
|
||||
return ResetAfterLogin(false); //Ha a thread hívja meg, ne állítsa le a thread-et
|
||||
}
|
||||
public static string UserText = ""; //2014.02.14.
|
||||
public static string PassText = "";
|
||||
|
@ -131,20 +145,27 @@ namespace MSGer.tk
|
|||
UserText = "";
|
||||
PassText = "";
|
||||
RegistLinkEn = false; //2014.03.27.
|
||||
LButtonText = Language.GetCuurentLanguage().Strings["button_cancel"];
|
||||
LButtonText = Language.Translate("button_cancel");
|
||||
this.Invoke(new MyDelegate(SetLoginValues));
|
||||
|
||||
//HttpWebRequest httpWReq =
|
||||
// (HttpWebRequest)WebRequest.Create("http://msger.tk/client.php");
|
||||
#if LOCAL_SERVER
|
||||
HttpWebRequest httpWReq =
|
||||
(HttpWebRequest)WebRequest.Create("http://localhost/ChatWithWords/client.php");
|
||||
#else
|
||||
HttpWebRequest httpWReq =
|
||||
(HttpWebRequest)WebRequest.Create("http://msger.url.ph/client.php");
|
||||
#endif
|
||||
|
||||
Request = httpWReq; //2014.03.27.
|
||||
|
||||
ASCIIEncoding encoding = new ASCIIEncoding();
|
||||
string postData = "username=" + UserText;
|
||||
postData += "&password=" + CalculateMD5Hash(PassText);
|
||||
postData += "&password=" + CalculateMD5Hash(PassText).ToLower(); //ToLower: 2014.10.24. 1:22 - Most már a PHP-nak is titkosítania kell többek közt MD5-tel
|
||||
postData += "&key=cas1fe4a6feFEFEFE1616CE8099VFE1444cdasf48c1ase5dg";
|
||||
postData += "&port=" + Storage.Settings["port"]; //2014.08.29.
|
||||
postData += "&isserver=" + Storage.Settings["isserver"]; //2014.09.26.
|
||||
byte[] data = encoding.GetBytes(postData);
|
||||
|
||||
httpWReq.Method = "POST";
|
||||
|
@ -162,7 +183,7 @@ namespace MSGer.tk
|
|||
{
|
||||
if (e.Status != WebExceptionStatus.RequestCanceled)
|
||||
{
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["connecterror"] + "\n" + e.Message, Language.GetCuurentLanguage().Strings["error"]);
|
||||
MessageBox.Show(Language.Translate("connecterror") + "\n" + e.Message, Language.Translate("error"));
|
||||
this.Invoke(new MyDelegate(ResetAfterLogin));
|
||||
return;
|
||||
}
|
||||
|
@ -182,7 +203,7 @@ namespace MSGer.tk
|
|||
{
|
||||
if (e.Status != WebExceptionStatus.RequestCanceled)
|
||||
{
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["connecterror"] + "\n" + e.Message, Language.GetCuurentLanguage().Strings["error"]);
|
||||
MessageBox.Show(Language.Translate("connecterror") + "\n" + e.Message, Language.Translate("error"));
|
||||
this.Invoke(new MyDelegate(ResetAfterLogin));
|
||||
return;
|
||||
}
|
||||
|
@ -199,7 +220,7 @@ namespace MSGer.tk
|
|||
if (responseString[0] == '<')
|
||||
{
|
||||
this.Invoke(new MyDelegate(ResetAfterLogin));
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["error"] + ":\n" + responseString);
|
||||
MessageBox.Show(Language.Translate("error") + ":\n" + responseString);
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
@ -212,31 +233,64 @@ namespace MSGer.tk
|
|||
if (String.Compare(responseString, "Fail") == 0)
|
||||
{
|
||||
this.Invoke(new MyDelegate(ResetAfterLogin));
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["error"] + ": " + Language.GetCuurentLanguage().Strings["login_badnamepass"], Language.GetCuurentLanguage().Strings["error"]);
|
||||
MessageBox.Show(Language.Translate("error") + ": " + Language.Translate("login_badnamepass"), Language.Translate("error"));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
|
||||
//Elmenti az E-mail-t
|
||||
if (!Settings.Default.email.Contains(UserText))
|
||||
if (!Storage.Settings["email"].Contains(UserText))
|
||||
{
|
||||
if (Settings.Default.email.Length != 0) //2014.07.08.
|
||||
Settings.Default.email += ",";
|
||||
Settings.Default.email += UserText;
|
||||
if (Storage.Settings["email"].Length != 0) //2014.07.08.
|
||||
Storage.Settings["email"] += ",";
|
||||
Storage.Settings["email"] += UserText;
|
||||
}
|
||||
else
|
||||
Settings.Default.lastusedemail = Settings.Default.email.Split(',').ToList<string>().IndexOf(UserText);
|
||||
Settings.Default.Save();
|
||||
//else - 2014.10.02. - Egyszer észrevettem a Google Code összehasonlítójával, hogy ez nem kéne ide
|
||||
Storage.Settings["lastusedemail"] = Storage.Settings["email"].Split(',').ToList<string>().IndexOf(UserText).ToString();
|
||||
//Settings.Default.Save();
|
||||
//Bejelentkezés
|
||||
string[] respstr = responseString.Split('ͦ');
|
||||
CurrentUser.UserID = Convert.ToInt32(respstr[0]); //Régebben ezt találtam, most meg az Int32.Parse-t... (2014.04.02.)
|
||||
CurrentUser.Name = respstr[1]; //2014.04.04.
|
||||
LoginForm.UserCode = CalculateMD5Hash(CalculateMD5Hash(PassText) + " Some text because why not " + CurrentUser.UserID).ToLower();
|
||||
//CurrentUser.UserID = Convert.ToInt32(respstr[0]); //Régebben ezt találtam, most meg az Int32.Parse-t... (2014.04.02.)
|
||||
//CurrentUser.Name = respstr[1]; //2014.04.04.
|
||||
//respstr[1]:
|
||||
|
||||
if (respstr[3].Contains("Fail"))
|
||||
{
|
||||
this.Invoke(new MyDelegate(ResetAfterLogin));
|
||||
MessageBox.Show(respstr[3]);
|
||||
return;
|
||||
}
|
||||
string[] entries = respstr[3].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
IEnumerable<IPEndPoint> ips = entries.Select(entry => ((entry != ":") ? new IPEndPoint(IPAddress.Parse(entry.Split(':')[0]), Int32.Parse(entry.Split(':')[1])) : new IPEndPoint(IPAddress.Loopback, 0)));
|
||||
//UserInfo.IPs.AddRange(ips); //2014.08.29.
|
||||
/*foreach(var entry in ips) //2014.08.30.
|
||||
{
|
||||
UserInfo.IPs.Add(entry);
|
||||
}*/
|
||||
UserInfo.IPs = new HashSet<IPEndPoint>(ips); //2014.08.30.
|
||||
//Storage.Settings["myip"] = respstr[2]; //2014.08.29. - A CurrentUser.IPs-en keresztül is lehet rá hivatkozni
|
||||
CurrentUser.IP = IPAddress.Parse(respstr[2]); //2014.10.24. - Most már csak ott lehet rá hivatkozni, felesleges eltárolni
|
||||
//CurrentUser.State = 1; //2014.08.31. 0:42 -- MainForm
|
||||
//2014.09.19. - Bejelentkezés elküldése áthelyezve a MainForm-ba
|
||||
|
||||
CurrentUser.UserID = Int32.Parse(respstr[0]); //2014.09.01. - Áthelyeztem, hogy addig ne higgye bejelentkezettnek, amíg el nem küldi a többieknek
|
||||
|
||||
Storage.SaltKey = CalculateMD5Hash(PassText); //2014.08.07.
|
||||
//Storage.FileName = CurrentUser.UserID.ToString() + ".db"; //2014.08.07.
|
||||
Storage.FileName = respstr[0] + ".db"; //2014.09.01. - Felesleges számmá alakítani, majd vissza
|
||||
|
||||
CurrentUser.UserName = UserText; //2014.09.01. - Ha semmit nem tud saját magáról, és más sem, de nem ismerőse saját magának, akkor az itt beállított felhasználónév érvényesül
|
||||
CurrentUser.Name = UserText; //2014.09.01.
|
||||
string ReceivedPass = respstr[4]; //2014.10.24. 1:39
|
||||
//LoginForm.UserCode = CalculateMD5Hash(CalculateMD5Hash(PassText) + " Some text because why not " + CurrentUser.UserID).ToLower();
|
||||
LoginForm.UserCode = CalculateMD5Hash(ReceivedPass + " Some text because why not " + CurrentUser.UserID).ToLower();
|
||||
|
||||
Closeable = true;
|
||||
this.Invoke(new MyDelegate(SetLoginValues));
|
||||
}
|
||||
}
|
||||
|
||||
public static string CalculateMD5Hash(string input)
|
||||
{
|
||||
// step 1, calculate MD5 hash from input
|
||||
|
@ -268,5 +322,28 @@ namespace MSGer.tk
|
|||
if (CurrentUser.UserID == 0)
|
||||
Program.Exit();
|
||||
}
|
||||
|
||||
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
if (textBox1.Text.Length == 0)
|
||||
{
|
||||
MessageBox.Show("Nincs megadva felhasználónév."); //Translate!
|
||||
return;
|
||||
}
|
||||
if (MessageBox.Show("Új jelszót kérsz a megadott névhez?", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
||||
{
|
||||
string ret = Networking.SendRequest("resetpass", textBox1.Text, 0, false);
|
||||
if (ret == "nouser")
|
||||
MessageBox.Show("A megadott felhasználó nem létezik.");
|
||||
else if (ret == "already")
|
||||
MessageBox.Show("A link MÁR el lett küldve az E-mail címedre.");
|
||||
else if (ret == "sent")
|
||||
MessageBox.Show("A link elküldve az E-mail címedre.");
|
||||
else if (ret.Contains("notsent"))
|
||||
MessageBox.Show("A link NEM lett elküldve az E-mail címedre.\nHiba: " + ret.Remove(ret.IndexOf("notsent"), "notsent".Length + 1));
|
||||
else
|
||||
MessageBox.Show("Ismeretlen hiba:\n" + ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -82,6 +82,12 @@
|
|||
<Compile Include="AddPartner.Designer.cs">
|
||||
<DependentUpon>AddPartner.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BeforeLogin.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="BeforeLogin.Designer.cs">
|
||||
<DependentUpon>BeforeLogin.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ChatForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
@ -115,12 +121,19 @@
|
|||
<Compile Include="LoginForm.Designer.cs">
|
||||
<DependentUpon>LoginForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Networking.cs" />
|
||||
<Compile Include="Notifier.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Notifier.Designer.cs">
|
||||
<DependentUpon>Notifier.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="PartnerInformation.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PartnerInformation.Designer.cs">
|
||||
<DependentUpon>PartnerInformation.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ProgressStatistic.cs" />
|
||||
<Compile Include="SettingsForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
|
@ -128,10 +141,10 @@
|
|||
<Compile Include="SettingsForm.Designer.cs">
|
||||
<DependentUpon>SettingsForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Storage.cs" />
|
||||
<Compile Include="StreamHelper.cs" />
|
||||
<Compile Include="TextFormat.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="TextFormat.cs" />
|
||||
<Compile Include="UpdateListAndChat.cs" />
|
||||
<Compile Include="_MyNotifier.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
|
@ -146,12 +159,6 @@
|
|||
<Compile Include="SelectPartnerForm.Designer.cs">
|
||||
<DependentUpon>SelectPartnerForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Settings.cs" />
|
||||
<Compile Include="Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="TaskbarNotifier.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
@ -162,6 +169,9 @@
|
|||
<EmbeddedResource Include="AddPartner.resx">
|
||||
<DependentUpon>AddPartner.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="BeforeLogin.resx">
|
||||
<DependentUpon>BeforeLogin.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ChatForm.resx">
|
||||
<DependentUpon>ChatForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
@ -180,6 +190,9 @@
|
|||
<EmbeddedResource Include="Notifier.resx">
|
||||
<DependentUpon>Notifier.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="PartnerInformation.resx">
|
||||
<DependentUpon>PartnerInformation.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
|
@ -199,10 +212,6 @@
|
|||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<None Include="Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
|
|
11
MSGer.tk/MainForm.Designer.cs
generated
|
@ -130,7 +130,6 @@
|
|||
this.notifyIcon1.ContextMenuStrip = this.iconMenu;
|
||||
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
|
||||
this.notifyIcon1.Text = "MSGer.tk";
|
||||
this.notifyIcon1.Visible = true;
|
||||
this.notifyIcon1.DoubleClick += new System.EventHandler(this.toolStripMenuItem4_Click);
|
||||
//
|
||||
// iconMenu
|
||||
|
@ -692,7 +691,7 @@
|
|||
this.üzenetküldésToolStripMenuItem.Name = "üzenetküldésToolStripMenuItem";
|
||||
this.üzenetküldésToolStripMenuItem.Size = new System.Drawing.Size(237, 22);
|
||||
this.üzenetküldésToolStripMenuItem.Text = "Üzenetküldés";
|
||||
this.üzenetküldésToolStripMenuItem.Click += new System.EventHandler(this.OpenSendMessage);
|
||||
this.üzenetküldésToolStripMenuItem.Click += new System.EventHandler(this.PartnerMenu_SendMessage);
|
||||
//
|
||||
// emailKüldéseemailToolStripMenuItem
|
||||
//
|
||||
|
@ -711,6 +710,7 @@
|
|||
this.információToolStripMenuItem.Name = "információToolStripMenuItem";
|
||||
this.információToolStripMenuItem.Size = new System.Drawing.Size(237, 22);
|
||||
this.információToolStripMenuItem.Text = "Információ";
|
||||
this.információToolStripMenuItem.Click += new System.EventHandler(this.információToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator14
|
||||
//
|
||||
|
@ -782,9 +782,12 @@
|
|||
this.contactList.ItemHeight = 50;
|
||||
this.contactList.Location = new System.Drawing.Point(0, 134);
|
||||
this.contactList.Name = "contactList";
|
||||
this.contactList.SelectedIndex = -1;
|
||||
this.contactList.SelectionColor = System.Drawing.Color.Aqua;
|
||||
this.contactList.Size = new System.Drawing.Size(624, 311);
|
||||
this.contactList.TabIndex = 8;
|
||||
this.contactList.ItemDoubleClicked += new System.EventHandler<int>(this.contactList_ItemDoubleClicked);
|
||||
this.contactList.ItemRightClicked += new System.EventHandler<int>(this.contactList_ItemRightClicked);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
|
@ -816,7 +819,6 @@
|
|||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.NotifyIcon notifyIcon1;
|
||||
private System.Windows.Forms.MenuStrip menuStrip1;
|
||||
private System.Windows.Forms.ToolStripMenuItem fájlToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem kijelentkezésToolStripMenuItem;
|
||||
|
@ -902,7 +904,8 @@
|
|||
public System.Windows.Forms.ToolStripMenuItem toolStripMenuItem4;
|
||||
public System.Windows.Forms.ToolStripMenuItem toolStripMenuItem8;
|
||||
public System.Windows.Forms.ToolStripMenuItem toolStripMenuItem9;
|
||||
private SzNPProjects.RichListView contactList;
|
||||
internal System.Windows.Forms.NotifyIcon notifyIcon1;
|
||||
internal SzNPProjects.RichListView contactList;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,9 @@ using System.Threading;
|
|||
using CustomUIControls;
|
||||
using System.Reflection;
|
||||
using SzNPProjects;
|
||||
using System.Net.Sockets;
|
||||
using System.Diagnostics;
|
||||
using System.Net.NetworkInformation;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
|
@ -23,142 +26,161 @@ namespace MSGer.tk
|
|||
public static LoginForm LoginDialog;
|
||||
public static Thread LThread;
|
||||
public static Thread MainThread = null;
|
||||
public static bool PartnerListThreadActive = true;
|
||||
public static ToolStripMenuItem SelectPartnerSender = null;
|
||||
//public static bool PartnerListThreadActive = true;
|
||||
//public static ToolStripMenuItem SelectPartnerSender = null;
|
||||
public static Notifier taskbarNotifier;
|
||||
public MainForm()
|
||||
{
|
||||
BeforeLogin.SetText("Starting...");
|
||||
InitializeComponent();
|
||||
//beforeloginform.Validate();
|
||||
Thread.CurrentThread.Name = "Main Thread";
|
||||
contactList.Items.Add(new RichListViewItem());
|
||||
contactList.Items[0].SubItems[0].Text = "Betöltés...";
|
||||
//contactList.Items.Add(new RichListViewItem()); - 2014.08.28. - Kommentálva, mivel most már itt,
|
||||
//contactList.Items[0].SubItems[0].Text = "Loading..."; - 2014.08.28. - a konstruktorban tölti be, ami nem látszódik a felhasználó számára
|
||||
toolStripMenuItem4.Enabled = false; //2014.04.12.
|
||||
toolStripMenuItem8.Enabled = false; //2014.04.12.
|
||||
|
||||
this.WindowState = FormWindowState.Minimized; //2014.04.19.
|
||||
|
||||
#region Nyelvi beállitások
|
||||
if (!Directory.Exists("languages"))
|
||||
Directory.CreateDirectory("languages");
|
||||
string[] files = Directory.GetFiles("languages");
|
||||
if (files.Length == 0)
|
||||
{
|
||||
MessageBox.Show("Error: No languages found.");
|
||||
return; //Még nem jelentkezett be, ezért ki fog lépni
|
||||
}
|
||||
for (int x = 0; x < files.Length; x++ )
|
||||
{
|
||||
string[] lines = File.ReadAllLines(files[x]);
|
||||
var dict = lines.Select(l => l.Split('=')).ToDictionary(a => a[0], a => a[1]);
|
||||
(new Language(files[x].Split('\\')[files[x].Split('\\').Length-1].Split('.')[0])).Strings = dict; //Eltárol egy új nyelvet, majd a szövegeket hozzátársítja
|
||||
}
|
||||
BeforeLogin.SetText("Loading program settings...");
|
||||
Storage.Load(false); //Töltse be a nyelvet, legutóbb használt E-mail-t...
|
||||
|
||||
CurrentUser.Language = Language.FromString(Settings.Default.lang);
|
||||
if (CurrentUser.Language == null)
|
||||
BeforeLogin.SetText("Checking available ports...");
|
||||
//2014.09.04. - Amint lehet állítsa be a helyes IP-t, majd azt hagyja úgy, akármi történjék
|
||||
while (true)
|
||||
{
|
||||
MessageBox.Show("Error: The specified language is not found.\nTo quickly solve this, copy the preffered language file in languages folder to the same place with the name of \"" + Settings.Default.lang + "\"\nYou can then change the language in your preferences later.");
|
||||
return;
|
||||
//remoteEP = new IPEndPoint(IPAddress.Any, Int32.Parse(Storage.Settings["port"]));
|
||||
if (IPGlobalProperties.GetIPGlobalProperties().GetActiveUdpListeners().Select(entry => entry.Port).Contains(Int32.Parse(Storage.Settings["port"])))
|
||||
Storage.Settings["port"] = (Int32.Parse(Storage.Settings["port"]) + 1).ToString();
|
||||
else
|
||||
break;
|
||||
}
|
||||
Networking.ReceiverConnection = new UdpClient(Int32.Parse(Storage.Settings["port"])); //2014.09.04.
|
||||
Networking.SenderConnection.AllowNatTraversal(true); //2014.09.04.
|
||||
|
||||
BeforeLogin.SetText("Loading languages...");
|
||||
//#region Nyelvi beállitások
|
||||
new Language();
|
||||
//MessageBox.Show("Nyelv: " + CurrentUser.Language.ToString());
|
||||
#endregion
|
||||
//#endregion
|
||||
|
||||
BeforeLogin.SetText(Language.Translate("beforelogin_translatemainf"));
|
||||
#region Helyi beállitás
|
||||
try
|
||||
{
|
||||
fájlToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_file"];
|
||||
kijelentkezésToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_file_logout"];
|
||||
toolStripMenuItem1.Text = Language.GetCuurentLanguage().Strings["menu_file_loginnewuser"];
|
||||
állapotToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_file_status"];
|
||||
elérhetőToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_file_status_online"];
|
||||
elfoglaltToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_file_status_busy"];
|
||||
nincsAGépnélToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_file_status_away"];
|
||||
rejtveKapcsolódikToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_file_status_hidden"];
|
||||
fájlKüldéseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_file_sendfile"];
|
||||
beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_file_openreceivedfiles"];
|
||||
üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_file_openrecentmsgs"];
|
||||
bezárásToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_file_close"];
|
||||
kilépésToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_file_exit"];
|
||||
//try
|
||||
//{
|
||||
fájlToolStripMenuItem.Text = Language.Translate("menu_file");
|
||||
kijelentkezésToolStripMenuItem.Text = Language.Translate("menu_file_logout");
|
||||
toolStripMenuItem1.Text = Language.Translate("menu_file_loginnewuser");
|
||||
állapotToolStripMenuItem.Text = Language.Translate("menu_file_status");
|
||||
elérhetőToolStripMenuItem.Text = Language.Translate("menu_file_status_online");
|
||||
elfoglaltToolStripMenuItem.Text = Language.Translate("menu_file_status_busy");
|
||||
nincsAGépnélToolStripMenuItem.Text = Language.Translate("menu_file_status_away");
|
||||
rejtveKapcsolódikToolStripMenuItem.Text = Language.Translate("menu_file_status_hidden");
|
||||
fájlKüldéseToolStripMenuItem.Text = Language.Translate("menu_file_sendfile");
|
||||
beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Text = Language.Translate("menu_file_openreceivedfiles");
|
||||
üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Text = Language.Translate("menu_file_openrecentmsgs");
|
||||
bezárásToolStripMenuItem.Text = Language.Translate("menu_file_close");
|
||||
kilépésToolStripMenuItem.Text = Language.Translate("menu_file_exit");
|
||||
|
||||
ismerősökToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_contacts"];
|
||||
ismerősFelvételeToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_contacts_add"];
|
||||
ismerősSzerkesztéseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_contacts_edit"];
|
||||
ismerősTörléseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_contacts_remove"];
|
||||
toolStripMenuItem3.Text = Language.GetCuurentLanguage().Strings["menu_contacts_invite"];
|
||||
csoportLétrehozásaToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_contacts_makegroup"];
|
||||
kategóriaLétrehozásaToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_contacts_makecategory"];
|
||||
kategóriaSzerkesztéseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_contacts_editcategory"];
|
||||
kategóriaTörléseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_contacts_removecategory"];
|
||||
ismerősökToolStripMenuItem.Text = Language.Translate("menu_contacts");
|
||||
ismerősFelvételeToolStripMenuItem.Text = Language.Translate("menu_contacts_add");
|
||||
ismerősSzerkesztéseToolStripMenuItem.Text = Language.Translate("menu_contacts_edit");
|
||||
ismerősTörléseToolStripMenuItem.Text = Language.Translate("menu_contacts_remove");
|
||||
toolStripMenuItem3.Text = Language.Translate("menu_contacts_invite");
|
||||
csoportLétrehozásaToolStripMenuItem.Text = Language.Translate("menu_contacts_makegroup");
|
||||
kategóriaLétrehozásaToolStripMenuItem.Text = Language.Translate("menu_contacts_makecategory");
|
||||
kategóriaSzerkesztéseToolStripMenuItem.Text = Language.Translate("menu_contacts_editcategory");
|
||||
kategóriaTörléseToolStripMenuItem.Text = Language.Translate("menu_contacts_removecategory");
|
||||
|
||||
műveletekToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_operations"];
|
||||
azonnaliÜzenetKüldéseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_operations_sendmsg"];
|
||||
egyébKüldéseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_operations_sendother"];
|
||||
emailKüldéseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_operations_sendother_sendmail"];
|
||||
fájlKüldéseToolStripMenuItem1.Text = Language.GetCuurentLanguage().Strings["menu_file_sendfile"]; //Ugyanaz a szöveg
|
||||
ismerősSzámitógépénekFelhivásaToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_operations_callcontact"];
|
||||
videóhivásInditásaToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_operations_videocall"];
|
||||
onlineFájlokMegtekintéseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_operations_showonlinefiles"];
|
||||
közösJátékToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_operations_playgame"];
|
||||
távsegitségKéréseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_operations_askforhelp"];
|
||||
műveletekToolStripMenuItem.Text = Language.Translate("menu_operations");
|
||||
azonnaliÜzenetKüldéseToolStripMenuItem.Text = Language.Translate("menu_operations_sendmsg");
|
||||
egyébKüldéseToolStripMenuItem.Text = Language.Translate("menu_operations_sendother");
|
||||
emailKüldéseToolStripMenuItem.Text = Language.Translate("menu_operations_sendother_sendmail");
|
||||
fájlKüldéseToolStripMenuItem1.Text = Language.Translate("menu_file_sendfile"); //Ugyanaz a szöveg
|
||||
ismerősSzámitógépénekFelhivásaToolStripMenuItem.Text = Language.Translate("menu_operations_callcontact");
|
||||
videóhivásInditásaToolStripMenuItem.Text = Language.Translate("menu_operations_videocall");
|
||||
onlineFájlokMegtekintéseToolStripMenuItem.Text = Language.Translate("menu_operations_showonlinefiles");
|
||||
közösJátékToolStripMenuItem.Text = Language.Translate("menu_operations_playgame");
|
||||
távsegitségKéréseToolStripMenuItem.Text = Language.Translate("menu_operations_askforhelp");
|
||||
|
||||
eszközökToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_tools"];
|
||||
mindigLegfelülToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_tools_alwaysontop"];
|
||||
hangulatjelekToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_tools_emoticons"];
|
||||
megjelenitendőKépVáltásaToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_tools_changeimage"];
|
||||
háttérMódositásaToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_tools_changebackground"];
|
||||
hangokÉsVideóBeállitásaToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_tools_voicevideosettings"];
|
||||
beállitásokToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_tools_settings"];
|
||||
eszközökToolStripMenuItem.Text = Language.Translate("menu_tools");
|
||||
mindigLegfelülToolStripMenuItem.Text = Language.Translate("menu_tools_alwaysontop");
|
||||
hangulatjelekToolStripMenuItem.Text = Language.Translate("menu_tools_emoticons");
|
||||
megjelenitendőKépVáltásaToolStripMenuItem.Text = Language.Translate("menu_tools_changeimage");
|
||||
háttérMódositásaToolStripMenuItem.Text = Language.Translate("menu_tools_changebackground");
|
||||
hangokÉsVideóBeállitásaToolStripMenuItem.Text = Language.Translate("menu_tools_voicevideosettings");
|
||||
beállitásokToolStripMenuItem.Text = Language.Translate("menu_tools_settings");
|
||||
|
||||
súgóToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_help"];
|
||||
témakörökToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_help_contents"];
|
||||
aSzolgáltatásÁllapotsaToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_help_status"];
|
||||
adatvédelmiNyilatkozatToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_help_privacypolicy"];
|
||||
használatiFeltételekToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_help_termsofuse"];
|
||||
visszaélésBejelentéseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_help_report"];
|
||||
segitsenAProgramTökéletesitésébenToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_help_improveprogram"];
|
||||
névjegyToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_help_about"];
|
||||
súgóToolStripMenuItem.Text = Language.Translate("menu_help");
|
||||
témakörökToolStripMenuItem.Text = Language.Translate("menu_help_contents");
|
||||
aSzolgáltatásÁllapotsaToolStripMenuItem.Text = Language.Translate("menu_help_status");
|
||||
adatvédelmiNyilatkozatToolStripMenuItem.Text = Language.Translate("menu_help_privacypolicy");
|
||||
használatiFeltételekToolStripMenuItem.Text = Language.Translate("menu_help_termsofuse");
|
||||
visszaélésBejelentéseToolStripMenuItem.Text = Language.Translate("menu_help_report");
|
||||
segitsenAProgramTökéletesitésébenToolStripMenuItem.Text = Language.Translate("menu_help_improveprogram");
|
||||
névjegyToolStripMenuItem.Text = Language.Translate("menu_help_about");
|
||||
|
||||
textBox1.Text = Language.GetCuurentLanguage().Strings["searchbar"];
|
||||
contactList.Items[0].SubItems[0].Text = Language.GetCuurentLanguage().Strings["loading"];
|
||||
textBox1.Text = Language.Translate("searchbar");
|
||||
//contactList.Items[0].SubItems[0].Text = Language.Translate("loading"); - 2014.08.28. - Nincs már rá szükség (hibát is ír, mivel nincs listaelem)
|
||||
|
||||
üzenetküldésToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["menu_operations_sendmsg"];
|
||||
emailKüldéseemailToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["contact_sendemail"];
|
||||
toolStripMenuItem2.Text = Language.GetCuurentLanguage().Strings["contact_copyemail"];
|
||||
információToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["contact_info"];
|
||||
ismerősLetiltásaToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["contact_block"];
|
||||
ismerősTörléseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["contact_remove"];
|
||||
becenévSzerkesztéseToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["contact_editname"];
|
||||
eseményértesitésekToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["contact_eventnotifications"];
|
||||
beszélgetésnaplóMegnyitásaToolStripMenuItem.Text = Language.GetCuurentLanguage().Strings["contact_openchatlog"];
|
||||
üzenetküldésToolStripMenuItem.Text = Language.Translate("menu_operations_sendmsg");
|
||||
emailKüldéseemailToolStripMenuItem.Text = Language.Translate("contact_sendemail");
|
||||
toolStripMenuItem2.Text = Language.Translate("contact_copyemail");
|
||||
információToolStripMenuItem.Text = Language.Translate("contact_info");
|
||||
ismerősLetiltásaToolStripMenuItem.Text = Language.Translate("contact_block");
|
||||
ismerősTörléseToolStripMenuItem.Text = Language.Translate("contact_remove");
|
||||
becenévSzerkesztéseToolStripMenuItem.Text = Language.Translate("contact_editname");
|
||||
eseményértesitésekToolStripMenuItem.Text = Language.Translate("contact_eventnotifications");
|
||||
beszélgetésnaplóMegnyitásaToolStripMenuItem.Text = Language.Translate("contact_openchatlog");
|
||||
|
||||
toolStripMenuItem4.Text = Language.GetCuurentLanguage().Strings["iconmenu_show"];
|
||||
toolStripMenuItem8.Text = Language.GetCuurentLanguage().Strings["menu_file_logout"];
|
||||
toolStripMenuItem9.Text = Language.GetCuurentLanguage().Strings["menu_file_exit"];
|
||||
}
|
||||
catch
|
||||
{
|
||||
MessageBox.Show("Error while loading translations.");
|
||||
}
|
||||
toolStripMenuItem4.Text = Language.Translate("iconmenu_show");
|
||||
toolStripMenuItem8.Text = Language.Translate("menu_file_logout");
|
||||
toolStripMenuItem9.Text = Language.Translate("menu_file_exit");
|
||||
//}
|
||||
//catch
|
||||
//{
|
||||
//MessageBox.Show("Error while loading translations.");
|
||||
//}
|
||||
#endregion
|
||||
|
||||
BeforeLogin.SetText(Language.Translate("beforelogin_loadtextformat"));
|
||||
//2014.05.16.
|
||||
new TextFormat();
|
||||
|
||||
BeforeLogin.SetText(Language.Translate("beforelogin_checkforupdates"));
|
||||
//2014.04.25.
|
||||
//string response = Networking.SendRequest("checkforupdates",
|
||||
/*byte[] response = Networking.SendUpdate(Networking.UpdateType.CheckForUpdates,
|
||||
BitConverter.GetBytes(Int32.Parse(Assembly.GetExecutingAssembly().GetName().Version.ToString().Replace(".", ""))),
|
||||
false);*/
|
||||
string response = Networking.SendRequest("checkforupdates",
|
||||
Assembly.GetExecutingAssembly().GetName().Version.ToString().Replace(".", ""),
|
||||
0, false);
|
||||
if (response == "outofdate")
|
||||
//if(response[0]==0x00)
|
||||
{
|
||||
var res = MessageBox.Show(Language.GetCuurentLanguage().Strings["outofdate"], Language.GetCuurentLanguage().Strings["outofdate_caption"], MessageBoxButtons.YesNo);
|
||||
var res = MessageBox.Show(Language.Translate("outofdate"), Language.Translate("outofdate_caption"), MessageBoxButtons.YesNo);
|
||||
if (res == DialogResult.Yes)
|
||||
System.Diagnostics.Process.Start("http://msger.url.ph/download.php?version=latest");
|
||||
}
|
||||
else if (response != "fine")
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["error"] + ": " + response);
|
||||
//else if (response[0]!=0x01)
|
||||
MessageBox.Show(Language.Translate("error") + ": " + response);
|
||||
|
||||
//2014.09.06.
|
||||
if (Storage.Settings["isserver"] == "")
|
||||
{
|
||||
if (MessageBox.Show(Language.Translate("isserver_msg"), "", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
||||
Storage.Settings["isserver"] = "1";
|
||||
else
|
||||
Storage.Settings["isserver"] = "0";
|
||||
}
|
||||
|
||||
BeforeLogin.SetText(Language.Translate("beforelogin_loginform"));
|
||||
try
|
||||
{
|
||||
LoginDialog = new LoginForm();
|
||||
BeforeLogin.Destroy();
|
||||
LoginDialog.ShowDialog();
|
||||
}
|
||||
catch (Exception e)
|
||||
|
@ -166,33 +188,161 @@ namespace MSGer.tk
|
|||
ErrorHandling.FormError(LoginDialog, e);
|
||||
}
|
||||
//Nézzük, sikerült-e
|
||||
if (CurrentUser.UserID != 0)
|
||||
{
|
||||
if (CurrentUser.UserID == 0)
|
||||
return; //2014.09.06.
|
||||
contactList.Enabled = false; //2014.03.05.
|
||||
MainThread = Thread.CurrentThread;
|
||||
|
||||
// Create the thread object, passing in the Alpha.Beta method
|
||||
// via a ThreadStart delegate. This does not start the thread.
|
||||
LThread = new Thread(new ThreadStart(UpdatePartnerList));
|
||||
LThread.Name = "Update Partner List";
|
||||
LThread = new Thread(new ThreadStart(new UpdateListAndChat().Run));
|
||||
//LThread.Name = "Update Partner List";
|
||||
LThread.Name = "Update Partnerlist and Chat";
|
||||
|
||||
Thread keepupthread = new Thread(new ThreadStart(Networking.KeepUpThread));
|
||||
keepupthread.Name = "Keep Up Thread";
|
||||
|
||||
Thread keepupuserst = new Thread(new ThreadStart(Networking.KeepUpUsersThread)); //2014.09.26.
|
||||
keepupuserst.Name = "Keep Up Users Thread";
|
||||
|
||||
Storage.Load(true); //2014.08.07.
|
||||
|
||||
//Temp - 2014.09.15.
|
||||
/*Random rand = new Random();
|
||||
Random rand2 = new Random();
|
||||
string[] keys = new string[CurrentUser.Keys.Length];
|
||||
for (int i = 0; i < CurrentUser.Keys.Length; i++)
|
||||
{
|
||||
string str = "";
|
||||
for (int j = 0; j < 8; j++)
|
||||
{
|
||||
if (rand2.Next(0, 1) == 0)
|
||||
str += (char)rand.Next('a', 'z');
|
||||
else
|
||||
str += (char)rand.Next('A', 'Z' + 1);
|
||||
}
|
||||
//CurrentUser.Keys[i] = str;
|
||||
keys[i] = str;
|
||||
}
|
||||
CurrentUser.Keys = keys;*/
|
||||
|
||||
if (Storage.Settings["windowstate"] == "1") //2014.04.18. - 2014.08.08.
|
||||
this.WindowState = FormWindowState.Maximized;
|
||||
else if (Storage.Settings["windowstate"] == "2")
|
||||
this.WindowState = FormWindowState.Minimized;
|
||||
else if (Storage.Settings["windowstate"] == "3")
|
||||
this.WindowState = FormWindowState.Normal;
|
||||
|
||||
/*#region Partnerlista betöltése
|
||||
#endregion*/
|
||||
//LoadPartnerList();
|
||||
|
||||
taskbarNotifier = new Notifier("popup-bg.bmp", Color.FromArgb(255, 0, 255), "close.bmp", 5000);
|
||||
//taskbarNotifier.Show("Teszt cím", "Teszt tartalom\nMásodik sor");
|
||||
|
||||
taskbarNotifier.Click += PopupClick;
|
||||
taskbarNotifier.CloseClick += PopupCloseClick;
|
||||
|
||||
toolStripMenuItem4.Enabled = true; //2014.04.12.
|
||||
toolStripMenuItem8.Enabled = true; //2014.04.12.
|
||||
|
||||
// Start the thread
|
||||
LThread.Start();
|
||||
|
||||
if (Settings.Default.windowstate == 1) //2014.04.18.
|
||||
this.WindowState = FormWindowState.Maximized;
|
||||
else if (Settings.Default.windowstate == 2)
|
||||
this.WindowState = FormWindowState.Minimized;
|
||||
else if (Settings.Default.windowstate == 3)
|
||||
this.WindowState = FormWindowState.Normal;
|
||||
keepupthread.Start();
|
||||
|
||||
taskbarNotifier = new Notifier("popup-bg.bmp", Color.FromArgb(255, 0, 255), "close.bmp", 5000);
|
||||
taskbarNotifier.Show("Teszt cím", "Teszt tartalom\nMásodik sor");
|
||||
keepupuserst.Start();
|
||||
|
||||
toolStripMenuItem4.Enabled = true; //2014.04.12.
|
||||
toolStripMenuItem8.Enabled = true; //2014.04.12.
|
||||
//2014.08.19. - Küldje el a bejelentkezés hírét, hogy frissítéseket kapjon
|
||||
//byte[] strb = Encoding.Unicode.GetBytes(Storage.Settings["myip"]);
|
||||
byte[] strb = Encoding.Unicode.GetBytes(CurrentUser.IP.ToString());
|
||||
byte[] tmpfinal = new byte[8 * UserInfo.KnownUsers.Count + strb.Length + 4]; //Hosszúság, IP, ismert felh. ID, frissítési idő
|
||||
Array.Copy(BitConverter.GetBytes(strb.Length), tmpfinal, 4);
|
||||
Array.Copy(strb, 0, tmpfinal, 4, strb.Length);
|
||||
//if (tmpfinal.Length != 0)
|
||||
if (UserInfo.KnownUsers.Count != 0)
|
||||
{
|
||||
//byte[] tmptmp = BitConverter.GetBytes(CurrentUser.UserID); //Felesleges, eleve elküldi a UserID-t
|
||||
//Array.Copy(tmptmp, tmpfinal, 4);
|
||||
for (int i = 0; i < UserInfo.KnownUsers.Count; i++)
|
||||
{
|
||||
byte[] tmptmp = BitConverter.GetBytes(UserInfo.KnownUsers[i].UserID);
|
||||
Array.Copy(tmptmp, 0, tmpfinal, i * 4 + strb.Length + 4, 4);
|
||||
tmptmp = BitConverter.GetBytes(UserInfo.KnownUsers[i].LastUpdate);
|
||||
Array.Copy(tmptmp, 0, tmpfinal, i * 4 + strb.Length + 4, 4);
|
||||
}
|
||||
}
|
||||
Networking.ParseUpdateInfo(Networking.SendUpdate(Networking.UpdateType.LoginUser, tmpfinal, false));
|
||||
|
||||
notifyIcon1.Visible = true; //2014.09.22.
|
||||
taskbarNotifier.Show("Teszt cím", "Teszt tartalom\nMásodik sor");
|
||||
}
|
||||
|
||||
private void LoadPartnerList() //2014.08.28.
|
||||
{
|
||||
contactList.AutoUpdate = false;
|
||||
UserInfo.AutoUpdate = false; //2014.09.26.
|
||||
//string[] list = Networking.SendRequest("getlist", "", 0, true).Split('ͦ');
|
||||
string[] list = Networking.SendRequest("getlist", "", 0, true).Split(new char[] { 'ͦ' }, StringSplitOptions.RemoveEmptyEntries); //2014.09.26.
|
||||
if (list[0].Contains("Fail"))
|
||||
MessageBox.Show(list[0]);
|
||||
UserInfo.KnownUsers = UserInfo.KnownUsers.Select(entry => { entry.IsPartner = false; return entry; }).ToList(); //2014.09.26.
|
||||
for (int i = 0; i + 1 < list.Length; i += 2)
|
||||
{
|
||||
string username = list[i];
|
||||
int uid = Int32.Parse(list[i + 1]);
|
||||
if (!UserInfo.IDIsInList(UserInfo.KnownUsers, uid))
|
||||
{ //Ha nem tud róla semmit, akkor töltse le a felhasználónevét, és jelenítse meg azt
|
||||
var tmp = new UserInfo();
|
||||
tmp.UserID = uid;
|
||||
tmp.UserName = username;
|
||||
tmp.LastUpdate = 0; //Lényegében nem tud róla túl sokat, ezért ha lehet, frissítse
|
||||
tmp.Name = username;
|
||||
tmp.IsPartner = true;
|
||||
UserInfo.KnownUsers.Add(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
UserInfo.Select(uid).IsPartner = true; //2014.09.26.
|
||||
UserInfo.Select(uid).UserName = username; //2014.09.26. - Nem megváltoztatható, ha egy felhasználó megpróbálja, nem foglalkozik vele
|
||||
}
|
||||
}
|
||||
CurrentUser.State = 1; //2014.08.31. 0:48
|
||||
UserInfo.AutoUpdate = true;
|
||||
foreach (var entry in UserInfo.KnownUsers)
|
||||
{
|
||||
//if (entry.IsPartner)
|
||||
//{
|
||||
/*var pictb = new PictureBox();
|
||||
string imgpath = entry.GetImage();
|
||||
if (imgpath != "noimage.png" || File.Exists("noimage.png")) //2014.03.13.
|
||||
pictb.ImageLocation = imgpath;
|
||||
else
|
||||
MessageBox.Show(Language.Translate("noimage_notfound"), "Hiba");
|
||||
pictb.SizeMode = PictureBoxSizeMode.Zoom; //Megváltoztatva ScretchImage-ről
|
||||
var listtext = new ExRichTextBox();
|
||||
string state = "";
|
||||
if (entry.State == 1)
|
||||
state = " (" + Language.Translate("menu_file_status_online") + ")";
|
||||
else if (entry.State == 2)
|
||||
state = " (" + Language.Translate("menu_file_status_busy") + ")";
|
||||
else if (entry.State == 3)
|
||||
state = " (" + Language.Translate("menu_file_status_away") + ")";
|
||||
listtext.Text = entry.Name + state + "\n" + entry.Message;
|
||||
listtext = TextFormat.Parse(listtext);
|
||||
contactList.Items.Add(new RichListViewItem(new Control[] { pictb, listtext }));
|
||||
entry.ListID = contactList.Items.Count - 1;*/
|
||||
//contactList.Items.Add(new RichListViewItem(2));
|
||||
entry.Update(); //Áthelyeztem, mert az értékek frissítésekor is szükség van rá
|
||||
//}
|
||||
}
|
||||
//UserInfo.AddCurrentUser(); //2014.09.01. - Feleslegesen csináltam meg
|
||||
/*while (contactList.Items.Count > UserInfo.KnownUsers.Count)
|
||||
contactList.Items.RemoveAt(UserInfo.KnownUsers.Count - 1);*/
|
||||
contactList.AutoUpdate = true;
|
||||
contactList.Enabled = true;
|
||||
contactList.Refresh();
|
||||
}
|
||||
|
||||
private void PopupCloseClick(object sender, EventArgs e)
|
||||
{
|
||||
|
@ -209,25 +359,54 @@ namespace MSGer.tk
|
|||
this.Hide();
|
||||
toolStripMenuItem4.Enabled = false; //2014.04.12.
|
||||
toolStripMenuItem8.Enabled = false; //2014.04.12.
|
||||
Storage.Save(true); //2014.08.28.
|
||||
SetOnlineState(null, null); //2014.04.11. - Erre nincs beállitva, ezért automatikusan 0-ra, azaz kijelentkeztetettre állítja az állapotát
|
||||
CurrentUser.UserID = 0;
|
||||
PartnerListThreadActive = false;
|
||||
//CurrentUser.UserID = 0; - SetOnlineState-ben is benne van
|
||||
contactList.Items.Clear(); //2014.09.19.
|
||||
UserInfo.KnownUsers.Clear(); //2014.09.19.
|
||||
/*CurrentUser.SendChanges = false; //2014.09.19. - A UserID=0-t még küldje el, de a többit ne - Pontosabban a UserID-t már a SetOnlineState is elküldi
|
||||
CurrentUser.Email = ""; //2014.09.19.
|
||||
CurrentUser.IP = null; //2014.09.19.
|
||||
CurrentUser.KeyIndex = 0; //2014.09.19.
|
||||
CurrentUser.Keys = null; //2014.09.19.
|
||||
CurrentUser.Language = null; //2014.09.19.
|
||||
CurrentUser.Message = ""; //2014.09.19.
|
||||
CurrentUser.Name = ""; //2014.09.19.
|
||||
CurrentUser.State = 0; //2014.09.19.*/
|
||||
Storage.Dispose();
|
||||
/*Networking.ReceiverConnection.Close();
|
||||
Networking.ReceiverConnection = null;
|
||||
Networking.SenderConnection.Close();
|
||||
Networking.SenderConnection = null;*/
|
||||
//PartnerListThreadActive = false;
|
||||
LThread = null;
|
||||
CurrentUser.SendChanges = false; //2014.08.30.
|
||||
//foreach(var item in ChatForm.ChatWindows)
|
||||
while (ChatForm.ChatWindows.Count > 0)
|
||||
{ //2014.09.06. - A Close() hatására törli a gyűjteményből, ezért sorra végig fog haladni rajta
|
||||
//item.Close();
|
||||
ChatForm.ChatWindows[0].Close();
|
||||
}
|
||||
LoginDialog = new LoginForm(); //2014.04.04.
|
||||
LoginDialog.ShowDialog();
|
||||
//Nézzük, sikerült-e
|
||||
if (CurrentUser.UserID == 0)
|
||||
Close();
|
||||
Storage.Load(true); //2014.08.07.
|
||||
toolStripMenuItem4.Enabled = true; //2014.04.12.
|
||||
toolStripMenuItem8.Enabled = true; //2014.04.12.
|
||||
contactList.Items.Clear(); //2014.03.05.
|
||||
contactList.Enabled = false; //2014.03.05.
|
||||
contactList.Items.Add(new RichListViewItem());
|
||||
contactList.Items[0].SubItems[0].Text = "Betöltés...";
|
||||
//contactList.Items.Clear(); //2014.03.05.
|
||||
//contactList.Enabled = false; //2014.03.05.
|
||||
//contactList.Items.Add(new RichListViewItem());
|
||||
//contactList.Items[0].SubItems[0].Text = "Betöltés...";
|
||||
CurrentUser.SendChanges = true; //2014.08.30.
|
||||
contactList.Items.Clear(); //2014.10.09. - Kijelentkezéskor hozzáad egy üres listelemet egy (Nem elérhető) felirattal, ezt tünteti el
|
||||
LoadPartnerList();
|
||||
this.Show();
|
||||
PartnerListThreadActive = true; //2014.02.28. - Törli, majd újra létrehozza a listafrissitő thread-et, ha újra bejelentkezett
|
||||
//PartnerListThreadActive = true; //2014.02.28. - Törli, majd újra létrehozza a listafrissitő thread-et, ha újra bejelentkezett
|
||||
// Create the thread object, passing in the Alpha.Beta method
|
||||
// via a ThreadStart delegate. This does not start the thread.
|
||||
LThread = new Thread(new ThreadStart(UpdatePartnerList));
|
||||
LThread = new Thread(new ThreadStart(new UpdateListAndChat().Run));
|
||||
LThread.Name = "Update Partner List";
|
||||
|
||||
// Start the thread
|
||||
|
@ -236,7 +415,9 @@ namespace MSGer.tk
|
|||
|
||||
private void LoginNewUser(object sender, EventArgs e)
|
||||
{
|
||||
System.Diagnostics.Process.Start("MSGer.tk.exe");
|
||||
Storage.Save(true); //2014.09.19.
|
||||
//System.Diagnostics.Process.Start("MSGer.tk.exe");
|
||||
Process.Start(((Program.ProcessName.Contains("vshost")) ? Program.ProcessName.Replace(".vshost", "") : Program.ProcessName) + ".exe", "multi");
|
||||
}
|
||||
|
||||
public void SetOnlineState(object sender, EventArgs e)
|
||||
|
@ -248,19 +429,45 @@ namespace MSGer.tk
|
|||
state = 2;
|
||||
if (sender == nincsAGépnélToolStripMenuItem)
|
||||
state = 3;
|
||||
if (sender == rejtveKapcsolódikToolStripMenuItem)
|
||||
state = 4;
|
||||
//if (sender == rejtveKapcsolódikToolStripMenuItem) //Ha rejtve van, hagyja 0-n a state változót, azaz küldje el azt, hogy nincs bejelentkezve
|
||||
//state = 4;
|
||||
if (sender == null) //2014.08.30. - Erre nagyon sokáig nem volt felkészítve, és ezt kihasználtam a kijelentkezéshez
|
||||
{
|
||||
Networking.SendRequest("setstate", 0 + "", 0, true); //Kijelentkezés
|
||||
//byte[] tmpb = Encoding.Unicode.GetBytes(Storage.Settings["myip"]);
|
||||
byte[] tmpb = Encoding.Unicode.GetBytes(CurrentUser.IP.ToString());
|
||||
byte[] sendb = new byte[4 + tmpb.Length];
|
||||
Array.Copy(BitConverter.GetBytes(tmpb.Length), sendb, 4);
|
||||
Array.Copy(tmpb, 0, sendb, 4, tmpb.Length);
|
||||
Networking.SendUpdate(Networking.UpdateType.LogoutUser, sendb, false);
|
||||
}
|
||||
CurrentUser.State = state; //2014.08.28.
|
||||
//HTTP
|
||||
if (Networking.SendRequest("setstate", state + "", 0, true) != "Success")
|
||||
MessageBox.Show("Hiba történt az állapot beállitása során.");
|
||||
//if (!Networking.SendUpdate(Networking.UpdateType.SetState, BitConverter.GetBytes(state), false)[0].Contains((byte)0x01))
|
||||
//var ret = Networking.SendUpdate(Networking.UpdateType.SetState, BitConverter.GetBytes(state), false); - 2014.09.09. - A CurrentUser.State-nél már elküldi
|
||||
//if (ret == null || !ret[0].Contains((byte)0x01))
|
||||
/*if (ret == null || ret.Length == 0)
|
||||
return;
|
||||
bool ok = false;
|
||||
for (int i = 0; i < ret.Length; i++)
|
||||
{
|
||||
if(ret[i][4]==0x01) //Az első 4 byte a UserID
|
||||
{
|
||||
ok = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!ok)
|
||||
MessageBox.Show(Language.Translate("setstate_error"));*/
|
||||
}
|
||||
|
||||
private void SelectPartner(object sender, EventArgs e)
|
||||
{
|
||||
SelectPartnerSender = (ToolStripMenuItem)sender;
|
||||
DialogResult dr = new DialogResult();
|
||||
var form = new SelectPartnerForm();
|
||||
dr = form.ShowDialog();
|
||||
//SelectPartnerSender = (ToolStripMenuItem)sender;
|
||||
//DialogResult dr = new DialogResult();
|
||||
var form = new SelectPartnerForm((ToolStripMenuItem)sender);
|
||||
//dr = form.ShowDialog();
|
||||
DialogResult dr = form.ShowDialog();
|
||||
if (dr == DialogResult.OK)
|
||||
{
|
||||
//2014.04.25.
|
||||
|
@ -270,14 +477,17 @@ namespace MSGer.tk
|
|||
{
|
||||
if (partners[i] != "") //2014.04.17.
|
||||
{
|
||||
for (int j = 0; j < UserInfo.Partners.Count; j++)
|
||||
for (int j = 0; j < UserInfo.KnownUsers.Count; j++)
|
||||
{
|
||||
if (!UserInfo.KnownUsers[j].IsPartner)
|
||||
continue;
|
||||
int tmp; //2014.04.17.
|
||||
if (!Int32.TryParse(partners[i], out tmp))
|
||||
tmp = -1;
|
||||
if (UserInfo.Partners[j].UserName == partners[i] || UserInfo.Partners[j].Email == partners[i] || UserInfo.Partners[j].UserID == tmp)
|
||||
if (UserInfo.KnownUsers[j].UserName == partners[i] || UserInfo.KnownUsers[j].Email == partners[i] || UserInfo.KnownUsers[j].UserID == tmp)
|
||||
{ //Egyezik a név, E-mail vagy ID - UserName: 2014.04.17.
|
||||
tmpchat.ChatPartners.Add(j); //A Partners-beli indexét adja meg
|
||||
//tmpchat.ChatPartners.Add(j); //A Partners-beli indexét adja meg
|
||||
tmpchat.ChatPartners.Add(UserInfo.KnownUsers[j].UserID); //2014.08.28.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -285,129 +495,48 @@ namespace MSGer.tk
|
|||
if (tmpchat.ChatPartners.Count != 0)
|
||||
{
|
||||
ChatForm.ChatWindows.Add(tmpchat);
|
||||
if (SelectPartnerSender == fájlKüldéseToolStripMenuItem)
|
||||
//if (SelectPartnerSender == fájlKüldéseToolStripMenuItem)
|
||||
if (sender == fájlKüldéseToolStripMenuItem)
|
||||
{
|
||||
tmpchat.Show();
|
||||
tmpchat.OpenSendFile(form);
|
||||
}
|
||||
if (SelectPartnerSender == azonnaliÜzenetKüldéseToolStripMenuItem)
|
||||
//if (SelectPartnerSender == azonnaliÜzenetKüldéseToolStripMenuItem)
|
||||
if (sender == azonnaliÜzenetKüldéseToolStripMenuItem)
|
||||
{
|
||||
tmpchat.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public delegate int MyDelegate();
|
||||
public void UpdatePartnerList()
|
||||
{
|
||||
while (PartnerListThreadActive && MainThread.IsAlive)
|
||||
{
|
||||
string[] row = Networking.SendRequest("getlist", "", 0, true).Split('ͦ'); //Lekéri a listát, és különválogatja egyben - 2014.02.28.
|
||||
CurrentUser.Name = row[0];
|
||||
CurrentUser.Message = row[1];
|
||||
CurrentUser.State = row[2];
|
||||
CurrentUser.UserName = row[3];
|
||||
CurrentUser.Email = row[4];
|
||||
|
||||
if (!this.IsDisposed)
|
||||
{
|
||||
this.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
List<int> tmp;
|
||||
if (Settings.Default.picupdatetime.Length != 0)
|
||||
tmp = Settings.Default.picupdatetime.Split(',').Select(s => Int32.Parse(s)).ToList<int>();
|
||||
else tmp = new List<int>();
|
||||
List<UserInfo> tmpuser = UserInfo.Partners;
|
||||
contactList.AutoUpdate = false;
|
||||
var items = new List<Control[]>();
|
||||
int i = 0;
|
||||
for (int x = 5; x < row.Length - 1; x += 6) //Ezt az egyetlen számot (x+=3) kell módositani, és máris alkalmazkodott a hozzáadott adathoz
|
||||
{ //-1: 2014.04.04. - A végére is odarak egy elválasztó jelet, ami miatt eggyel több elem lesz a tömbben
|
||||
if (row.Length < 5) //2014.03.19. - Ha nincs ismerőse
|
||||
break;
|
||||
for (int y = 0; y < UserInfo.Partners.Count; y++)
|
||||
{
|
||||
if (UserInfo.Partners[y] != null && Int32.Parse(row[x + 3]) == UserInfo.Partners[y].UserID) //Ha null az értéke, már nem is ellenőrzi a másik feltételt
|
||||
{ //Átrendezi a tömböt az új sorrendbe - Ha változott - 2014.03.07.
|
||||
tmpuser[i] = UserInfo.Partners[y];
|
||||
tmpuser[i].ListID = i; //És elmenti az új helyét - 2014.03.13.
|
||||
}
|
||||
}
|
||||
if (i >= tmpuser.Count)
|
||||
{
|
||||
tmpuser.Add(new UserInfo());
|
||||
}
|
||||
tmpuser[i].UserID = Int32.Parse(row[x + 3]); //Beállitja az ID-ket
|
||||
tmpuser[i].ListID = i;
|
||||
tmpuser[i].Name = row[x];
|
||||
tmpuser[i].Message = row[x + 1];
|
||||
tmpuser[i].State = row[x + 2];
|
||||
tmpuser[i].UserName = row[x + 4];
|
||||
tmpuser[i].Email = row[x + 5];
|
||||
string state = "";
|
||||
if (row[x + 2] == "1")
|
||||
state = " (Elérhető)";
|
||||
if (row[x + 2] == "2")
|
||||
state = " (Elfoglalt)";
|
||||
if (row[x + 2] == "3")
|
||||
state = " (Nincs a gépnél)";
|
||||
var oneitem = new Control[2];
|
||||
PictureBox item = new PictureBox();
|
||||
if (tmp.Count <= 1) //2014.04.28.
|
||||
tmp.Add(0);
|
||||
tmpuser[i].PicUpdateTime = tmp[i];
|
||||
string imgpath = tmpuser[i].GetImage();
|
||||
if (imgpath != "noimage.png" || File.Exists("noimage.png")) //2014.03.13.
|
||||
item.ImageLocation = imgpath;
|
||||
else
|
||||
MessageBox.Show("Az alap profilkép nem található.\nMásold be a noimage.png-t, vagy telepitsd újra a programot.\n(Ez az üzenet minden egyes ismerősödnél megjelenik.)", "Hiba");
|
||||
item.SizeMode = PictureBoxSizeMode.StretchImage;
|
||||
|
||||
oneitem[0] = item;
|
||||
ExRichTextBox item2 = new ExRichTextBox();
|
||||
item2.Text = row[x] + " " + state + "\n" + row[x + 1];
|
||||
item2 = TextFormat.Parse(item2);
|
||||
oneitem[1] = item2;
|
||||
items.Add(oneitem);
|
||||
i++;
|
||||
}
|
||||
Settings.Default.picupdatetime = String.Join(",", tmp.Select(ix => ix.ToString()).ToArray());
|
||||
UserInfo.Partners = tmpuser;
|
||||
contactList.Items.Clear();
|
||||
this.contactList.SetItems(items);
|
||||
contactList.AutoUpdate = true;
|
||||
contactList.Enabled = true;
|
||||
contactList.Refresh();
|
||||
});
|
||||
}
|
||||
Thread.Sleep(5000);
|
||||
}
|
||||
}
|
||||
//public delegate int MyDelegate();
|
||||
|
||||
private void ClearSearchBar(object sender, EventArgs e)
|
||||
{
|
||||
if(textBox1.Text=="Ismerősök keresése...")
|
||||
//if (textBox1.Text == "Ismerősök keresése...")
|
||||
if (textBox1.Text == Language.Translate("searchbar"))
|
||||
textBox1.Clear();
|
||||
}
|
||||
|
||||
private void PutTextInSearchBar(object sender, EventArgs e)
|
||||
{
|
||||
if (textBox1.Text == "")
|
||||
textBox1.Text = "Ismerősök keresése...";
|
||||
//textBox1.Text = "Ismerősök keresése...";
|
||||
textBox1.Text = Language.Translate("searchbar");
|
||||
}
|
||||
public static int RightClickedPartner = -1;
|
||||
private void ContactItemRightClick(object sender, MouseEventArgs e)
|
||||
{/*
|
||||
/*private void ContactItemRightClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button != MouseButtons.Right || contactList.HotItemIndex>=contactList.Items.Count)
|
||||
{ //Igy nem reagál arra sem, ha üres területre kattintunk
|
||||
return;
|
||||
}
|
||||
contactList.Items[contactList.HotItemIndex].Selected = true;
|
||||
RightClickedPartner = contactList.HotItemIndex;
|
||||
partnerMenu.Show(Cursor.Position);*/
|
||||
}
|
||||
private void OpenSendMessage(object sender, EventArgs e) //2014.03.02. 0:17
|
||||
{/*
|
||||
partnerMenu.Show(Cursor.Position);
|
||||
}*/
|
||||
/*private void OpenSendMessage(object sender, EventArgs e) //2014.03.02. 0:17
|
||||
{
|
||||
int tmp = contactList.HotItemIndex;
|
||||
if (RightClickedPartner == -1)
|
||||
RightClickedPartner = tmp;
|
||||
|
@ -435,13 +564,44 @@ namespace MSGer.tk
|
|||
ChatForm.ChatWindows[ChatNum].Focus();
|
||||
}
|
||||
|
||||
RightClickedPartner = -1;*/
|
||||
RightClickedPartner = -1;
|
||||
}*/
|
||||
|
||||
public static void OpenSendMessage(int uid)
|
||||
{
|
||||
//Üzenetküldő form
|
||||
int ChatNum = -1;
|
||||
//int uid = UserInfo.GetUserIDFromListID(e);
|
||||
for (int i = 0; i < ChatForm.ChatWindows.Count; i++)
|
||||
{
|
||||
if (ChatForm.ChatWindows[i].ChatPartners.Count == 1 && ChatForm.ChatWindows[i].ChatPartners.Contains(uid))
|
||||
{ //Vele, és csak vele beszél
|
||||
ChatNum = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (ChatNum == -1)
|
||||
{ //Nincs még chatablaka
|
||||
ChatForm.ChatWindows.Add(new ChatForm());
|
||||
ChatForm.ChatWindows[ChatForm.ChatWindows.Count - 1].ChatPartners.Add(uid);
|
||||
ChatForm.ChatWindows[ChatForm.ChatWindows.Count - 1].Show();
|
||||
ChatForm.ChatWindows[ChatForm.ChatWindows.Count - 1].Focus(); //2014.08.08.
|
||||
}
|
||||
else
|
||||
{
|
||||
ChatForm.ChatWindows[ChatNum].Show();
|
||||
ChatForm.ChatWindows[ChatNum].Focus();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnMainFormLoad(object sender, EventArgs e)
|
||||
{
|
||||
if (CurrentUser.UserID == 0)
|
||||
Program.Exit();
|
||||
|
||||
LoadPartnerList(); //Be kell töltenie a MainForm-nak, hogy hivatkozhasson rá
|
||||
|
||||
CurrentUser.SendChanges = true; //2014.08.30.
|
||||
}
|
||||
|
||||
private void InvitePartner(object sender, EventArgs e)
|
||||
|
@ -491,39 +651,49 @@ namespace MSGer.tk
|
|||
|
||||
private void contactList_ItemDoubleClicked(object sender, int e)
|
||||
{
|
||||
int tmp = e;
|
||||
if (RightClickedPartner == -1)
|
||||
RightClickedPartner = tmp;
|
||||
if (RightClickedPartner == -1 || RightClickedPartner >= contactList.Items.Count)
|
||||
return;
|
||||
//Üzenetküldő form
|
||||
int ChatNum = -1;
|
||||
for (int i = 0; i < ChatForm.ChatWindows.Count; i++)
|
||||
{
|
||||
if (ChatForm.ChatWindows[i].ChatPartners.Count == 1 && ChatForm.ChatWindows[i].ChatPartners.Contains(RightClickedPartner))
|
||||
{ //Vele, és csak vele beszél
|
||||
ChatNum = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (ChatNum == -1)
|
||||
{ //Nincs még chatablaka
|
||||
ChatForm.ChatWindows.Add(new ChatForm());
|
||||
ChatForm.ChatWindows[ChatForm.ChatWindows.Count - 1].ChatPartners.Add(RightClickedPartner);
|
||||
ChatForm.ChatWindows[ChatForm.ChatWindows.Count - 1].Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
ChatForm.ChatWindows[ChatNum].Show();
|
||||
ChatForm.ChatWindows[ChatNum].Focus();
|
||||
}
|
||||
|
||||
RightClickedPartner = -1;
|
||||
int uid = UserInfo.GetUserIDFromListID(e);
|
||||
OpenSendMessage(uid);
|
||||
}
|
||||
|
||||
private void bezárásToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Hide();
|
||||
}
|
||||
|
||||
private void információToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (RightClickedPartner == -1)
|
||||
return;
|
||||
/*string shownname = "";
|
||||
int status = 0;
|
||||
string message = "";
|
||||
string username = "";
|
||||
int userid = 0;
|
||||
string email = "";*/
|
||||
for (int i = 0; i < UserInfo.KnownUsers.Count; i++)
|
||||
{
|
||||
if (UserInfo.KnownUsers[i].ListID != RightClickedPartner)
|
||||
continue;
|
||||
(new PartnerInformation(UserInfo.KnownUsers[i])).ShowDialog();
|
||||
break;
|
||||
}
|
||||
//(new PartnerInformation(shownname, status, message, username, userid, email)).ShowDialog();
|
||||
}
|
||||
|
||||
private void contactList_ItemRightClicked(object sender, int e)
|
||||
{
|
||||
contactList.Items[e].Selected = true;
|
||||
RightClickedPartner = e;
|
||||
partnerMenu.Show(Cursor.Position);
|
||||
}
|
||||
|
||||
private void PartnerMenu_SendMessage(object sender, EventArgs e)
|
||||
{
|
||||
if (RightClickedPartner == -1)
|
||||
return;
|
||||
int uid = UserInfo.GetUserIDFromListID(RightClickedPartner);
|
||||
OpenSendMessage(uid);
|
||||
RightClickedPartner = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
5
MSGer.tk/Notifier.Designer.cs
generated
|
@ -36,15 +36,18 @@
|
|||
//
|
||||
// CloseButton
|
||||
//
|
||||
this.CloseButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.CloseButton.Location = new System.Drawing.Point(241, 12);
|
||||
this.CloseButton.Name = "CloseButton";
|
||||
this.CloseButton.Size = new System.Drawing.Size(31, 28);
|
||||
this.CloseButton.TabIndex = 0;
|
||||
this.CloseButton.TabStop = false;
|
||||
this.CloseButton.Click += new System.EventHandler(this.CloseButton_Click);
|
||||
//
|
||||
// Title
|
||||
//
|
||||
this.Title.AutoSize = true;
|
||||
this.Title.BackColor = System.Drawing.Color.Transparent;
|
||||
this.Title.Location = new System.Drawing.Point(35, 26);
|
||||
this.Title.Name = "Title";
|
||||
this.Title.Size = new System.Drawing.Size(33, 13);
|
||||
|
@ -54,6 +57,7 @@
|
|||
// Content
|
||||
//
|
||||
this.Content.AutoSize = true;
|
||||
this.Content.BackColor = System.Drawing.Color.Transparent;
|
||||
this.Content.Location = new System.Drawing.Point(12, 58);
|
||||
this.Content.Name = "Content";
|
||||
this.Content.Size = new System.Drawing.Size(33, 26);
|
||||
|
@ -80,7 +84,6 @@
|
|||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
||||
this.TopMost = true;
|
||||
this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
|
||||
((System.ComponentModel.ISupportInitialize)(this.CloseButton)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
|
|
@ -15,6 +15,8 @@ namespace MSGer.tk
|
|||
{ //2014.04.15.
|
||||
private Rectangle WorkAreaRectangle;
|
||||
private Timer NotifierTimer;
|
||||
|
||||
public event EventHandler CloseClick; //2014.08.29.
|
||||
public Notifier(string background, Color TransparentColor, string closebutton, int waittime) //waittime: 2014.04.17.
|
||||
{
|
||||
if (!File.Exists(background))
|
||||
|
@ -25,8 +27,12 @@ namespace MSGer.tk
|
|||
this.BackgroundImage = Image.FromFile(background);
|
||||
this.TransparencyKey = TransparentColor;
|
||||
CloseButton.ImageLocation = closebutton;
|
||||
this.Show();
|
||||
this.Hide();
|
||||
var size = Image.FromFile(closebutton).Size;
|
||||
CloseButton.Left = CloseButton.Right - size.Width; //2014.08.29.
|
||||
CloseButton.Width = size.Width; //2014.08.29.
|
||||
CloseButton.Height = size.Height; //2014.08.29.
|
||||
//this.Show();
|
||||
//this.Hide();
|
||||
NotifierTimer = new Timer();
|
||||
NotifierTimer.Interval = waittime;
|
||||
NotifierTimer.Tick += NotifierTimer_Tick;
|
||||
|
@ -38,14 +44,14 @@ namespace MSGer.tk
|
|||
this.Hide();
|
||||
}
|
||||
|
||||
public Notifier(Image background, Color TransparentColor, Image closebutton)
|
||||
public Notifier(Image background, Color TransparentColor, Image closebutton, int waittime) //waittime: 2014.08.28.
|
||||
{
|
||||
InitializeComponent();
|
||||
this.BackgroundImage = background;
|
||||
this.TransparencyKey = TransparentColor;
|
||||
CloseButton.Image = closebutton;
|
||||
this.Show();
|
||||
this.Hide();
|
||||
//this.Show();
|
||||
//this.Hide();
|
||||
}
|
||||
public void Show(string title, string content) //(kép) - 2014.04.15.
|
||||
{
|
||||
|
@ -53,9 +59,14 @@ namespace MSGer.tk
|
|||
Title.Text = title;
|
||||
Content.Text = content;
|
||||
this.WindowState = FormWindowState.Normal;
|
||||
SetBounds(WorkAreaRectangle.Right - BackgroundImage.Width - 17, WorkAreaRectangle.Bottom - 1, BackgroundImage.Width, 0);
|
||||
SetBounds(WorkAreaRectangle.Right - BackgroundImage.Width - 17, WorkAreaRectangle.Bottom - 100, BackgroundImage.Width, 100);
|
||||
this.Show();
|
||||
NotifierTimer.Start();
|
||||
}
|
||||
|
||||
private void CloseButton_Click(object sender, EventArgs e)
|
||||
{ //2014.08.29.
|
||||
CloseClick(sender, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,10 +3,13 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
@ -17,30 +20,57 @@ namespace MSGer.tk
|
|||
{
|
||||
static class Program
|
||||
{
|
||||
public static MainForm MainF;
|
||||
public static string ProcessName = Process.GetCurrentProcess().ProcessName;
|
||||
//public static BeforeLogin BeforeLForm;
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
public static MainForm MainF;
|
||||
[STAThread]
|
||||
static void Main()
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Process[] pname = Process.GetProcessesByName(ProcessName);
|
||||
if (pname.Length > 1 && !(args.Length > 0 && args[0] == "multi"))
|
||||
//Program.Exit(false);
|
||||
Environment.Exit(0); //2014.09.26. - Felesleges bármi más műveletet végrehajtani, még nem is töltött be semmit
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
BeforeLogin.Create();
|
||||
//BeforeLForm.Show();
|
||||
Console.WriteLine("Starting MSGer.tk...");
|
||||
AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException;
|
||||
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
||||
try
|
||||
{
|
||||
MainF = new MainForm();
|
||||
//Console.WriteLine("Test: " + MainF.Test(MainF.Text));
|
||||
//Console.WriteLine("Test: " + MainF.Test(MainF));
|
||||
Application.Run(MainF);
|
||||
}
|
||||
catch(FileNotFoundException e)
|
||||
catch (FileNotFoundException e)
|
||||
{
|
||||
MessageBox.Show("Egy fájl nem található.\nA fájl neve:\n" + e.FileName+"\nEnnél a műveletnél: "+e.TargetSite);
|
||||
MessageBox.Show("Egy fájl nem található.\nA fájl neve:\n" + e.FileName + "\nEnnél a műveletnél: " + e.TargetSite);
|
||||
|
||||
}
|
||||
catch(Exception e)
|
||||
/*catch(Exception e)
|
||||
{
|
||||
ErrorHandling.FormError(MainF, e);
|
||||
}*/
|
||||
}
|
||||
|
||||
public static readonly bool ShowFirstChangeExceptions = false;
|
||||
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||
{
|
||||
if (MessageBox.Show("An unhandled error occured\n" + ((Exception)e.ExceptionObject).Message + "\nHere: " + ((Exception)e.ExceptionObject).TargetSite + ((e.IsTerminating) ? "\nThe program will exit(?)." : "") + "\n\nExit?", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
||||
//Environment.Exit(0);
|
||||
Program.Exit(CurrentUser.UserID != 0); //2014.09.26. - Ha be van jelentkezve, elmenti a beállításokat - Csak mert így tán a legegyszerűbb
|
||||
}
|
||||
|
||||
static void CurrentDomain_FirstChanceException(object sender, System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs e)
|
||||
{
|
||||
if (ShowFirstChangeExceptions)
|
||||
MessageBox.Show("An error occured (a first change exception):\n" + e.Exception.Message + "\nHere: " + e.Exception.TargetSite);
|
||||
}
|
||||
|
||||
private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0,
|
||||
|
@ -55,85 +85,106 @@ namespace MSGer.tk
|
|||
return time.ToLocalTime();
|
||||
}
|
||||
|
||||
public static void Exit()
|
||||
{ //2014.04.12.
|
||||
public static string DateTimeToUnixTime(DateTime time) //2014.08.28.
|
||||
{
|
||||
return ((time.Ticks - 621355968000000000) / 10000000).ToString();
|
||||
}
|
||||
|
||||
private static void BeforeExit(bool savesettings)
|
||||
{ //2014.09.01.
|
||||
if (MainF != null)
|
||||
{
|
||||
MainF.Hide();
|
||||
MainF.toolStripMenuItem4.Enabled = false; //2014.04.12.
|
||||
MainF.toolStripMenuItem8.Enabled = false; //2014.04.12.
|
||||
MainF.notifyIcon1.Dispose(); //2014.08.28.
|
||||
if (CurrentUser.UserID != 0) //2014.04.18.
|
||||
{
|
||||
CurrentUser.SendChanges = false; //2014.08.30.
|
||||
MainF.SetOnlineState(null, null); //2014.04.12.)
|
||||
if (MainF.WindowState == FormWindowState.Maximized) //2014.04.18.
|
||||
Settings.Default.windowstate = 1;
|
||||
if (MainF.WindowState == FormWindowState.Maximized) //2014.04.18. - 2014.08.08.
|
||||
Storage.Settings["windowstate"] = "1";
|
||||
else if (MainF.WindowState == FormWindowState.Minimized)
|
||||
Settings.Default.windowstate = 2;
|
||||
Storage.Settings["windowstate"] = "2";
|
||||
else if (MainF.WindowState == FormWindowState.Normal)
|
||||
Settings.Default.windowstate = 3;
|
||||
Settings.Default.Save();
|
||||
Storage.Settings["windowstate"] = "3";
|
||||
//Settings.Default.Save();
|
||||
Storage.Save(true); //2014.08.07.
|
||||
}
|
||||
}
|
||||
if (savesettings) //2014.08.28.
|
||||
Storage.Save(false); //2014.08.08.
|
||||
if (Networking.ReceiverConnection != null)
|
||||
Networking.ReceiverConnection.Close();
|
||||
if (Networking.SenderConnection != null)
|
||||
Networking.SenderConnection.Close();
|
||||
}
|
||||
public static void Exit(bool savesettings)
|
||||
{ //2014.04.12.
|
||||
BeforeExit(savesettings);
|
||||
//CurrentUser.UserID = 0; - Felesleges, néha megáll itt, és úgy hajt végre egy bejelentkezést igénylő lekérést
|
||||
//Application.Exit();
|
||||
//Application.ExitThread();
|
||||
Environment.Exit(0); //Hatásosabb
|
||||
MessageBox.Show("Hiba: Nem sikerült leállítani a programot.");
|
||||
}
|
||||
public static void Exit()
|
||||
{ //2014.08.28. - Csak akkor ne mentse el a beállításokat, ha nem is töltötte még be őket
|
||||
Exit(true);
|
||||
}
|
||||
public static void Restart(bool savesettings)
|
||||
{ //2014.09.01.
|
||||
BeforeExit(savesettings);
|
||||
Process.Start(((ProcessName.Contains("vshost")) ? ProcessName.Replace(".vshost", "") : ProcessName) + ".exe");
|
||||
Environment.Exit(0);
|
||||
MessageBox.Show("Hiba: Nem sikerült leállítani a programot.");
|
||||
}
|
||||
static class Networking
|
||||
{
|
||||
private static int Tries = 0;
|
||||
public static string SendRequest(string action, string data, int remnum, bool loggedin) //2014.02.18.
|
||||
{
|
||||
#if LOCAL_SERVER //2014.07.07. 22:00
|
||||
HttpWebRequest httpWReq =
|
||||
(HttpWebRequest)WebRequest.Create("http://localhost/ChatWithWords/client.php");
|
||||
#else
|
||||
HttpWebRequest httpWReq =
|
||||
(HttpWebRequest)WebRequest.Create("http://msger.url.ph/client.php");
|
||||
#endif
|
||||
|
||||
ASCIIEncoding encoding = new ASCIIEncoding();
|
||||
string postData = "action=" + action;
|
||||
if (loggedin) //2014.03.14.
|
||||
postData += "&uid=" + CurrentUser.UserID;
|
||||
postData += "&key=cas1fe4a6feFEFEFE1616CE8099VFE1444cdasf48c1ase5dg";
|
||||
if (loggedin) //2014.03.14.
|
||||
postData += "&code=" + LoginForm.UserCode; //2014.02.13.
|
||||
postData += "&data=" + Uri.EscapeUriString(data); //2014.02.13.
|
||||
byte[] datax = encoding.GetBytes(postData);
|
||||
|
||||
httpWReq.Method = "POST";
|
||||
httpWReq.ContentType = "application/x-www-form-urlencoded";
|
||||
httpWReq.ContentLength = datax.Length;
|
||||
|
||||
using (Stream stream = httpWReq.GetRequestStream())
|
||||
{
|
||||
stream.Write(datax, 0, datax.Length);
|
||||
}
|
||||
|
||||
//Lista betöltése folyamatban...
|
||||
static class EnumerableExtensions
|
||||
{
|
||||
public static bool HasSameElementsAs<T>(
|
||||
this IEnumerable<T> first,
|
||||
IEnumerable<T> second
|
||||
)
|
||||
{
|
||||
var firstMap = first
|
||||
.GroupBy(x => x)
|
||||
.ToDictionary(x => x.Key, x => x.Count());
|
||||
var secondMap = second
|
||||
.GroupBy(x => x)
|
||||
.ToDictionary(x => x.Key, x => x.Count());
|
||||
return
|
||||
firstMap.Keys.All(x =>
|
||||
secondMap.Keys.Contains(x) && firstMap[x] == secondMap[x]
|
||||
) &&
|
||||
secondMap.Keys.All(x =>
|
||||
firstMap.Keys.Contains(x) && secondMap[x] == firstMap[x]
|
||||
);
|
||||
}
|
||||
|
||||
HttpWebResponse response;
|
||||
public static bool Test(this object A, object B)
|
||||
{
|
||||
return object.ReferenceEquals(A, B);
|
||||
}
|
||||
|
||||
try
|
||||
///
|
||||
/// Clones an object by using the .
|
||||
///
|
||||
/// The object to clone.
|
||||
///
|
||||
/// The object to be cloned must be serializable.
|
||||
///
|
||||
public static object Clone(object obj)
|
||||
{
|
||||
response = (HttpWebResponse)httpWReq.GetResponse();
|
||||
}
|
||||
catch (Exception e)
|
||||
using (MemoryStream buffer = new MemoryStream())
|
||||
{
|
||||
if (Tries > 10)
|
||||
{
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["error_network"] + ":\n" + e.Message + "\n\n" + Language.GetCuurentLanguage().Strings["error_network2"], Language.GetCuurentLanguage().Strings["error"]); //2014.04.25.
|
||||
Tries = 0;
|
||||
BinaryFormatter formatter = new BinaryFormatter();
|
||||
formatter.Serialize(buffer, obj);
|
||||
buffer.Position = 0;
|
||||
object temp = formatter.Deserialize(buffer);
|
||||
return temp;
|
||||
}
|
||||
Tries++;
|
||||
return SendRequest(action, data, remnum, loggedin); //Újrapróbálkozik
|
||||
}
|
||||
string responseString;
|
||||
responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
|
||||
return responseString;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("2.2.2.0")]
|
||||
[assembly: AssemblyFileVersion("2.2.2.0")]
|
||||
[assembly: AssemblyVersion("3.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("3.0.0.0")]
|
||||
|
|
|
@ -13,20 +13,22 @@ namespace MSGer.tk
|
|||
{
|
||||
public partial class SelectPartnerForm : Form
|
||||
{
|
||||
public SelectPartnerForm()
|
||||
public SelectPartnerForm(ToolStripMenuItem SelectPartnerSender) //paraméter: 2014.09.06.
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Text = MainForm.SelectPartnerSender.Text; //2014.02.28.
|
||||
titleText.Text = MainForm.SelectPartnerSender.Text;
|
||||
this.Text = SelectPartnerSender.Text; //2014.02.28.
|
||||
titleText.Text = SelectPartnerSender.Text;
|
||||
|
||||
cancelbtn.Text = Language.GetCuurentLanguage().Strings["button_cancel"];
|
||||
cancelbtn.Text = Language.Translate("button_cancel");
|
||||
|
||||
partnerList.Items.Clear();
|
||||
for (int x = 0; x < UserInfo.Partners.Count; x++) //Partners
|
||||
for (int x = 0; x < UserInfo.KnownUsers.Count; x++) //Partners
|
||||
{
|
||||
if (!UserInfo.KnownUsers[x].IsPartner)
|
||||
continue;
|
||||
try
|
||||
{
|
||||
partnerList.Items.Add(UserInfo.Partners[x].UserName);
|
||||
partnerList.Items.Add(UserInfo.KnownUsers[x].UserName);
|
||||
}
|
||||
catch (NullReferenceException)
|
||||
{
|
||||
|
|
|
@ -16,12 +16,12 @@ namespace MSGer.tk
|
|||
{
|
||||
InitializeComponent();
|
||||
listView1.Columns[0].Width = listView1.Width;
|
||||
this.Text = Language.GetCuurentLanguage().Strings["settings"];
|
||||
glacialList1.Items[0].Text = Language.GetCuurentLanguage().Strings["settings_personal"];
|
||||
personal.Text = Language.GetCuurentLanguage().Strings["settings_personal"];
|
||||
label1.Text = Language.GetCuurentLanguage().Strings["name"];
|
||||
label2.Text = Language.GetCuurentLanguage().Strings["message"];
|
||||
label3.Text = Language.GetCuurentLanguage().Strings["language"];
|
||||
this.Text = Language.Translate("settings");
|
||||
glacialList1.Items[0].Text = Language.Translate("settings_personal");
|
||||
personal.Text = Language.Translate("settings_personal");
|
||||
label1.Text = Language.Translate("name");
|
||||
label2.Text = Language.Translate("message");
|
||||
label3.Text = Language.Translate("language");
|
||||
nameText.Text = CurrentUser.Name;
|
||||
messageText.Text = CurrentUser.Message;
|
||||
|
||||
|
@ -49,30 +49,46 @@ namespace MSGer.tk
|
|||
|
||||
private void okbtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
string lang="en";
|
||||
string lang = "en";
|
||||
foreach (var lng in Language.UsedLangs)
|
||||
{
|
||||
if(listView1.SelectedItems[0].Text==lng.Value.Strings["currentlang"])
|
||||
if (lng.Value.Strings.ContainsKey("currentlang") && listView1.SelectedItems[0].Text == lng.Value.Strings["currentlang"])
|
||||
{
|
||||
lang = lng.Key;
|
||||
break;
|
||||
}
|
||||
}
|
||||
string result = Networking.SendRequest("updatesettings", nameText.Text + "ͦ" + messageText.Text, 0, true);
|
||||
if (result != "Success")
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["error"] + ": " + result);
|
||||
else
|
||||
//string result = Networking.SendRequest("updatesettings", nameText.Text + "ͦ" + messageText.Text, 0, true);
|
||||
//if (result != "Success")
|
||||
//MessageBox.Show(Language.Translate("error"] + ": " + result);
|
||||
//List<byte> bytes = new List<byte>();
|
||||
//bytes.AddRange(Encoding.Unicode.GetBytes(CurrentUser.UserID + "ͦ" + nameText.Text + "ͦ" + messageText.Text));
|
||||
//byte[][] result = Networking.SendUpdate(Networking.UpdateType.UpdateSettings, bytes.ToArray(), false);
|
||||
CurrentUser.Name = nameText.Text;
|
||||
CurrentUser.Message = messageText.Text;
|
||||
/*List<byte> bytes = new List<byte>();
|
||||
bytes.AddRange(BitConverter.GetBytes(CurrentUser.UserID));
|
||||
bytes.AddRange(BitConverter.GetBytes(CurrentUser.Name.Length));
|
||||
bytes.AddRange(Encoding.Unicode.GetBytes(CurrentUser.Name));
|
||||
bytes.AddRange(BitConverter.GetBytes(CurrentUser.Name.Length));
|
||||
bytes.AddRange(Encoding.Unicode.GetBytes(CurrentUser.Message));
|
||||
byte[][] result = Networking.SendUpdate(Networking.UpdateType.ListUpdate, bytes.ToArray(), false);
|
||||
if (result==null || !result[0].All(b => b == 0x00)) //Ha nincs online felhasználó, akkor is továbbhalad
|
||||
{*/ //Azért nem kell ez az egész fentebbi rész, mert minden egyes változást elküld mindenkinek
|
||||
if (Storage.Settings["lang"] != lang)
|
||||
{
|
||||
if (Settings.Default.lang != lang)
|
||||
{
|
||||
Settings.Default.lang = lang;
|
||||
Settings.Default.Save();
|
||||
MessageBox.Show(Language.GetCuurentLanguage().Strings["restart_needed"]);
|
||||
System.Diagnostics.Process.Start("msger.tk.exe");
|
||||
Environment.Exit(0);
|
||||
Storage.Settings["lang"] = lang;
|
||||
//Settings.Default.Save();
|
||||
MessageBox.Show(Language.Translate("restart_needed"));
|
||||
//System.Diagnostics.Process.Start("msger.tk.exe");
|
||||
//Environment.Exit(0);
|
||||
//Program.Exit();
|
||||
Program.Restart(true);
|
||||
}
|
||||
this.Close();
|
||||
}
|
||||
/*}
|
||||
else //Ha az összes ismert címről hibajelentés érkezik, jelezze a hibát
|
||||
MessageBox.Show(Language.Translate("error"));*/
|
||||
}
|
||||
|
||||
private void cancelbtn_Click(object sender, EventArgs e)
|
||||
|
|
|
@ -4,6 +4,10 @@ using System.Linq;
|
|||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using Khendys.Controls;
|
||||
using SzNPProjects;
|
||||
using System.Net;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
|
@ -13,58 +17,94 @@ namespace MSGer.tk
|
|||
* 2014.03.07.
|
||||
* Az összes szükséges felhasználó szükséges adatai
|
||||
*/
|
||||
public int UserID { get; set; } //Az egész rendszerben egyedi azonosítója
|
||||
public int ListID { get; set; } //A listabeli azonosítója
|
||||
public static List<UserInfo> Partners = new List<UserInfo>();
|
||||
private string name;
|
||||
//public int UserID { get; set; } //Az egész rendszerben egyedi azonosítója
|
||||
//public int ListID { get; set; } //A listabeli azonosítója
|
||||
//public static List<UserInfo> Partners = new List<UserInfo>();
|
||||
public static List<UserInfo> KnownUsers = new List<UserInfo>(); //2014.08.28.
|
||||
public int UserID //Az egész rendszerben egyedi azonosítója
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int ListID //A listabeli azonosítója
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_listid"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_listid", "-1");
|
||||
return Int32.Parse(Storage.LoggedInSettings["userinfo_" + UserID + "_listid"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_listid"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_listid", "-1");
|
||||
Storage.LoggedInSettings["userinfo_" + UserID + "_listid"] = value.ToString();
|
||||
//UpdateListID - 2014.08.30.
|
||||
}
|
||||
}
|
||||
//private string name;
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return name;
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_name"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_name", "");
|
||||
return Storage.LoggedInSettings["userinfo_" + UserID + "_name"];
|
||||
}
|
||||
set
|
||||
{
|
||||
name = value;
|
||||
List<int> list=GetChatWindows();
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_name"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_name", "");
|
||||
Storage.LoggedInSettings["userinfo_" + UserID + "_name"] = value;
|
||||
/*List<int> list=GetChatWindows();
|
||||
for (int i = 0; i < list.Count; i++)
|
||||
{
|
||||
if (ChatForm.ChatWindows != null && ChatForm.ChatWindows[list[i]] != null && !ChatForm.ChatWindows[list[i]].IsDisposed)
|
||||
{ //ChatForm
|
||||
}
|
||||
}*/
|
||||
Update();
|
||||
}
|
||||
}
|
||||
}
|
||||
private string message;
|
||||
//private string message;
|
||||
public string Message
|
||||
{
|
||||
get
|
||||
{
|
||||
return message;
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_message"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_message", "");
|
||||
return Storage.LoggedInSettings["userinfo_" + UserID + "_message"];
|
||||
}
|
||||
set
|
||||
{
|
||||
message = value;
|
||||
List<int> list = GetChatWindows();
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_message"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_message", "");
|
||||
Storage.LoggedInSettings["userinfo_" + UserID + "_message"] = value;
|
||||
/*List<int> list = GetChatWindows();
|
||||
for (int i = 0; i < list.Count; i++)
|
||||
{
|
||||
if (ChatForm.ChatWindows != null && ChatForm.ChatWindows[list[i]] != null && !ChatForm.ChatWindows[list[i]].IsDisposed)
|
||||
{ //ChatForm
|
||||
}
|
||||
}*/
|
||||
Update();
|
||||
}
|
||||
}
|
||||
}
|
||||
private string state;
|
||||
public string State
|
||||
//private int state;
|
||||
public int State
|
||||
{
|
||||
get
|
||||
{
|
||||
return state;
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_state"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_state", "-1");
|
||||
return Int32.Parse(Storage.LoggedInSettings["userinfo_" + UserID + "_state"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
state = value;
|
||||
List<int> list = GetChatWindows();
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_state"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_state", "-1");
|
||||
Storage.LoggedInSettings["userinfo_" + UserID + "_state"] = value.ToString();
|
||||
/*List<int> list = GetChatWindows();
|
||||
for (int i = 0; i < list.Count; i++)
|
||||
{
|
||||
if (ChatForm.ChatWindows != null && ChatForm.ChatWindows[list[i]] != null && !ChatForm.ChatWindows[list[i]].IsDisposed)
|
||||
|
@ -72,29 +112,140 @@ namespace MSGer.tk
|
|||
string tmp = "Hiba";
|
||||
switch (value)
|
||||
{
|
||||
case "0":
|
||||
tmp = Language.GetCuurentLanguage().Strings["offline"];
|
||||
case 0:
|
||||
tmp = Language.Translate("offline");
|
||||
break;
|
||||
case "1":
|
||||
tmp = Language.GetCuurentLanguage().Strings["menu_file_status_online"];
|
||||
case 1:
|
||||
tmp = Language.Translate("menu_file_status_online");
|
||||
break;
|
||||
case "2":
|
||||
tmp = Language.GetCuurentLanguage().Strings["menu_file_status_busy"];
|
||||
case 2:
|
||||
tmp = Language.Translate("menu_file_status_busy");
|
||||
break;
|
||||
case "3":
|
||||
tmp = Language.GetCuurentLanguage().Strings["menu_file_status_away"];
|
||||
case 3:
|
||||
tmp = Language.Translate("menu_file_status_away");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
Update();
|
||||
}
|
||||
}
|
||||
//public string UserName { get; set; }
|
||||
//public string Email { get; set; }
|
||||
public string UserName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_username"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_username", "");
|
||||
return Storage.LoggedInSettings["userinfo_" + UserID + "_username"];
|
||||
}
|
||||
public string UserName { get; set; }
|
||||
public string Email { get; set; }
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_username"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_username", "");
|
||||
Storage.LoggedInSettings["userinfo_" + UserID + "_username"] = value;
|
||||
Update();
|
||||
}
|
||||
}
|
||||
public string Email
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_email"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_email", "");
|
||||
return Storage.LoggedInSettings["userinfo_" + UserID + "_email"];
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_email"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_email", "");
|
||||
Storage.LoggedInSettings["userinfo_" + UserID + "_email"] = value;
|
||||
Update();
|
||||
}
|
||||
}
|
||||
public bool IsPartner
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_ispartner"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_ispartner", "False");
|
||||
return bool.Parse(Storage.LoggedInSettings["userinfo_" + UserID + "_ispartner"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_ispartner"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_ispartner", "False");
|
||||
Storage.LoggedInSettings["userinfo_" + UserID + "_ispartner"] = value.ToString();
|
||||
Update();
|
||||
}
|
||||
}
|
||||
public int LastUpdate
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_lastupdate"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_lastupdate", "0");
|
||||
return Int32.Parse(Storage.LoggedInSettings["userinfo_" + UserID + "_lastupdate"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_lastupdate"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_lastupdate", "0");
|
||||
Storage.LoggedInSettings["userinfo_" + UserID + "_lastupdate"] = value.ToString();
|
||||
Update();
|
||||
}
|
||||
}
|
||||
public string LoginCode
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_logincode"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_logincode", "0");
|
||||
return Storage.LoggedInSettings["userinfo_" + UserID + "_logincode"];
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_logincode"))
|
||||
Storage.LoggedInSettings.Add("userinfo_" + UserID + "_logincode", "0");
|
||||
Storage.LoggedInSettings["userinfo_" + UserID + "_logincode"] = value;
|
||||
Update();
|
||||
}
|
||||
}
|
||||
private static HashSet<IPEndPoint> ips = new HashSet<IPEndPoint>();
|
||||
public static HashSet<IPEndPoint> IPs
|
||||
{
|
||||
get
|
||||
{
|
||||
return ips;
|
||||
}
|
||||
set
|
||||
{
|
||||
ips = value;
|
||||
}
|
||||
}
|
||||
private static List<IPEndPoint> bannedips = new List<IPEndPoint>();
|
||||
public static List<IPEndPoint> BannedIPs
|
||||
{
|
||||
get
|
||||
{
|
||||
return bannedips;
|
||||
}
|
||||
set
|
||||
{
|
||||
bannedips = value;
|
||||
}
|
||||
}
|
||||
public static int BanTime { get; set; }
|
||||
|
||||
|
||||
public UserInfo()
|
||||
{
|
||||
|
||||
//Console.WriteLine("Creating UserInfo."); //2014.10.09.
|
||||
}
|
||||
~UserInfo() //2014.10.09.
|
||||
{
|
||||
//Console.WriteLine("UserInfo destroying."); //2014.10.09.
|
||||
}
|
||||
public int PicUpdateTime = 0;
|
||||
public string GetImage()
|
||||
|
@ -107,36 +258,284 @@ namespace MSGer.tk
|
|||
* Eltárol helyileg is egy dátumot, és ha már frissitette egyszer a képet (újabb a helyi dátum, mint az adatbázisban),
|
||||
* akkor nem csinál semmit. Ha régebbi, akkor a partner azóta frissitette, tehát szükséges a letöltés.
|
||||
*/
|
||||
string str = Networking.SendRequest("getimage", UserID + "ͦ" + PicUpdateTime, 2, true); //SetVars
|
||||
string tmp = Path.GetTempPath();
|
||||
if (!Directory.Exists(tmp + "\\MSGer.tk\\pictures")) //2014.08.16. - Áthelyezve, hogy mindig létrehozza, ha kell, és letöltse a képeket
|
||||
Directory.CreateDirectory(tmp + "\\MSGer.tk\\pictures");
|
||||
|
||||
//2014.08.16. - A képeket azért nem menti felhasználónként, mert úgyis le tudja tölteni mindenkinek a képét szinte bárki, és amúgy is UserID-val van azonosítva
|
||||
List<byte> sendb = new List<byte>();
|
||||
sendb.AddRange(BitConverter.GetBytes(CurrentUser.UserID));
|
||||
sendb.AddRange(BitConverter.GetBytes(UserID));
|
||||
sendb.AddRange(BitConverter.GetBytes((File.Exists(tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png")) ? PicUpdateTime : 0));
|
||||
byte[][] bytesb = Networking.SendUpdate(Networking.UpdateType.GetImage, sendb.ToArray(), false);
|
||||
if (bytesb == null || bytesb.All(entry => entry.Length == 0)) //bytesb.All(...): 2014.09.01.
|
||||
{
|
||||
if (File.Exists(tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"))
|
||||
return tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png";
|
||||
else
|
||||
return "noimage.png";
|
||||
}
|
||||
bytesb = bytesb.Select(entry => Networking.ParsePacket(entry).Data).ToArray();
|
||||
//int[] picupdatetimes = bytesb.Select(b => BitConverter.ToInt32(b, 4)).ToArray(); //Az első 4 byte a UserID
|
||||
int[] picupdatetimes = bytesb.Select(b => BitConverter.ToInt32(b, 0)).ToArray();
|
||||
int maxIndex = Array.IndexOf<int>(picupdatetimes, picupdatetimes.Max());
|
||||
byte[] bytes = bytesb[maxIndex]; //Attól tölti le a képet, akinek a legfrissebb
|
||||
|
||||
/*
|
||||
* Ez a funkció automatikusan elküldi a bejelentkezett felhasználó azonositóját,
|
||||
* a PHP szkript pedig leellenőrzi, hogy egymásnak partnerei-e, ezáltal nem nézheti meg akárki akárkinek a profilképét
|
||||
* (pedig a legtöbb helyen igy van, de szerintem jobb igy; lehet, hogy beállithatóvá teszem)
|
||||
*/
|
||||
if (str == "Fail")
|
||||
//if (str == "Fail" || str.Contains("NoChange"))
|
||||
if (bytes[0] == 0x00) //Nincs kép, vagy hiba történt
|
||||
{
|
||||
return "noimage.png";
|
||||
}
|
||||
else if (bytes[0] == 0x01)
|
||||
{
|
||||
return tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png";
|
||||
}
|
||||
else
|
||||
{ //Mentse el a képet
|
||||
string tmp = Path.GetTempPath();
|
||||
if (!Directory.Exists(tmp + "\\MSGer.tk\\pictures"))
|
||||
Directory.CreateDirectory(tmp + "\\MSGer.tk\\pictures");
|
||||
File.WriteAllText(tmp + "\\MSGer.tk\\pictures\\" + ListID + ".png", str);
|
||||
//string tmp = Path.GetTempPath();
|
||||
//if (!Directory.Exists(tmp + "\\MSGer.tk\\pictures"))
|
||||
//Directory.CreateDirectory(tmp + "\\MSGer.tk\\pictures");
|
||||
//File.WriteAllText(tmp + "\\MSGer.tk\\pictures\\" + ListID + ".png", str);
|
||||
File.WriteAllBytes(tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png", bytes);
|
||||
return tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; //2014.08.16.
|
||||
}
|
||||
return "noimage.png";
|
||||
//return "noimage.png";
|
||||
}
|
||||
public List<int> GetChatWindows()
|
||||
{
|
||||
List<int> retlist = new List<int>();
|
||||
for(int x=0; x<ChatForm.ChatWindows.Count; x++)
|
||||
for (int x = 0; x < ChatForm.ChatWindows.Count; x++)
|
||||
{
|
||||
if(ChatForm.ChatWindows[x].ChatPartners.Contains(ListID))
|
||||
if (ChatForm.ChatWindows[x].ChatPartners.Contains(UserID))
|
||||
{
|
||||
retlist.Add(x);
|
||||
}
|
||||
}
|
||||
return retlist;
|
||||
//return ChatForm.ChatWindows.FindAll(entry => entry.ChatPartners.Contains(UserID)).Select(cform => (ChatForm.ChatWindows.IndexOf(cform))); - 2014.09.19.
|
||||
}
|
||||
/*public static int GetListIDFromUserID(int UserID)
|
||||
{
|
||||
for (int i = 0; i < UserInfo.KnownUsers.Count; i++)
|
||||
{
|
||||
if (UserInfo.KnownUsers[i].IsPartner && UserInfo.KnownUsers[i].UserID == UserID)
|
||||
return UserInfo.KnownUsers[i].ListID;
|
||||
}
|
||||
return 0;
|
||||
}*/
|
||||
public static void Load()
|
||||
{
|
||||
foreach (var entry in Storage.LoggedInSettings)
|
||||
{
|
||||
string[] tmp = entry.Key.Split('_');
|
||||
if (tmp[0] != "userinfo")
|
||||
continue;
|
||||
var tmp2 = new UserInfo();
|
||||
tmp2.UserID = Int32.Parse(tmp[1]);
|
||||
if (!IDIsInList(KnownUsers, tmp2.UserID))
|
||||
KnownUsers.Add(tmp2);
|
||||
}
|
||||
}
|
||||
public static bool IDIsInList(List<UserInfo> list, int userid)
|
||||
{
|
||||
/*foreach(var entry in list)
|
||||
{
|
||||
if (entry.UserID == userid)
|
||||
return true;
|
||||
}
|
||||
return false;*/
|
||||
return (list.Count(entry => entry.UserID == userid) > 0); //2014.09.19.
|
||||
}
|
||||
public static UserInfo Select(int userid)
|
||||
{
|
||||
/*for (int i = 0; i < KnownUsers.Count; i++)
|
||||
{
|
||||
if (KnownUsers[i].UserID == userid)
|
||||
{
|
||||
return KnownUsers[i];
|
||||
}
|
||||
}
|
||||
return null;*/
|
||||
try
|
||||
{
|
||||
return KnownUsers.Single(entry => entry.UserID == userid); //2014.09.19.
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
public static int GetUserIDFromListID(int ListID)
|
||||
{
|
||||
for (int i = 0; i < UserInfo.KnownUsers.Count; i++)
|
||||
{
|
||||
if (UserInfo.KnownUsers[i].IsPartner && UserInfo.KnownUsers[i].ListID == ListID)
|
||||
return UserInfo.KnownUsers[i].UserID;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
public static bool AutoUpdate { get; set; }
|
||||
private Timer UpdateTimer = new Timer(); //2014.09.26. - Csak másodpercenként frissíti az ismerőslistát
|
||||
public void Update()
|
||||
{
|
||||
if (!IsPartner || !AutoUpdate)
|
||||
return;
|
||||
if (!UpdateTimer.Enabled)
|
||||
{
|
||||
UpdateTimer.Interval = 500;
|
||||
UpdateTimer.Tick += UpdateTimerTick;
|
||||
UpdateTimer.Start();
|
||||
}
|
||||
//Partnerlista frissítése
|
||||
/*if (Program.MainF.contactList.Items.Count >= ListID)
|
||||
Program.MainF.contactList.Items.Add(new RichListViewItem());
|
||||
var item = Program.MainF.contactList.Items[ListID];*/
|
||||
/*var pictb = new PictureBox();
|
||||
string imgpath = this.GetImage();
|
||||
if (imgpath != "noimage.png" || File.Exists("noimage.png")) //2014.03.13.
|
||||
pictb.ImageLocation = imgpath;
|
||||
else
|
||||
MessageBox.Show(Language.Translate("noimage_notfound"), "Hiba");
|
||||
pictb.SizeMode = PictureBoxSizeMode.Zoom; //Megváltoztatva ScretchImage-ről
|
||||
var listtext = new ExRichTextBox();
|
||||
string state = "";
|
||||
if (this.State == 1)
|
||||
state = " (" + Language.Translate("menu_file_status_online") + ")";
|
||||
else if (this.State == 2)
|
||||
state = " (" + Language.Translate("menu_file_status_busy") + ")";
|
||||
else if (this.State == 3)
|
||||
state = " (" + Language.Translate("menu_file_status_away") + ")";
|
||||
else if (this.State == 0)
|
||||
state = " (" + Language.Translate("offline") + ")";
|
||||
else
|
||||
state = " (" + Language.Translate("networking_alone") + ")";
|
||||
listtext.Text = this.Name + state + "\n" + this.Message;
|
||||
listtext = TextFormat.Parse(listtext);
|
||||
//item.SubItems = new Control[] { pictb, listtext };
|
||||
|
||||
//if (ListID != -1)
|
||||
//{
|
||||
if (ListID == -1)
|
||||
ListID = Program.MainF.contactList.Items.Count;
|
||||
if (Program.MainF.contactList.Items.Count > ListID)
|
||||
Program.MainF.contactList.Items.RemoveAt(ListID);
|
||||
Program.MainF.contactList.Items.Insert(ListID, new RichListViewItem(new Control[] { pictb, listtext }));*/
|
||||
/*if (Program.MainF.contactList.Items.Count <= ListID) //2014.09.26.
|
||||
{ - Rájöttem, hogy amit eddig csináltam, az volt a legjobb - Ha egy elem változik, azt nem tudja érzékelni, csak a törlést és a hozzáadást
|
||||
Program.MainF.contactList.Items.Insert(ListID, new RichListViewItem(new Control[] { pictb, listtext }));
|
||||
}*/
|
||||
//Program.MainF.contactList.Items[ListID].SubItems[0] = pictb;
|
||||
//Program.MainF.contactList.Items[ListID].SubItems[1] = listtext;
|
||||
//Program.MainF.contactList.Items[ListID] = new RichListViewItem(new Control[] { pictb, listtext });
|
||||
//}
|
||||
}
|
||||
|
||||
private void UpdateTimerTick(object sender, EventArgs e)
|
||||
{
|
||||
UpdateTimer.Stop();
|
||||
//Partnerlista frissítése
|
||||
/*var pictb = new PictureBox();
|
||||
string imgpath = this.GetImage();
|
||||
if (imgpath != "noimage.png" || File.Exists("noimage.png")) //2014.03.13.
|
||||
pictb.ImageLocation = imgpath;
|
||||
else
|
||||
MessageBox.Show(Language.Translate("noimage_notfound"), "Hiba");
|
||||
pictb.SizeMode = PictureBoxSizeMode.Zoom; //Megváltoztatva ScretchImage-ről
|
||||
var listtext = new ExRichTextBox();
|
||||
string state = "";
|
||||
if (this.State == 1)
|
||||
state = " (" + Language.Translate("menu_file_status_online") + ")";
|
||||
else if (this.State == 2)
|
||||
state = " (" + Language.Translate("menu_file_status_busy") + ")";
|
||||
else if (this.State == 3)
|
||||
state = " (" + Language.Translate("menu_file_status_away") + ")";
|
||||
else //if (this.State == 0)
|
||||
state = " (" + Language.Translate("offline") + ")";
|
||||
*else
|
||||
state = " (" + Language.Translate("networking_alone") + ")";*
|
||||
listtext.Text = this.Name + state + "\n" + this.Message;
|
||||
listtext = TextFormat.Parse(listtext);*/
|
||||
//2014.10.09.
|
||||
string imgpath = this.GetImage();
|
||||
if (!(imgpath != "noimage.png" || File.Exists("noimage.png"))) //2014.03.13. - 2014.10.09.
|
||||
{
|
||||
imgpath = "";
|
||||
MessageBox.Show(Language.Translate("noimage_notfound"), Language.Translate("error"));
|
||||
}
|
||||
string state = "";
|
||||
if (this.State == 1)
|
||||
state = " (" + Language.Translate("menu_file_status_online") + ")";
|
||||
else if (this.State == 2)
|
||||
state = " (" + Language.Translate("menu_file_status_busy") + ")";
|
||||
else if (this.State == 3)
|
||||
state = " (" + Language.Translate("menu_file_status_away") + ")";
|
||||
else //if (this.State == 0)
|
||||
state = " (" + Language.Translate("offline") + ")";
|
||||
string text = this.Name + state + "\n" + this.Message;
|
||||
|
||||
if (ListID == -1)
|
||||
{
|
||||
//ListID = Program.MainF.contactList.Items.Except(Program.MainF.contactList.Items.TakeWhile(entry => entry.SubItems[1].Text != "")).TakeWhile(entry => entry.SubItems[1].Text == "").Count();
|
||||
int i;
|
||||
for (i = 0; i < Program.MainF.contactList.Items.Count; i++)
|
||||
{
|
||||
if (Program.MainF.contactList.Items[i].SubItems[1].Text == "")
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
ListID = i;
|
||||
}
|
||||
/*if (Program.MainF.contactList.Items.Count > ListID)
|
||||
Program.MainF.contactList.Items.RemoveAt(ListID);
|
||||
else //Ha nincs elég eleme a listának
|
||||
{
|
||||
int i = Program.MainF.contactList.Items.Count;
|
||||
do
|
||||
{
|
||||
Program.MainF.contactList.Items.Insert(i, new RichListViewItem());
|
||||
} while (Program.MainF.contactList.Items.Count <= ListID);
|
||||
}
|
||||
Program.MainF.contactList.Items.Insert(ListID, new RichListViewItem(new Control[] { pictb, listtext }));*/
|
||||
//2014.10.09.
|
||||
bool tmp = Program.MainF.contactList.AutoUpdate;
|
||||
Program.MainF.contactList.AutoUpdate = false;
|
||||
while (Program.MainF.contactList.Items.Count <= ListID) //Azt is adja hozzá, ami a kész listaelem lesz
|
||||
{
|
||||
var pictb = new PictureBox();
|
||||
pictb.SizeMode = PictureBoxSizeMode.Zoom;
|
||||
pictb.ImageLocation = imgpath;
|
||||
var listtext = new ExRichTextBox();
|
||||
listtext.Text = text;
|
||||
listtext = TextFormat.Parse(listtext);
|
||||
Program.MainF.contactList.Items.Add(new RichListViewItem(new Control[] { pictb, listtext }));
|
||||
//System.Threading.Thread.Sleep(1000);
|
||||
}
|
||||
((PictureBox)Program.MainF.contactList.Items[ListID].SubItems[0]).ImageLocation = imgpath;
|
||||
Program.MainF.contactList.Items[ListID].SubItems[1].Text = text;
|
||||
Program.MainF.contactList.Items[ListID].SubItems[1] = TextFormat.Parse((ExRichTextBox)Program.MainF.contactList.Items[ListID].SubItems[1]);
|
||||
Program.MainF.contactList.AutoUpdate = tmp;
|
||||
}
|
||||
/*public static void AddCurrentUser()
|
||||
{ //2014.09.01.
|
||||
if (UserInfo.Select(CurrentUser.UserID) != null)
|
||||
return;
|
||||
var tmp = new UserInfo();
|
||||
tmp.Email = CurrentUser.Email;
|
||||
tmp.IsPartner = false; //Ha még nem adta hozzá, nem ismerősök
|
||||
tmp.LastUpdate = Int32.Parse(Program.DateTimeToUnixTime(DateTime.Now));
|
||||
tmp.Message = CurrentUser.Message;
|
||||
tmp.Name = CurrentUser.Name;
|
||||
tmp.PicUpdateTime = Int32.Parse(Program.DateTimeToUnixTime(DateTime.Now));
|
||||
tmp.State = CurrentUser.State;
|
||||
tmp.UserID = CurrentUser.UserID;
|
||||
tmp.UserName = CurrentUser.UserName;
|
||||
KnownUsers.Add(tmp);
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,7 +59,8 @@ login=Login
|
|||
button_cancel=Cancel
|
||||
login_password=Password
|
||||
registration=Registration
|
||||
login_desc1=You can use your username instead of your E-mail address.
|
||||
forgotpassword=Forgot password
|
||||
login_desc1=You can use your username or user ID instead of your E-mail address.
|
||||
login_desc2=If you can't log in, restart the program. If it doesn't help and the problem is not with your username/password, please report the problem.
|
||||
error=Error
|
||||
connecterror=Connecting to server failed.
|
||||
|
@ -71,6 +72,7 @@ reg_codeerr=The given code is invalid or already used.
|
|||
reg_nameerr=The username is already taken.
|
||||
reg_namelen=Incorrect username length. (At least 4 characters)
|
||||
reg_passlen=Incorrect password length. (At least 6 characters)
|
||||
reg_email=E-mail address is not specified or invalid.
|
||||
reg_success=Registration succesful.
|
||||
unknown_error=Unknown error.
|
||||
addcontact=Add contact
|
||||
|
@ -78,8 +80,9 @@ addcontact_nameemail=Name/E-mail/Username
|
|||
addcontact_search=Search
|
||||
addcontact_add=Add
|
||||
chat_nowindow=The partner creating the window is not found.
|
||||
chat_title=Chat
|
||||
chat_showicons=Show emoticons
|
||||
offline=Offline
|
||||
msgupdate_error=Failed to update messages.
|
||||
said=said
|
||||
about=About {0}
|
||||
about_version=Version: {0}
|
||||
|
@ -99,4 +102,13 @@ name=Name
|
|||
message=Message
|
||||
language=Language
|
||||
restart_needed=The program will restart due to the changes made.
|
||||
noimage_notfound=Unable to find the "no image" image...\nCopy in "noimage.png" or reinstall the program.\n(This message appears at each of your contacts.)
|
||||
userid=User ID
|
||||
networking_alone=No other users available. You can only use offline functions.
|
||||
setstate_error=An error occured while setting state.
|
||||
isserver_msg=Do you want your client to function as a server too?\nThis means that the other clients will connect to it, and if the computer is beind a router you will need port forwarding.
|
||||
beforelogin_translatemainf=Translating texts in the main window...
|
||||
beforelogin_loadtextformat=Loading emoticons...
|
||||
beforelogin_checkforupdates=Checking updates...
|
||||
beforelogin_loginform=Showing login window...
|
||||
currentlang=English
|
||||
|
|
|
@ -59,7 +59,8 @@ login=Bejelentkezés
|
|||
button_cancel=Mégse
|
||||
login_password=Jelszó
|
||||
registration=Regisztráció
|
||||
login_desc1=Az e-mail helyett használható a felhasználóneved is.
|
||||
forgotpassword=Elfelejtett jelszó
|
||||
login_desc1=Az e-mail helyett használhatod a felhasználóneved is vagy a felhasználód azonosítószámát.
|
||||
login_desc2=Ha nem tudsz bejelentkezni, próbáld meg újrainditani a programot. Ha az sem segít, és nem a felhasználóneveddel/jelszavaddal van a probléma, akkor jelentsd a problémát.
|
||||
error=Hiba
|
||||
connecterror=Nem sikerült csatlakozni a szerverhez.
|
||||
|
@ -71,6 +72,7 @@ reg_codeerr=A megadott kód nem létezik vagy már felhasználták.
|
|||
reg_nameerr=A felhasználónév már foglalt.
|
||||
reg_namelen=A felhasználónév hossza nem megfelelő. (Min. 4 karakter)
|
||||
reg_passlen=A jelszó hossza nem megfelelő. (Min. 6 karakter)
|
||||
reg_email=Az E-mail cím nincs megadva vagy helytelen.
|
||||
reg_success=Sikeres regisztráció.
|
||||
unknown_error=Ismeretlen hiba
|
||||
addcontact=Ismerős felvétele
|
||||
|
@ -78,8 +80,9 @@ addcontact_nameemail=Név/E-mail/Felhasználónév
|
|||
addcontact_search=Keresés
|
||||
addcontact_add=Felvétel
|
||||
chat_nowindow=Az ablakot létrehozó partner nem található.
|
||||
chat_title=Beszélgetés
|
||||
chat_showicons=Hangulatjelek megjelenítése
|
||||
offline=Nem elérhető
|
||||
msgupdate_error=Az üzenetek frissitése sikertelen.
|
||||
said=üzenete
|
||||
about=A {0} programról
|
||||
about_version=Verzió: {0}
|
||||
|
@ -99,4 +102,13 @@ name=Név
|
|||
message=Üzenet
|
||||
language=Nyelv
|
||||
restart_needed=A módosítások érvényesítésének érdekében a program újraindul.
|
||||
noimage_notfound=Az "nincs kép" profilkép nem található.\nMásold be a noimage.png-t, vagy telepitsd újra a programot.\n(Ez az üzenet minden egyes ismerősödnél megjelenik.)
|
||||
userid=Felh. ID
|
||||
networking_alone=Nincs más elérhető felhasználó. Jelenleg csak az offline funkciókat használhatod.
|
||||
setstate_error=Hiba történt az állapot beállitása során.
|
||||
isserver_msg=Szeretnéd, hogy a kliensed szerverként is funkcionáljon?\nEz azt jelenti, hogy a többi kliens hozzá fog csatlakozni, és ha router mögött van a gép, port forwarding-ot kell alkalmazni.
|
||||
beforelogin_translatemainf=Szövegek lefordítása a fő ablakon...
|
||||
beforelogin_loadtextformat=Hangulatjelek betöltése...
|
||||
beforelogin_checkforupdates=Frissítések ellenőrzése...
|
||||
beforelogin_loginform=Bejelentkezőablak megjelenítése...
|
||||
currentlang=Magyar
|
||||
|
|
|
@ -44,3 +44,29 @@ D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSG
|
|||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.csproj.GenerateResource.Cache
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Debug\RichListView.dll
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Debug\RichListView.pdb
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\MSGer.tk.exe.config
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.exe
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.pdb
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\MSGer.tk.exe
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\MSGer.tk.pdb
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\GlacialList.dll
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\Khendys.Controls.ExRichTextBox.dll
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\RichListView.dll
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\RichListView.pdb
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\GlacialList.pdb
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\Khendys.Controls.ExRichTextBox.pdb
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.csprojResolveAssemblyReference.cache
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.AboutBox1.resources
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.AddPartner.resources
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.ChatForm.resources
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.InvitePartner.resources
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.LoginForm_RegistrationForm.resources
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.MainForm.resources
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.LoginForm.resources
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.Notifier.resources
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.Properties.Resources.resources
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.SelectPartnerForm.resources
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.SettingsForm.resources
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.csproj.GenerateResource.Cache
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.PartnerInformation.resources
|
||||
D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.BeforeLogin.resources
|
||||
|
|
104
Versions/Less Closed Beta/v3.0/Changelog.txt
Normal file
|
@ -0,0 +1,104 @@
|
|||
v3.0 (System update) - 2014.08.01., 08.07-08., 08.16-19., 08.28-30., 09.01., 09.04-06., 09.08-09., 09.15., 09.19., 09.22., 09.26., 09.29., 10.02., 10.09., 10.12., 10.18., 10.23-24.
|
||||
----
|
||||
- Magasfokú optimalizáció
|
||||
- Automatikus kijelentkeztetés, ha megszakad a kapcsolat (PHP) <-- Már nincs is rá szükség
|
||||
- A képfeltöltés elkezdve
|
||||
- Opció a hangulatjelek megjelenítésére
|
||||
- Mostantól csak egyetlen példányt enged futni, kivéve ha a "multi" paraméter meg van adva
|
||||
- Rendszer teljes átszervezése
|
||||
-- Nincs központi szerver <-- Pontosabban a terhelése csökkentve
|
||||
-- A rendszer nyelvét használja alapértelmezetten, nem a magyart
|
||||
-- A tárolási rendszert talán egy-két nap alatt megoldottam (titkosítás, stb.) - De még nem használta mindenhol azt a rendszert
|
||||
-- Az üzeneteket is mostantól ugyanaz a thread frissíti, mint a partnerlistát elsősorban az UDP működése miatt
|
||||
-- Ha üzenetet írnak, most már automatikusan megjelenik az ablak
|
||||
-- A profilképeket mindenképpen elküldi mindenkinek, nem lehet beállítani
|
||||
-- Partnerinformáció (MainForm, AddPartner, stb.)
|
||||
-- RichListView: Az elemek kiválaszthatóak, ha üres területre kattintasz, megszünteti a kiválasztást
|
||||
-- Metódus a szövegek lefordítására, így jobban végezhető a hibakeresés (Language.GetCurrentLanguage().Strings átírva 145 helyen Language.Translate-re)
|
||||
-- Mostantól az összes ismert információt tárolja, amit a felhasználókról kap
|
||||
-- UserID használata ListID helyett ahol lehet
|
||||
-- Ideiglenesen kitilt minden IP-t, ahonnan nem érkezett válasz
|
||||
-- Most már kiírja azt is, ha nem elérhető egy ismerős (eddig a listában nem jelzett semmit akkor)
|
||||
-- A rejtve kapcsolódásnál még ugyanaz a kliens is azt hiszi, hogy nem elérhető
|
||||
-- BeforeLogin form hozzáadva, mostantól jelzi, hogy mit csinál bejelentkezés előtt, ha lassú lenne (leginkább a frissítésellenőrzés)
|
||||
--- 1 mp-ig nem jelenik meg
|
||||
-- A beérkező üzenetekkel csak akkor foglalkozik, ha van a beszélgetésben legalább egy ismerős (a küldő ismerős vagy legalább egy ismerősnek is küldte)
|
||||
|
||||
PHP:
|
||||
- Jelszótitkosítás fejlesztve, ezért pedig új jelszó kérése, ezért pedig kötelező E-mailt megadni
|
||||
|
||||
Kisebb-nagyobb hibajavítások
|
||||
- Hiba több, mint 2 ismerősnél javítva
|
||||
- Az üzenetküldésnek valami komoly gondja van... - Amit megoldottam az átszervezéssel
|
||||
- Nincs profilkép szöveg lefordítva
|
||||
- Az ideigelenesen eltárolt partnerképekbe eddig a NoChange szöveget írta, javítva
|
||||
- Mikor elkezdi a program betöltését, a contactList-be a "Betöltés..." szöveget írta - Javitva "Loading..."-ra
|
||||
- Kétszer is elküldte az ismerős hozzáadása üzenetet a szervernek, javítva
|
||||
- A keresősávban most már nem csak a magyar nyelvű "Ismerősök keresése..." szöveget veszi figyelembe
|
||||
- "Hiba történt az állapot beállítása során." szöveg lefordítva
|
||||
- Az ismerőslistában zárójelben lévő állapotjelzés lefordítva
|
||||
- A tálcaikon most már nem marad ott, ha helyesen áll le a program
|
||||
- TaskbarNotifier láthatóbbá téve
|
||||
- RichListView: Mivel a RichTextBox nem reagál a MouseClick eseményre, a MouseUp eseményt használtam a listanézetemben (később lehet, hogy különválasztom, de egyelőre jó így)
|
||||
- Notifier javítva
|
||||
- Néhány NullReferenceException kezelés helyettesítve if not null ellenőrzésekkel
|
||||
- Ha az aktuális nyelv változik, a program csak azután indít el egy újabb példányt, hogy elmentette a beállításokat
|
||||
- Most már nem lehet átírni a felhasználónevet/jelszót bejelentkezés közben
|
||||
- A Language osztály is hasonló a TextFormathoz: egy new Language(); paranccsal betölti az egészet
|
||||
-- Mindkettőnél az egyes példányokat létrehozó konstruktorok priváttá téve
|
||||
- PartnerListThreadActive változó törölve, LThread!=null ellenőrzések
|
||||
- Most már eltűnteti a nyitott chatablakokat kijelentkezéskor
|
||||
- SelectPartnerSender változó törölve - Paraméterként adtam meg
|
||||
- Most már nem ugrik mindig egy görgetősáv jobb szélére az ismerőslista átméretezés után
|
||||
-- A görgetősáv néha megjelenik kikapcsolva, ha kisebbre állítjuk a program méretét
|
||||
- RichListView: Most már nem frissül állandóan az előző elemek listája (ami az elemek helyes törléséhez kell), csak ha ténylegesen változik
|
||||
- Most már csak akkor jelenik meg az ikon a tálcán, ha bejelentkezett, így nem marad ott, ha a bejelentkezőablak bezárul bejelentkezés nélkül
|
||||
- Most már akkor is elmenti a legutóbb használt E-mail pozicióját, ha eddig nem volt eltárolva
|
||||
- Most már az összes hangulatjelet felismeri az adott szövegben, és nem dolgozik feleslegesen
|
||||
|
||||
Protokoll (sokszor én is összekevertem, ezért is írom ide):
|
||||
!response (kérelem/válasz) - 1 byte
|
||||
!UpdateType (frissítés típusa) - 1 byte
|
||||
keyversion
|
||||
UserID (felh. azonosító) - 4 byte
|
||||
data (adatok) - változó
|
||||
|
||||
A felkiáltójeleseket nem adja tovább a ReceiveUpdates funkció - Vagy mégis most már
|
||||
|
||||
v4.0 (Design update) Tervek:
|
||||
----
|
||||
- TransparencyKey használata a kerekített sarkokhoz; külön megjelenítési mód, ha teljes képernyős, és ha nem
|
||||
- Fájlküldést megoldani
|
||||
- Képfeltöltés
|
||||
- Átdizájnolás (témarendszer; #00FF00 átlátszó (akár legyen állítható))
|
||||
-- A több emberes beszélgetéseket megoldani
|
||||
-- Valahogy trükkösen csinálni dizájnert a paneleknek (pl. új UserControl, átírva panelre, vagy ilyesmi)
|
||||
- TaskbarNotifier
|
||||
- ItemWordWrap csak nagy listanézetben
|
||||
- Aero bevonása - http://www.codeproject.com/Articles/17681/Windows-Vista-Aero-Glass-in-NET-Managed-Win-Appl
|
||||
-- (TransparencyKey: black - Átméretezés után nem lehet a címsorra sem kattintani)
|
||||
- Mono változat (épp az Aero-s kinézet miatt kellene külön dizájn a Mono változathoz
|
||||
- FormClosed eseménynél CloseReason-t kezelni
|
||||
- Kód dokumentálása (valamennyire)
|
||||
- Kézírás bevonása
|
||||
|
||||
v5.0 (Packer update) Tervek:
|
||||
----
|
||||
- Hangulatjelcsomagok - Csomagrendszer (hangulatjelek, hangok, kinézetek, stb.)
|
||||
-- Age of Mythology hangpakk
|
||||
- Ha nincs engedélye(tűzfal) vagy HTTP proxy mögött áll a felhasználó: HTTP (HttpListener, HttpWebRequest, HttpWebResponse)
|
||||
- Hangulatjelek animálása
|
||||
- Pluginrendszer - http://www.c-sharpcorner.com/UploadFile/samhaidar/LateBindingWithReflection09122005053810AM/LateBindingWithReflection.aspx
|
||||
- Az IP címeket talán hozzárendelni a UserID-khoz, és leellenőrizni, hogy jó UserID-t küld-e
|
||||
- Jelszókezelés frissítése: "Jelszógeneráló program"-om által készített jelszavak elfogadása
|
||||
- Titkosítás fejlesztése (LoginUser frissítése és SetKey)
|
||||
-- http://en.wikipedia.org/wiki/Man-in-the-middle_attack
|
||||
- A hálózati részt befejezni, javítani (pl. chat)
|
||||
-- Üzenetküldés akkor is, ha nincs más online
|
||||
-- "Szóval ezt mondták rólam"-rendszer
|
||||
- Egy felhasználó csak egyszer jelentkezhessen be (egy gépre, vagy akár az egész rendszerben is)
|
||||
- Beállítások gyarapítása
|
||||
|
||||
v6.0 Tervek:
|
||||
----
|
||||
- Steam integráció(?) https://github.com/Overv/SteamWebAPI - Igen valószínűtlen
|
190
Versions/Less Closed Beta/v3.0/MSGer.tk/AboutBox1.Designer.cs
generated
Normal file
|
@ -0,0 +1,190 @@
|
|||
namespace MSGer.tk
|
||||
{
|
||||
partial class AboutBox1
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox1));
|
||||
this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.logoPictureBox = new System.Windows.Forms.PictureBox();
|
||||
this.labelProductName = new System.Windows.Forms.Label();
|
||||
this.labelVersion = new System.Windows.Forms.Label();
|
||||
this.labelCopyright = new System.Windows.Forms.Label();
|
||||
this.labelLicenseLink = new System.Windows.Forms.LinkLabel();
|
||||
this.textBoxDescription = new System.Windows.Forms.TextBox();
|
||||
this.okButton = new System.Windows.Forms.Button();
|
||||
this.tableLayoutPanel.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableLayoutPanel
|
||||
//
|
||||
this.tableLayoutPanel.ColumnCount = 2;
|
||||
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F));
|
||||
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F));
|
||||
this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelLicenseLink, 1, 3);
|
||||
this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4);
|
||||
this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5);
|
||||
this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel.Location = new System.Drawing.Point(9, 9);
|
||||
this.tableLayoutPanel.Name = "tableLayoutPanel";
|
||||
this.tableLayoutPanel.RowCount = 6;
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.Size = new System.Drawing.Size(417, 265);
|
||||
this.tableLayoutPanel.TabIndex = 0;
|
||||
//
|
||||
// logoPictureBox
|
||||
//
|
||||
this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image")));
|
||||
this.logoPictureBox.Location = new System.Drawing.Point(3, 3);
|
||||
this.logoPictureBox.Name = "logoPictureBox";
|
||||
this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6);
|
||||
this.logoPictureBox.Size = new System.Drawing.Size(131, 259);
|
||||
this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.logoPictureBox.TabIndex = 12;
|
||||
this.logoPictureBox.TabStop = false;
|
||||
//
|
||||
// labelProductName
|
||||
//
|
||||
this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelProductName.Location = new System.Drawing.Point(143, 0);
|
||||
this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||
this.labelProductName.MaximumSize = new System.Drawing.Size(0, 17);
|
||||
this.labelProductName.Name = "labelProductName";
|
||||
this.labelProductName.Size = new System.Drawing.Size(271, 17);
|
||||
this.labelProductName.TabIndex = 19;
|
||||
this.labelProductName.Text = "Product Name";
|
||||
this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// labelVersion
|
||||
//
|
||||
this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelVersion.Location = new System.Drawing.Point(143, 26);
|
||||
this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||
this.labelVersion.MaximumSize = new System.Drawing.Size(0, 17);
|
||||
this.labelVersion.Name = "labelVersion";
|
||||
this.labelVersion.Size = new System.Drawing.Size(271, 17);
|
||||
this.labelVersion.TabIndex = 0;
|
||||
this.labelVersion.Text = "Version";
|
||||
this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// labelCopyright
|
||||
//
|
||||
this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelCopyright.Location = new System.Drawing.Point(143, 52);
|
||||
this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||
this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 17);
|
||||
this.labelCopyright.Name = "labelCopyright";
|
||||
this.labelCopyright.Size = new System.Drawing.Size(271, 17);
|
||||
this.labelCopyright.TabIndex = 21;
|
||||
this.labelCopyright.Text = "Copyright";
|
||||
this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// labelLicenseLink
|
||||
//
|
||||
this.labelLicenseLink.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelLicenseLink.LinkColor = System.Drawing.Color.Blue;
|
||||
this.labelLicenseLink.Location = new System.Drawing.Point(143, 78);
|
||||
this.labelLicenseLink.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
|
||||
this.labelLicenseLink.MaximumSize = new System.Drawing.Size(0, 17);
|
||||
this.labelLicenseLink.Name = "labelLicenseLink";
|
||||
this.labelLicenseLink.Size = new System.Drawing.Size(271, 17);
|
||||
this.labelLicenseLink.TabIndex = 22;
|
||||
this.labelLicenseLink.TabStop = true;
|
||||
this.labelLicenseLink.Text = "License Link";
|
||||
this.labelLicenseLink.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.labelLicenseLink.VisitedLinkColor = System.Drawing.Color.Blue;
|
||||
this.labelLicenseLink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.labelLicenseLink_LinkClicked);
|
||||
//
|
||||
// textBoxDescription
|
||||
//
|
||||
this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.textBoxDescription.Location = new System.Drawing.Point(143, 107);
|
||||
this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 3, 3, 3);
|
||||
this.textBoxDescription.Multiline = true;
|
||||
this.textBoxDescription.Name = "textBoxDescription";
|
||||
this.textBoxDescription.ReadOnly = true;
|
||||
this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||
this.textBoxDescription.Size = new System.Drawing.Size(271, 126);
|
||||
this.textBoxDescription.TabIndex = 23;
|
||||
this.textBoxDescription.TabStop = false;
|
||||
this.textBoxDescription.Text = "Description";
|
||||
//
|
||||
// okButton
|
||||
//
|
||||
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.okButton.Location = new System.Drawing.Point(339, 239);
|
||||
this.okButton.Name = "okButton";
|
||||
this.okButton.Size = new System.Drawing.Size(75, 23);
|
||||
this.okButton.TabIndex = 24;
|
||||
this.okButton.Text = "&OK";
|
||||
//
|
||||
// AboutBox1
|
||||
//
|
||||
this.AcceptButton = this.okButton;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(435, 283);
|
||||
this.Controls.Add(this.tableLayoutPanel);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "AboutBox1";
|
||||
this.Padding = new System.Windows.Forms.Padding(9);
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "AboutBox1";
|
||||
this.tableLayoutPanel.ResumeLayout(false);
|
||||
this.tableLayoutPanel.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
|
||||
private System.Windows.Forms.PictureBox logoPictureBox;
|
||||
private System.Windows.Forms.Label labelProductName;
|
||||
private System.Windows.Forms.Label labelVersion;
|
||||
private System.Windows.Forms.Label labelCopyright;
|
||||
private System.Windows.Forms.TextBox textBoxDescription;
|
||||
private System.Windows.Forms.Button okButton;
|
||||
private System.Windows.Forms.LinkLabel labelLicenseLink;
|
||||
}
|
||||
}
|
130
Versions/Less Closed Beta/v3.0/MSGer.tk/AboutBox1.cs
Normal file
|
@ -0,0 +1,130 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
partial class AboutBox1 : Form
|
||||
{
|
||||
public AboutBox1()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Text = String.Format(Language.Translate("about"), AssemblyTitle);
|
||||
this.labelProductName.Text = AssemblyProduct;
|
||||
this.labelVersion.Text = String.Format(Language.Translate("about_version"), AssemblyVersion);
|
||||
this.labelCopyright.Text = AssemblyCopyright;
|
||||
|
||||
labelLicenseLink.Text = "https://www.gnu.org/copyleft/gpl.html"; //2014.04.18. - Frissitve: 2014.04.25.
|
||||
List<string> desc = new List<string>(); //2014.04.18.
|
||||
desc.Add(Language.Translate("about_programmer")); //2014.04.18.
|
||||
desc.Add("SzNP");
|
||||
desc.Add("http://sznp.tk");
|
||||
desc.Add("");
|
||||
desc.Add(Language.Translate("about_specialthanks"));
|
||||
desc.Add("Jonathan Kay");
|
||||
desc.Add("http://messengergeek.com");
|
||||
desc.Add(Language.Translate("about_specthanks1"));
|
||||
desc.Add("");
|
||||
desc.Add(Language.Translate("about_specthanks2"));
|
||||
desc.Add("");
|
||||
desc.Add("Allen Anderson");
|
||||
desc.Add("http://www.codeproject.com/Articles/4012/C-List-View-v");
|
||||
desc.Add(Language.Translate("about_specthanks3"));
|
||||
desc.Add("");
|
||||
desc.Add("Khendys Gordon");
|
||||
desc.Add("http://www.codeproject.com/Articles/4544/Insert-Plain-Text-and-Images-into-RichTextBox-at-R");
|
||||
desc.Add(Language.Translate("about_specthanks4"));
|
||||
textBoxDescription.Lines = desc.ToArray();
|
||||
}
|
||||
|
||||
#region Assembly Attribute Accessors
|
||||
|
||||
public string AssemblyTitle
|
||||
{
|
||||
get
|
||||
{
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
|
||||
if (attributes.Length > 0)
|
||||
{
|
||||
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
|
||||
if (titleAttribute.Title != "")
|
||||
{
|
||||
return titleAttribute.Title;
|
||||
}
|
||||
}
|
||||
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyVersion
|
||||
{
|
||||
get
|
||||
{
|
||||
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyDescription
|
||||
{
|
||||
get
|
||||
{
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
|
||||
if (attributes.Length == 0)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
return ((AssemblyDescriptionAttribute)attributes[0]).Description;
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyProduct
|
||||
{
|
||||
get
|
||||
{
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
|
||||
if (attributes.Length == 0)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
return ((AssemblyProductAttribute)attributes[0]).Product;
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyCopyright
|
||||
{
|
||||
get
|
||||
{
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
|
||||
if (attributes.Length == 0)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
|
||||
}
|
||||
}
|
||||
|
||||
public string AssemblyCompany
|
||||
{
|
||||
get
|
||||
{
|
||||
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
|
||||
if (attributes.Length == 0)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
return ((AssemblyCompanyAttribute)attributes[0]).Company;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void labelLicenseLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
System.Diagnostics.Process.Start(labelLicenseLink.Text);
|
||||
}
|
||||
}
|
||||
}
|
604
Versions/Less Closed Beta/v3.0/MSGer.tk/AboutBox1.resx
Normal file
|
@ -0,0 +1,604 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="logoPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
175
Versions/Less Closed Beta/v3.0/MSGer.tk/AddPartner.Designer.cs
generated
Normal file
|
@ -0,0 +1,175 @@
|
|||
namespace MSGer.tk
|
||||
{
|
||||
partial class AddPartner
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
GlacialComponents.Controls.GLColumn glColumn2 = new GlacialComponents.Controls.GLColumn();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.nameText = new System.Windows.Forms.TextBox();
|
||||
this.searchbtn = new System.Windows.Forms.Button();
|
||||
this.glacialList1 = new GlacialComponents.Controls.GlacialList();
|
||||
this.gobtn = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.label1.ForeColor = System.Drawing.Color.Blue;
|
||||
this.label1.Location = new System.Drawing.Point(13, 13);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(174, 25);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Ismerős felvétele";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.label2.ForeColor = System.Drawing.Color.Black;
|
||||
this.label2.Location = new System.Drawing.Point(18, 86);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(174, 16);
|
||||
this.label2.TabIndex = 1;
|
||||
this.label2.Text = "Név/E-mail/Felhasználónév";
|
||||
//
|
||||
// nameText
|
||||
//
|
||||
this.nameText.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.nameText.Location = new System.Drawing.Point(18, 106);
|
||||
this.nameText.Name = "nameText";
|
||||
this.nameText.Size = new System.Drawing.Size(270, 20);
|
||||
this.nameText.TabIndex = 2;
|
||||
//
|
||||
// searchbtn
|
||||
//
|
||||
this.searchbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.searchbtn.Location = new System.Drawing.Point(297, 104);
|
||||
this.searchbtn.Name = "searchbtn";
|
||||
this.searchbtn.Size = new System.Drawing.Size(75, 23);
|
||||
this.searchbtn.TabIndex = 3;
|
||||
this.searchbtn.Text = "Keresés";
|
||||
this.searchbtn.UseVisualStyleBackColor = true;
|
||||
this.searchbtn.Click += new System.EventHandler(this.searchbtn_Click);
|
||||
//
|
||||
// glacialList1
|
||||
//
|
||||
this.glacialList1.AllowColumnResize = true;
|
||||
this.glacialList1.AllowMultiselect = false;
|
||||
this.glacialList1.AlternateBackground = System.Drawing.Color.DarkGreen;
|
||||
this.glacialList1.AlternatingColors = false;
|
||||
this.glacialList1.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.glacialList1.AutoHeight = true;
|
||||
this.glacialList1.BackColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.glacialList1.BackgroundStretchToFit = true;
|
||||
glColumn2.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
|
||||
glColumn2.CheckBoxes = false;
|
||||
glColumn2.ImageIndex = -1;
|
||||
glColumn2.Name = "UserName";
|
||||
glColumn2.NumericSort = false;
|
||||
glColumn2.Text = "Felhasználónév";
|
||||
glColumn2.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
glColumn2.Width = 200;
|
||||
this.glacialList1.Columns.AddRange(new GlacialComponents.Controls.GLColumn[] {
|
||||
glColumn2});
|
||||
this.glacialList1.ControlStyle = GlacialComponents.Controls.GLControlStyles.Normal;
|
||||
this.glacialList1.FullRowSelect = true;
|
||||
this.glacialList1.GridColor = System.Drawing.Color.LightGray;
|
||||
this.glacialList1.GridLines = GlacialComponents.Controls.GLGridLines.gridBoth;
|
||||
this.glacialList1.GridLineStyle = GlacialComponents.Controls.GLGridLineStyles.gridSolid;
|
||||
this.glacialList1.GridTypes = GlacialComponents.Controls.GLGridTypes.gridOnExists;
|
||||
this.glacialList1.HeaderHeight = 22;
|
||||
this.glacialList1.HeaderVisible = true;
|
||||
this.glacialList1.HeaderWordWrap = false;
|
||||
this.glacialList1.HotColumnTracking = false;
|
||||
this.glacialList1.HotItemTracking = true;
|
||||
this.glacialList1.HotTrackingColor = System.Drawing.Color.LightGray;
|
||||
this.glacialList1.HoverEvents = false;
|
||||
this.glacialList1.HoverTime = 1;
|
||||
this.glacialList1.ImageList = null;
|
||||
this.glacialList1.ItemHeight = 17;
|
||||
this.glacialList1.ItemWordWrap = false;
|
||||
this.glacialList1.Location = new System.Drawing.Point(18, 152);
|
||||
this.glacialList1.Name = "glacialList1";
|
||||
this.glacialList1.Selectable = true;
|
||||
this.glacialList1.SelectedTextColor = System.Drawing.Color.White;
|
||||
this.glacialList1.SelectionColor = System.Drawing.Color.DarkBlue;
|
||||
this.glacialList1.ShowBorder = true;
|
||||
this.glacialList1.ShowFocusRect = false;
|
||||
this.glacialList1.Size = new System.Drawing.Size(354, 272);
|
||||
this.glacialList1.SortType = GlacialComponents.Controls.SortTypes.InsertionSort;
|
||||
this.glacialList1.SuperFlatHeaderColor = System.Drawing.Color.White;
|
||||
this.glacialList1.TabIndex = 4;
|
||||
this.glacialList1.Text = "glacialList1";
|
||||
this.glacialList1.Click += new System.EventHandler(this.glacialList1_Click);
|
||||
//
|
||||
// gobtn
|
||||
//
|
||||
this.gobtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.gobtn.Location = new System.Drawing.Point(297, 427);
|
||||
this.gobtn.Name = "gobtn";
|
||||
this.gobtn.Size = new System.Drawing.Size(75, 23);
|
||||
this.gobtn.TabIndex = 5;
|
||||
this.gobtn.Text = "Felvétel";
|
||||
this.gobtn.UseVisualStyleBackColor = true;
|
||||
this.gobtn.Click += new System.EventHandler(this.gobtn_Click);
|
||||
//
|
||||
// AddPartner
|
||||
//
|
||||
this.AcceptButton = this.searchbtn;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.LightSkyBlue;
|
||||
this.ClientSize = new System.Drawing.Size(384, 462);
|
||||
this.Controls.Add(this.gobtn);
|
||||
this.Controls.Add(this.glacialList1);
|
||||
this.Controls.Add(this.searchbtn);
|
||||
this.Controls.Add(this.nameText);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Name = "AddPartner";
|
||||
this.Text = "Ismerős felvétele";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox nameText;
|
||||
private System.Windows.Forms.Button searchbtn;
|
||||
private GlacialComponents.Controls.GlacialList glacialList1;
|
||||
private System.Windows.Forms.Button gobtn;
|
||||
}
|
||||
}
|
115
Versions/Less Closed Beta/v3.0/MSGer.tk/AddPartner.cs
Normal file
|
@ -0,0 +1,115 @@
|
|||
using GlacialComponents.Controls;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
public partial class AddPartner : Form
|
||||
{
|
||||
public AddPartner()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Text = Language.Translate("addcontact");
|
||||
label1.Text = Language.Translate("addcontact");
|
||||
label2.Text = Language.Translate("addcontact_nameemail");
|
||||
searchbtn.Text = Language.Translate("addcontact_search");
|
||||
glacialList1.Columns[0].Text = Language.Translate("reg_username");
|
||||
gobtn.Text = Language.Translate("addcontact_add");
|
||||
}
|
||||
|
||||
/*string[] username;
|
||||
int[] uid;
|
||||
string[] message;
|
||||
int[] online;
|
||||
string[] shownname;
|
||||
string[] email;*/
|
||||
List<UserInfo> FoundUsers = new List<UserInfo>();
|
||||
|
||||
private void searchbtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
glacialList1.Items.Clear();
|
||||
//string[] people = Networking.SendRequest("findpeople", nameText.Text, 0, true).Split('ͦ'); //2014.04.18. 0:07 - Még nem készítettem el
|
||||
/*byte[][] tmpret = Networking.SendUpdate(Networking.UpdateType.FindPeople, Encoding.Unicode.GetBytes(nameText.Text), false);
|
||||
if (tmpret == null)
|
||||
{
|
||||
glacialList1.Items.Add(Language.Translate("networking_alone"));
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < tmpret.Length; i++)
|
||||
{
|
||||
byte[] tmpb = tmpret[i];
|
||||
string tmpstr = Encoding.Unicode.GetString(tmpb, 1, tmpb.Length - 1); //0. byte==UserID
|
||||
string[] people = tmpstr.Split('ͦ');
|
||||
for (int x = 0, y = 0; x + 5 < people.Length; x += 6, y++)
|
||||
{*/
|
||||
/*username = new string[people.Length / 6];
|
||||
uid = new int[people.Length / 6];
|
||||
message = new string[people.Length / 6];
|
||||
online = new int[people.Length / 6];
|
||||
shownname = new string[people.Length / 6];
|
||||
email = new string[people.Length / 6];*/
|
||||
|
||||
//username[y] = people[x];
|
||||
/*var tmp = new UserInfo();
|
||||
tmp.UserName = people[x];
|
||||
tmp.UserID = Int32.Parse(people[x + 1]);
|
||||
tmp.Message = people[x + 2];
|
||||
tmp.State = Int32.Parse(people[x + 3]);
|
||||
tmp.Name = people[x + 4];
|
||||
tmp.Email = people[x + 5];
|
||||
|
||||
if (!FoundUsers.Contains(tmp)) //2014.08.19.
|
||||
{
|
||||
|
||||
//glacialList1.Items.Add(username[y]);
|
||||
glacialList1.Items.Add(tmp.UserName);
|
||||
|
||||
FoundUsers.Add(tmp); //2014.08.16.
|
||||
}
|
||||
}
|
||||
}*/
|
||||
//2014.09.09. - Miután először az egészet megcsináltam, néhány nappal később az egészet elölről kezdem
|
||||
foreach (var tmp in UserInfo.KnownUsers)
|
||||
{
|
||||
if ((tmp.UserName.Contains(nameText.Text) || tmp.Name.Contains(nameText.Text) || tmp.UserID.ToString() == nameText.Text) && !FoundUsers.Contains(tmp))
|
||||
{
|
||||
glacialList1.Items.Add(tmp.UserName);
|
||||
|
||||
FoundUsers.Add(tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void glacialList1_Click(object sender, EventArgs e)
|
||||
{
|
||||
int item = glacialList1.HotItemIndex;
|
||||
if (item >= glacialList1.Items.Count)
|
||||
return;
|
||||
//2014.04.18. - Partnerinformáció mutatása
|
||||
//2014.08.16. - Megvalósítás
|
||||
//(new PartnerInformation(FoundUsers[item].Name, FoundUsers[item].State, FoundUsers[item].Message, FoundUsers[item].UserName, FoundUsers[item].UserID, FoundUsers[item].Email)).ShowDialog(); //2014.08.16.
|
||||
if (FoundUsers.Count < item)
|
||||
(new PartnerInformation(FoundUsers[item])).ShowDialog();
|
||||
}
|
||||
|
||||
private void gobtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (glacialList1.SelectedItems.Count == 0 || FoundUsers.Count == 0)
|
||||
return;
|
||||
string username = ((GLItem)glacialList1.SelectedItems[0]).Text;
|
||||
string response = Networking.SendRequest("adduser", username, 0, true);
|
||||
//if (Networking.SendRequest("adduser", username, 0, true) == "Success")
|
||||
if (response == "Success")
|
||||
MessageBox.Show("Felhasználó felvéve az ismerőseid közé.");
|
||||
else
|
||||
MessageBox.Show("Nem sikerült felvenni a felhasználót az ismerőseid közé.\nLehet, hogy már felvetted, vagy valami hiba történt.\n(" + response + ")");
|
||||
}
|
||||
}
|
||||
}
|
120
Versions/Less Closed Beta/v3.0/MSGer.tk/AddPartner.resx
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
33
Versions/Less Closed Beta/v3.0/MSGer.tk/App.config
Normal file
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<section name="MSGer.tk.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
|
||||
</startup>
|
||||
<userSettings>
|
||||
<MSGer.tk.Settings>
|
||||
<setting name="email" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="picupdatetime" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="windowstate" serializeAs="String">
|
||||
<value>3</value>
|
||||
</setting>
|
||||
<setting name="lang" serializeAs="String">
|
||||
<value>hu</value>
|
||||
</setting>
|
||||
<setting name="port" serializeAs="String">
|
||||
<value>4510</value>
|
||||
</setting>
|
||||
<setting name="lastusedemail" serializeAs="String">
|
||||
<value>0</value>
|
||||
</setting>
|
||||
</MSGer.tk.Settings>
|
||||
</userSettings>
|
||||
</configuration>
|
68
Versions/Less Closed Beta/v3.0/MSGer.tk/BeforeLogin.Designer.cs
generated
Normal file
|
@ -0,0 +1,68 @@
|
|||
namespace MSGer.tk
|
||||
{
|
||||
partial class BeforeLogin
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.label1.Location = new System.Drawing.Point(12, 9);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(0, 24);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// BeforeLogin
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(362, 53);
|
||||
this.Controls.Add(this.label1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "BeforeLogin";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "BeforeLogin";
|
||||
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.BeforeLogin_FormClosed);
|
||||
this.TextChanged += new System.EventHandler(this.BeforeLogin_TextChanged);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
}
|
||||
}
|
75
Versions/Less Closed Beta/v3.0/MSGer.tk/BeforeLogin.cs
Normal file
|
@ -0,0 +1,75 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
public partial class BeforeLogin : Form
|
||||
{
|
||||
private static BeforeLogin mInstance;
|
||||
private static bool done = false;
|
||||
private static string ttext { get; set; }
|
||||
public static void Create()
|
||||
{
|
||||
var t = new System.Threading.Thread(() =>
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
if (done)
|
||||
return;
|
||||
mInstance = new BeforeLogin();
|
||||
mInstance.FormClosed += (s, e) => mInstance = null;
|
||||
Application.Run(mInstance);
|
||||
});
|
||||
t.SetApartmentState(System.Threading.ApartmentState.STA);
|
||||
t.IsBackground = true;
|
||||
t.Start();
|
||||
/*var ti = new Timer();
|
||||
ti.Interval = 1000;
|
||||
ti.Tick += ti_Tick;
|
||||
ti.Start();*/
|
||||
}
|
||||
|
||||
/*static void ti_Tick(object sender, EventArgs e)
|
||||
{
|
||||
((Timer)sender).Stop();
|
||||
if (mInstance != null)
|
||||
mInstance.Show();
|
||||
}*/
|
||||
public static void Destroy()
|
||||
{
|
||||
done = true;
|
||||
if (mInstance != null) mInstance.Invoke(new Action(() => mInstance.Close()));
|
||||
}
|
||||
|
||||
public static void SetText(string text)
|
||||
{
|
||||
if (mInstance != null) mInstance.Invoke((MethodInvoker)delegate { mInstance.Text = text; });
|
||||
ttext = text;
|
||||
}
|
||||
|
||||
private BeforeLogin()
|
||||
{ //2014.09.06.
|
||||
InitializeComponent();
|
||||
Text = ttext;
|
||||
}
|
||||
|
||||
private void BeforeLogin_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
label1.Text = this.Text;
|
||||
}
|
||||
|
||||
private void BeforeLogin_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
//if (e.CloseReason == CloseReason.UserClosing)
|
||||
if (!done)
|
||||
Program.Exit(false);
|
||||
}
|
||||
}
|
||||
}
|
120
Versions/Less Closed Beta/v3.0/MSGer.tk/BeforeLogin.resx
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
198
Versions/Less Closed Beta/v3.0/MSGer.tk/ChatForm.Designer.cs
generated
Normal file
|
@ -0,0 +1,198 @@
|
|||
namespace MSGer.tk
|
||||
{
|
||||
partial class ChatForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.messageTextBox = new Khendys.Controls.ExRichTextBox();
|
||||
this.recentMsgTextBox = new Khendys.Controls.ExRichTextBox();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.statusLabel = new Khendys.Controls.ExRichTextBox();
|
||||
this.partnerMsg = new Khendys.Controls.ExRichTextBox();
|
||||
this.partnerName = new Khendys.Controls.ExRichTextBox();
|
||||
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
|
||||
this.showicons = new System.Windows.Forms.CheckBox();
|
||||
this.panel2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// messageTextBox
|
||||
//
|
||||
this.messageTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.messageTextBox.BackColor = System.Drawing.Color.White;
|
||||
this.messageTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.messageTextBox.DetectUrls = false;
|
||||
this.messageTextBox.ForeColor = System.Drawing.Color.Black;
|
||||
this.messageTextBox.HiglightColor = Khendys.Controls.RtfColor.White;
|
||||
this.messageTextBox.Location = new System.Drawing.Point(147, 310);
|
||||
this.messageTextBox.Name = "messageTextBox";
|
||||
this.messageTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
|
||||
this.messageTextBox.Size = new System.Drawing.Size(418, 75);
|
||||
this.messageTextBox.TabIndex = 0;
|
||||
this.messageTextBox.Text = "";
|
||||
this.messageTextBox.TextColor = Khendys.Controls.RtfColor.Black;
|
||||
this.messageTextBox.TextChanged += new System.EventHandler(this.MessageTextChanged);
|
||||
this.messageTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SendMessage);
|
||||
//
|
||||
// recentMsgTextBox
|
||||
//
|
||||
this.recentMsgTextBox.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.recentMsgTextBox.BackColor = System.Drawing.Color.White;
|
||||
this.recentMsgTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.recentMsgTextBox.ForeColor = System.Drawing.Color.Black;
|
||||
this.recentMsgTextBox.HiglightColor = Khendys.Controls.RtfColor.White;
|
||||
this.recentMsgTextBox.Location = new System.Drawing.Point(147, 76);
|
||||
this.recentMsgTextBox.Name = "recentMsgTextBox";
|
||||
this.recentMsgTextBox.ReadOnly = true;
|
||||
this.recentMsgTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
|
||||
this.recentMsgTextBox.Size = new System.Drawing.Size(418, 228);
|
||||
this.recentMsgTextBox.TabIndex = 1;
|
||||
this.recentMsgTextBox.Text = "";
|
||||
this.recentMsgTextBox.TextColor = Khendys.Controls.RtfColor.Black;
|
||||
this.recentMsgTextBox.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.OpenLink);
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.panel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(141, 422);
|
||||
this.panel1.TabIndex = 3;
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.Controls.Add(this.statusLabel);
|
||||
this.panel2.Controls.Add(this.partnerMsg);
|
||||
this.panel2.Controls.Add(this.partnerName);
|
||||
this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.panel2.Location = new System.Drawing.Point(141, 0);
|
||||
this.panel2.Name = "panel2";
|
||||
this.panel2.Size = new System.Drawing.Size(423, 70);
|
||||
this.panel2.TabIndex = 4;
|
||||
//
|
||||
// statusLabel
|
||||
//
|
||||
this.statusLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.statusLabel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200)))));
|
||||
this.statusLabel.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.statusLabel.ForeColor = System.Drawing.Color.Black;
|
||||
this.statusLabel.HiglightColor = Khendys.Controls.RtfColor.White;
|
||||
this.statusLabel.Location = new System.Drawing.Point(9, 52);
|
||||
this.statusLabel.Multiline = false;
|
||||
this.statusLabel.Name = "statusLabel";
|
||||
this.statusLabel.Size = new System.Drawing.Size(390, 16);
|
||||
this.statusLabel.TabIndex = 5;
|
||||
this.statusLabel.Text = "statusLabel";
|
||||
this.statusLabel.TextColor = Khendys.Controls.RtfColor.Black;
|
||||
//
|
||||
// partnerMsg
|
||||
//
|
||||
this.partnerMsg.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.partnerMsg.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200)))));
|
||||
this.partnerMsg.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.partnerMsg.ForeColor = System.Drawing.Color.Black;
|
||||
this.partnerMsg.HiglightColor = Khendys.Controls.RtfColor.White;
|
||||
this.partnerMsg.Location = new System.Drawing.Point(9, 30);
|
||||
this.partnerMsg.Multiline = false;
|
||||
this.partnerMsg.Name = "partnerMsg";
|
||||
this.partnerMsg.Size = new System.Drawing.Size(390, 24);
|
||||
this.partnerMsg.TabIndex = 4;
|
||||
this.partnerMsg.Text = "partnerMsg";
|
||||
this.partnerMsg.TextColor = Khendys.Controls.RtfColor.Black;
|
||||
//
|
||||
// partnerName
|
||||
//
|
||||
this.partnerName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.partnerName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200)))));
|
||||
this.partnerName.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.partnerName.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.partnerName.ForeColor = System.Drawing.Color.Black;
|
||||
this.partnerName.HiglightColor = Khendys.Controls.RtfColor.White;
|
||||
this.partnerName.Location = new System.Drawing.Point(9, 7);
|
||||
this.partnerName.Multiline = false;
|
||||
this.partnerName.Name = "partnerName";
|
||||
this.partnerName.ReadOnly = true;
|
||||
this.partnerName.Size = new System.Drawing.Size(399, 25);
|
||||
this.partnerName.TabIndex = 3;
|
||||
this.partnerName.Text = "partnerName";
|
||||
this.partnerName.TextColor = Khendys.Controls.RtfColor.Black;
|
||||
//
|
||||
// openFileDialog1
|
||||
//
|
||||
this.openFileDialog1.FileName = "openFileDialog1";
|
||||
//
|
||||
// showicons
|
||||
//
|
||||
this.showicons.AutoSize = true;
|
||||
this.showicons.Location = new System.Drawing.Point(150, 392);
|
||||
this.showicons.Name = "showicons";
|
||||
this.showicons.Size = new System.Drawing.Size(76, 17);
|
||||
this.showicons.TabIndex = 5;
|
||||
this.showicons.Text = "showicons";
|
||||
this.showicons.UseVisualStyleBackColor = true;
|
||||
this.showicons.CheckedChanged += new System.EventHandler(this.showicons_CheckedChanged);
|
||||
//
|
||||
// ChatForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200)))));
|
||||
this.ClientSize = new System.Drawing.Size(564, 422);
|
||||
this.Controls.Add(this.showicons);
|
||||
this.Controls.Add(this.panel2);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.Controls.Add(this.recentMsgTextBox);
|
||||
this.Controls.Add(this.messageTextBox);
|
||||
this.Name = "ChatForm";
|
||||
this.Text = "Beszélgetés";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ChatForm_FormClosing);
|
||||
this.Load += new System.EventHandler(this.ChatForm_Load);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private Khendys.Controls.ExRichTextBox messageTextBox;
|
||||
private Khendys.Controls.ExRichTextBox recentMsgTextBox;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
public Khendys.Controls.ExRichTextBox partnerName;
|
||||
public Khendys.Controls.ExRichTextBox partnerMsg;
|
||||
public Khendys.Controls.ExRichTextBox statusLabel;
|
||||
private System.Windows.Forms.OpenFileDialog openFileDialog1;
|
||||
private System.Windows.Forms.CheckBox showicons;
|
||||
}
|
||||
}
|
258
Versions/Less Closed Beta/v3.0/MSGer.tk/ChatForm.cs
Normal file
|
@ -0,0 +1,258 @@
|
|||
//Hangulatjelek használata
|
||||
//#define emoticons
|
||||
|
||||
using Khendys.Controls;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using HdSystemLibrary.IO;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
public partial class ChatForm : Form
|
||||
{
|
||||
public static List<ChatForm> ChatWindows = new List<ChatForm>();
|
||||
public List<int> ChatPartners = new List<int>();
|
||||
//public List<string> PendingMessages = new List<string>();
|
||||
//public Thread UpdateT;
|
||||
public ChatForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
//Amint létrehozom, ez a kód lefut - Nem számit, hogy megjelenik-e
|
||||
|
||||
this.Text = Language.Translate("chat_title");
|
||||
showicons.Text = Language.Translate("chat_showicons");
|
||||
}
|
||||
|
||||
private void ChatForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (ChatPartners.Count == 0)
|
||||
MessageBox.Show(Language.Translate("error") + ": " + Language.Translate("chat_nowindow"));
|
||||
if (ChatPartners.Count == 1)
|
||||
{
|
||||
partnerName.Text = UserInfo.Select(ChatPartners[0]).Name;
|
||||
TextFormat.Parse(partnerName);
|
||||
partnerMsg.Text = UserInfo.Select(ChatPartners[0]).Message;
|
||||
TextFormat.Parse(partnerMsg);
|
||||
switch (UserInfo.Select(ChatPartners[0]).State)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
statusLabel.Text = Language.Translate("offline");
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
statusLabel.Text = Language.Translate("menu_file_status_online");
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
statusLabel.Text = Language.Translate("menu_file_status_busy");
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
statusLabel.Text = Language.Translate("menu_file_status_away");
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
statusLabel.Text = Language.Translate("networking_alone");
|
||||
break;
|
||||
}
|
||||
}
|
||||
//UpdateT = new Thread(new ThreadStart(UpdateMessages));
|
||||
//UpdateT.Name = "Message Update Thread (" + partnerName.Text + ")";
|
||||
//UpdateT.Start();
|
||||
}
|
||||
}
|
||||
|
||||
public bool InternalMessageChange = false;
|
||||
public int SelectionStart = 0;
|
||||
public int SelectionLength = 0;
|
||||
public int TextLength = 0;
|
||||
private void SendMessage(object sender, KeyEventArgs e)
|
||||
{
|
||||
//SendMessage
|
||||
if (e.KeyCode != Keys.Enter || e.Shift || messageTextBox.Text.Length == 0)
|
||||
return;
|
||||
messageTextBox.ReadOnly = true;
|
||||
/*
|
||||
* 2014.03.08. 0:03
|
||||
* A fenti kódra válaszul a másik felhasználó esetleges új válaszát is irja be; tehát frissitse az üzeneteket
|
||||
* Az üzenetellenőrző thread folyamatosan fusson, amint végrehajtotta a parancsokat, kezdje újra (nincs Thread.Sleep)
|
||||
*
|
||||
* 2014.03.19.
|
||||
* Csinálja úgy, mint a képeknél, hogy a legutóbbi üzenetlekérés dátumához igazodjon, és csak a legújabb üzeneteket
|
||||
* töltse le
|
||||
*/
|
||||
//PendingMessages.Add(messageTextBox.Text);
|
||||
if (!Networking.SendChatMessage(this, messageTextBox.Text))
|
||||
MessageBox.Show(Language.Translate("networking_alone"));
|
||||
messageTextBox.Focus();
|
||||
messageTextBox.Text = "";
|
||||
messageTextBox.ReadOnly = false;
|
||||
}
|
||||
|
||||
private void MessageTextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!InternalMessageChange)
|
||||
{
|
||||
if (messageTextBox.Text == "\n")
|
||||
messageTextBox.Text = "";
|
||||
#if emoticons
|
||||
TextFormat.Parse((ExExRichTextBox)sender);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
private void OpenLink(object sender, LinkClickedEventArgs e)
|
||||
{
|
||||
Process.Start(e.LinkText);
|
||||
}
|
||||
//public void UpdateMessages()
|
||||
//{
|
||||
/*
|
||||
* 2014.03.21.
|
||||
* updatemessages: küldje el, hogy mikor kapott utoljára üzenetet ÉS az új üzeneteket,
|
||||
* a szerver pedig először válaszoljon a szerinte aktuális időponttal,
|
||||
* majd küldje el az annál újabb üzeneteket
|
||||
* getrecentmessages: ezt csak önmagában küldje,
|
||||
* a szerver pedig válaszoljon a legutóbbi x üzenettel,
|
||||
* ahol x egy beállitható szám (alapból 10)
|
||||
* ----
|
||||
* Az új üzeneteket egy listában tárolja, majd amikor továbbitja őket, törölje a listából fokozatosan
|
||||
* (ahogy összeállitja a karakterláncot, mindig törölje azt az üzenetet a listából
|
||||
*
|
||||
* 2014.08.08.
|
||||
* Az UpdateListAndChat thread kezelje ezt is,
|
||||
* az updatemessages packet-et csak akkor küldje el, ha új üzenet érkezik,
|
||||
* a régebbi üzeneteket (getrecentmessages) tárolja el lokálisan, mint minden egyéb adatát
|
||||
*/
|
||||
//while (ChatWindows.Count != 0 && !this.IsDisposed && MainForm.MainThread.IsAlive)
|
||||
//{
|
||||
//}
|
||||
//}
|
||||
|
||||
private void ChatForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
ChatWindows.Remove(this);
|
||||
}
|
||||
|
||||
public static ChatForm GetChatFormByUsers(IEnumerable<int> users) //2014.08.08. - IEnumerable: 2014.08.16.
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < ChatWindows.Count; i++)
|
||||
{
|
||||
if (ChatWindows[i].ChatPartners.HasSameElementsAs(users))
|
||||
break;
|
||||
}
|
||||
return (i != ChatWindows.Count) ? ChatWindows[i] : null; //== --> !=: 2014.09.22.
|
||||
}
|
||||
|
||||
//public static string TMessage;
|
||||
public string TMessage;
|
||||
public int SetThreadValues()
|
||||
{
|
||||
recentMsgTextBox.AppendText(TMessage);
|
||||
TextFormat.Parse(recentMsgTextBox);
|
||||
TMessage = "";
|
||||
recentMsgTextBox.SelectionStart = recentMsgTextBox.TextLength; //2014.04.10.
|
||||
recentMsgTextBox.ScrollToCaret(); //2014.04.10.
|
||||
return 0;
|
||||
}
|
||||
public void OpenSendFile(SelectPartnerForm spform)
|
||||
{
|
||||
//A küldő a szerver - 2014.06.15.
|
||||
//Fogadás: //sendfile üzenet
|
||||
if (openFileDialog1.ShowDialog() == DialogResult.Cancel)
|
||||
return;
|
||||
Stream st = new FileStream(openFileDialog1.FileName, FileMode.Open);
|
||||
try
|
||||
{
|
||||
//if (CurrentUser.CopyToMemoryOnFileSend)
|
||||
if (new FileInfo(openFileDialog1.FileName).Length > Int64.Parse(Storage.Settings["filelen"]))
|
||||
{
|
||||
List<byte> buf = new List<byte>();
|
||||
int b;
|
||||
do
|
||||
{
|
||||
b = st.ReadByte();
|
||||
buf.Add((byte)b);
|
||||
}
|
||||
while (b != -1);
|
||||
st = new MemoryStream(buf.ToArray(), false);
|
||||
}
|
||||
}
|
||||
catch (OutOfMemoryException)
|
||||
{ //A MemoryStream-et nem hozza létre, ezzel elméletileg memóriát felszabadítva
|
||||
st.Seek(0, SeekOrigin.Begin);
|
||||
}
|
||||
IPHostEntry host;
|
||||
IPAddress localIP = IPAddress.Parse("127.0.0.1");
|
||||
host = Dns.GetHostEntry(Dns.GetHostName());
|
||||
foreach (IPAddress ip in host.AddressList)
|
||||
{
|
||||
if (ip.AddressFamily == AddressFamily.InterNetwork)
|
||||
{
|
||||
localIP = ip;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//string ret = Networking.SendRequest("setip", spform.Partners[0] + 'ͦ' + localIP.ToString() + ":" + Settings.Default.port + ":" + openFileDialog1.FileName, 0, true);
|
||||
//var ipAddr = IPAddress.Parse(ret);
|
||||
IPAddress ipAddr = null; //Használja fel a partner ismert IP-címét
|
||||
Socket sListener;
|
||||
SocketPermission permission;
|
||||
permission = new SocketPermission(NetworkAccess.Accept, TransportType.Tcp, "", SocketPermission.AllPorts);
|
||||
sListener = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
|
||||
var ipEndPoint = new IPEndPoint(ipAddr, Int32.Parse(Storage.Settings["port"]));
|
||||
sListener.Listen(1);
|
||||
ST = st; //Átadja az adatfolyamot a nyilvánosabb változónak
|
||||
AsyncCallback aCallback = new AsyncCallback(SendFile_AcceptCallback);
|
||||
sListener.BeginAccept(aCallback, sListener);
|
||||
}
|
||||
private Stream ST;
|
||||
private void SendFile_AcceptCallback(IAsyncResult ar)
|
||||
{
|
||||
Socket listener = (Socket)ar.AsyncState;
|
||||
Socket handler = listener.EndAccept(ar);
|
||||
var ns = new NetworkStream(handler);
|
||||
ns.CopyFrom(ST, new CopyFromArguments(new ProgressChange(SendFile_ProgressChange)));
|
||||
}
|
||||
|
||||
private void SendFile_ProgressChange(long bytesRead, long totalBytesToRead)
|
||||
{
|
||||
Console.WriteLine("SendFile: " + bytesRead + " / " + totalBytesToRead);
|
||||
}
|
||||
|
||||
public string CurrentMessage = "";
|
||||
private void showicons_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (showicons.Checked)
|
||||
{
|
||||
CurrentMessage = messageTextBox.Text;
|
||||
messageTextBox.Enabled = false;
|
||||
TextFormat.Parse(messageTextBox);
|
||||
}
|
||||
else
|
||||
{
|
||||
messageTextBox.Text = CurrentMessage;
|
||||
messageTextBox.Enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
123
Versions/Less Closed Beta/v3.0/MSGer.tk/ChatForm.resx
Normal file
|
@ -0,0 +1,123 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
278
Versions/Less Closed Beta/v3.0/MSGer.tk/CurrentUser.cs
Normal file
|
@ -0,0 +1,278 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
public static class CurrentUser
|
||||
{
|
||||
/*
|
||||
* 2014.03.05.
|
||||
* Információátrendezés: Property-k használata; Minden felhasználóhoz egy-egy User class
|
||||
* Ez a class használható lenne az aktuális felhsaználó információinak tárolására
|
||||
*/
|
||||
//public static int UserID = 0;
|
||||
public static int UserID
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_userid"))
|
||||
Storage.LoggedInSettings.Add("currentuser_userid", "0");
|
||||
return Int32.Parse(Storage.LoggedInSettings["currentuser_userid"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_userid"))
|
||||
Storage.LoggedInSettings.Add("currentuser_userid", "0");
|
||||
Storage.LoggedInSettings["currentuser_userid"] = value.ToString();
|
||||
}
|
||||
}
|
||||
//public static int[] PartnerIDs = new int[1024];
|
||||
//public static string Name = "";
|
||||
public static string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_name"))
|
||||
Storage.LoggedInSettings.Add("currentuser_name", "");
|
||||
return Storage.LoggedInSettings["currentuser_name"];
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_name"))
|
||||
Storage.LoggedInSettings.Add("currentuser_name", "");
|
||||
var tmp = UserInfo.Select(CurrentUser.UserID);
|
||||
if (tmp != null)
|
||||
tmp.Name = value;
|
||||
Storage.LoggedInSettings["currentuser_name"] = value;
|
||||
SendUpdate();
|
||||
}
|
||||
}
|
||||
//public static Language Language = Language.English; //2014.04.19.
|
||||
//public static Language Language;
|
||||
public static Language Language
|
||||
{
|
||||
get
|
||||
{
|
||||
return Language.FromString(Storage.Settings["lang"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
Storage.Settings["lang"] = value.ToString();
|
||||
}
|
||||
}
|
||||
//public static string Message = "";
|
||||
public static string Message
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_message"))
|
||||
Storage.LoggedInSettings.Add("currentuser_message", "");
|
||||
return Storage.LoggedInSettings["currentuser_message"];
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_message"))
|
||||
Storage.LoggedInSettings.Add("currentuser_message", "");
|
||||
var tmp = UserInfo.Select(CurrentUser.UserID);
|
||||
if (tmp != null)
|
||||
tmp.Message = value;
|
||||
Storage.LoggedInSettings["currentuser_message"] = value;
|
||||
SendUpdate();
|
||||
}
|
||||
}
|
||||
//public static string State = "";
|
||||
public static int State
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_state"))
|
||||
Storage.LoggedInSettings.Add("currentuser_state", "0");
|
||||
return Int32.Parse(Storage.LoggedInSettings["currentuser_state"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_state"))
|
||||
Storage.LoggedInSettings.Add("currentuser_state", "0");
|
||||
var tmp = UserInfo.Select(CurrentUser.UserID);
|
||||
if (tmp != null)
|
||||
tmp.State = value;
|
||||
Storage.LoggedInSettings["currentuser_state"] = value.ToString();
|
||||
SendUpdate();
|
||||
}
|
||||
}
|
||||
//public static string UserName = "";
|
||||
public static string UserName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_username"))
|
||||
Storage.LoggedInSettings.Add("currentuser_username", "");
|
||||
return Storage.LoggedInSettings["currentuser_username"];
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_username"))
|
||||
Storage.LoggedInSettings.Add("currentuser_username", "");
|
||||
var tmp = UserInfo.Select(CurrentUser.UserID);
|
||||
if (tmp != null)
|
||||
tmp.UserName = value;
|
||||
Storage.LoggedInSettings["currentuser_username"] = value;
|
||||
SendUpdate();
|
||||
}
|
||||
}
|
||||
//public static string Email = "";
|
||||
public static string Email
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_email"))
|
||||
Storage.LoggedInSettings.Add("currentuser_email", "");
|
||||
return Storage.LoggedInSettings["currentuser_email"];
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_email"))
|
||||
Storage.LoggedInSettings.Add("currentuser_email", "");
|
||||
var tmp = UserInfo.Select(CurrentUser.UserID);
|
||||
if (tmp != null)
|
||||
tmp.Email = value;
|
||||
Storage.LoggedInSettings["currentuser_email"] = value;
|
||||
SendUpdate();
|
||||
}
|
||||
}
|
||||
//private static IPAddress[] ips = new IPAddress[2];
|
||||
/*public static IPAddress[] IPs //2014.08.29.
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!Storage.Settings.ContainsKey("myip"))
|
||||
Storage.LoggedInSettings.Add("myip", "127.0.0.1");
|
||||
string[] strs = Storage.LoggedInSettings["myip"].Split(';');
|
||||
*var ips = new IPAddress[strs.Length];
|
||||
for (int i = 0; i < ips.Length; i++)
|
||||
{
|
||||
ips[i] = IPAddress.Parse(strs[i]);
|
||||
}*
|
||||
IPAddress[] ips = strs.Select(entry => IPAddress.Parse(entry)).ToArray();
|
||||
return ips;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.Settings.ContainsKey("myip"))
|
||||
Storage.Settings.Add("myip", "");
|
||||
string[] strs = value.Select(entry => entry.ToString()).ToArray();
|
||||
Storage.Settings["myip"] = String.Join(";", strs);
|
||||
}
|
||||
}*/
|
||||
//public static IPAddress[] IPs { get; set; }
|
||||
//private static List<IPAddress> ips = new List<IPAddress>();
|
||||
/*public static List<IPAddress> IPs
|
||||
{
|
||||
get
|
||||
{
|
||||
return ips;
|
||||
}
|
||||
set
|
||||
{
|
||||
ips = value;
|
||||
}
|
||||
}*/
|
||||
public static IPAddress IP;
|
||||
/*public static IPAddress IP
|
||||
{
|
||||
get
|
||||
{
|
||||
return IPAddress.Parse(Storage.Settings["myip"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
Storage.Settings["myip"] = value.ToString();
|
||||
}
|
||||
}*/
|
||||
public static string[] Keys
|
||||
{ //2014.09.08-09.
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_keys"))
|
||||
Storage.LoggedInSettings.Add("currentuser_keys", "");
|
||||
var tmp = new string[100]; //Mindig 100 elemű tömb legyen
|
||||
Storage.LoggedInSettings["currentuser_keys"].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).CopyTo(tmp, 0);
|
||||
return tmp;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_keys"))
|
||||
Storage.LoggedInSettings.Add("currentuser_keys", "");
|
||||
string x = "";
|
||||
//Storage.LoggedInSettings["currentuser_keys"] = value.Select(new Func<string, string>(delegate { var x = ""; foreach (var item in value) { x += item + ";"; } return x; }));
|
||||
foreach (var item in value)
|
||||
{
|
||||
x += item;
|
||||
x += ";";
|
||||
}
|
||||
Storage.LoggedInSettings["currentuser_keys"] = x;
|
||||
}
|
||||
}
|
||||
public static int KeyIndex
|
||||
{ //2014.09.09.
|
||||
get
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_keyindex"))
|
||||
Storage.LoggedInSettings.Add("currentuser_keyindex", "0");
|
||||
return Int32.Parse(Storage.LoggedInSettings["currentuser_keyindex"]);
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!Storage.LoggedInSettings.ContainsKey("currentuser_keyindex"))
|
||||
Storage.LoggedInSettings.Add("currentuser_keyindex", "0");
|
||||
Storage.LoggedInSettings["currentuser_keys"] = value.ToString();
|
||||
}
|
||||
}
|
||||
public static bool SendChanges = false;
|
||||
///// <summary>
|
||||
///// Átmásolja-e a memóriába az egész fájlt a küldés előtt.
|
||||
///// Nagy méretű fájloknál nem ajánlott, különben igen a fájl esetleges elérhetetlensége miatt.
|
||||
///// 2014.06.15.
|
||||
///// </summary>
|
||||
//public static bool CopyToMemoryOnFileSend = true; - Automatikusan érzékelje (2014.08.18.)
|
||||
|
||||
public static void SendUpdate()
|
||||
{ //2014.08.30.
|
||||
/*
|
||||
* CurrentUser.SendUpdate()
|
||||
* Bármi változás történik, elküldi mindenkinek
|
||||
*/
|
||||
if (!SendChanges)
|
||||
return;
|
||||
string retstr = "";
|
||||
retstr += UserID + "_name=" + Name + "\n";
|
||||
retstr += UserID + "_message=" + Message + "\n";
|
||||
retstr += UserID + "_state=" + State + "\n";
|
||||
retstr += UserID + "_username=" + UserName + "\n";
|
||||
retstr += UserID + "_email=" + Email + "\n";
|
||||
retstr += UserID + "_ispartner=" + false + "\n"; //Ellenőrizze le, amikor megkapja
|
||||
retstr += UserID + "_lastupdate=" + Program.DateTimeToUnixTime(DateTime.Now);
|
||||
while (true)
|
||||
{
|
||||
byte[][] resp = Networking.SendUpdate(Networking.UpdateType.ListUpdate, Encoding.Unicode.GetBytes(retstr), false);
|
||||
bool fine = false;
|
||||
if (resp == null || resp.Length == 0)
|
||||
break;
|
||||
//foreach (var item in resp) //Ha sehonnan nem kapott választ (egy perc után), újrapróbálkozik
|
||||
foreach (var item in resp) //Ha sehonnan nem kapott választ (egy perc után), újrapróbálkozik
|
||||
{
|
||||
//if (item[4] == 0x01) //Az első 4 byte a UserID
|
||||
if (Networking.ParsePacket(item).Data[0] == 0x01) //2014.09.19.
|
||||
fine = true;
|
||||
}
|
||||
if (fine)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
41
Versions/Less Closed Beta/v3.0/MSGer.tk/ErrorHandling.cs
Normal file
|
@ -0,0 +1,41 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
class ErrorHandling
|
||||
{
|
||||
public static void FormError(Form fname, Exception e)
|
||||
{
|
||||
MessageBox.Show(e.GetType().ToString());
|
||||
if (fname == Program.MainF)
|
||||
{
|
||||
switch (e.GetType().ToString())
|
||||
{
|
||||
/*case "System.NullReferenceException":
|
||||
MessageBox.Show("lol");
|
||||
break;*/
|
||||
default:
|
||||
MessageBox.Show("Ismeretlen hiba történt (" + e.GetType().ToString() + ")!\n\nForrás: " + e.Source + "\nA hibaüzenet: \n" + e.Message + "\nEnnél a műveletnél: " + e.TargetSite);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(fname==MainForm.LoginDialog)
|
||||
{
|
||||
switch (e.GetType().ToString())
|
||||
{
|
||||
/*case "System.NullReferenceException":
|
||||
MessageBox.Show("lol");
|
||||
break;*/
|
||||
default:
|
||||
MessageBox.Show("Ismeretlen hiba történt (" + e.GetType().ToString() + ")!\n\nForrás: " + e.Source + "\nA hibaüzenet: \n" + e.Message + "\nEnnél a műveletnél: " + e.TargetSite);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
176
Versions/Less Closed Beta/v3.0/MSGer.tk/InvitePartner.Designer.cs
generated
Normal file
|
@ -0,0 +1,176 @@
|
|||
namespace MSGer.tk
|
||||
{
|
||||
partial class InvitePartner
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.listBox1 = new System.Windows.Forms.ListBox();
|
||||
this.addbtn = new System.Windows.Forms.Button();
|
||||
this.removebtn = new System.Windows.Forms.Button();
|
||||
this.copybtn = new System.Windows.Forms.Button();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.hideAccepted = new System.Windows.Forms.CheckBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.label1.ForeColor = System.Drawing.Color.Blue;
|
||||
this.label1.Location = new System.Drawing.Point(13, 13);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(189, 24);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Ismerős meghívása";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.label2.Location = new System.Drawing.Point(17, 53);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(98, 24);
|
||||
this.label2.TabIndex = 1;
|
||||
this.label2.Text = "Letöltőlink:";
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.textBox1.BackColor = System.Drawing.Color.White;
|
||||
this.textBox1.Location = new System.Drawing.Point(21, 90);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.ReadOnly = true;
|
||||
this.textBox1.Size = new System.Drawing.Size(382, 20);
|
||||
this.textBox1.TabIndex = 2;
|
||||
this.textBox1.Text = "http://msger.url.ph/download.php?version=latest";
|
||||
//
|
||||
// listBox1
|
||||
//
|
||||
this.listBox1.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.listBox1.BackColor = System.Drawing.Color.White;
|
||||
this.listBox1.FormattingEnabled = true;
|
||||
this.listBox1.Location = new System.Drawing.Point(21, 163);
|
||||
this.listBox1.Name = "listBox1";
|
||||
this.listBox1.Size = new System.Drawing.Size(379, 173);
|
||||
this.listBox1.TabIndex = 6;
|
||||
//
|
||||
// addbtn
|
||||
//
|
||||
this.addbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.addbtn.Location = new System.Drawing.Point(21, 343);
|
||||
this.addbtn.Name = "addbtn";
|
||||
this.addbtn.Size = new System.Drawing.Size(75, 23);
|
||||
this.addbtn.TabIndex = 7;
|
||||
this.addbtn.Text = "Hozzáadás";
|
||||
this.addbtn.UseVisualStyleBackColor = true;
|
||||
this.addbtn.Click += new System.EventHandler(this.addbtn_Click);
|
||||
//
|
||||
// removebtn
|
||||
//
|
||||
this.removebtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.removebtn.Location = new System.Drawing.Point(102, 343);
|
||||
this.removebtn.Name = "removebtn";
|
||||
this.removebtn.Size = new System.Drawing.Size(75, 23);
|
||||
this.removebtn.TabIndex = 8;
|
||||
this.removebtn.Text = "Eltávolítás";
|
||||
this.removebtn.UseVisualStyleBackColor = true;
|
||||
this.removebtn.Click += new System.EventHandler(this.removebtn_Click);
|
||||
//
|
||||
// copybtn
|
||||
//
|
||||
this.copybtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.copybtn.Location = new System.Drawing.Point(292, 343);
|
||||
this.copybtn.Name = "copybtn";
|
||||
this.copybtn.Size = new System.Drawing.Size(108, 23);
|
||||
this.copybtn.TabIndex = 9;
|
||||
this.copybtn.Text = "Kód másolása";
|
||||
this.copybtn.UseVisualStyleBackColor = true;
|
||||
this.copybtn.Click += new System.EventHandler(this.copybtn_Click);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.label3.Location = new System.Drawing.Point(17, 125);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(64, 24);
|
||||
this.label3.TabIndex = 10;
|
||||
this.label3.Text = "Kódok";
|
||||
//
|
||||
// hideAccepted
|
||||
//
|
||||
this.hideAccepted.AutoSize = true;
|
||||
this.hideAccepted.Location = new System.Drawing.Point(251, 132);
|
||||
this.hideAccepted.Name = "hideAccepted";
|
||||
this.hideAccepted.Size = new System.Drawing.Size(149, 17);
|
||||
this.hideAccepted.TabIndex = 11;
|
||||
this.hideAccepted.Text = "Elfogadott kódok elrejtése";
|
||||
this.hideAccepted.UseVisualStyleBackColor = true;
|
||||
this.hideAccepted.CheckedChanged += new System.EventHandler(this.hideAccepted_CheckedChanged);
|
||||
//
|
||||
// InvitePartner
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200)))));
|
||||
this.ClientSize = new System.Drawing.Size(415, 449);
|
||||
this.Controls.Add(this.hideAccepted);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.copybtn);
|
||||
this.Controls.Add(this.removebtn);
|
||||
this.Controls.Add(this.addbtn);
|
||||
this.Controls.Add(this.listBox1);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Name = "InvitePartner";
|
||||
this.Text = "Ismerős meghivása";
|
||||
this.Load += new System.EventHandler(this.InvitePartner_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
private System.Windows.Forms.ListBox listBox1;
|
||||
private System.Windows.Forms.Button addbtn;
|
||||
private System.Windows.Forms.Button removebtn;
|
||||
private System.Windows.Forms.Button copybtn;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.CheckBox hideAccepted;
|
||||
}
|
||||
}
|
75
Versions/Less Closed Beta/v3.0/MSGer.tk/InvitePartner.cs
Normal file
|
@ -0,0 +1,75 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
public partial class InvitePartner : Form
|
||||
{
|
||||
public InvitePartner()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void InvitePartner_Load(object sender, EventArgs e)
|
||||
{
|
||||
RefreshList();
|
||||
}
|
||||
|
||||
private void addbtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
string res = Networking.SendRequest("addcode", "", 0, true);
|
||||
if (res.Length<"Fail".Length || res.Substring(0, "Fail".Length) == "Fail")
|
||||
MessageBox.Show("A kódgenerálás sikertelen.\n\n" + res, "Hiba");
|
||||
else
|
||||
RefreshList();
|
||||
}
|
||||
|
||||
public void RefreshList()
|
||||
{
|
||||
listBox1.Items.Clear();
|
||||
string[] response = Networking.SendRequest("getcodes", "", 0, true).Split('ͦ');
|
||||
int x = 0;
|
||||
for (int i = 0; i+1 < response.Length; i += 2)
|
||||
{
|
||||
if (Int32.Parse(response[i + 1]) == 1)
|
||||
{
|
||||
if (!hideAccepted.Checked)
|
||||
listBox1.Items.Add("Elfogadott - " + response[i]);
|
||||
}
|
||||
else if (Int32.Parse(response[i + 1]) == 0)
|
||||
listBox1.Items.Add("Visszaigazolásra vár - " + response[i]);
|
||||
else MessageBox.Show("Hiba:\n" + response[i] + "\n" + response[i + 1]);
|
||||
x++;
|
||||
}
|
||||
}
|
||||
|
||||
private void removebtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listBox1.SelectedIndex == -1)
|
||||
return;
|
||||
string res = Networking.SendRequest("remcode", listBox1.SelectedItem.ToString().Remove(0, listBox1.SelectedItem.ToString().IndexOf(" - ") + " - ".Length), 0, true);
|
||||
if (res.Substring(0, "Fail".Length) == "Fail")
|
||||
MessageBox.Show("A kód törlése sikertelen.\n\n" + res, "Hiba");
|
||||
else RefreshList();
|
||||
}
|
||||
|
||||
private void copybtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listBox1.SelectedIndex == -1)
|
||||
return;
|
||||
Clipboard.SetText(listBox1.SelectedItem.ToString().Remove(0, listBox1.SelectedItem.ToString().IndexOf(" - ") + " - ".Length));
|
||||
}
|
||||
|
||||
private void hideAccepted_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
RefreshList();
|
||||
}
|
||||
}
|
||||
}
|
120
Versions/Less Closed Beta/v3.0/MSGer.tk/InvitePartner.resx
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
95
Versions/Less Closed Beta/v3.0/MSGer.tk/Language.cs
Normal file
|
@ -0,0 +1,95 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
public class Language
|
||||
{ //2014.04.19.
|
||||
|
||||
public static Dictionary<string, Language> UsedLangs = new Dictionary<string, Language>();
|
||||
|
||||
public Dictionary<string, string> Strings = new Dictionary<string, string>();
|
||||
|
||||
private Language(string lang)
|
||||
{
|
||||
UsedLangs.Add(lang, this);
|
||||
}
|
||||
public Language() //2014.09.06.
|
||||
{
|
||||
if (!Directory.Exists("languages"))
|
||||
Directory.CreateDirectory("languages");
|
||||
string[] files = Directory.GetFiles("languages");
|
||||
if (files.Length == 0)
|
||||
{
|
||||
MessageBox.Show("Error: No languages found.");
|
||||
return; //Még nem jelentkezett be, ezért ki fog lépni
|
||||
}
|
||||
for (int x = 0; x < files.Length; x++)
|
||||
{
|
||||
string[] lines = File.ReadAllLines(files[x]);
|
||||
var dict = lines.Select(l => l.Split('=')).ToDictionary(a => a[0], a => a[1]);
|
||||
//(new Language(files[x].Split('\\')[files[x].Split('\\').Length - 1].Split('.')[0])).Strings = dict; //Eltárol egy új nyelvet, majd a szövegeket hozzátársítja
|
||||
new Language(new FileInfo(files[x]).Name.Split('.')[0]).Strings = dict; //(FileInfo: 2014.09.01.) - Eltárol egy új nyelvet, majd a szövegeket hozzátársítja
|
||||
}
|
||||
|
||||
if (Language.FromString(Storage.Settings["lang"]) == null)
|
||||
{
|
||||
MessageBox.Show("Error: Could not find language: " + Storage.Settings["lang"]);
|
||||
return;
|
||||
}
|
||||
CurrentUser.Language = Language.FromString(Storage.Settings["lang"]);
|
||||
if (CurrentUser.Language == null)
|
||||
{
|
||||
//MessageBox.Show("Error: The specified language is not found.\nTo quickly solve this, copy the preffered language file in languages folder to the same place with the name of \"" + Storage.Settings["lang"] + "\"\nYou can then change the language in your preferences later.");
|
||||
//return;
|
||||
if (Language.UsedLangs.ContainsKey("en"))
|
||||
{
|
||||
MessageBox.Show("Error: The specified language (" + Storage.Settings["lang"] + ") is not found.\nThe program will use english that you can change later.");
|
||||
Storage.Settings["lang"] = "en";
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Error: The specified language (" + Storage.Settings["lang"] + "), nor enlish are found.\nPlease download translations.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return UsedLangs.FirstOrDefault(x => x.Value == this).Key;
|
||||
}
|
||||
public static Language FromString(string value)
|
||||
{
|
||||
Language tmp = null;
|
||||
/*try
|
||||
{
|
||||
tmp = UsedLangs[value];
|
||||
}
|
||||
catch
|
||||
{
|
||||
}*/
|
||||
UsedLangs.TryGetValue(value, out tmp);
|
||||
return tmp;
|
||||
}
|
||||
public static Language GetCuurentLanguage()
|
||||
{
|
||||
return Language.FromString(Storage.Settings["lang"]);
|
||||
}
|
||||
public static string Translate(string id)
|
||||
{ //2014.08.19.
|
||||
Language lang = GetCuurentLanguage();
|
||||
if (lang.Strings.ContainsKey(id))
|
||||
return lang.Strings[id];
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Translation string not found: " + id + "\nIn file: " + lang + ".txt");
|
||||
return "Str not found";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
193
Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.Designer.cs
generated
Normal file
|
@ -0,0 +1,193 @@
|
|||
namespace MSGer.tk
|
||||
{
|
||||
partial class LoginForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginForm));
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.textBox2 = new System.Windows.Forms.TextBox();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.textBox3 = new System.Windows.Forms.TextBox();
|
||||
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
|
||||
this.linkLabel2 = new System.Windows.Forms.LinkLabel();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.label1.ForeColor = System.Drawing.Color.Blue;
|
||||
this.label1.Location = new System.Drawing.Point(12, 9);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(197, 33);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Bejelentkezés";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.label2.Location = new System.Drawing.Point(19, 77);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(63, 24);
|
||||
this.label2.TabIndex = 1;
|
||||
this.label2.Text = "E-mail";
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.AcceptsReturn = true;
|
||||
this.textBox1.AcceptsTab = true;
|
||||
this.textBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
|
||||
this.textBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;
|
||||
this.textBox1.Location = new System.Drawing.Point(88, 80);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Size = new System.Drawing.Size(294, 20);
|
||||
this.textBox1.TabIndex = 2;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.label3.Location = new System.Drawing.Point(19, 106);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(63, 24);
|
||||
this.label3.TabIndex = 3;
|
||||
this.label3.Text = "Jelszó";
|
||||
//
|
||||
// textBox2
|
||||
//
|
||||
this.textBox2.AcceptsReturn = true;
|
||||
this.textBox2.AcceptsTab = true;
|
||||
this.textBox2.Location = new System.Drawing.Point(179, 110);
|
||||
this.textBox2.Name = "textBox2";
|
||||
this.textBox2.PasswordChar = '→';
|
||||
this.textBox2.Size = new System.Drawing.Size(203, 20);
|
||||
this.textBox2.TabIndex = 4;
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.button1.Location = new System.Drawing.Point(235, 153);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(147, 23);
|
||||
this.button1.TabIndex = 5;
|
||||
this.button1.Text = "Bejelentkezés";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// textBox3
|
||||
//
|
||||
this.textBox3.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.textBox3.BackColor = System.Drawing.Color.SteelBlue;
|
||||
this.textBox3.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.textBox3.ForeColor = System.Drawing.Color.White;
|
||||
this.textBox3.Location = new System.Drawing.Point(13, 198);
|
||||
this.textBox3.Multiline = true;
|
||||
this.textBox3.Name = "textBox3";
|
||||
this.textBox3.ReadOnly = true;
|
||||
this.textBox3.Size = new System.Drawing.Size(369, 261);
|
||||
this.textBox3.TabIndex = 6;
|
||||
this.textBox3.Text = resources.GetString("textBox3.Text");
|
||||
this.textBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
//
|
||||
// linkLabel1
|
||||
//
|
||||
this.linkLabel1.AutoSize = true;
|
||||
this.linkLabel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.linkLabel1.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||
this.linkLabel1.LinkColor = System.Drawing.Color.Blue;
|
||||
this.linkLabel1.Location = new System.Drawing.Point(23, 162);
|
||||
this.linkLabel1.Name = "linkLabel1";
|
||||
this.linkLabel1.Size = new System.Drawing.Size(77, 13);
|
||||
this.linkLabel1.TabIndex = 7;
|
||||
this.linkLabel1.TabStop = true;
|
||||
this.linkLabel1.Text = "Regisztráció";
|
||||
this.linkLabel1.VisitedLinkColor = System.Drawing.Color.Blue;
|
||||
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.RegistrateLink);
|
||||
//
|
||||
// linkLabel2
|
||||
//
|
||||
this.linkLabel2.AutoSize = true;
|
||||
this.linkLabel2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.linkLabel2.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||
this.linkLabel2.Location = new System.Drawing.Point(23, 175);
|
||||
this.linkLabel2.Name = "linkLabel2";
|
||||
this.linkLabel2.Size = new System.Drawing.Size(66, 13);
|
||||
this.linkLabel2.TabIndex = 8;
|
||||
this.linkLabel2.TabStop = true;
|
||||
this.linkLabel2.Text = "forgotpass";
|
||||
this.linkLabel2.VisitedLinkColor = System.Drawing.Color.Blue;
|
||||
this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel2_LinkClicked);
|
||||
//
|
||||
// LoginForm
|
||||
//
|
||||
this.AcceptButton = this.button1;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200)))));
|
||||
this.ClientSize = new System.Drawing.Size(394, 471);
|
||||
this.Controls.Add(this.linkLabel2);
|
||||
this.Controls.Add(this.linkLabel1);
|
||||
this.Controls.Add(this.textBox3);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.textBox2);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "LoginForm";
|
||||
this.Opacity = 0.9D;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Bejelentkezés";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.LoginForm_FormClosing);
|
||||
this.Load += new System.EventHandler(this.LoginForm_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox textBox2;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.TextBox textBox3;
|
||||
private System.Windows.Forms.LinkLabel linkLabel1;
|
||||
private System.Windows.Forms.LinkLabel linkLabel2;
|
||||
}
|
||||
}
|
176
Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.RegistrationForm.Designer.cs
generated
Normal file
|
@ -0,0 +1,176 @@
|
|||
namespace MSGer.tk
|
||||
{
|
||||
partial class LoginForm_RegistrationForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.codeText = new System.Windows.Forms.TextBox();
|
||||
this.userText = new System.Windows.Forms.TextBox();
|
||||
this.passText = new System.Windows.Forms.TextBox();
|
||||
this.emailText = new System.Windows.Forms.TextBox();
|
||||
this.registerButton = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.label1.ForeColor = System.Drawing.Color.Blue;
|
||||
this.label1.Location = new System.Drawing.Point(13, 13);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(124, 24);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "Regisztráció";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F);
|
||||
this.label2.Location = new System.Drawing.Point(17, 58);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(44, 24);
|
||||
this.label2.TabIndex = 1;
|
||||
this.label2.Text = "Kód";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F);
|
||||
this.label3.Location = new System.Drawing.Point(17, 92);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(143, 24);
|
||||
this.label3.TabIndex = 2;
|
||||
this.label3.Text = "Felhasználónév";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F);
|
||||
this.label4.Location = new System.Drawing.Point(17, 125);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(63, 24);
|
||||
this.label4.TabIndex = 3;
|
||||
this.label4.Text = "Jelszó";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F);
|
||||
this.label5.Location = new System.Drawing.Point(17, 160);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(63, 24);
|
||||
this.label5.TabIndex = 4;
|
||||
this.label5.Text = "E-mail";
|
||||
//
|
||||
// codeText
|
||||
//
|
||||
this.codeText.Location = new System.Drawing.Point(86, 63);
|
||||
this.codeText.Name = "codeText";
|
||||
this.codeText.Size = new System.Drawing.Size(358, 20);
|
||||
this.codeText.TabIndex = 6;
|
||||
//
|
||||
// userText
|
||||
//
|
||||
this.userText.Location = new System.Drawing.Point(166, 97);
|
||||
this.userText.Name = "userText";
|
||||
this.userText.Size = new System.Drawing.Size(278, 20);
|
||||
this.userText.TabIndex = 7;
|
||||
//
|
||||
// passText
|
||||
//
|
||||
this.passText.Location = new System.Drawing.Point(166, 130);
|
||||
this.passText.Name = "passText";
|
||||
this.passText.PasswordChar = '→';
|
||||
this.passText.Size = new System.Drawing.Size(278, 20);
|
||||
this.passText.TabIndex = 8;
|
||||
//
|
||||
// emailText
|
||||
//
|
||||
this.emailText.Location = new System.Drawing.Point(86, 165);
|
||||
this.emailText.Name = "emailText";
|
||||
this.emailText.Size = new System.Drawing.Size(358, 20);
|
||||
this.emailText.TabIndex = 9;
|
||||
//
|
||||
// registerButton
|
||||
//
|
||||
this.registerButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.registerButton.Location = new System.Drawing.Point(17, 220);
|
||||
this.registerButton.Name = "registerButton";
|
||||
this.registerButton.Size = new System.Drawing.Size(427, 23);
|
||||
this.registerButton.TabIndex = 10;
|
||||
this.registerButton.Text = "Regisztráció";
|
||||
this.registerButton.UseVisualStyleBackColor = true;
|
||||
this.registerButton.Click += new System.EventHandler(this.registerButton_Click);
|
||||
//
|
||||
// LoginForm_RegistrationForm
|
||||
//
|
||||
this.AcceptButton = this.registerButton;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(150)))), ((int)(((byte)(200)))));
|
||||
this.ClientSize = new System.Drawing.Size(469, 356);
|
||||
this.Controls.Add(this.registerButton);
|
||||
this.Controls.Add(this.emailText);
|
||||
this.Controls.Add(this.passText);
|
||||
this.Controls.Add(this.userText);
|
||||
this.Controls.Add(this.codeText);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "LoginForm_RegistrationForm";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Regisztráció";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.TextBox codeText;
|
||||
private System.Windows.Forms.TextBox userText;
|
||||
private System.Windows.Forms.TextBox passText;
|
||||
private System.Windows.Forms.TextBox emailText;
|
||||
private System.Windows.Forms.Button registerButton;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
public partial class LoginForm_RegistrationForm : Form
|
||||
{
|
||||
public LoginForm_RegistrationForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
label1.Text = Language.Translate("registration");
|
||||
label2.Text = Language.Translate("reg_code");
|
||||
label3.Text = Language.Translate("reg_username");
|
||||
label4.Text = Language.Translate("login_password");
|
||||
registerButton.Text = Language.Translate("registration");
|
||||
}
|
||||
|
||||
private void registerButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
registerButton.Enabled = false;
|
||||
if (codeText.TextLength == 0 || userText.TextLength == 0 || passText.TextLength == 0 || emailText.TextLength == 0)
|
||||
{
|
||||
MessageBox.Show(Language.Translate("reg_emptyfield"), Language.Translate("error"));
|
||||
registerButton.Enabled = true;
|
||||
return;
|
||||
}
|
||||
string response = Networking.SendRequest("register", codeText.Text + "ͦ" + userText.Text + "ͦ" + LoginForm.CalculateMD5Hash(passText.Text) + "ͦ" + emailText.Text, 2, false);
|
||||
if(response=="code")
|
||||
{
|
||||
MessageBox.Show(Language.Translate("reg_codeerr"), Language.Translate("error"));
|
||||
registerButton.Enabled = true;
|
||||
}
|
||||
else if (response == "uname")
|
||||
{
|
||||
MessageBox.Show(Language.Translate("reg_nameerr"), Language.Translate("error"));
|
||||
registerButton.Enabled = true;
|
||||
}
|
||||
else if (response == "ulen")
|
||||
{
|
||||
MessageBox.Show(Language.Translate("reg_namelen"), Language.Translate("error"));
|
||||
registerButton.Enabled = true;
|
||||
}
|
||||
else if (response == "plen")
|
||||
{
|
||||
MessageBox.Show(Language.Translate("reg_passlen"), Language.Translate("error"));
|
||||
registerButton.Enabled = true;
|
||||
}
|
||||
else if (response == "email")
|
||||
{
|
||||
MessageBox.Show(Language.Translate("reg_email"), Language.Translate("error"));
|
||||
registerButton.Enabled = true;
|
||||
}
|
||||
else if (response == "Success!")
|
||||
{
|
||||
MessageBox.Show(Language.Translate("reg_success"));
|
||||
Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(Language.Translate("unknown_error") + ":\n" + response);
|
||||
registerButton.Enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
349
Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.cs
Normal file
|
@ -0,0 +1,349 @@
|
|||
//#define LOCAL_SERVER
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Net;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Configuration;
|
||||
using System.Threading;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
public partial class LoginForm : Form
|
||||
{
|
||||
public static string UserCode = "";
|
||||
public static Thread LThread;
|
||||
private void LoginForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
List<string> tmp; //E-mail - 2014.04.02.
|
||||
if (Storage.Settings["email"].Length != 0)
|
||||
tmp = Storage.Settings["email"].Split(',').ToList<string>();
|
||||
else tmp = new List<string>();
|
||||
//textBox1.Text = tmp[0];
|
||||
//textBox1.Text = tmp[tmp.Count - 1]; //2014.07.08.
|
||||
tmp.Add("");
|
||||
textBox1.Text = tmp[Int32.Parse(Storage.Settings["lastusedemail"])]; //2014.07.08.
|
||||
textBox1.AutoCompleteCustomSource.AddRange(tmp.ToArray());
|
||||
this.Activate();
|
||||
this.Activate();
|
||||
}
|
||||
public LoginForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Text = Language.Translate("login");
|
||||
label1.Text = Language.Translate("login");
|
||||
label3.Text = Language.Translate("login_password");
|
||||
button1.Text = Language.Translate("login");
|
||||
linkLabel1.Text = Language.Translate("registration");
|
||||
linkLabel2.Text = Language.Translate("forgotpassword");
|
||||
textBox3.Text = "";
|
||||
List<string> lines = new List<string>();
|
||||
lines.Add(Language.Translate("login_desc1"));
|
||||
lines.Add("");
|
||||
lines.Add(Language.Translate("login_desc2"));
|
||||
textBox3.Lines = lines.ToArray();
|
||||
}
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (button1.Text == Language.Translate("button_cancel"))
|
||||
{
|
||||
ResetAfterLogin(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
if (LThread.IsAlive)
|
||||
{
|
||||
//2014.03.27. - Ne csináljon semmit - Elvégre ilyen nem fordulhat elő sokáig most már
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
//Ellenőrizzen le néhány dolgot helyileg - 2014.04.28.
|
||||
if (textBox2.Text.Length == 0)
|
||||
return;
|
||||
|
||||
// Create the thread object, passing in the Alpha.Beta method
|
||||
// via a ThreadStart delegate. This does not start the thread.
|
||||
LThread = new Thread(new ThreadStart(LoginUser));
|
||||
LThread.Name = "Login Thread";
|
||||
|
||||
// Start the thread
|
||||
LThread.Start();
|
||||
|
||||
// Spin for a while waiting for the started thread to become
|
||||
// alive:
|
||||
while (!LThread.IsAlive) ;
|
||||
}
|
||||
}
|
||||
public delegate int MyDelegate();
|
||||
public int SetLoginValues()
|
||||
{
|
||||
if (UserText.Length == 0)
|
||||
UserText = textBox1.Text;
|
||||
else
|
||||
textBox1.Text = UserText;
|
||||
|
||||
if (PassText.Length == 0)
|
||||
PassText = textBox2.Text;
|
||||
else
|
||||
textBox2.Text = PassText;
|
||||
|
||||
button1.Text = LButtonText;
|
||||
linkLabel1.Enabled = RegistLinkEn; //2014.03.27.
|
||||
if (Closeable)
|
||||
{
|
||||
Closeable = false;
|
||||
Dispose(); //2014.04.04.
|
||||
}
|
||||
textBox1.Enabled = false; //2014.09.01.
|
||||
textBox2.Enabled = false; //2014.09.01.
|
||||
return 0;
|
||||
}
|
||||
public int ResetAfterLogin(bool stoplogint)
|
||||
{
|
||||
button1.Enabled = false;
|
||||
Request.Abort();
|
||||
if (stoplogint) //2014.09.01.
|
||||
//{
|
||||
LThread.Abort(); //2014.09.01.
|
||||
//Networking.ReceiverConnection.Client.Shutdown(System.Net.Sockets.SocketShutdown.Receive); //2014.09.19.
|
||||
//}
|
||||
button1.Text = Language.Translate("login");
|
||||
button1.Enabled = true;
|
||||
linkLabel1.Enabled = true;
|
||||
textBox1.Enabled = true; //2014.09.01.
|
||||
textBox2.Enabled = true; //2014.09.01.
|
||||
return 0;
|
||||
}
|
||||
public int ResetAfterLogin()
|
||||
{ //2014.09.01.
|
||||
return ResetAfterLogin(false); //Ha a thread hívja meg, ne állítsa le a thread-et
|
||||
}
|
||||
public static string UserText = ""; //2014.02.14.
|
||||
public static string PassText = "";
|
||||
public static string LButtonText = "";
|
||||
public static bool RegistLinkEn = true;
|
||||
public static bool Closeable = false;
|
||||
public static HttpWebRequest Request; //2014.03.27. - A megállitáshoz
|
||||
|
||||
public void LoginUser()
|
||||
{
|
||||
//Állitson vissza minden változót, hogy újra belerakja az értekeket - 2014.02.28.
|
||||
UserText = "";
|
||||
PassText = "";
|
||||
RegistLinkEn = false; //2014.03.27.
|
||||
LButtonText = Language.Translate("button_cancel");
|
||||
this.Invoke(new MyDelegate(SetLoginValues));
|
||||
|
||||
//HttpWebRequest httpWReq =
|
||||
// (HttpWebRequest)WebRequest.Create("http://msger.tk/client.php");
|
||||
#if LOCAL_SERVER
|
||||
HttpWebRequest httpWReq =
|
||||
(HttpWebRequest)WebRequest.Create("http://localhost/ChatWithWords/client.php");
|
||||
#else
|
||||
HttpWebRequest httpWReq =
|
||||
(HttpWebRequest)WebRequest.Create("http://msger.url.ph/client.php");
|
||||
#endif
|
||||
|
||||
Request = httpWReq; //2014.03.27.
|
||||
|
||||
ASCIIEncoding encoding = new ASCIIEncoding();
|
||||
string postData = "username=" + UserText;
|
||||
postData += "&password=" + CalculateMD5Hash(PassText).ToLower(); //ToLower: 2014.10.24. 1:22 - Most már a PHP-nak is titkosítania kell többek közt MD5-tel
|
||||
postData += "&key=cas1fe4a6feFEFEFE1616CE8099VFE1444cdasf48c1ase5dg";
|
||||
postData += "&port=" + Storage.Settings["port"]; //2014.08.29.
|
||||
postData += "&isserver=" + Storage.Settings["isserver"]; //2014.09.26.
|
||||
byte[] data = encoding.GetBytes(postData);
|
||||
|
||||
httpWReq.Method = "POST";
|
||||
httpWReq.ContentType = "application/x-www-form-urlencoded";
|
||||
httpWReq.ContentLength = data.Length;
|
||||
|
||||
try
|
||||
{
|
||||
using (Stream stream = httpWReq.GetRequestStream())
|
||||
{
|
||||
stream.Write(data, 0, data.Length);
|
||||
}
|
||||
}
|
||||
catch (WebException e)
|
||||
{
|
||||
if (e.Status != WebExceptionStatus.RequestCanceled)
|
||||
{
|
||||
MessageBox.Show(Language.Translate("connecterror") + "\n" + e.Message, Language.Translate("error"));
|
||||
this.Invoke(new MyDelegate(ResetAfterLogin));
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//Bejelentkezés folyamatban...
|
||||
HttpWebResponse response;
|
||||
try
|
||||
{
|
||||
response = (HttpWebResponse)httpWReq.GetResponse();
|
||||
}
|
||||
catch (WebException e)
|
||||
{
|
||||
if (e.Status != WebExceptionStatus.RequestCanceled)
|
||||
{
|
||||
MessageBox.Show(Language.Translate("connecterror") + "\n" + e.Message, Language.Translate("error"));
|
||||
this.Invoke(new MyDelegate(ResetAfterLogin));
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
|
||||
|
||||
try
|
||||
{
|
||||
if (responseString[0] == '<')
|
||||
{
|
||||
this.Invoke(new MyDelegate(ResetAfterLogin));
|
||||
MessageBox.Show(Language.Translate("error") + ":\n" + responseString);
|
||||
return;
|
||||
}
|
||||
else
|
||||
responseString = responseString.Remove(responseString.IndexOf('<'));
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
if (String.Compare(responseString, "Fail") == 0)
|
||||
{
|
||||
this.Invoke(new MyDelegate(ResetAfterLogin));
|
||||
MessageBox.Show(Language.Translate("error") + ": " + Language.Translate("login_badnamepass"), Language.Translate("error"));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
|
||||
//Elmenti az E-mail-t
|
||||
if (!Storage.Settings["email"].Contains(UserText))
|
||||
{
|
||||
if (Storage.Settings["email"].Length != 0) //2014.07.08.
|
||||
Storage.Settings["email"] += ",";
|
||||
Storage.Settings["email"] += UserText;
|
||||
}
|
||||
//else - 2014.10.02. - Egyszer észrevettem a Google Code összehasonlítójával, hogy ez nem kéne ide
|
||||
Storage.Settings["lastusedemail"] = Storage.Settings["email"].Split(',').ToList<string>().IndexOf(UserText).ToString();
|
||||
//Settings.Default.Save();
|
||||
//Bejelentkezés
|
||||
string[] respstr = responseString.Split('ͦ');
|
||||
//CurrentUser.UserID = Convert.ToInt32(respstr[0]); //Régebben ezt találtam, most meg az Int32.Parse-t... (2014.04.02.)
|
||||
//CurrentUser.Name = respstr[1]; //2014.04.04.
|
||||
//respstr[1]:
|
||||
|
||||
if (respstr[3].Contains("Fail"))
|
||||
{
|
||||
this.Invoke(new MyDelegate(ResetAfterLogin));
|
||||
MessageBox.Show(respstr[3]);
|
||||
return;
|
||||
}
|
||||
string[] entries = respstr[3].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
IEnumerable<IPEndPoint> ips = entries.Select(entry => ((entry != ":") ? new IPEndPoint(IPAddress.Parse(entry.Split(':')[0]), Int32.Parse(entry.Split(':')[1])) : new IPEndPoint(IPAddress.Loopback, 0)));
|
||||
//UserInfo.IPs.AddRange(ips); //2014.08.29.
|
||||
/*foreach(var entry in ips) //2014.08.30.
|
||||
{
|
||||
UserInfo.IPs.Add(entry);
|
||||
}*/
|
||||
UserInfo.IPs = new HashSet<IPEndPoint>(ips); //2014.08.30.
|
||||
//Storage.Settings["myip"] = respstr[2]; //2014.08.29. - A CurrentUser.IPs-en keresztül is lehet rá hivatkozni
|
||||
CurrentUser.IP = IPAddress.Parse(respstr[2]); //2014.10.24. - Most már csak ott lehet rá hivatkozni, felesleges eltárolni
|
||||
//CurrentUser.State = 1; //2014.08.31. 0:42 -- MainForm
|
||||
//2014.09.19. - Bejelentkezés elküldése áthelyezve a MainForm-ba
|
||||
|
||||
CurrentUser.UserID = Int32.Parse(respstr[0]); //2014.09.01. - Áthelyeztem, hogy addig ne higgye bejelentkezettnek, amíg el nem küldi a többieknek
|
||||
|
||||
Storage.SaltKey = CalculateMD5Hash(PassText); //2014.08.07.
|
||||
//Storage.FileName = CurrentUser.UserID.ToString() + ".db"; //2014.08.07.
|
||||
Storage.FileName = respstr[0] + ".db"; //2014.09.01. - Felesleges számmá alakítani, majd vissza
|
||||
|
||||
CurrentUser.UserName = UserText; //2014.09.01. - Ha semmit nem tud saját magáról, és más sem, de nem ismerőse saját magának, akkor az itt beállított felhasználónév érvényesül
|
||||
CurrentUser.Name = UserText; //2014.09.01.
|
||||
string ReceivedPass = respstr[4]; //2014.10.24. 1:39
|
||||
//LoginForm.UserCode = CalculateMD5Hash(CalculateMD5Hash(PassText) + " Some text because why not " + CurrentUser.UserID).ToLower();
|
||||
LoginForm.UserCode = CalculateMD5Hash(ReceivedPass + " Some text because why not " + CurrentUser.UserID).ToLower();
|
||||
|
||||
Closeable = true;
|
||||
this.Invoke(new MyDelegate(SetLoginValues));
|
||||
}
|
||||
}
|
||||
|
||||
public static string CalculateMD5Hash(string input)
|
||||
{
|
||||
// step 1, calculate MD5 hash from input
|
||||
MD5 md5 = System.Security.Cryptography.MD5.Create();
|
||||
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
|
||||
byte[] hash = md5.ComputeHash(inputBytes);
|
||||
|
||||
// step 2, convert byte array to hex string
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < hash.Length; i++)
|
||||
{
|
||||
sb.Append(hash[i].ToString("X2"));
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
private void RegistrateLink(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
(new LoginForm_RegistrationForm()).ShowDialog();
|
||||
}
|
||||
|
||||
private void LoginForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
if (LThread != null && LThread.IsAlive)
|
||||
{
|
||||
LThread.Abort(); //2014.03.27. - Na vajon kell-e más
|
||||
Request.Abort(); //2014.03.27. - Kell... Ez
|
||||
}
|
||||
if (CurrentUser.UserID == 0)
|
||||
Program.Exit();
|
||||
}
|
||||
|
||||
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
if (textBox1.Text.Length == 0)
|
||||
{
|
||||
MessageBox.Show("Nincs megadva felhasználónév."); //Translate!
|
||||
return;
|
||||
}
|
||||
if (MessageBox.Show("Új jelszót kérsz a megadott névhez?", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
||||
{
|
||||
string ret = Networking.SendRequest("resetpass", textBox1.Text, 0, false);
|
||||
if (ret == "nouser")
|
||||
MessageBox.Show("A megadott felhasználó nem létezik.");
|
||||
else if (ret == "already")
|
||||
MessageBox.Show("A link MÁR el lett küldve az E-mail címedre.");
|
||||
else if (ret == "sent")
|
||||
MessageBox.Show("A link elküldve az E-mail címedre.");
|
||||
else if (ret.Contains("notsent"))
|
||||
MessageBox.Show("A link NEM lett elküldve az E-mail címedre.\nHiba: " + ret.Remove(ret.IndexOf("notsent"), "notsent".Length + 1));
|
||||
else
|
||||
MessageBox.Show("Ismeretlen hiba:\n" + ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
125
Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.resx
Normal file
|
@ -0,0 +1,125 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="textBox3.Text" xml:space="preserve">
|
||||
<value>Az e-mail helyett használható a felhasználóneved is.
|
||||
|
||||
Ha nem tudsz bejelentkezni, próbáld meg újrainditani a programot. Ha az sem segít, és nem a felhasználóneveddel/jelszavaddal van a probléma, akkor jelentsd a problémát.</value>
|
||||
</data>
|
||||
</root>
|
274
Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.csproj
Normal file
|
@ -0,0 +1,274 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{F60940C0-05FC-46C0-948E-6DBECBBE38DD}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>MSGer.tk</RootNamespace>
|
||||
<AssemblyName>MSGer.tk</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<NoWin32Manifest>true</NoWin32Manifest>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="GlacialList">
|
||||
<HintPath>D:\Downloads\GlacialListSource13\ListView\bin\Debug\GlacialList.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Khendys.Controls.ExRichTextBox, Version=1.0.5172.33773, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>D:\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Design" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AboutBox1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="AboutBox1.Designer.cs">
|
||||
<DependentUpon>AboutBox1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="AddPartner.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="AddPartner.Designer.cs">
|
||||
<DependentUpon>AddPartner.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BeforeLogin.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="BeforeLogin.Designer.cs">
|
||||
<DependentUpon>BeforeLogin.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ChatForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ChatForm.Designer.cs">
|
||||
<DependentUpon>ChatForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CurrentUser.cs" />
|
||||
<Compile Include="ErrorHandling.cs" />
|
||||
<Compile Include="InvitePartner.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="InvitePartner.Designer.cs">
|
||||
<DependentUpon>InvitePartner.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Language.cs" />
|
||||
<Compile Include="LoginForm.RegistrationForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LoginForm.RegistrationForm.Designer.cs">
|
||||
<DependentUpon>LoginForm.RegistrationForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainForm.Designer.cs">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LoginForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LoginForm.Designer.cs">
|
||||
<DependentUpon>LoginForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Networking.cs" />
|
||||
<Compile Include="Notifier.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Notifier.Designer.cs">
|
||||
<DependentUpon>Notifier.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="PartnerInformation.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PartnerInformation.Designer.cs">
|
||||
<DependentUpon>PartnerInformation.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ProgressStatistic.cs" />
|
||||
<Compile Include="SettingsForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SettingsForm.Designer.cs">
|
||||
<DependentUpon>SettingsForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Storage.cs" />
|
||||
<Compile Include="StreamHelper.cs" />
|
||||
<Compile Include="TextFormat.cs" />
|
||||
<Compile Include="UpdateListAndChat.cs" />
|
||||
<Compile Include="_MyNotifier.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="SelectPartnerForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SelectPartnerForm.Designer.cs">
|
||||
<DependentUpon>SelectPartnerForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="TaskbarNotifier.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserInfo.cs" />
|
||||
<EmbeddedResource Include="AboutBox1.resx">
|
||||
<DependentUpon>AboutBox1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="AddPartner.resx">
|
||||
<DependentUpon>AddPartner.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="BeforeLogin.resx">
|
||||
<DependentUpon>BeforeLogin.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ChatForm.resx">
|
||||
<DependentUpon>ChatForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="InvitePartner.resx">
|
||||
<DependentUpon>InvitePartner.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LoginForm.RegistrationForm.resx">
|
||||
<DependentUpon>LoginForm.RegistrationForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LoginForm.resx">
|
||||
<DependentUpon>LoginForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Notifier.resx">
|
||||
<DependentUpon>Notifier.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="PartnerInformation.resx">
|
||||
<DependentUpon>PartnerInformation.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="SelectPartnerForm.resx">
|
||||
<DependentUpon>SelectPartnerForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="SettingsForm.resx">
|
||||
<DependentUpon>SettingsForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\Blue-Wallpaper-HD 2.jpg" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\Menü 2.jpg" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\Menü 21.jpg" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\Menü 3.jpg" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\Blue-Wallpaper-HD 21.jpg" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\Menü 22.jpg" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\Keresősáv.jpg" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\Blue-Wallpaper-HD1.jpg" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\RichListView\RichListView\RichListView\RichListView.csproj">
|
||||
<Project>{AE5CA7F1-D19E-479B-B06B-39C1280C5005}</Project>
|
||||
<Name>RichListView</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
13
Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.csproj.user
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<PublishUrlHistory>publish\</PublishUrlHistory>
|
||||
<InstallUrlHistory />
|
||||
<SupportUrlHistory />
|
||||
<UpdateUrlHistory />
|
||||
<BootstrapperUrlHistory />
|
||||
<ErrorReportUrlHistory />
|
||||
<FallbackCulture>en-US</FallbackCulture>
|
||||
<VerifyUploadedFiles>false</VerifyUploadedFiles>
|
||||
</PropertyGroup>
|
||||
</Project>
|
28
Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.sln
Normal file
|
@ -0,0 +1,28 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Express 2013 for Windows Desktop
|
||||
VisualStudioVersion = 12.0.21005.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSGer.tk", "MSGer.tk.csproj", "{F60940C0-05FC-46C0-948E-6DBECBBE38DD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RichListView", "..\..\..\RichListView\RichListView\RichListView\RichListView.csproj", "{AE5CA7F1-D19E-479B-B06B-39C1280C5005}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{F60940C0-05FC-46C0-948E-6DBECBBE38DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F60940C0-05FC-46C0-948E-6DBECBBE38DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F60940C0-05FC-46C0-948E-6DBECBBE38DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F60940C0-05FC-46C0-948E-6DBECBBE38DD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AE5CA7F1-D19E-479B-B06B-39C1280C5005}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AE5CA7F1-D19E-479B-B06B-39C1280C5005}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AE5CA7F1-D19E-479B-B06B-39C1280C5005}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AE5CA7F1-D19E-479B-B06B-39C1280C5005}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
BIN
Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.v11.suo
Normal file
BIN
Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.v12.suo
Normal file
911
Versions/Less Closed Beta/v3.0/MSGer.tk/MainForm.Designer.cs
generated
Normal file
|
@ -0,0 +1,911 @@
|
|||
namespace MSGer.tk
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||
SzNPProjects.RichListViewColumn richListViewColumn1 = new SzNPProjects.RichListViewColumn();
|
||||
SzNPProjects.RichListViewColumn richListViewColumn2 = new SzNPProjects.RichListViewColumn();
|
||||
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
|
||||
this.iconMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator18 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.toolStripMenuItem8 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem9 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||
this.fájlToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.kijelentkezésToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.állapotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.elérhetőToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.elfoglaltToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.nincsAGépnélToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.rejtveKapcsolódikToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.fájlKüldéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.üzenetekElőzményeinekMegtekintéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.bezárásToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.kilépésToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ismerősökToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ismerősFelvételeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ismerősSzerkesztéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ismerősTörléseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.csoportLétrehozásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.kategóriaLétrehozásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.kategóriaSzerkesztéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.kategóriaTörléseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.műveletekToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.azonnaliÜzenetKüldéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.egyébKüldéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.emailKüldéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.fájlKüldéseToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.ismerősSzámitógépénekFelhivásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.videóhivásInditásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.onlineFájlokMegtekintéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.közösJátékToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.távsegitségKéréseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.eszközökToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mindigLegfelülToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.hangulatjelekToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.megjelenitendőKépVáltásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.háttérMódositásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.hangokÉsVideóBeállitásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.beállitásokToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.súgóToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.témakörökToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.aSzolgáltatásÁllapotsaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.adatvédelmiNyilatkozatToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.használatiFeltételekToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.visszaélésBejelentéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.segitsenAProgramTökéletesitésébenToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.névjegyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.partnerImages = new System.Windows.Forms.ImageList(this.components);
|
||||
this.partnerMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.üzenetküldésToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.emailKüldéseemailToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.információToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.ismerősLetiltásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ismerősTörléseToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.becenévSzerkesztéseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.eseményértesitésekToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator17 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.beszélgetésnaplóMegnyitásaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.contactList = new SzNPProjects.RichListView();
|
||||
this.iconMenu.SuspendLayout();
|
||||
this.panel2.SuspendLayout();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
this.partnerMenu.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// notifyIcon1
|
||||
//
|
||||
this.notifyIcon1.ContextMenuStrip = this.iconMenu;
|
||||
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
|
||||
this.notifyIcon1.Text = "MSGer.tk";
|
||||
this.notifyIcon1.DoubleClick += new System.EventHandler(this.toolStripMenuItem4_Click);
|
||||
//
|
||||
// iconMenu
|
||||
//
|
||||
this.iconMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripMenuItem4,
|
||||
this.toolStripSeparator18,
|
||||
this.toolStripMenuItem8,
|
||||
this.toolStripMenuItem9});
|
||||
this.iconMenu.Name = "partnerMenu";
|
||||
this.iconMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
|
||||
this.iconMenu.Size = new System.Drawing.Size(147, 76);
|
||||
//
|
||||
// toolStripMenuItem4
|
||||
//
|
||||
this.toolStripMenuItem4.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.toolStripMenuItem4.Name = "toolStripMenuItem4";
|
||||
this.toolStripMenuItem4.Size = new System.Drawing.Size(146, 22);
|
||||
this.toolStripMenuItem4.Text = "Megjelenítés";
|
||||
this.toolStripMenuItem4.Click += new System.EventHandler(this.toolStripMenuItem4_Click);
|
||||
//
|
||||
// toolStripSeparator18
|
||||
//
|
||||
this.toolStripSeparator18.Name = "toolStripSeparator18";
|
||||
this.toolStripSeparator18.Size = new System.Drawing.Size(143, 6);
|
||||
//
|
||||
// toolStripMenuItem8
|
||||
//
|
||||
this.toolStripMenuItem8.Name = "toolStripMenuItem8";
|
||||
this.toolStripMenuItem8.Size = new System.Drawing.Size(146, 22);
|
||||
this.toolStripMenuItem8.Text = "Kijelentkezés";
|
||||
this.toolStripMenuItem8.Click += new System.EventHandler(this.LogoutUser);
|
||||
//
|
||||
// toolStripMenuItem9
|
||||
//
|
||||
this.toolStripMenuItem9.Name = "toolStripMenuItem9";
|
||||
this.toolStripMenuItem9.Size = new System.Drawing.Size(146, 22);
|
||||
this.toolStripMenuItem9.Text = "Kilépés";
|
||||
this.toolStripMenuItem9.Click += new System.EventHandler(this.ExitProgram);
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
|
||||
this.button1.Location = new System.Drawing.Point(519, 104);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(35, 23);
|
||||
this.button1.TabIndex = 4;
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.panel2.BackgroundImage = global::MSGer.tk.Properties.Resources.Keresősáv;
|
||||
this.panel2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||
this.panel2.Controls.Add(this.textBox1);
|
||||
this.panel2.Location = new System.Drawing.Point(0, 96);
|
||||
this.panel2.Name = "panel2";
|
||||
this.panel2.Size = new System.Drawing.Size(513, 31);
|
||||
this.panel2.TabIndex = 5;
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.textBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(249)))), ((int)(((byte)(252)))));
|
||||
this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.textBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(137)))), ((int)(((byte)(161)))), ((int)(((byte)(194)))));
|
||||
this.textBox1.Location = new System.Drawing.Point(6, 8);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Size = new System.Drawing.Size(504, 13);
|
||||
this.textBox1.TabIndex = 3;
|
||||
this.textBox1.Text = "Ismerősök keresése...";
|
||||
this.textBox1.Enter += new System.EventHandler(this.ClearSearchBar);
|
||||
this.textBox1.Leave += new System.EventHandler(this.PutTextInSearchBar);
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.panel1.BackgroundImage = global::MSGer.tk.Properties.Resources.Blue_Wallpaper_HD_2;
|
||||
this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||
this.panel1.Location = new System.Drawing.Point(0, 27);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(624, 63);
|
||||
this.panel1.TabIndex = 2;
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
this.menuStrip1.BackColor = System.Drawing.Color.Black;
|
||||
this.menuStrip1.BackgroundImage = global::MSGer.tk.Properties.Resources.Menü_2;
|
||||
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.fájlToolStripMenuItem,
|
||||
this.ismerősökToolStripMenuItem,
|
||||
this.műveletekToolStripMenuItem,
|
||||
this.eszközökToolStripMenuItem,
|
||||
this.súgóToolStripMenuItem});
|
||||
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.menuStrip1.Name = "menuStrip1";
|
||||
this.menuStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
|
||||
this.menuStrip1.Size = new System.Drawing.Size(624, 24);
|
||||
this.menuStrip1.TabIndex = 0;
|
||||
this.menuStrip1.Text = "menuStrip1";
|
||||
//
|
||||
// fájlToolStripMenuItem
|
||||
//
|
||||
this.fájlToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.kijelentkezésToolStripMenuItem,
|
||||
this.toolStripMenuItem1,
|
||||
this.toolStripSeparator1,
|
||||
this.állapotToolStripMenuItem,
|
||||
this.toolStripSeparator2,
|
||||
this.fájlKüldéseToolStripMenuItem,
|
||||
this.beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem,
|
||||
this.üzenetekElőzményeinekMegtekintéseToolStripMenuItem,
|
||||
this.toolStripSeparator3,
|
||||
this.bezárásToolStripMenuItem,
|
||||
this.toolStripSeparator4,
|
||||
this.kilépésToolStripMenuItem});
|
||||
this.fájlToolStripMenuItem.Name = "fájlToolStripMenuItem";
|
||||
this.fájlToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
||||
this.fájlToolStripMenuItem.Text = "Fájl";
|
||||
//
|
||||
// kijelentkezésToolStripMenuItem
|
||||
//
|
||||
this.kijelentkezésToolStripMenuItem.Name = "kijelentkezésToolStripMenuItem";
|
||||
this.kijelentkezésToolStripMenuItem.Size = new System.Drawing.Size(292, 22);
|
||||
this.kijelentkezésToolStripMenuItem.Text = "Kijelentkezés";
|
||||
this.kijelentkezésToolStripMenuItem.Click += new System.EventHandler(this.LogoutUser);
|
||||
//
|
||||
// toolStripMenuItem1
|
||||
//
|
||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(292, 22);
|
||||
this.toolStripMenuItem1.Text = "Újabb felhasználó bejelentkeztetése...";
|
||||
this.toolStripMenuItem1.Click += new System.EventHandler(this.LoginNewUser);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(289, 6);
|
||||
//
|
||||
// állapotToolStripMenuItem
|
||||
//
|
||||
this.állapotToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.elérhetőToolStripMenuItem,
|
||||
this.elfoglaltToolStripMenuItem,
|
||||
this.nincsAGépnélToolStripMenuItem,
|
||||
this.rejtveKapcsolódikToolStripMenuItem});
|
||||
this.állapotToolStripMenuItem.Name = "állapotToolStripMenuItem";
|
||||
this.állapotToolStripMenuItem.Size = new System.Drawing.Size(292, 22);
|
||||
this.állapotToolStripMenuItem.Text = "Állapot";
|
||||
//
|
||||
// elérhetőToolStripMenuItem
|
||||
//
|
||||
this.elérhetőToolStripMenuItem.Name = "elérhetőToolStripMenuItem";
|
||||
this.elérhetőToolStripMenuItem.Size = new System.Drawing.Size(172, 22);
|
||||
this.elérhetőToolStripMenuItem.Text = "Elérhető";
|
||||
this.elérhetőToolStripMenuItem.Click += new System.EventHandler(this.SetOnlineState);
|
||||
//
|
||||
// elfoglaltToolStripMenuItem
|
||||
//
|
||||
this.elfoglaltToolStripMenuItem.Name = "elfoglaltToolStripMenuItem";
|
||||
this.elfoglaltToolStripMenuItem.Size = new System.Drawing.Size(172, 22);
|
||||
this.elfoglaltToolStripMenuItem.Text = "Elfoglalt";
|
||||
this.elfoglaltToolStripMenuItem.Click += new System.EventHandler(this.SetOnlineState);
|
||||
//
|
||||
// nincsAGépnélToolStripMenuItem
|
||||
//
|
||||
this.nincsAGépnélToolStripMenuItem.Name = "nincsAGépnélToolStripMenuItem";
|
||||
this.nincsAGépnélToolStripMenuItem.Size = new System.Drawing.Size(172, 22);
|
||||
this.nincsAGépnélToolStripMenuItem.Text = "Nincs a gépnél";
|
||||
this.nincsAGépnélToolStripMenuItem.Click += new System.EventHandler(this.SetOnlineState);
|
||||
//
|
||||
// rejtveKapcsolódikToolStripMenuItem
|
||||
//
|
||||
this.rejtveKapcsolódikToolStripMenuItem.Name = "rejtveKapcsolódikToolStripMenuItem";
|
||||
this.rejtveKapcsolódikToolStripMenuItem.Size = new System.Drawing.Size(172, 22);
|
||||
this.rejtveKapcsolódikToolStripMenuItem.Text = "Rejtve kapcsolódik";
|
||||
this.rejtveKapcsolódikToolStripMenuItem.Click += new System.EventHandler(this.SetOnlineState);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(289, 6);
|
||||
//
|
||||
// fájlKüldéseToolStripMenuItem
|
||||
//
|
||||
this.fájlKüldéseToolStripMenuItem.Name = "fájlKüldéseToolStripMenuItem";
|
||||
this.fájlKüldéseToolStripMenuItem.Size = new System.Drawing.Size(292, 22);
|
||||
this.fájlKüldéseToolStripMenuItem.Text = "Fájl küldése...";
|
||||
this.fájlKüldéseToolStripMenuItem.Click += new System.EventHandler(this.SelectPartner);
|
||||
//
|
||||
// beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem
|
||||
//
|
||||
this.beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Name = "beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem";
|
||||
this.beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Size = new System.Drawing.Size(292, 22);
|
||||
this.beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Text = "Beérkezett fájlok mappájának megnyitása";
|
||||
//
|
||||
// üzenetekElőzményeinekMegtekintéseToolStripMenuItem
|
||||
//
|
||||
this.üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Name = "üzenetekElőzményeinekMegtekintéseToolStripMenuItem";
|
||||
this.üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Size = new System.Drawing.Size(292, 22);
|
||||
this.üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Text = "Üzenetek előzményeinek megtekintése...";
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
this.toolStripSeparator3.Size = new System.Drawing.Size(289, 6);
|
||||
//
|
||||
// bezárásToolStripMenuItem
|
||||
//
|
||||
this.bezárásToolStripMenuItem.Name = "bezárásToolStripMenuItem";
|
||||
this.bezárásToolStripMenuItem.Size = new System.Drawing.Size(292, 22);
|
||||
this.bezárásToolStripMenuItem.Text = "Bezárás";
|
||||
this.bezárásToolStripMenuItem.Click += new System.EventHandler(this.bezárásToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator4
|
||||
//
|
||||
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
||||
this.toolStripSeparator4.Size = new System.Drawing.Size(289, 6);
|
||||
//
|
||||
// kilépésToolStripMenuItem
|
||||
//
|
||||
this.kilépésToolStripMenuItem.Name = "kilépésToolStripMenuItem";
|
||||
this.kilépésToolStripMenuItem.Size = new System.Drawing.Size(292, 22);
|
||||
this.kilépésToolStripMenuItem.Text = "Kilépés";
|
||||
this.kilépésToolStripMenuItem.Click += new System.EventHandler(this.ExitProgram);
|
||||
//
|
||||
// ismerősökToolStripMenuItem
|
||||
//
|
||||
this.ismerősökToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.ismerősFelvételeToolStripMenuItem,
|
||||
this.ismerősSzerkesztéseToolStripMenuItem,
|
||||
this.ismerősTörléseToolStripMenuItem,
|
||||
this.toolStripMenuItem3,
|
||||
this.toolStripSeparator5,
|
||||
this.csoportLétrehozásaToolStripMenuItem,
|
||||
this.toolStripSeparator6,
|
||||
this.kategóriaLétrehozásaToolStripMenuItem,
|
||||
this.kategóriaSzerkesztéseToolStripMenuItem,
|
||||
this.kategóriaTörléseToolStripMenuItem});
|
||||
this.ismerősökToolStripMenuItem.Name = "ismerősökToolStripMenuItem";
|
||||
this.ismerősökToolStripMenuItem.Size = new System.Drawing.Size(73, 20);
|
||||
this.ismerősökToolStripMenuItem.Text = "Ismerősök";
|
||||
//
|
||||
// ismerősFelvételeToolStripMenuItem
|
||||
//
|
||||
this.ismerősFelvételeToolStripMenuItem.Name = "ismerősFelvételeToolStripMenuItem";
|
||||
this.ismerősFelvételeToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
|
||||
this.ismerősFelvételeToolStripMenuItem.Text = "Ismerős felvétele...";
|
||||
this.ismerősFelvételeToolStripMenuItem.Click += new System.EventHandler(this.ismerősFelvételeToolStripMenuItem_Click);
|
||||
//
|
||||
// ismerősSzerkesztéseToolStripMenuItem
|
||||
//
|
||||
this.ismerősSzerkesztéseToolStripMenuItem.Name = "ismerősSzerkesztéseToolStripMenuItem";
|
||||
this.ismerősSzerkesztéseToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
|
||||
this.ismerősSzerkesztéseToolStripMenuItem.Text = "Ismerős szerkesztése...";
|
||||
//
|
||||
// ismerősTörléseToolStripMenuItem
|
||||
//
|
||||
this.ismerősTörléseToolStripMenuItem.Name = "ismerősTörléseToolStripMenuItem";
|
||||
this.ismerősTörléseToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
|
||||
this.ismerősTörléseToolStripMenuItem.Text = "Ismerős törlése...";
|
||||
//
|
||||
// toolStripMenuItem3
|
||||
//
|
||||
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
|
||||
this.toolStripMenuItem3.Size = new System.Drawing.Size(199, 22);
|
||||
this.toolStripMenuItem3.Text = "Ismerős meghivása...";
|
||||
this.toolStripMenuItem3.Click += new System.EventHandler(this.InvitePartner);
|
||||
//
|
||||
// toolStripSeparator5
|
||||
//
|
||||
this.toolStripSeparator5.Name = "toolStripSeparator5";
|
||||
this.toolStripSeparator5.Size = new System.Drawing.Size(196, 6);
|
||||
//
|
||||
// csoportLétrehozásaToolStripMenuItem
|
||||
//
|
||||
this.csoportLétrehozásaToolStripMenuItem.Name = "csoportLétrehozásaToolStripMenuItem";
|
||||
this.csoportLétrehozásaToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
|
||||
this.csoportLétrehozásaToolStripMenuItem.Text = "Csoport létrehozása...";
|
||||
//
|
||||
// toolStripSeparator6
|
||||
//
|
||||
this.toolStripSeparator6.Name = "toolStripSeparator6";
|
||||
this.toolStripSeparator6.Size = new System.Drawing.Size(196, 6);
|
||||
//
|
||||
// kategóriaLétrehozásaToolStripMenuItem
|
||||
//
|
||||
this.kategóriaLétrehozásaToolStripMenuItem.Name = "kategóriaLétrehozásaToolStripMenuItem";
|
||||
this.kategóriaLétrehozásaToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
|
||||
this.kategóriaLétrehozásaToolStripMenuItem.Text = "Kategória létrehozása...";
|
||||
//
|
||||
// kategóriaSzerkesztéseToolStripMenuItem
|
||||
//
|
||||
this.kategóriaSzerkesztéseToolStripMenuItem.Name = "kategóriaSzerkesztéseToolStripMenuItem";
|
||||
this.kategóriaSzerkesztéseToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
|
||||
this.kategóriaSzerkesztéseToolStripMenuItem.Text = "Kategória szerkesztése...";
|
||||
//
|
||||
// kategóriaTörléseToolStripMenuItem
|
||||
//
|
||||
this.kategóriaTörléseToolStripMenuItem.Name = "kategóriaTörléseToolStripMenuItem";
|
||||
this.kategóriaTörléseToolStripMenuItem.Size = new System.Drawing.Size(199, 22);
|
||||
this.kategóriaTörléseToolStripMenuItem.Text = "Kategória törlése...";
|
||||
//
|
||||
// műveletekToolStripMenuItem
|
||||
//
|
||||
this.műveletekToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.azonnaliÜzenetKüldéseToolStripMenuItem,
|
||||
this.egyébKüldéseToolStripMenuItem,
|
||||
this.toolStripSeparator7,
|
||||
this.ismerősSzámitógépénekFelhivásaToolStripMenuItem,
|
||||
this.videóhivásInditásaToolStripMenuItem,
|
||||
this.onlineFájlokMegtekintéseToolStripMenuItem,
|
||||
this.közösJátékToolStripMenuItem,
|
||||
this.távsegitségKéréseToolStripMenuItem});
|
||||
this.műveletekToolStripMenuItem.Name = "műveletekToolStripMenuItem";
|
||||
this.műveletekToolStripMenuItem.Size = new System.Drawing.Size(74, 20);
|
||||
this.műveletekToolStripMenuItem.Text = "Műveletek";
|
||||
//
|
||||
// azonnaliÜzenetKüldéseToolStripMenuItem
|
||||
//
|
||||
this.azonnaliÜzenetKüldéseToolStripMenuItem.Name = "azonnaliÜzenetKüldéseToolStripMenuItem";
|
||||
this.azonnaliÜzenetKüldéseToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
|
||||
this.azonnaliÜzenetKüldéseToolStripMenuItem.Text = "Azonnali üzenet küldése...";
|
||||
this.azonnaliÜzenetKüldéseToolStripMenuItem.Click += new System.EventHandler(this.SelectPartner);
|
||||
//
|
||||
// egyébKüldéseToolStripMenuItem
|
||||
//
|
||||
this.egyébKüldéseToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.emailKüldéseToolStripMenuItem,
|
||||
this.fájlKüldéseToolStripMenuItem1});
|
||||
this.egyébKüldéseToolStripMenuItem.Name = "egyébKüldéseToolStripMenuItem";
|
||||
this.egyébKüldéseToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
|
||||
this.egyébKüldéseToolStripMenuItem.Text = "Egyéb küldése";
|
||||
//
|
||||
// emailKüldéseToolStripMenuItem
|
||||
//
|
||||
this.emailKüldéseToolStripMenuItem.Name = "emailKüldéseToolStripMenuItem";
|
||||
this.emailKüldéseToolStripMenuItem.Size = new System.Drawing.Size(160, 22);
|
||||
this.emailKüldéseToolStripMenuItem.Text = "E-mail küldése...";
|
||||
//
|
||||
// fájlKüldéseToolStripMenuItem1
|
||||
//
|
||||
this.fájlKüldéseToolStripMenuItem1.Name = "fájlKüldéseToolStripMenuItem1";
|
||||
this.fájlKüldéseToolStripMenuItem1.Size = new System.Drawing.Size(160, 22);
|
||||
this.fájlKüldéseToolStripMenuItem1.Text = "Fájl küldése...";
|
||||
//
|
||||
// toolStripSeparator7
|
||||
//
|
||||
this.toolStripSeparator7.Name = "toolStripSeparator7";
|
||||
this.toolStripSeparator7.Size = new System.Drawing.Size(250, 6);
|
||||
//
|
||||
// ismerősSzámitógépénekFelhivásaToolStripMenuItem
|
||||
//
|
||||
this.ismerősSzámitógépénekFelhivásaToolStripMenuItem.Name = "ismerősSzámitógépénekFelhivásaToolStripMenuItem";
|
||||
this.ismerősSzámitógépénekFelhivásaToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
|
||||
this.ismerősSzámitógépénekFelhivásaToolStripMenuItem.Text = "Ismerős számitógépének felhivása";
|
||||
//
|
||||
// videóhivásInditásaToolStripMenuItem
|
||||
//
|
||||
this.videóhivásInditásaToolStripMenuItem.Name = "videóhivásInditásaToolStripMenuItem";
|
||||
this.videóhivásInditásaToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
|
||||
this.videóhivásInditásaToolStripMenuItem.Text = "Videóhivás inditása...";
|
||||
//
|
||||
// onlineFájlokMegtekintéseToolStripMenuItem
|
||||
//
|
||||
this.onlineFájlokMegtekintéseToolStripMenuItem.Name = "onlineFájlokMegtekintéseToolStripMenuItem";
|
||||
this.onlineFájlokMegtekintéseToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
|
||||
this.onlineFájlokMegtekintéseToolStripMenuItem.Text = "Online fájlok megtekintése";
|
||||
//
|
||||
// közösJátékToolStripMenuItem
|
||||
//
|
||||
this.közösJátékToolStripMenuItem.Name = "közösJátékToolStripMenuItem";
|
||||
this.közösJátékToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
|
||||
this.közösJátékToolStripMenuItem.Text = "Közös játék...";
|
||||
//
|
||||
// távsegitségKéréseToolStripMenuItem
|
||||
//
|
||||
this.távsegitségKéréseToolStripMenuItem.Name = "távsegitségKéréseToolStripMenuItem";
|
||||
this.távsegitségKéréseToolStripMenuItem.Size = new System.Drawing.Size(253, 22);
|
||||
this.távsegitségKéréseToolStripMenuItem.Text = "Távsegitség kérése...";
|
||||
//
|
||||
// eszközökToolStripMenuItem
|
||||
//
|
||||
this.eszközökToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mindigLegfelülToolStripMenuItem,
|
||||
this.toolStripSeparator8,
|
||||
this.hangulatjelekToolStripMenuItem,
|
||||
this.megjelenitendőKépVáltásaToolStripMenuItem,
|
||||
this.háttérMódositásaToolStripMenuItem,
|
||||
this.toolStripSeparator9,
|
||||
this.hangokÉsVideóBeállitásaToolStripMenuItem,
|
||||
this.toolStripSeparator10,
|
||||
this.beállitásokToolStripMenuItem});
|
||||
this.eszközökToolStripMenuItem.Name = "eszközökToolStripMenuItem";
|
||||
this.eszközökToolStripMenuItem.Size = new System.Drawing.Size(66, 20);
|
||||
this.eszközökToolStripMenuItem.Text = "Eszközök";
|
||||
//
|
||||
// mindigLegfelülToolStripMenuItem
|
||||
//
|
||||
this.mindigLegfelülToolStripMenuItem.CheckOnClick = true;
|
||||
this.mindigLegfelülToolStripMenuItem.Name = "mindigLegfelülToolStripMenuItem";
|
||||
this.mindigLegfelülToolStripMenuItem.Size = new System.Drawing.Size(227, 22);
|
||||
this.mindigLegfelülToolStripMenuItem.Text = "Mindig legfelül";
|
||||
this.mindigLegfelülToolStripMenuItem.Click += new System.EventHandler(this.mindigLegfelülToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator8
|
||||
//
|
||||
this.toolStripSeparator8.Name = "toolStripSeparator8";
|
||||
this.toolStripSeparator8.Size = new System.Drawing.Size(224, 6);
|
||||
//
|
||||
// hangulatjelekToolStripMenuItem
|
||||
//
|
||||
this.hangulatjelekToolStripMenuItem.Name = "hangulatjelekToolStripMenuItem";
|
||||
this.hangulatjelekToolStripMenuItem.Size = new System.Drawing.Size(227, 22);
|
||||
this.hangulatjelekToolStripMenuItem.Text = "Hangulatjelek...";
|
||||
//
|
||||
// megjelenitendőKépVáltásaToolStripMenuItem
|
||||
//
|
||||
this.megjelenitendőKépVáltásaToolStripMenuItem.Name = "megjelenitendőKépVáltásaToolStripMenuItem";
|
||||
this.megjelenitendőKépVáltásaToolStripMenuItem.Size = new System.Drawing.Size(227, 22);
|
||||
this.megjelenitendőKépVáltásaToolStripMenuItem.Text = "Megjelenitendő kép váltása...";
|
||||
//
|
||||
// háttérMódositásaToolStripMenuItem
|
||||
//
|
||||
this.háttérMódositásaToolStripMenuItem.Name = "háttérMódositásaToolStripMenuItem";
|
||||
this.háttérMódositásaToolStripMenuItem.Size = new System.Drawing.Size(227, 22);
|
||||
this.háttérMódositásaToolStripMenuItem.Text = "Háttér módositása...";
|
||||
//
|
||||
// toolStripSeparator9
|
||||
//
|
||||
this.toolStripSeparator9.Name = "toolStripSeparator9";
|
||||
this.toolStripSeparator9.Size = new System.Drawing.Size(224, 6);
|
||||
//
|
||||
// hangokÉsVideóBeállitásaToolStripMenuItem
|
||||
//
|
||||
this.hangokÉsVideóBeállitásaToolStripMenuItem.Name = "hangokÉsVideóBeállitásaToolStripMenuItem";
|
||||
this.hangokÉsVideóBeállitásaToolStripMenuItem.Size = new System.Drawing.Size(227, 22);
|
||||
this.hangokÉsVideóBeállitásaToolStripMenuItem.Text = "Hangok és videó beállitása...";
|
||||
//
|
||||
// toolStripSeparator10
|
||||
//
|
||||
this.toolStripSeparator10.Name = "toolStripSeparator10";
|
||||
this.toolStripSeparator10.Size = new System.Drawing.Size(224, 6);
|
||||
//
|
||||
// beállitásokToolStripMenuItem
|
||||
//
|
||||
this.beállitásokToolStripMenuItem.Name = "beállitásokToolStripMenuItem";
|
||||
this.beállitásokToolStripMenuItem.Size = new System.Drawing.Size(227, 22);
|
||||
this.beállitásokToolStripMenuItem.Text = "Beállitások...";
|
||||
this.beállitásokToolStripMenuItem.Click += new System.EventHandler(this.beállitásokToolStripMenuItem_Click);
|
||||
//
|
||||
// súgóToolStripMenuItem
|
||||
//
|
||||
this.súgóToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.témakörökToolStripMenuItem,
|
||||
this.toolStripSeparator11,
|
||||
this.aSzolgáltatásÁllapotsaToolStripMenuItem,
|
||||
this.adatvédelmiNyilatkozatToolStripMenuItem,
|
||||
this.használatiFeltételekToolStripMenuItem,
|
||||
this.visszaélésBejelentéseToolStripMenuItem,
|
||||
this.toolStripSeparator12,
|
||||
this.segitsenAProgramTökéletesitésébenToolStripMenuItem,
|
||||
this.toolStripSeparator13,
|
||||
this.névjegyToolStripMenuItem});
|
||||
this.súgóToolStripMenuItem.Name = "súgóToolStripMenuItem";
|
||||
this.súgóToolStripMenuItem.Size = new System.Drawing.Size(46, 20);
|
||||
this.súgóToolStripMenuItem.Text = "Súgó";
|
||||
//
|
||||
// témakörökToolStripMenuItem
|
||||
//
|
||||
this.témakörökToolStripMenuItem.Name = "témakörökToolStripMenuItem";
|
||||
this.témakörökToolStripMenuItem.Size = new System.Drawing.Size(270, 22);
|
||||
this.témakörökToolStripMenuItem.Text = "Témakörök";
|
||||
//
|
||||
// toolStripSeparator11
|
||||
//
|
||||
this.toolStripSeparator11.Name = "toolStripSeparator11";
|
||||
this.toolStripSeparator11.Size = new System.Drawing.Size(267, 6);
|
||||
//
|
||||
// aSzolgáltatásÁllapotsaToolStripMenuItem
|
||||
//
|
||||
this.aSzolgáltatásÁllapotsaToolStripMenuItem.Name = "aSzolgáltatásÁllapotsaToolStripMenuItem";
|
||||
this.aSzolgáltatásÁllapotsaToolStripMenuItem.Size = new System.Drawing.Size(270, 22);
|
||||
this.aSzolgáltatásÁllapotsaToolStripMenuItem.Text = "A szolgáltatás állapota";
|
||||
//
|
||||
// adatvédelmiNyilatkozatToolStripMenuItem
|
||||
//
|
||||
this.adatvédelmiNyilatkozatToolStripMenuItem.Name = "adatvédelmiNyilatkozatToolStripMenuItem";
|
||||
this.adatvédelmiNyilatkozatToolStripMenuItem.Size = new System.Drawing.Size(270, 22);
|
||||
this.adatvédelmiNyilatkozatToolStripMenuItem.Text = "Adatvédelmi nyilatkozat";
|
||||
//
|
||||
// használatiFeltételekToolStripMenuItem
|
||||
//
|
||||
this.használatiFeltételekToolStripMenuItem.Name = "használatiFeltételekToolStripMenuItem";
|
||||
this.használatiFeltételekToolStripMenuItem.Size = new System.Drawing.Size(270, 22);
|
||||
this.használatiFeltételekToolStripMenuItem.Text = "Használati feltételek";
|
||||
//
|
||||
// visszaélésBejelentéseToolStripMenuItem
|
||||
//
|
||||
this.visszaélésBejelentéseToolStripMenuItem.Name = "visszaélésBejelentéseToolStripMenuItem";
|
||||
this.visszaélésBejelentéseToolStripMenuItem.Size = new System.Drawing.Size(270, 22);
|
||||
this.visszaélésBejelentéseToolStripMenuItem.Text = "Visszaélés bejelentése";
|
||||
//
|
||||
// toolStripSeparator12
|
||||
//
|
||||
this.toolStripSeparator12.Name = "toolStripSeparator12";
|
||||
this.toolStripSeparator12.Size = new System.Drawing.Size(267, 6);
|
||||
//
|
||||
// segitsenAProgramTökéletesitésébenToolStripMenuItem
|
||||
//
|
||||
this.segitsenAProgramTökéletesitésébenToolStripMenuItem.Name = "segitsenAProgramTökéletesitésébenToolStripMenuItem";
|
||||
this.segitsenAProgramTökéletesitésébenToolStripMenuItem.Size = new System.Drawing.Size(270, 22);
|
||||
this.segitsenAProgramTökéletesitésébenToolStripMenuItem.Text = "Segitsen a program tökéletesitésében";
|
||||
//
|
||||
// toolStripSeparator13
|
||||
//
|
||||
this.toolStripSeparator13.Name = "toolStripSeparator13";
|
||||
this.toolStripSeparator13.Size = new System.Drawing.Size(267, 6);
|
||||
//
|
||||
// névjegyToolStripMenuItem
|
||||
//
|
||||
this.névjegyToolStripMenuItem.Name = "névjegyToolStripMenuItem";
|
||||
this.névjegyToolStripMenuItem.Size = new System.Drawing.Size(270, 22);
|
||||
this.névjegyToolStripMenuItem.Text = "Névjegy";
|
||||
this.névjegyToolStripMenuItem.Click += new System.EventHandler(this.névjegyToolStripMenuItem_Click);
|
||||
//
|
||||
// partnerImages
|
||||
//
|
||||
this.partnerImages.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
|
||||
this.partnerImages.ImageSize = new System.Drawing.Size(16, 16);
|
||||
this.partnerImages.TransparentColor = System.Drawing.Color.Transparent;
|
||||
//
|
||||
// partnerMenu
|
||||
//
|
||||
this.partnerMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.üzenetküldésToolStripMenuItem,
|
||||
this.emailKüldéseemailToolStripMenuItem,
|
||||
this.toolStripMenuItem2,
|
||||
this.információToolStripMenuItem,
|
||||
this.toolStripSeparator14,
|
||||
this.ismerősLetiltásaToolStripMenuItem,
|
||||
this.ismerősTörléseToolStripMenuItem1,
|
||||
this.toolStripSeparator15,
|
||||
this.becenévSzerkesztéseToolStripMenuItem,
|
||||
this.toolStripSeparator16,
|
||||
this.eseményértesitésekToolStripMenuItem,
|
||||
this.toolStripSeparator17,
|
||||
this.beszélgetésnaplóMegnyitásaToolStripMenuItem});
|
||||
this.partnerMenu.Name = "partnerMenu";
|
||||
this.partnerMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
|
||||
this.partnerMenu.Size = new System.Drawing.Size(238, 226);
|
||||
//
|
||||
// üzenetküldésToolStripMenuItem
|
||||
//
|
||||
this.üzenetküldésToolStripMenuItem.Name = "üzenetküldésToolStripMenuItem";
|
||||
this.üzenetküldésToolStripMenuItem.Size = new System.Drawing.Size(237, 22);
|
||||
this.üzenetküldésToolStripMenuItem.Text = "Üzenetküldés";
|
||||
this.üzenetküldésToolStripMenuItem.Click += new System.EventHandler(this.PartnerMenu_SendMessage);
|
||||
//
|
||||
// emailKüldéseemailToolStripMenuItem
|
||||
//
|
||||
this.emailKüldéseemailToolStripMenuItem.Name = "emailKüldéseemailToolStripMenuItem";
|
||||
this.emailKüldéseemailToolStripMenuItem.Size = new System.Drawing.Size(237, 22);
|
||||
this.emailKüldéseemailToolStripMenuItem.Text = "E-mail küldése (email)";
|
||||
//
|
||||
// toolStripMenuItem2
|
||||
//
|
||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(237, 22);
|
||||
this.toolStripMenuItem2.Text = "E-mail másolása";
|
||||
//
|
||||
// információToolStripMenuItem
|
||||
//
|
||||
this.információToolStripMenuItem.Name = "információToolStripMenuItem";
|
||||
this.információToolStripMenuItem.Size = new System.Drawing.Size(237, 22);
|
||||
this.információToolStripMenuItem.Text = "Információ";
|
||||
this.információToolStripMenuItem.Click += new System.EventHandler(this.információToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator14
|
||||
//
|
||||
this.toolStripSeparator14.Name = "toolStripSeparator14";
|
||||
this.toolStripSeparator14.Size = new System.Drawing.Size(234, 6);
|
||||
//
|
||||
// ismerősLetiltásaToolStripMenuItem
|
||||
//
|
||||
this.ismerősLetiltásaToolStripMenuItem.Name = "ismerősLetiltásaToolStripMenuItem";
|
||||
this.ismerősLetiltásaToolStripMenuItem.Size = new System.Drawing.Size(237, 22);
|
||||
this.ismerősLetiltásaToolStripMenuItem.Text = "Ismerős letiltása";
|
||||
//
|
||||
// ismerősTörléseToolStripMenuItem1
|
||||
//
|
||||
this.ismerősTörléseToolStripMenuItem1.Name = "ismerősTörléseToolStripMenuItem1";
|
||||
this.ismerősTörléseToolStripMenuItem1.Size = new System.Drawing.Size(237, 22);
|
||||
this.ismerősTörléseToolStripMenuItem1.Text = "Ismerős törlése";
|
||||
//
|
||||
// toolStripSeparator15
|
||||
//
|
||||
this.toolStripSeparator15.Name = "toolStripSeparator15";
|
||||
this.toolStripSeparator15.Size = new System.Drawing.Size(234, 6);
|
||||
//
|
||||
// becenévSzerkesztéseToolStripMenuItem
|
||||
//
|
||||
this.becenévSzerkesztéseToolStripMenuItem.Name = "becenévSzerkesztéseToolStripMenuItem";
|
||||
this.becenévSzerkesztéseToolStripMenuItem.Size = new System.Drawing.Size(237, 22);
|
||||
this.becenévSzerkesztéseToolStripMenuItem.Text = "Becenév szerkesztése";
|
||||
//
|
||||
// toolStripSeparator16
|
||||
//
|
||||
this.toolStripSeparator16.Name = "toolStripSeparator16";
|
||||
this.toolStripSeparator16.Size = new System.Drawing.Size(234, 6);
|
||||
//
|
||||
// eseményértesitésekToolStripMenuItem
|
||||
//
|
||||
this.eseményértesitésekToolStripMenuItem.Name = "eseményértesitésekToolStripMenuItem";
|
||||
this.eseményértesitésekToolStripMenuItem.Size = new System.Drawing.Size(237, 22);
|
||||
this.eseményértesitésekToolStripMenuItem.Text = "Eseményértesitések";
|
||||
//
|
||||
// toolStripSeparator17
|
||||
//
|
||||
this.toolStripSeparator17.Name = "toolStripSeparator17";
|
||||
this.toolStripSeparator17.Size = new System.Drawing.Size(234, 6);
|
||||
//
|
||||
// beszélgetésnaplóMegnyitásaToolStripMenuItem
|
||||
//
|
||||
this.beszélgetésnaplóMegnyitásaToolStripMenuItem.Name = "beszélgetésnaplóMegnyitásaToolStripMenuItem";
|
||||
this.beszélgetésnaplóMegnyitásaToolStripMenuItem.Size = new System.Drawing.Size(237, 22);
|
||||
this.beszélgetésnaplóMegnyitásaToolStripMenuItem.Text = "Beszélgetésnapló megnyitása...";
|
||||
//
|
||||
// contactList
|
||||
//
|
||||
this.contactList.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.contactList.AutoScroll = true;
|
||||
this.contactList.AutoUpdate = true;
|
||||
this.contactList.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange;
|
||||
this.contactList.ColumnAutoFill = true;
|
||||
richListViewColumn1.Text = null;
|
||||
richListViewColumn1.Width = 50;
|
||||
richListViewColumn2.Text = null;
|
||||
richListViewColumn2.Width = 100;
|
||||
this.contactList.Columns = new SzNPProjects.RichListViewColumn[] {
|
||||
richListViewColumn1,
|
||||
richListViewColumn2};
|
||||
this.contactList.HeaderHeight = 0;
|
||||
this.contactList.ItemHeight = 50;
|
||||
this.contactList.Location = new System.Drawing.Point(0, 134);
|
||||
this.contactList.Name = "contactList";
|
||||
this.contactList.SelectedIndex = -1;
|
||||
this.contactList.SelectionColor = System.Drawing.Color.Aqua;
|
||||
this.contactList.Size = new System.Drawing.Size(624, 311);
|
||||
this.contactList.TabIndex = 8;
|
||||
this.contactList.ItemDoubleClicked += new System.EventHandler<int>(this.contactList_ItemDoubleClicked);
|
||||
this.contactList.ItemRightClicked += new System.EventHandler<int>(this.contactList_ItemRightClicked);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.LightSkyBlue;
|
||||
this.ClientSize = new System.Drawing.Size(624, 442);
|
||||
this.Controls.Add(this.contactList);
|
||||
this.Controls.Add(this.panel2);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.Controls.Add(this.menuStrip1);
|
||||
this.MainMenuStrip = this.menuStrip1;
|
||||
this.Name = "MainForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Live Messenger - MSGer.tk";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.BeforeExit);
|
||||
this.Load += new System.EventHandler(this.OnMainFormLoad);
|
||||
this.iconMenu.ResumeLayout(false);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.panel2.PerformLayout();
|
||||
this.menuStrip1.ResumeLayout(false);
|
||||
this.menuStrip1.PerformLayout();
|
||||
this.partnerMenu.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.MenuStrip menuStrip1;
|
||||
private System.Windows.Forms.ToolStripMenuItem fájlToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem kijelentkezésToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripMenuItem állapotToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem elérhetőToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem elfoglaltToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem nincsAGépnélToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem rejtveKapcsolódikToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||
private System.Windows.Forms.ToolStripMenuItem fájlKüldéseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem üzenetekElőzményeinekMegtekintéseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||
private System.Windows.Forms.ToolStripMenuItem bezárásToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||
private System.Windows.Forms.ToolStripMenuItem kilépésToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem ismerősökToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem ismerősFelvételeToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem ismerősSzerkesztéseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem ismerősTörléseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
||||
private System.Windows.Forms.ToolStripMenuItem csoportLétrehozásaToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
|
||||
private System.Windows.Forms.ToolStripMenuItem kategóriaLétrehozásaToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem kategóriaSzerkesztéseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem kategóriaTörléseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem műveletekToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem azonnaliÜzenetKüldéseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem egyébKüldéseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem emailKüldéseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem fájlKüldéseToolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
|
||||
private System.Windows.Forms.ToolStripMenuItem ismerősSzámitógépénekFelhivásaToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem videóhivásInditásaToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem onlineFájlokMegtekintéseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem közösJátékToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem távsegitségKéréseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem eszközökToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem mindigLegfelülToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
|
||||
private System.Windows.Forms.ToolStripMenuItem hangulatjelekToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem megjelenitendőKépVáltásaToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem háttérMódositásaToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator9;
|
||||
private System.Windows.Forms.ToolStripMenuItem hangokÉsVideóBeállitásaToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
|
||||
private System.Windows.Forms.ToolStripMenuItem beállitásokToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem súgóToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem témakörökToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator11;
|
||||
private System.Windows.Forms.ToolStripMenuItem aSzolgáltatásÁllapotsaToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem adatvédelmiNyilatkozatToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem használatiFeltételekToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem visszaélésBejelentéseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator12;
|
||||
private System.Windows.Forms.ToolStripMenuItem segitsenAProgramTökéletesitésébenToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;
|
||||
private System.Windows.Forms.ToolStripMenuItem névjegyToolStripMenuItem;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.ImageList partnerImages;
|
||||
private System.Windows.Forms.ContextMenuStrip partnerMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem üzenetküldésToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem emailKüldéseemailToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2;
|
||||
private System.Windows.Forms.ToolStripMenuItem információToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator14;
|
||||
private System.Windows.Forms.ToolStripMenuItem ismerősLetiltásaToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem ismerősTörléseToolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator15;
|
||||
private System.Windows.Forms.ToolStripMenuItem becenévSzerkesztéseToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator16;
|
||||
private System.Windows.Forms.ToolStripMenuItem eseményértesitésekToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator17;
|
||||
private System.Windows.Forms.ToolStripMenuItem beszélgetésnaplóMegnyitásaToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem3;
|
||||
private System.Windows.Forms.ContextMenuStrip iconMenu;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator18;
|
||||
public System.Windows.Forms.ToolStripMenuItem toolStripMenuItem4;
|
||||
public System.Windows.Forms.ToolStripMenuItem toolStripMenuItem8;
|
||||
public System.Windows.Forms.ToolStripMenuItem toolStripMenuItem9;
|
||||
internal System.Windows.Forms.NotifyIcon notifyIcon1;
|
||||
internal SzNPProjects.RichListView contactList;
|
||||
}
|
||||
}
|
||||
|
699
Versions/Less Closed Beta/v3.0/MSGer.tk/MainForm.cs
Normal file
|
@ -0,0 +1,699 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Net;
|
||||
using System.IO;
|
||||
using GlacialComponents.Controls;
|
||||
using Khendys.Controls;
|
||||
using System.Threading;
|
||||
using CustomUIControls;
|
||||
using System.Reflection;
|
||||
using SzNPProjects;
|
||||
using System.Net.Sockets;
|
||||
using System.Diagnostics;
|
||||
using System.Net.NetworkInformation;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
public static LoginForm LoginDialog;
|
||||
public static Thread LThread;
|
||||
public static Thread MainThread = null;
|
||||
//public static bool PartnerListThreadActive = true;
|
||||
//public static ToolStripMenuItem SelectPartnerSender = null;
|
||||
public static Notifier taskbarNotifier;
|
||||
public MainForm()
|
||||
{
|
||||
BeforeLogin.SetText("Starting...");
|
||||
InitializeComponent();
|
||||
//beforeloginform.Validate();
|
||||
Thread.CurrentThread.Name = "Main Thread";
|
||||
//contactList.Items.Add(new RichListViewItem()); - 2014.08.28. - Kommentálva, mivel most már itt,
|
||||
//contactList.Items[0].SubItems[0].Text = "Loading..."; - 2014.08.28. - a konstruktorban tölti be, ami nem látszódik a felhasználó számára
|
||||
toolStripMenuItem4.Enabled = false; //2014.04.12.
|
||||
toolStripMenuItem8.Enabled = false; //2014.04.12.
|
||||
|
||||
this.WindowState = FormWindowState.Minimized; //2014.04.19.
|
||||
|
||||
BeforeLogin.SetText("Loading program settings...");
|
||||
Storage.Load(false); //Töltse be a nyelvet, legutóbb használt E-mail-t...
|
||||
|
||||
BeforeLogin.SetText("Checking available ports...");
|
||||
//2014.09.04. - Amint lehet állítsa be a helyes IP-t, majd azt hagyja úgy, akármi történjék
|
||||
while (true)
|
||||
{
|
||||
//remoteEP = new IPEndPoint(IPAddress.Any, Int32.Parse(Storage.Settings["port"]));
|
||||
if (IPGlobalProperties.GetIPGlobalProperties().GetActiveUdpListeners().Select(entry => entry.Port).Contains(Int32.Parse(Storage.Settings["port"])))
|
||||
Storage.Settings["port"] = (Int32.Parse(Storage.Settings["port"]) + 1).ToString();
|
||||
else
|
||||
break;
|
||||
}
|
||||
Networking.ReceiverConnection = new UdpClient(Int32.Parse(Storage.Settings["port"])); //2014.09.04.
|
||||
Networking.SenderConnection.AllowNatTraversal(true); //2014.09.04.
|
||||
|
||||
BeforeLogin.SetText("Loading languages...");
|
||||
//#region Nyelvi beállitások
|
||||
new Language();
|
||||
//MessageBox.Show("Nyelv: " + CurrentUser.Language.ToString());
|
||||
//#endregion
|
||||
|
||||
BeforeLogin.SetText(Language.Translate("beforelogin_translatemainf"));
|
||||
#region Helyi beállitás
|
||||
//try
|
||||
//{
|
||||
fájlToolStripMenuItem.Text = Language.Translate("menu_file");
|
||||
kijelentkezésToolStripMenuItem.Text = Language.Translate("menu_file_logout");
|
||||
toolStripMenuItem1.Text = Language.Translate("menu_file_loginnewuser");
|
||||
állapotToolStripMenuItem.Text = Language.Translate("menu_file_status");
|
||||
elérhetőToolStripMenuItem.Text = Language.Translate("menu_file_status_online");
|
||||
elfoglaltToolStripMenuItem.Text = Language.Translate("menu_file_status_busy");
|
||||
nincsAGépnélToolStripMenuItem.Text = Language.Translate("menu_file_status_away");
|
||||
rejtveKapcsolódikToolStripMenuItem.Text = Language.Translate("menu_file_status_hidden");
|
||||
fájlKüldéseToolStripMenuItem.Text = Language.Translate("menu_file_sendfile");
|
||||
beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Text = Language.Translate("menu_file_openreceivedfiles");
|
||||
üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Text = Language.Translate("menu_file_openrecentmsgs");
|
||||
bezárásToolStripMenuItem.Text = Language.Translate("menu_file_close");
|
||||
kilépésToolStripMenuItem.Text = Language.Translate("menu_file_exit");
|
||||
|
||||
ismerősökToolStripMenuItem.Text = Language.Translate("menu_contacts");
|
||||
ismerősFelvételeToolStripMenuItem.Text = Language.Translate("menu_contacts_add");
|
||||
ismerősSzerkesztéseToolStripMenuItem.Text = Language.Translate("menu_contacts_edit");
|
||||
ismerősTörléseToolStripMenuItem.Text = Language.Translate("menu_contacts_remove");
|
||||
toolStripMenuItem3.Text = Language.Translate("menu_contacts_invite");
|
||||
csoportLétrehozásaToolStripMenuItem.Text = Language.Translate("menu_contacts_makegroup");
|
||||
kategóriaLétrehozásaToolStripMenuItem.Text = Language.Translate("menu_contacts_makecategory");
|
||||
kategóriaSzerkesztéseToolStripMenuItem.Text = Language.Translate("menu_contacts_editcategory");
|
||||
kategóriaTörléseToolStripMenuItem.Text = Language.Translate("menu_contacts_removecategory");
|
||||
|
||||
műveletekToolStripMenuItem.Text = Language.Translate("menu_operations");
|
||||
azonnaliÜzenetKüldéseToolStripMenuItem.Text = Language.Translate("menu_operations_sendmsg");
|
||||
egyébKüldéseToolStripMenuItem.Text = Language.Translate("menu_operations_sendother");
|
||||
emailKüldéseToolStripMenuItem.Text = Language.Translate("menu_operations_sendother_sendmail");
|
||||
fájlKüldéseToolStripMenuItem1.Text = Language.Translate("menu_file_sendfile"); //Ugyanaz a szöveg
|
||||
ismerősSzámitógépénekFelhivásaToolStripMenuItem.Text = Language.Translate("menu_operations_callcontact");
|
||||
videóhivásInditásaToolStripMenuItem.Text = Language.Translate("menu_operations_videocall");
|
||||
onlineFájlokMegtekintéseToolStripMenuItem.Text = Language.Translate("menu_operations_showonlinefiles");
|
||||
közösJátékToolStripMenuItem.Text = Language.Translate("menu_operations_playgame");
|
||||
távsegitségKéréseToolStripMenuItem.Text = Language.Translate("menu_operations_askforhelp");
|
||||
|
||||
eszközökToolStripMenuItem.Text = Language.Translate("menu_tools");
|
||||
mindigLegfelülToolStripMenuItem.Text = Language.Translate("menu_tools_alwaysontop");
|
||||
hangulatjelekToolStripMenuItem.Text = Language.Translate("menu_tools_emoticons");
|
||||
megjelenitendőKépVáltásaToolStripMenuItem.Text = Language.Translate("menu_tools_changeimage");
|
||||
háttérMódositásaToolStripMenuItem.Text = Language.Translate("menu_tools_changebackground");
|
||||
hangokÉsVideóBeállitásaToolStripMenuItem.Text = Language.Translate("menu_tools_voicevideosettings");
|
||||
beállitásokToolStripMenuItem.Text = Language.Translate("menu_tools_settings");
|
||||
|
||||
súgóToolStripMenuItem.Text = Language.Translate("menu_help");
|
||||
témakörökToolStripMenuItem.Text = Language.Translate("menu_help_contents");
|
||||
aSzolgáltatásÁllapotsaToolStripMenuItem.Text = Language.Translate("menu_help_status");
|
||||
adatvédelmiNyilatkozatToolStripMenuItem.Text = Language.Translate("menu_help_privacypolicy");
|
||||
használatiFeltételekToolStripMenuItem.Text = Language.Translate("menu_help_termsofuse");
|
||||
visszaélésBejelentéseToolStripMenuItem.Text = Language.Translate("menu_help_report");
|
||||
segitsenAProgramTökéletesitésébenToolStripMenuItem.Text = Language.Translate("menu_help_improveprogram");
|
||||
névjegyToolStripMenuItem.Text = Language.Translate("menu_help_about");
|
||||
|
||||
textBox1.Text = Language.Translate("searchbar");
|
||||
//contactList.Items[0].SubItems[0].Text = Language.Translate("loading"); - 2014.08.28. - Nincs már rá szükség (hibát is ír, mivel nincs listaelem)
|
||||
|
||||
üzenetküldésToolStripMenuItem.Text = Language.Translate("menu_operations_sendmsg");
|
||||
emailKüldéseemailToolStripMenuItem.Text = Language.Translate("contact_sendemail");
|
||||
toolStripMenuItem2.Text = Language.Translate("contact_copyemail");
|
||||
információToolStripMenuItem.Text = Language.Translate("contact_info");
|
||||
ismerősLetiltásaToolStripMenuItem.Text = Language.Translate("contact_block");
|
||||
ismerősTörléseToolStripMenuItem.Text = Language.Translate("contact_remove");
|
||||
becenévSzerkesztéseToolStripMenuItem.Text = Language.Translate("contact_editname");
|
||||
eseményértesitésekToolStripMenuItem.Text = Language.Translate("contact_eventnotifications");
|
||||
beszélgetésnaplóMegnyitásaToolStripMenuItem.Text = Language.Translate("contact_openchatlog");
|
||||
|
||||
toolStripMenuItem4.Text = Language.Translate("iconmenu_show");
|
||||
toolStripMenuItem8.Text = Language.Translate("menu_file_logout");
|
||||
toolStripMenuItem9.Text = Language.Translate("menu_file_exit");
|
||||
//}
|
||||
//catch
|
||||
//{
|
||||
//MessageBox.Show("Error while loading translations.");
|
||||
//}
|
||||
#endregion
|
||||
|
||||
BeforeLogin.SetText(Language.Translate("beforelogin_loadtextformat"));
|
||||
//2014.05.16.
|
||||
new TextFormat();
|
||||
|
||||
BeforeLogin.SetText(Language.Translate("beforelogin_checkforupdates"));
|
||||
//2014.04.25.
|
||||
//string response = Networking.SendRequest("checkforupdates",
|
||||
/*byte[] response = Networking.SendUpdate(Networking.UpdateType.CheckForUpdates,
|
||||
BitConverter.GetBytes(Int32.Parse(Assembly.GetExecutingAssembly().GetName().Version.ToString().Replace(".", ""))),
|
||||
false);*/
|
||||
string response = Networking.SendRequest("checkforupdates",
|
||||
Assembly.GetExecutingAssembly().GetName().Version.ToString().Replace(".", ""),
|
||||
0, false);
|
||||
if (response == "outofdate")
|
||||
//if(response[0]==0x00)
|
||||
{
|
||||
var res = MessageBox.Show(Language.Translate("outofdate"), Language.Translate("outofdate_caption"), MessageBoxButtons.YesNo);
|
||||
if (res == DialogResult.Yes)
|
||||
System.Diagnostics.Process.Start("http://msger.url.ph/download.php?version=latest");
|
||||
}
|
||||
else if (response != "fine")
|
||||
//else if (response[0]!=0x01)
|
||||
MessageBox.Show(Language.Translate("error") + ": " + response);
|
||||
|
||||
//2014.09.06.
|
||||
if (Storage.Settings["isserver"] == "")
|
||||
{
|
||||
if (MessageBox.Show(Language.Translate("isserver_msg"), "", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
||||
Storage.Settings["isserver"] = "1";
|
||||
else
|
||||
Storage.Settings["isserver"] = "0";
|
||||
}
|
||||
|
||||
BeforeLogin.SetText(Language.Translate("beforelogin_loginform"));
|
||||
try
|
||||
{
|
||||
LoginDialog = new LoginForm();
|
||||
BeforeLogin.Destroy();
|
||||
LoginDialog.ShowDialog();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
ErrorHandling.FormError(LoginDialog, e);
|
||||
}
|
||||
//Nézzük, sikerült-e
|
||||
if (CurrentUser.UserID == 0)
|
||||
return; //2014.09.06.
|
||||
contactList.Enabled = false; //2014.03.05.
|
||||
MainThread = Thread.CurrentThread;
|
||||
|
||||
// Create the thread object, passing in the Alpha.Beta method
|
||||
// via a ThreadStart delegate. This does not start the thread.
|
||||
LThread = new Thread(new ThreadStart(new UpdateListAndChat().Run));
|
||||
//LThread.Name = "Update Partner List";
|
||||
LThread.Name = "Update Partnerlist and Chat";
|
||||
|
||||
Thread keepupthread = new Thread(new ThreadStart(Networking.KeepUpThread));
|
||||
keepupthread.Name = "Keep Up Thread";
|
||||
|
||||
Thread keepupuserst = new Thread(new ThreadStart(Networking.KeepUpUsersThread)); //2014.09.26.
|
||||
keepupuserst.Name = "Keep Up Users Thread";
|
||||
|
||||
Storage.Load(true); //2014.08.07.
|
||||
|
||||
//Temp - 2014.09.15.
|
||||
/*Random rand = new Random();
|
||||
Random rand2 = new Random();
|
||||
string[] keys = new string[CurrentUser.Keys.Length];
|
||||
for (int i = 0; i < CurrentUser.Keys.Length; i++)
|
||||
{
|
||||
string str = "";
|
||||
for (int j = 0; j < 8; j++)
|
||||
{
|
||||
if (rand2.Next(0, 1) == 0)
|
||||
str += (char)rand.Next('a', 'z');
|
||||
else
|
||||
str += (char)rand.Next('A', 'Z' + 1);
|
||||
}
|
||||
//CurrentUser.Keys[i] = str;
|
||||
keys[i] = str;
|
||||
}
|
||||
CurrentUser.Keys = keys;*/
|
||||
|
||||
if (Storage.Settings["windowstate"] == "1") //2014.04.18. - 2014.08.08.
|
||||
this.WindowState = FormWindowState.Maximized;
|
||||
else if (Storage.Settings["windowstate"] == "2")
|
||||
this.WindowState = FormWindowState.Minimized;
|
||||
else if (Storage.Settings["windowstate"] == "3")
|
||||
this.WindowState = FormWindowState.Normal;
|
||||
|
||||
/*#region Partnerlista betöltése
|
||||
#endregion*/
|
||||
//LoadPartnerList();
|
||||
|
||||
taskbarNotifier = new Notifier("popup-bg.bmp", Color.FromArgb(255, 0, 255), "close.bmp", 5000);
|
||||
//taskbarNotifier.Show("Teszt cím", "Teszt tartalom\nMásodik sor");
|
||||
|
||||
taskbarNotifier.Click += PopupClick;
|
||||
taskbarNotifier.CloseClick += PopupCloseClick;
|
||||
|
||||
toolStripMenuItem4.Enabled = true; //2014.04.12.
|
||||
toolStripMenuItem8.Enabled = true; //2014.04.12.
|
||||
|
||||
// Start the thread
|
||||
LThread.Start();
|
||||
|
||||
keepupthread.Start();
|
||||
|
||||
keepupuserst.Start();
|
||||
|
||||
//2014.08.19. - Küldje el a bejelentkezés hírét, hogy frissítéseket kapjon
|
||||
//byte[] strb = Encoding.Unicode.GetBytes(Storage.Settings["myip"]);
|
||||
byte[] strb = Encoding.Unicode.GetBytes(CurrentUser.IP.ToString());
|
||||
byte[] tmpfinal = new byte[8 * UserInfo.KnownUsers.Count + strb.Length + 4]; //Hosszúság, IP, ismert felh. ID, frissítési idő
|
||||
Array.Copy(BitConverter.GetBytes(strb.Length), tmpfinal, 4);
|
||||
Array.Copy(strb, 0, tmpfinal, 4, strb.Length);
|
||||
//if (tmpfinal.Length != 0)
|
||||
if (UserInfo.KnownUsers.Count != 0)
|
||||
{
|
||||
//byte[] tmptmp = BitConverter.GetBytes(CurrentUser.UserID); //Felesleges, eleve elküldi a UserID-t
|
||||
//Array.Copy(tmptmp, tmpfinal, 4);
|
||||
for (int i = 0; i < UserInfo.KnownUsers.Count; i++)
|
||||
{
|
||||
byte[] tmptmp = BitConverter.GetBytes(UserInfo.KnownUsers[i].UserID);
|
||||
Array.Copy(tmptmp, 0, tmpfinal, i * 4 + strb.Length + 4, 4);
|
||||
tmptmp = BitConverter.GetBytes(UserInfo.KnownUsers[i].LastUpdate);
|
||||
Array.Copy(tmptmp, 0, tmpfinal, i * 4 + strb.Length + 4, 4);
|
||||
}
|
||||
}
|
||||
Networking.ParseUpdateInfo(Networking.SendUpdate(Networking.UpdateType.LoginUser, tmpfinal, false));
|
||||
|
||||
notifyIcon1.Visible = true; //2014.09.22.
|
||||
taskbarNotifier.Show("Teszt cím", "Teszt tartalom\nMásodik sor");
|
||||
}
|
||||
|
||||
private void LoadPartnerList() //2014.08.28.
|
||||
{
|
||||
contactList.AutoUpdate = false;
|
||||
UserInfo.AutoUpdate = false; //2014.09.26.
|
||||
//string[] list = Networking.SendRequest("getlist", "", 0, true).Split('ͦ');
|
||||
string[] list = Networking.SendRequest("getlist", "", 0, true).Split(new char[] { 'ͦ' }, StringSplitOptions.RemoveEmptyEntries); //2014.09.26.
|
||||
if (list[0].Contains("Fail"))
|
||||
MessageBox.Show(list[0]);
|
||||
UserInfo.KnownUsers = UserInfo.KnownUsers.Select(entry => { entry.IsPartner = false; return entry; }).ToList(); //2014.09.26.
|
||||
for (int i = 0; i + 1 < list.Length; i += 2)
|
||||
{
|
||||
string username = list[i];
|
||||
int uid = Int32.Parse(list[i + 1]);
|
||||
if (!UserInfo.IDIsInList(UserInfo.KnownUsers, uid))
|
||||
{ //Ha nem tud róla semmit, akkor töltse le a felhasználónevét, és jelenítse meg azt
|
||||
var tmp = new UserInfo();
|
||||
tmp.UserID = uid;
|
||||
tmp.UserName = username;
|
||||
tmp.LastUpdate = 0; //Lényegében nem tud róla túl sokat, ezért ha lehet, frissítse
|
||||
tmp.Name = username;
|
||||
tmp.IsPartner = true;
|
||||
UserInfo.KnownUsers.Add(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
UserInfo.Select(uid).IsPartner = true; //2014.09.26.
|
||||
UserInfo.Select(uid).UserName = username; //2014.09.26. - Nem megváltoztatható, ha egy felhasználó megpróbálja, nem foglalkozik vele
|
||||
}
|
||||
}
|
||||
CurrentUser.State = 1; //2014.08.31. 0:48
|
||||
UserInfo.AutoUpdate = true;
|
||||
foreach (var entry in UserInfo.KnownUsers)
|
||||
{
|
||||
//if (entry.IsPartner)
|
||||
//{
|
||||
/*var pictb = new PictureBox();
|
||||
string imgpath = entry.GetImage();
|
||||
if (imgpath != "noimage.png" || File.Exists("noimage.png")) //2014.03.13.
|
||||
pictb.ImageLocation = imgpath;
|
||||
else
|
||||
MessageBox.Show(Language.Translate("noimage_notfound"), "Hiba");
|
||||
pictb.SizeMode = PictureBoxSizeMode.Zoom; //Megváltoztatva ScretchImage-ről
|
||||
var listtext = new ExRichTextBox();
|
||||
string state = "";
|
||||
if (entry.State == 1)
|
||||
state = " (" + Language.Translate("menu_file_status_online") + ")";
|
||||
else if (entry.State == 2)
|
||||
state = " (" + Language.Translate("menu_file_status_busy") + ")";
|
||||
else if (entry.State == 3)
|
||||
state = " (" + Language.Translate("menu_file_status_away") + ")";
|
||||
listtext.Text = entry.Name + state + "\n" + entry.Message;
|
||||
listtext = TextFormat.Parse(listtext);
|
||||
contactList.Items.Add(new RichListViewItem(new Control[] { pictb, listtext }));
|
||||
entry.ListID = contactList.Items.Count - 1;*/
|
||||
//contactList.Items.Add(new RichListViewItem(2));
|
||||
entry.Update(); //Áthelyeztem, mert az értékek frissítésekor is szükség van rá
|
||||
//}
|
||||
}
|
||||
//UserInfo.AddCurrentUser(); //2014.09.01. - Feleslegesen csináltam meg
|
||||
/*while (contactList.Items.Count > UserInfo.KnownUsers.Count)
|
||||
contactList.Items.RemoveAt(UserInfo.KnownUsers.Count - 1);*/
|
||||
contactList.AutoUpdate = true;
|
||||
contactList.Enabled = true;
|
||||
contactList.Refresh();
|
||||
}
|
||||
|
||||
private void PopupCloseClick(object sender, EventArgs e)
|
||||
{
|
||||
MessageBox.Show("Close");
|
||||
}
|
||||
|
||||
private void PopupClick(object sender, EventArgs e)
|
||||
{
|
||||
MessageBox.Show("Click");
|
||||
}
|
||||
|
||||
private void LogoutUser(object sender, EventArgs e)
|
||||
{
|
||||
this.Hide();
|
||||
toolStripMenuItem4.Enabled = false; //2014.04.12.
|
||||
toolStripMenuItem8.Enabled = false; //2014.04.12.
|
||||
Storage.Save(true); //2014.08.28.
|
||||
SetOnlineState(null, null); //2014.04.11. - Erre nincs beállitva, ezért automatikusan 0-ra, azaz kijelentkeztetettre állítja az állapotát
|
||||
//CurrentUser.UserID = 0; - SetOnlineState-ben is benne van
|
||||
contactList.Items.Clear(); //2014.09.19.
|
||||
UserInfo.KnownUsers.Clear(); //2014.09.19.
|
||||
/*CurrentUser.SendChanges = false; //2014.09.19. - A UserID=0-t még küldje el, de a többit ne - Pontosabban a UserID-t már a SetOnlineState is elküldi
|
||||
CurrentUser.Email = ""; //2014.09.19.
|
||||
CurrentUser.IP = null; //2014.09.19.
|
||||
CurrentUser.KeyIndex = 0; //2014.09.19.
|
||||
CurrentUser.Keys = null; //2014.09.19.
|
||||
CurrentUser.Language = null; //2014.09.19.
|
||||
CurrentUser.Message = ""; //2014.09.19.
|
||||
CurrentUser.Name = ""; //2014.09.19.
|
||||
CurrentUser.State = 0; //2014.09.19.*/
|
||||
Storage.Dispose();
|
||||
/*Networking.ReceiverConnection.Close();
|
||||
Networking.ReceiverConnection = null;
|
||||
Networking.SenderConnection.Close();
|
||||
Networking.SenderConnection = null;*/
|
||||
//PartnerListThreadActive = false;
|
||||
LThread = null;
|
||||
CurrentUser.SendChanges = false; //2014.08.30.
|
||||
//foreach(var item in ChatForm.ChatWindows)
|
||||
while (ChatForm.ChatWindows.Count > 0)
|
||||
{ //2014.09.06. - A Close() hatására törli a gyűjteményből, ezért sorra végig fog haladni rajta
|
||||
//item.Close();
|
||||
ChatForm.ChatWindows[0].Close();
|
||||
}
|
||||
LoginDialog = new LoginForm(); //2014.04.04.
|
||||
LoginDialog.ShowDialog();
|
||||
//Nézzük, sikerült-e
|
||||
if (CurrentUser.UserID == 0)
|
||||
Close();
|
||||
Storage.Load(true); //2014.08.07.
|
||||
toolStripMenuItem4.Enabled = true; //2014.04.12.
|
||||
toolStripMenuItem8.Enabled = true; //2014.04.12.
|
||||
//contactList.Items.Clear(); //2014.03.05.
|
||||
//contactList.Enabled = false; //2014.03.05.
|
||||
//contactList.Items.Add(new RichListViewItem());
|
||||
//contactList.Items[0].SubItems[0].Text = "Betöltés...";
|
||||
CurrentUser.SendChanges = true; //2014.08.30.
|
||||
contactList.Items.Clear(); //2014.10.09. - Kijelentkezéskor hozzáad egy üres listelemet egy (Nem elérhető) felirattal, ezt tünteti el
|
||||
LoadPartnerList();
|
||||
this.Show();
|
||||
//PartnerListThreadActive = true; //2014.02.28. - Törli, majd újra létrehozza a listafrissitő thread-et, ha újra bejelentkezett
|
||||
// Create the thread object, passing in the Alpha.Beta method
|
||||
// via a ThreadStart delegate. This does not start the thread.
|
||||
LThread = new Thread(new ThreadStart(new UpdateListAndChat().Run));
|
||||
LThread.Name = "Update Partner List";
|
||||
|
||||
// Start the thread
|
||||
LThread.Start();
|
||||
}
|
||||
|
||||
private void LoginNewUser(object sender, EventArgs e)
|
||||
{
|
||||
Storage.Save(true); //2014.09.19.
|
||||
//System.Diagnostics.Process.Start("MSGer.tk.exe");
|
||||
Process.Start(((Program.ProcessName.Contains("vshost")) ? Program.ProcessName.Replace(".vshost", "") : Program.ProcessName) + ".exe", "multi");
|
||||
}
|
||||
|
||||
public void SetOnlineState(object sender, EventArgs e)
|
||||
{
|
||||
int state = 0;
|
||||
if (sender == elérhetőToolStripMenuItem)
|
||||
state = 1;
|
||||
if (sender == elfoglaltToolStripMenuItem)
|
||||
state = 2;
|
||||
if (sender == nincsAGépnélToolStripMenuItem)
|
||||
state = 3;
|
||||
//if (sender == rejtveKapcsolódikToolStripMenuItem) //Ha rejtve van, hagyja 0-n a state változót, azaz küldje el azt, hogy nincs bejelentkezve
|
||||
//state = 4;
|
||||
if (sender == null) //2014.08.30. - Erre nagyon sokáig nem volt felkészítve, és ezt kihasználtam a kijelentkezéshez
|
||||
{
|
||||
Networking.SendRequest("setstate", 0 + "", 0, true); //Kijelentkezés
|
||||
//byte[] tmpb = Encoding.Unicode.GetBytes(Storage.Settings["myip"]);
|
||||
byte[] tmpb = Encoding.Unicode.GetBytes(CurrentUser.IP.ToString());
|
||||
byte[] sendb = new byte[4 + tmpb.Length];
|
||||
Array.Copy(BitConverter.GetBytes(tmpb.Length), sendb, 4);
|
||||
Array.Copy(tmpb, 0, sendb, 4, tmpb.Length);
|
||||
Networking.SendUpdate(Networking.UpdateType.LogoutUser, sendb, false);
|
||||
}
|
||||
CurrentUser.State = state; //2014.08.28.
|
||||
//HTTP
|
||||
//if (!Networking.SendUpdate(Networking.UpdateType.SetState, BitConverter.GetBytes(state), false)[0].Contains((byte)0x01))
|
||||
//var ret = Networking.SendUpdate(Networking.UpdateType.SetState, BitConverter.GetBytes(state), false); - 2014.09.09. - A CurrentUser.State-nél már elküldi
|
||||
//if (ret == null || !ret[0].Contains((byte)0x01))
|
||||
/*if (ret == null || ret.Length == 0)
|
||||
return;
|
||||
bool ok = false;
|
||||
for (int i = 0; i < ret.Length; i++)
|
||||
{
|
||||
if(ret[i][4]==0x01) //Az első 4 byte a UserID
|
||||
{
|
||||
ok = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!ok)
|
||||
MessageBox.Show(Language.Translate("setstate_error"));*/
|
||||
}
|
||||
|
||||
private void SelectPartner(object sender, EventArgs e)
|
||||
{
|
||||
//SelectPartnerSender = (ToolStripMenuItem)sender;
|
||||
//DialogResult dr = new DialogResult();
|
||||
var form = new SelectPartnerForm((ToolStripMenuItem)sender);
|
||||
//dr = form.ShowDialog();
|
||||
DialogResult dr = form.ShowDialog();
|
||||
if (dr == DialogResult.OK)
|
||||
{
|
||||
//2014.04.25.
|
||||
string[] partners = form.Partners;
|
||||
ChatForm tmpchat = new ChatForm();
|
||||
for (int i = 0; i < partners.Length; i++)
|
||||
{
|
||||
if (partners[i] != "") //2014.04.17.
|
||||
{
|
||||
for (int j = 0; j < UserInfo.KnownUsers.Count; j++)
|
||||
{
|
||||
if (!UserInfo.KnownUsers[j].IsPartner)
|
||||
continue;
|
||||
int tmp; //2014.04.17.
|
||||
if (!Int32.TryParse(partners[i], out tmp))
|
||||
tmp = -1;
|
||||
if (UserInfo.KnownUsers[j].UserName == partners[i] || UserInfo.KnownUsers[j].Email == partners[i] || UserInfo.KnownUsers[j].UserID == tmp)
|
||||
{ //Egyezik a név, E-mail vagy ID - UserName: 2014.04.17.
|
||||
//tmpchat.ChatPartners.Add(j); //A Partners-beli indexét adja meg
|
||||
tmpchat.ChatPartners.Add(UserInfo.KnownUsers[j].UserID); //2014.08.28.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tmpchat.ChatPartners.Count != 0)
|
||||
{
|
||||
ChatForm.ChatWindows.Add(tmpchat);
|
||||
//if (SelectPartnerSender == fájlKüldéseToolStripMenuItem)
|
||||
if (sender == fájlKüldéseToolStripMenuItem)
|
||||
{
|
||||
tmpchat.Show();
|
||||
tmpchat.OpenSendFile(form);
|
||||
}
|
||||
//if (SelectPartnerSender == azonnaliÜzenetKüldéseToolStripMenuItem)
|
||||
if (sender == azonnaliÜzenetKüldéseToolStripMenuItem)
|
||||
{
|
||||
tmpchat.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//public delegate int MyDelegate();
|
||||
|
||||
private void ClearSearchBar(object sender, EventArgs e)
|
||||
{
|
||||
//if (textBox1.Text == "Ismerősök keresése...")
|
||||
if (textBox1.Text == Language.Translate("searchbar"))
|
||||
textBox1.Clear();
|
||||
}
|
||||
|
||||
private void PutTextInSearchBar(object sender, EventArgs e)
|
||||
{
|
||||
if (textBox1.Text == "")
|
||||
//textBox1.Text = "Ismerősök keresése...";
|
||||
textBox1.Text = Language.Translate("searchbar");
|
||||
}
|
||||
public static int RightClickedPartner = -1;
|
||||
/*private void ContactItemRightClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button != MouseButtons.Right || contactList.HotItemIndex>=contactList.Items.Count)
|
||||
{ //Igy nem reagál arra sem, ha üres területre kattintunk
|
||||
return;
|
||||
}
|
||||
contactList.Items[contactList.HotItemIndex].Selected = true;
|
||||
RightClickedPartner = contactList.HotItemIndex;
|
||||
partnerMenu.Show(Cursor.Position);
|
||||
}*/
|
||||
/*private void OpenSendMessage(object sender, EventArgs e) //2014.03.02. 0:17
|
||||
{
|
||||
int tmp = contactList.HotItemIndex;
|
||||
if (RightClickedPartner == -1)
|
||||
RightClickedPartner = tmp;
|
||||
if (RightClickedPartner == -1 || RightClickedPartner >= contactList.Items.Count)
|
||||
return;
|
||||
//Üzenetküldő form
|
||||
int ChatNum = -1;
|
||||
for (int i = 0; i < ChatForm.ChatWindows.Count; i++)
|
||||
{
|
||||
if (ChatForm.ChatWindows[i].ChatPartners.Count==1 && ChatForm.ChatWindows[i].ChatPartners.Contains(RightClickedPartner))
|
||||
{ //Vele, és csak vele beszél
|
||||
ChatNum = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(ChatNum==-1)
|
||||
{ //Nincs még chatablaka
|
||||
ChatForm.ChatWindows.Add(new ChatForm());
|
||||
ChatForm.ChatWindows[ChatForm.ChatWindows.Count - 1].ChatPartners.Add(RightClickedPartner);
|
||||
ChatForm.ChatWindows[ChatForm.ChatWindows.Count - 1].Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
ChatForm.ChatWindows[ChatNum].Show();
|
||||
ChatForm.ChatWindows[ChatNum].Focus();
|
||||
}
|
||||
|
||||
RightClickedPartner = -1;
|
||||
}*/
|
||||
|
||||
public static void OpenSendMessage(int uid)
|
||||
{
|
||||
//Üzenetküldő form
|
||||
int ChatNum = -1;
|
||||
//int uid = UserInfo.GetUserIDFromListID(e);
|
||||
for (int i = 0; i < ChatForm.ChatWindows.Count; i++)
|
||||
{
|
||||
if (ChatForm.ChatWindows[i].ChatPartners.Count == 1 && ChatForm.ChatWindows[i].ChatPartners.Contains(uid))
|
||||
{ //Vele, és csak vele beszél
|
||||
ChatNum = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (ChatNum == -1)
|
||||
{ //Nincs még chatablaka
|
||||
ChatForm.ChatWindows.Add(new ChatForm());
|
||||
ChatForm.ChatWindows[ChatForm.ChatWindows.Count - 1].ChatPartners.Add(uid);
|
||||
ChatForm.ChatWindows[ChatForm.ChatWindows.Count - 1].Show();
|
||||
ChatForm.ChatWindows[ChatForm.ChatWindows.Count - 1].Focus(); //2014.08.08.
|
||||
}
|
||||
else
|
||||
{
|
||||
ChatForm.ChatWindows[ChatNum].Show();
|
||||
ChatForm.ChatWindows[ChatNum].Focus();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnMainFormLoad(object sender, EventArgs e)
|
||||
{
|
||||
if (CurrentUser.UserID == 0)
|
||||
Program.Exit();
|
||||
|
||||
LoadPartnerList(); //Be kell töltenie a MainForm-nak, hogy hivatkozhasson rá
|
||||
|
||||
CurrentUser.SendChanges = true; //2014.08.30.
|
||||
}
|
||||
|
||||
private void InvitePartner(object sender, EventArgs e)
|
||||
{
|
||||
(new InvitePartner()).ShowDialog();
|
||||
}
|
||||
|
||||
private void BeforeExit(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
e.Cancel = true;
|
||||
this.Hide();
|
||||
}
|
||||
|
||||
private void toolStripMenuItem4_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (CurrentUser.UserID != 0) //2014.04.18.
|
||||
{
|
||||
this.Show();
|
||||
this.Focus();
|
||||
}
|
||||
}
|
||||
|
||||
private void ExitProgram(object sender, EventArgs e)
|
||||
{
|
||||
Program.Exit();
|
||||
}
|
||||
|
||||
private void ismerősFelvételeToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
(new AddPartner()).ShowDialog();
|
||||
}
|
||||
|
||||
private void névjegyToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
(new AboutBox1()).ShowDialog();
|
||||
}
|
||||
|
||||
private void mindigLegfelülToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.TopMost = mindigLegfelülToolStripMenuItem.Checked;
|
||||
}
|
||||
|
||||
private void beállitásokToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
(new SettingsForm()).Show();
|
||||
}
|
||||
|
||||
private void contactList_ItemDoubleClicked(object sender, int e)
|
||||
{
|
||||
int uid = UserInfo.GetUserIDFromListID(e);
|
||||
OpenSendMessage(uid);
|
||||
}
|
||||
|
||||
private void bezárásToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Hide();
|
||||
}
|
||||
|
||||
private void információToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (RightClickedPartner == -1)
|
||||
return;
|
||||
/*string shownname = "";
|
||||
int status = 0;
|
||||
string message = "";
|
||||
string username = "";
|
||||
int userid = 0;
|
||||
string email = "";*/
|
||||
for (int i = 0; i < UserInfo.KnownUsers.Count; i++)
|
||||
{
|
||||
if (UserInfo.KnownUsers[i].ListID != RightClickedPartner)
|
||||
continue;
|
||||
(new PartnerInformation(UserInfo.KnownUsers[i])).ShowDialog();
|
||||
break;
|
||||
}
|
||||
//(new PartnerInformation(shownname, status, message, username, userid, email)).ShowDialog();
|
||||
}
|
||||
|
||||
private void contactList_ItemRightClicked(object sender, int e)
|
||||
{
|
||||
contactList.Items[e].Selected = true;
|
||||
RightClickedPartner = e;
|
||||
partnerMenu.Show(Cursor.Position);
|
||||
}
|
||||
|
||||
private void PartnerMenu_SendMessage(object sender, EventArgs e)
|
||||
{
|
||||
if (RightClickedPartner == -1)
|
||||
return;
|
||||
int uid = UserInfo.GetUserIDFromListID(RightClickedPartner);
|
||||
OpenSendMessage(uid);
|
||||
RightClickedPartner = -1;
|
||||
}
|
||||
}
|
||||
}
|
136
Versions/Less Closed Beta/v3.0/MSGer.tk/MainForm.resx
Normal file
|
@ -0,0 +1,136 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>WLM 2009 Logo base64-encoded probably - Spent hours on the correct sed command</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>WLM 2009 Logo base64-encoded probably - Spent hours on the correct sed command</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>WLM 2009 Logo base64-encoded probably - Spent hours on the correct sed command</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>WLM 2009 Logo base64-encoded probably - Spent hours on the correct sed command</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="iconMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>530, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>WLM 2009 Logo base64-encoded probably - Spent hours on the correct sed command</value>
|
||||
</data>
|
||||
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>130, 17</value>
|
||||
</metadata>
|
||||
<metadata name="partnerImages.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>245, 17</value>
|
||||
</metadata>
|
||||
<metadata name="partnerMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>375, 17</value>
|
||||
</metadata>
|
||||
</root>
|
513
Versions/Less Closed Beta/v3.0/MSGer.tk/Networking.cs
Normal file
|
@ -0,0 +1,513 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
static class Networking
|
||||
{
|
||||
public enum UpdateType : byte
|
||||
{
|
||||
//CheckForUpdates = 0x01, //0x00: outofdate, 0x01: fine -- Ezt is a weboldalról ellenőrizze
|
||||
//SetState = 0x01, //0x01: Success
|
||||
//GetList - Változás esetén küldjék el, ne kelljen letölteni
|
||||
ListUpdate = 0x01, //0x01: OK
|
||||
UpdateMessages, //0x01: OK
|
||||
GetImage, //(int)0: Hiba, egyébként a kép hossza, majd a kép
|
||||
//FindPeople,
|
||||
//UpdateSettings, - Küldje el a ListUpdate-tel
|
||||
LoginUser, //0x00: Hiba - Egyébként minden fontos információ, amiről "lemaradt"
|
||||
LogoutUser, //0x01: OK
|
||||
SetKey, //0x01: OK
|
||||
KeepAlive,
|
||||
};
|
||||
//public static UdpClient Connection = new UdpClient();
|
||||
public static UdpClient SenderConnection = new UdpClient(); //2014.09.04. - Ezt ne társítsa egy porthoz, hogy működjön az udp hole punching
|
||||
public static UdpClient ReceiverConnection = new UdpClient(); //2014.09.04. - Társítsa egy porthoz
|
||||
public static byte[] DataBuffer;
|
||||
public static IPEndPoint RemoteEP;
|
||||
public static bool WaitingOnResponse = false; //2014.08.16.
|
||||
public static byte WaitingOnPacket = 0x00; //2014.08.16. - 0x00: Nincs
|
||||
public static byte[][] SendUpdate(UpdateType ut, byte[] data, bool response)
|
||||
{
|
||||
if (UserInfo.IPs.Count == 0)
|
||||
return null;
|
||||
/*try - A Connection MINDIG be legyen állítva
|
||||
{
|
||||
if (Connection == null || Connection.Available >= 0) //Az utóbbi csak arra szolgál, hogy ObjectDisposedException történjen, ha kell
|
||||
{
|
||||
while (true) //<-- 2014.08.30.
|
||||
{
|
||||
var remoteEP = new IPEndPoint(IPAddress.Any, Int32.Parse(Storage.Settings["port"]));
|
||||
if (IPGlobalProperties.GetIPGlobalProperties().GetActiveUdpListeners().Select(entry => entry.Port).Contains(remoteEP.Port))
|
||||
Storage.Settings["port"] = (Int32.Parse(Storage.Settings["port"]) + 1).ToString();
|
||||
else
|
||||
break;
|
||||
}
|
||||
Connection = new UdpClient(Int32.Parse(Storage.Settings["port"]));
|
||||
}
|
||||
}
|
||||
catch (ObjectDisposedException)
|
||||
{
|
||||
Connection = new UdpClient(Int32.Parse(Storage.Settings["port"]));
|
||||
}*/
|
||||
//List<byte> senddata = new List<byte>();
|
||||
//senddata.Add((response) ? (byte)0x01 : (byte)0x00); //0x00: Kérelem/Adatküldés, 0x01: Válasz
|
||||
//senddata.Add((byte)ut);
|
||||
//senddata.AddRange(BitConverter.GetBytes(CurrentUser.UserID)); //4 bájt; ellenőrizze le, hogy az IP is megegyezik-e, hacsak nem IP-változást jelez
|
||||
//senddata.AddRange(data);
|
||||
byte[] senddata = CreatePacket(response, (byte)ut, data);
|
||||
if (UserInfo.BanTime < Environment.TickCount - 1000 * 60 * 1) //2014.08.30. - 2014.10.09. - 10 percről 1-re csökkentve
|
||||
UserInfo.BannedIPs = new List<IPEndPoint>(); //2014.08.30.
|
||||
//string[] tmp = UserInfo.IPs.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); //RemoveEmptyEntries: 2014.08.29. - UserInfo... szintén...
|
||||
//for (int i = 0; i < tmp.Length; i++)
|
||||
//for (int i = 0; i < UserInfo.IPs.Count; i++)
|
||||
if (!response)
|
||||
{ //2014.08.30. - Azelőtt állítsa be, hogy elküldené a lekéréseket, hogy biztosan reagáljon a válaszra
|
||||
WaitingOnResponse = true; //2014.08.16.
|
||||
WaitingOnPacket = (byte)ut; //2014.08.16.
|
||||
}
|
||||
foreach (var item in UserInfo.IPs)
|
||||
{ //Elküldi az összes ismert címre
|
||||
//int port=
|
||||
//Connection.Send(Storage.Encrypt(senddata.ToArray()), senddata.Count, new IPEndPoint(IPAddress.Parse(tmp2[0]), Int32.Parse(tmp2[1])));
|
||||
try
|
||||
{
|
||||
if (!UserInfo.BannedIPs.Contains(item))
|
||||
//SenderConnection.Send(Storage.Encrypt(senddata.ToArray(), "sendupdatestringencrypted"), senddata.Count, item);
|
||||
SenderConnection.Send(senddata, senddata.Length, item);
|
||||
}
|
||||
catch (ObjectDisposedException)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
/*if (!loggedin)
|
||||
ReceiveUpdates();
|
||||
else
|
||||
while (Networking.DataBuffer == null) ;*/
|
||||
|
||||
if (!response)
|
||||
{
|
||||
//WaitingOnResponse = true; //2014.08.16.
|
||||
//WaitingOnPacket = (byte)ut; //2014.08.16.
|
||||
int lasttick = Environment.TickCount;
|
||||
List<byte[]> Ret = new List<byte[]>();
|
||||
List<IPEndPoint> ResponsedIPs = new List<IPEndPoint>();
|
||||
//while (Environment.TickCount - 1000 * 60 > lasttick || Ret.Count == tmp.Length) //2014.08.16. - Visszatér, ha kapott választ egy ismert IP-ről, de ha máshonnan kap, újra várakozik, legfeljebb egy percig
|
||||
//while (Environment.TickCount - 1000 * 60 < lasttick && Ret.Count < UserInfo.IPs.Count - UserInfo.BannedIPs.Count) //2014.08.29.
|
||||
int count = 0;
|
||||
while (Environment.TickCount - 1000 * 10 < lasttick && ResponsedIPs.Count < UserInfo.IPs.Count - UserInfo.BannedIPs.Count) //2014.09.09. - 2014.10.09. - 60 mp --> 10 mp
|
||||
{ //2014.08.19. - Ret.Count == tmp.Length
|
||||
//if (MainForm.PartnerListThreadActive) //2014.09.06.
|
||||
if (MainForm.LThread != null) //2014.09.06.
|
||||
{
|
||||
while (DataBuffer == null && Environment.TickCount - 1000 * count * 2 < lasttick) ; //Várakozik, amíg a másik thread át nem adja a választ - 2014.10.09. - 10 mp --> 2 mp
|
||||
|
||||
foreach (var item in UserInfo.IPs.Except(UserInfo.BannedIPs).Except(ResponsedIPs)) //2014.09.22.
|
||||
{ //Elküldi az összes ismert címre
|
||||
try
|
||||
{
|
||||
//if (!UserInfo.BannedIPs.Contains(item))
|
||||
SenderConnection.Send(senddata, senddata.Length, item);
|
||||
}
|
||||
catch (ObjectDisposedException)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
count++;
|
||||
}
|
||||
//else //2014.09.06.
|
||||
//ReceiveUpdates(); //2014.09.06.
|
||||
if (DataBuffer == null) //2014.08.30. - Az idő telt le
|
||||
{
|
||||
//UserInfo.IPs.Select(entry => (ResponsedIPs.Contains(entry)) ? (UserInfo.IPs.Remove(entry)) : entry)
|
||||
UserInfo.BannedIPs = UserInfo.IPs.Except(ResponsedIPs).ToList(); //2014.08.30. - Ideiglenesen kitilt minden IP-t, ahonnan nem érkezett válasz
|
||||
UserInfo.BanTime = Environment.TickCount;
|
||||
break;
|
||||
}
|
||||
//if (tmp.Contains(RemoteEP.ToString() + ":" + RemoteEP.Port))
|
||||
if (UserInfo.IPs.Contains(RemoteEP) && !UserInfo.BannedIPs.Contains(RemoteEP))
|
||||
{
|
||||
ResponsedIPs.Add(RemoteEP);
|
||||
//byte[] ret = Storage.Decrypt(DataBuffer, true, "sendupdatestringencrypted");
|
||||
var pparts = ParsePacket(DataBuffer);
|
||||
//int keyindex = BitConverter.ToInt32(DataBuffer, 0);
|
||||
/*DataBuffer = null;
|
||||
RemoteEP = null;
|
||||
WaitingOnResponse = false;
|
||||
WaitingOnPacket = 0x00;*/
|
||||
if (pparts.KeyVersion != CurrentUser.KeyIndex && pparts.UpdateType != UpdateType.SetKey)
|
||||
{
|
||||
DataBuffer = null; //2014.09.22. - Mindig adja meg a lehetőséget, hogy újra beállítsa
|
||||
continue;
|
||||
}
|
||||
//byte[] ret = new byte[DataBuffer.Length - 4];
|
||||
//Array.Copy(DataBuffer, 4, ret, 0, ret.Length);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < Ret.Count; i++)
|
||||
{
|
||||
if (DataBuffer.SequenceEqual(Ret[i]))
|
||||
break;
|
||||
}
|
||||
if (i == Ret.Count)
|
||||
Ret.Add(DataBuffer);
|
||||
//return ret;
|
||||
} //(2014.08.17. -->) Várja meg, amíg az összes online(!) ismerőse válaszol - Vagy letelik az egy perc
|
||||
DataBuffer = null; //2014.09.22. - Mindig adja meg a lehetőséget, hogy újra beállítsa
|
||||
}
|
||||
DataBuffer = null;
|
||||
RemoteEP = null;
|
||||
WaitingOnResponse = false;
|
||||
WaitingOnPacket = 0x00;
|
||||
return Ret.ToArray();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public static bool SendChatMessage(ChatForm chat, string message)
|
||||
{ //2014.09.22.
|
||||
//foreach(var pID in chat.ChatPartners)
|
||||
//{
|
||||
//var pInfo = UserInfo.Select(pID);
|
||||
//TCP közvetlen kapcsolat nem feltétlenül lehetséges, mert a felhasználók router mögött lehetnek...
|
||||
//Ezért ugyanazt a rendszert kell használni itt is...
|
||||
//}
|
||||
List<byte> bytes = new List<byte>();
|
||||
string sendstr = "";
|
||||
foreach (var pID in chat.ChatPartners)
|
||||
{
|
||||
sendstr += pID + ",";
|
||||
}
|
||||
//sendstr += "ͦ";
|
||||
bytes.AddRange(BitConverter.GetBytes(Encoding.Unicode.GetByteCount(sendstr)));
|
||||
bytes.AddRange(Encoding.Unicode.GetBytes(sendstr));
|
||||
sendstr = message; //Átállítja a sendstr-t az üzenetre, majd újra belerakja
|
||||
bytes.AddRange(BitConverter.GetBytes(Encoding.Unicode.GetByteCount(sendstr)));
|
||||
bytes.AddRange(Encoding.Unicode.GetBytes(sendstr));
|
||||
sendstr = Program.DateTimeToUnixTime(DateTime.Now);
|
||||
bytes.AddRange(BitConverter.GetBytes(Encoding.Unicode.GetByteCount(sendstr)));
|
||||
bytes.AddRange(Encoding.Unicode.GetBytes(sendstr));
|
||||
byte[][] resp = SendUpdate(UpdateType.UpdateMessages, Encoding.Unicode.GetBytes(sendstr), false);
|
||||
if (resp == null || resp.Length == 0 || resp.All(bytesb => bytesb[0] != 0x01))
|
||||
return false;
|
||||
else //Ha válaszoltak, és senki sem válaszolt nem oké jelzéssel, akkor rendben van
|
||||
return true;
|
||||
}
|
||||
public static object[] ReceiveUpdates() //Thread function
|
||||
{
|
||||
/*if (ReceiverConnection != null)
|
||||
{
|
||||
if (Connection.Client != null) //2014.09.01.
|
||||
{
|
||||
Connection.Client.Close(); //2014.08.30.
|
||||
//while (Connection.Client.IsBound) ; //2014.08.30.
|
||||
}
|
||||
if (Connection != null) //2014.09.01. - Még mindig nem null
|
||||
Connection.Close();
|
||||
}*/
|
||||
IPEndPoint remoteEP;
|
||||
/*while (true) //<-- 2014.08.30. -- 2014.09.01. - Ne ellenőrizze le minden alkalommal, csak a program indulásakor
|
||||
{
|
||||
remoteEP = new IPEndPoint(IPAddress.Any, Int32.Parse(Storage.Settings["port"]));
|
||||
if (IPGlobalProperties.GetIPGlobalProperties().GetActiveUdpListeners().Select(entry => entry.Port).Contains(remoteEP.Port))
|
||||
Storage.Settings["port"] = (Int32.Parse(Storage.Settings["port"]) + 1).ToString();
|
||||
else
|
||||
break;
|
||||
}*/
|
||||
remoteEP = new IPEndPoint(IPAddress.Any, Int32.Parse(Storage.Settings["port"])); //2014.09.04. - A port beállítása már megtörtént
|
||||
//Connection = new UdpClient(Int32.Parse(Storage.Settings["port"]));
|
||||
byte[] buf;
|
||||
try
|
||||
{
|
||||
buf = ReceiverConnection.Receive(ref remoteEP);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if (buf[0] == 0x01) //0x01: Válasz egy kérelemre
|
||||
{
|
||||
if (WaitingOnResponse == false || WaitingOnPacket != buf[1])
|
||||
return null;
|
||||
while (DataBuffer != null) ; //Várja meg, amíg feldolgozza a legutóbbi adatot
|
||||
//DataBuffer = buf;
|
||||
//Array.Copy(buf, 2, DataBuffer = new byte[buf.Length - 2], 0, buf.Length - 2); //2014.08.16. - Ne rakja bele a packet ID-t, és hogy válasz
|
||||
DataBuffer = buf; //2014.09.19. - Küldön el mindenhova mindent, és egységesen egy funkcióval dolgozza fel
|
||||
RemoteEP = remoteEP;
|
||||
return null;
|
||||
}
|
||||
else
|
||||
//return Storage.Decrypt(buf, true);
|
||||
return new object[] { buf, remoteEP };
|
||||
}
|
||||
/*private static void SendTo(byte[] data, IPEndPoint ip)
|
||||
{
|
||||
if (!HttpListener.IsSupported)
|
||||
{
|
||||
MessageBox.Show("Windows XP or newer required.");
|
||||
return;
|
||||
}
|
||||
HttpListener listener = new HttpListener();
|
||||
listener.Prefixes.Add("http://" + CurrentUser.IP.ToString() + ":" + Storage.Settings["port"] + "/");
|
||||
listener.Start();
|
||||
Console.WriteLine("Listening for incoming connections...");
|
||||
HttpListenerContext context = listener.GetContext();
|
||||
HttpListenerRequest request = context.Request;
|
||||
request
|
||||
}*/
|
||||
public static string[] GetStrings(byte[] bytes, int startIndex)
|
||||
{
|
||||
List<string> strs = new List<string>();
|
||||
//byte[] tmparr;
|
||||
int pos = startIndex;
|
||||
while (pos < bytes.Length)
|
||||
{
|
||||
//tmparr = new byte[4];
|
||||
//pos = 2;
|
||||
//Array.Copy(bytes, pos, tmparr, 0, 4);
|
||||
//int len = BitConverter.ToInt32(tmparr, 0); //A hosszúság megállapítása
|
||||
int len = BitConverter.ToInt32(bytes, pos);
|
||||
pos += 4;
|
||||
//tmparr = new byte[len];
|
||||
//Array.Copy(bytes, pos, tmparr, 0, len);
|
||||
strs.Add(Encoding.Unicode.GetString(bytes, pos, len));
|
||||
}
|
||||
return strs.ToArray();
|
||||
}
|
||||
|
||||
public static void ParseUpdateInfo(byte[][] bytes)
|
||||
{
|
||||
if (bytes == null)
|
||||
return;
|
||||
for (int i = 0; i < bytes.Length; i++)
|
||||
{
|
||||
//byte[] tmp = new byte[bytes[i].Length - 4];
|
||||
//Array.Copy(bytes[i], 4, tmp, 0, tmp.Length); //Az első 4 bájt a UserID
|
||||
byte[] data = ParsePacket(bytes[i]).Data;
|
||||
//string[] strs = Storage.Decrypt(tmp).Split(new string[] { "\n", "\n\r" }, StringSplitOptions.RemoveEmptyEntries);
|
||||
string[] strs = Encoding.Unicode.GetString(data).Split(new string[] { "\n", "\n\r" }, StringSplitOptions.RemoveEmptyEntries); //2014.09.19.
|
||||
string str = "";
|
||||
for (int j = 0; j < strs.Length; j++)
|
||||
{
|
||||
string[] spl = strs[j].Split('_'); //2014.08.30.
|
||||
int uid = Int32.Parse(spl[0]); //2014.08.30.
|
||||
string[] keyvalue = spl[1].Split('='); //2014.08.30.
|
||||
if (keyvalue[0] == "ispartner")
|
||||
{ //2014.08.30.
|
||||
string resp = Networking.SendRequest("ispartner", uid + "", 0, true);
|
||||
if (resp == "yes")
|
||||
str += "userinfo_" + uid + "_ispartner=True";
|
||||
else if (resp == "no")
|
||||
str += "userinfo_" + uid + "_ispartner=False";
|
||||
else
|
||||
MessageBox.Show("ispartner:\n" + resp);
|
||||
}
|
||||
else
|
||||
//strs[j] = "userinfo_" + strs[j];
|
||||
//str += strs[j];
|
||||
str += "userinfo_" + strs[j];
|
||||
if (j + 1 != strs.Length)
|
||||
str += "\n";
|
||||
}
|
||||
Storage.Parse(str);
|
||||
}
|
||||
}
|
||||
|
||||
public static void ParsePacket(byte[] bytes, out byte response, out UpdateType updatetype, out int keyversion, out int userid, out byte[] data)
|
||||
{ //2014.09.15.
|
||||
if (CurrentUser.Keys[CurrentUser.KeyIndex] != null)
|
||||
bytes = Storage.Encrypt(bytes, CurrentUser.Keys[CurrentUser.KeyIndex]);
|
||||
else
|
||||
bytes = Storage.Encrypt(bytes, "ihavenokeys");
|
||||
response = bytes[0];
|
||||
updatetype = (UpdateType)bytes[1];
|
||||
keyversion = BitConverter.ToInt32(bytes, 1 + 1);
|
||||
userid = BitConverter.ToInt32(bytes, 1 + 1 + 4);
|
||||
data = new byte[bytes.Length - 1 - 1 - 4 - 4];
|
||||
Array.Copy(bytes, 2 + 4 + 4, data, 0, data.Length);
|
||||
}
|
||||
|
||||
public struct PacketParts
|
||||
{
|
||||
public bool Response;
|
||||
public UpdateType UpdateType;
|
||||
public int KeyVersion;
|
||||
public int UserID;
|
||||
public byte[] Data;
|
||||
};
|
||||
|
||||
public static PacketParts ParsePacket(byte[] bytes)
|
||||
{ //2014.09.15.
|
||||
if (CurrentUser.Keys[CurrentUser.KeyIndex] != null)
|
||||
bytes = Storage.Encrypt(bytes, CurrentUser.Keys[CurrentUser.KeyIndex]);
|
||||
else
|
||||
bytes = Storage.Encrypt(bytes, "ihavenokeys");
|
||||
var ret = new PacketParts();
|
||||
ret.Response = (bytes[0] == 0x01) ? true : false;
|
||||
ret.UpdateType = (UpdateType)bytes[1];
|
||||
ret.KeyVersion = BitConverter.ToInt32(bytes, 1 + 1);
|
||||
ret.UserID = BitConverter.ToInt32(bytes, 1 + 1 + 4);
|
||||
ret.Data = new byte[bytes.Length - 1 - 1 - 4 - 4];
|
||||
Array.Copy(bytes, 2 + 4 + 4, ret.Data, 0, ret.Data.Length);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static byte[] CreatePacket(bool response, byte updatetype, byte[] data)
|
||||
{ //2014.09.15.
|
||||
List<byte> senddata = new List<byte>();
|
||||
senddata.Add((response) ? (byte)0x01 : (byte)0x00); //0x00: Kérelem/Adatküldés, 0x01: Válasz
|
||||
senddata.Add(updatetype);
|
||||
senddata.AddRange(BitConverter.GetBytes(CurrentUser.KeyIndex));
|
||||
List<byte> sendd = new List<byte>();
|
||||
sendd.AddRange(BitConverter.GetBytes(CurrentUser.UserID));
|
||||
sendd.AddRange(data);
|
||||
if (CurrentUser.Keys[CurrentUser.KeyIndex] != null)
|
||||
senddata.AddRange(Storage.Encrypt(sendd.ToArray(), CurrentUser.Keys[CurrentUser.KeyIndex]));
|
||||
else
|
||||
senddata.AddRange(Storage.Encrypt(sendd.ToArray(), "ihavenokeys"));
|
||||
return senddata.ToArray();
|
||||
}
|
||||
|
||||
private static int Tries = 0;
|
||||
public static string SendRequest(string action, string data, int remnum, bool loggedin) //2014.02.18.
|
||||
{
|
||||
#if LOCAL_SERVER //2014.07.07. 22:00
|
||||
HttpWebRequest httpWReq =
|
||||
(HttpWebRequest)WebRequest.Create("http://localhost/ChatWithWords/client.php");
|
||||
#else
|
||||
HttpWebRequest httpWReq =
|
||||
(HttpWebRequest)WebRequest.Create("http://msger.url.ph/client.php");
|
||||
#endif
|
||||
|
||||
ASCIIEncoding encoding = new ASCIIEncoding();
|
||||
string postData = "action=" + action;
|
||||
if (loggedin) //2014.03.14.
|
||||
postData += "&uid=" + CurrentUser.UserID;
|
||||
postData += "&key=cas1fe4a6feFEFEFE1616CE8099VFE1444cdasf48c1ase5dg";
|
||||
if (loggedin) //2014.03.14.
|
||||
postData += "&code=" + LoginForm.UserCode; //2014.02.13.
|
||||
postData += "&data=" + Uri.EscapeUriString(data); //2014.02.13.
|
||||
byte[] datax = encoding.GetBytes(postData);
|
||||
|
||||
httpWReq.Method = "POST";
|
||||
httpWReq.ContentType = "application/x-www-form-urlencoded";
|
||||
httpWReq.ContentLength = datax.Length;
|
||||
|
||||
using (Stream stream = httpWReq.GetRequestStream())
|
||||
{
|
||||
stream.Write(datax, 0, datax.Length);
|
||||
}
|
||||
|
||||
//Lista betöltése folyamatban...
|
||||
|
||||
HttpWebResponse response;
|
||||
|
||||
try
|
||||
{
|
||||
response = (HttpWebResponse)httpWReq.GetResponse();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (Tries > 10)
|
||||
{
|
||||
MessageBox.Show(Language.Translate("error_network") + ":\n" + e.Message + "\n\n" + Language.Translate("error_network2"), Language.Translate("error")); //2014.04.25.
|
||||
Tries = 0;
|
||||
}
|
||||
Tries++;
|
||||
return SendRequest(action, data, remnum, loggedin); //Újrapróbálkozik
|
||||
}
|
||||
//if (!binary)
|
||||
//{
|
||||
string responseString;
|
||||
responseString = Uri.UnescapeDataString(new StreamReader(response.GetResponseStream()).ReadToEnd());
|
||||
return responseString;
|
||||
//}
|
||||
/*else
|
||||
{
|
||||
byte[] responseBinary = new byte[1024 * 1024 * 60];
|
||||
response.GetResponseStream().Read(responseBinary, 0, 1024 * 1024 * 60); //Nem vagyok még biztos benne, hogy jó ötlet-e
|
||||
return responseBinary;
|
||||
}*/
|
||||
}
|
||||
/*public static string SendRequest(string action, string data, int remnum, bool loggedin) //2014.08.02.
|
||||
{
|
||||
return (string)SendRequest(action, data, remnum, loggedin, false);
|
||||
}*/
|
||||
//public static Socket SendConnection;
|
||||
/*public static object SendSocket(string action, string data, int remnum, bool loggedin, bool binary) //2014.02.18.
|
||||
{
|
||||
Socket SendConnection;
|
||||
#if LOCAL_SERVER //2014.07.07. 22:00
|
||||
SendConnection = new Socket(SocketType.Stream, ProtocolType.Tcp);
|
||||
SendConnection.Connect("localhost", Settings.Default.port + 1); //2014.08.02.
|
||||
#else
|
||||
Connection = new Socket(SocketType.Stream, ProtocolType.Tcp);
|
||||
Connection.Connect("localhost", Settings.Default.port + 1); //2014.08.02.
|
||||
#endif
|
||||
ASCIIEncoding encoding = new ASCIIEncoding();
|
||||
string postData = "action=" + action;
|
||||
if (loggedin) //2014.03.14.
|
||||
postData += "&uid=" + CurrentUser.UserID;
|
||||
postData += "&key=cas1fe4a6feFEFEFE1616CE8099VFE1444cdasf48c1ase5dg";
|
||||
if (loggedin) //2014.03.14.
|
||||
postData += "&code=" + LoginForm.UserCode; //2014.02.13.
|
||||
postData += "&data=" + Uri.EscapeUriString(data); //2014.02.13.
|
||||
byte[] datax = encoding.GetBytes(postData);
|
||||
|
||||
SendConnection.Send(BitConverter.GetBytes(datax.Length));
|
||||
SendConnection.Send(datax);
|
||||
|
||||
//Lista betöltése folyamatban...
|
||||
|
||||
byte[] response = new byte[4];
|
||||
SendConnection.Receive(response, 4, SocketFlags.None);
|
||||
int len = BitConverter.ToInt32(response, 0);
|
||||
|
||||
response = new byte[len];
|
||||
try
|
||||
{
|
||||
SendConnection.Receive(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (Tries > 10)
|
||||
{
|
||||
MessageBox.Show(Language.Translate("error_network"] + ":\n" + e.Message + "\n\n" + Language.Translate("error_network2"], Language.Translate("error"]); //2014.04.25.
|
||||
Tries = 0;
|
||||
}
|
||||
Tries++;
|
||||
return SendRequest(action, data, remnum, loggedin); //Újrapróbálkozik
|
||||
}
|
||||
if (!binary)
|
||||
{
|
||||
string responseString;
|
||||
responseString = encoding.GetString(response);
|
||||
return responseString;
|
||||
}
|
||||
else
|
||||
{
|
||||
return response;
|
||||
}
|
||||
}*/
|
||||
public static void KeepUpThread()
|
||||
{ //2014.08.28.
|
||||
Thread.Sleep(59 * 60 * 1000); //59 percenként frissíti a jelenlétét, így biztosan nem jelenti offline-nak a PHP (elvileg)
|
||||
Console.WriteLine("KeepUpThread: " + Networking.SendRequest("keepactive", "", 0, true));
|
||||
}
|
||||
public static void KeepUpUsersThread() //2014.09.26. - Nehogy bezáruljon a kapcsolat
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
Networking.SendUpdate(UpdateType.KeepAlive, new byte[] { 0x01 }, false);
|
||||
}
|
||||
}
|
||||
}
|
99
Versions/Less Closed Beta/v3.0/MSGer.tk/Notifier.Designer.cs
generated
Normal file
|
@ -0,0 +1,99 @@
|
|||
namespace MSGer.tk
|
||||
{
|
||||
partial class Notifier
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.CloseButton = new System.Windows.Forms.PictureBox();
|
||||
this.Title = new System.Windows.Forms.Label();
|
||||
this.Content = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.CloseButton)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// CloseButton
|
||||
//
|
||||
this.CloseButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.CloseButton.Location = new System.Drawing.Point(241, 12);
|
||||
this.CloseButton.Name = "CloseButton";
|
||||
this.CloseButton.Size = new System.Drawing.Size(31, 28);
|
||||
this.CloseButton.TabIndex = 0;
|
||||
this.CloseButton.TabStop = false;
|
||||
this.CloseButton.Click += new System.EventHandler(this.CloseButton_Click);
|
||||
//
|
||||
// Title
|
||||
//
|
||||
this.Title.AutoSize = true;
|
||||
this.Title.BackColor = System.Drawing.Color.Transparent;
|
||||
this.Title.Location = new System.Drawing.Point(35, 26);
|
||||
this.Title.Name = "Title";
|
||||
this.Title.Size = new System.Drawing.Size(33, 13);
|
||||
this.Title.TabIndex = 1;
|
||||
this.Title.Text = "Teszt";
|
||||
//
|
||||
// Content
|
||||
//
|
||||
this.Content.AutoSize = true;
|
||||
this.Content.BackColor = System.Drawing.Color.Transparent;
|
||||
this.Content.Location = new System.Drawing.Point(12, 58);
|
||||
this.Content.Name = "Content";
|
||||
this.Content.Size = new System.Drawing.Size(33, 26);
|
||||
this.Content.TabIndex = 2;
|
||||
this.Content.Text = "Teszt\r\nAsd";
|
||||
//
|
||||
// Notifier
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(284, 262);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.Content);
|
||||
this.Controls.Add(this.Title);
|
||||
this.Controls.Add(this.CloseButton);
|
||||
this.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.ForeColor = System.Drawing.Color.Black;
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "Notifier";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
||||
this.TopMost = true;
|
||||
((System.ComponentModel.ISupportInitialize)(this.CloseButton)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.PictureBox CloseButton;
|
||||
private System.Windows.Forms.Label Title;
|
||||
private System.Windows.Forms.Label Content;
|
||||
}
|
||||
}
|
72
Versions/Less Closed Beta/v3.0/MSGer.tk/Notifier.cs
Normal file
|
@ -0,0 +1,72 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
public partial class Notifier : Form
|
||||
{ //2014.04.15.
|
||||
private Rectangle WorkAreaRectangle;
|
||||
private Timer NotifierTimer;
|
||||
|
||||
public event EventHandler CloseClick; //2014.08.29.
|
||||
public Notifier(string background, Color TransparentColor, string closebutton, int waittime) //waittime: 2014.04.17.
|
||||
{
|
||||
if (!File.Exists(background))
|
||||
throw new FileNotFoundException("A megadott háttér nem található.");
|
||||
if (!File.Exists(closebutton))
|
||||
throw new FileNotFoundException("A megadott bezáró ikon nem található.");
|
||||
InitializeComponent();
|
||||
this.BackgroundImage = Image.FromFile(background);
|
||||
this.TransparencyKey = TransparentColor;
|
||||
CloseButton.ImageLocation = closebutton;
|
||||
var size = Image.FromFile(closebutton).Size;
|
||||
CloseButton.Left = CloseButton.Right - size.Width; //2014.08.29.
|
||||
CloseButton.Width = size.Width; //2014.08.29.
|
||||
CloseButton.Height = size.Height; //2014.08.29.
|
||||
//this.Show();
|
||||
//this.Hide();
|
||||
NotifierTimer = new Timer();
|
||||
NotifierTimer.Interval = waittime;
|
||||
NotifierTimer.Tick += NotifierTimer_Tick;
|
||||
}
|
||||
|
||||
void NotifierTimer_Tick(object sender, EventArgs e)
|
||||
{
|
||||
NotifierTimer.Stop();
|
||||
this.Hide();
|
||||
}
|
||||
|
||||
public Notifier(Image background, Color TransparentColor, Image closebutton, int waittime) //waittime: 2014.08.28.
|
||||
{
|
||||
InitializeComponent();
|
||||
this.BackgroundImage = background;
|
||||
this.TransparencyKey = TransparentColor;
|
||||
CloseButton.Image = closebutton;
|
||||
//this.Show();
|
||||
//this.Hide();
|
||||
}
|
||||
public void Show(string title, string content) //(kép) - 2014.04.15.
|
||||
{
|
||||
WorkAreaRectangle = Screen.GetWorkingArea(WorkAreaRectangle); //2014.04.17.
|
||||
Title.Text = title;
|
||||
Content.Text = content;
|
||||
this.WindowState = FormWindowState.Normal;
|
||||
SetBounds(WorkAreaRectangle.Right - BackgroundImage.Width - 17, WorkAreaRectangle.Bottom - 100, BackgroundImage.Width, 100);
|
||||
this.Show();
|
||||
NotifierTimer.Start();
|
||||
}
|
||||
|
||||
private void CloseButton_Click(object sender, EventArgs e)
|
||||
{ //2014.08.29.
|
||||
CloseClick(sender, e);
|
||||
}
|
||||
}
|
||||
}
|
120
Versions/Less Closed Beta/v3.0/MSGer.tk/Notifier.resx
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
BIN
Versions/Less Closed Beta/v3.0/MSGer.tk/ObjectListView.dll
Normal file
|
@ -0,0 +1,188 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{18FEDA0C-D147-4286-B39A-01204808106A}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>BrightIdeasSoftware</RootNamespace>
|
||||
<AssemblyName>ObjectListView</AssemblyName>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>olv-keyfile.snk</AssemblyOriginatorKeyFile>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<DocumentationFile>bin\Debug\ObjectListView.XML</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Accessibility" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Design" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="DataTreeListView.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DragDrop\OLVDataObject.cs" />
|
||||
<Compile Include="Filtering\DateTimeClusteringStrategy.cs" />
|
||||
<Compile Include="Filtering\FlagClusteringStrategy.cs" />
|
||||
<Compile Include="Filtering\TextMatchFilter.cs" />
|
||||
<Compile Include="Implementation\Delegates.cs" />
|
||||
<Compile Include="Implementation\Enums.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Implementation\GroupingParameters.cs" />
|
||||
<Compile Include="Implementation\NullableDictionary.cs" />
|
||||
<Compile Include="Implementation\OLVListItem.cs" />
|
||||
<Compile Include="Implementation\OLVListSubItem.cs" />
|
||||
<Compile Include="Implementation\OlvListViewHitTestInfo.cs" />
|
||||
<Compile Include="Implementation\TreeDataSourceAdapter.cs" />
|
||||
<Compile Include="OLVColumn.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Rendering\Adornments.cs" />
|
||||
<Compile Include="Implementation\Attributes.cs" />
|
||||
<Compile Include="CellEditing\CellEditors.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CellEditing\EditorRegistry.cs" />
|
||||
<Compile Include="DataListView.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Implementation\DataSourceAdapter.cs" />
|
||||
<Compile Include="Rendering\Decorations.cs" />
|
||||
<Compile Include="DragDrop\DragSource.cs" />
|
||||
<Compile Include="DragDrop\DropSink.cs" />
|
||||
<Compile Include="Implementation\Events.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FastDataListView.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Filtering\ClusteringStrategy.cs" />
|
||||
<Compile Include="Filtering\Cluster.cs" />
|
||||
<Compile Include="Filtering\ClustersFromGroupsStrategy.cs" />
|
||||
<Compile Include="FastObjectListView.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Filtering\FilterMenuBuilder.cs" />
|
||||
<Compile Include="Filtering\Filters.cs" />
|
||||
<Compile Include="Filtering\ICluster.cs" />
|
||||
<Compile Include="Filtering\IClusteringStrategy.cs" />
|
||||
<Compile Include="Rendering\TreeRenderer.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SubControls\ToolStripCheckedListBox.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Utilities\ColumnSelectionForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Utilities\ColumnSelectionForm.Designer.cs">
|
||||
<DependentUpon>ColumnSelectionForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Utilities\Generator.cs" />
|
||||
<Compile Include="SubControls\GlassPanelForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Implementation\Groups.cs" />
|
||||
<Compile Include="SubControls\HeaderControl.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CellEditing\CellEditKeyEngine.cs" />
|
||||
<Compile Include="Implementation\Munger.cs" />
|
||||
<Compile Include="Implementation\NativeMethods.cs" />
|
||||
<Compile Include="Implementation\Comparers.cs">
|
||||
</Compile>
|
||||
<Compile Include="ObjectListView.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ObjectListView.DesignTime.cs" />
|
||||
<Compile Include="Rendering\Overlays.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Rendering\Renderers.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Rendering\Styles.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SubControls\ToolTipControl.cs" />
|
||||
<Compile Include="TreeListView.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Utilities\OLVExporter.cs" />
|
||||
<Compile Include="Utilities\TypedObjectListView.cs" />
|
||||
<Compile Include="Implementation\VirtualGroups.cs" />
|
||||
<Compile Include="Implementation\VirtualListDataSource.cs" />
|
||||
<Compile Include="VirtualObjectListView.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="CustomDictionary.xml" />
|
||||
<None Include="FullClassDiagram.cd" />
|
||||
<None Include="Resources\sort-descending.png" />
|
||||
<None Include="Resources\sort-ascending.png" />
|
||||
<None Include="Resources\filter.png" />
|
||||
<None Include="Resources\clear-filter.png" />
|
||||
<None Include="Resources\filter-icons3.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="olv-keyfile.snk" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Utilities\ColumnSelectionForm.resx">
|
||||
<DependentUpon>ColumnSelectionForm.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
182
Versions/Less Closed Beta/v3.0/MSGer.tk/PartnerInformation.Designer.cs
generated
Normal file
|
@ -0,0 +1,182 @@
|
|||
namespace MSGer.tk
|
||||
{
|
||||
partial class PartnerInformation
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.nameTextBox = new Khendys.Controls.ExRichTextBox();
|
||||
this.messageTextBox = new Khendys.Controls.ExRichTextBox();
|
||||
this.statusLabel = new System.Windows.Forms.Label();
|
||||
this.userName1 = new System.Windows.Forms.Label();
|
||||
this.userName2 = new System.Windows.Forms.Label();
|
||||
this.userID1 = new System.Windows.Forms.Label();
|
||||
this.userID2 = new System.Windows.Forms.Label();
|
||||
this.email2 = new System.Windows.Forms.Label();
|
||||
this.email1 = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Location = new System.Drawing.Point(12, 12);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(100, 100);
|
||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox1.TabIndex = 0;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// nameTextBox
|
||||
//
|
||||
this.nameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.nameTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.nameTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.nameTextBox.HiglightColor = Khendys.Controls.RtfColor.White;
|
||||
this.nameTextBox.Location = new System.Drawing.Point(119, 12);
|
||||
this.nameTextBox.Multiline = false;
|
||||
this.nameTextBox.Name = "nameTextBox";
|
||||
this.nameTextBox.ReadOnly = true;
|
||||
this.nameTextBox.Size = new System.Drawing.Size(445, 30);
|
||||
this.nameTextBox.TabIndex = 1;
|
||||
this.nameTextBox.Text = "ShownName";
|
||||
this.nameTextBox.TextColor = Khendys.Controls.RtfColor.Black;
|
||||
//
|
||||
// messageTextBox
|
||||
//
|
||||
this.messageTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.messageTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.messageTextBox.HiglightColor = Khendys.Controls.RtfColor.White;
|
||||
this.messageTextBox.Location = new System.Drawing.Point(119, 57);
|
||||
this.messageTextBox.Name = "messageTextBox";
|
||||
this.messageTextBox.ReadOnly = true;
|
||||
this.messageTextBox.Size = new System.Drawing.Size(445, 55);
|
||||
this.messageTextBox.TabIndex = 2;
|
||||
this.messageTextBox.Text = "User Message\nLine";
|
||||
this.messageTextBox.TextColor = Khendys.Controls.RtfColor.Black;
|
||||
//
|
||||
// statusLabel
|
||||
//
|
||||
this.statusLabel.AutoSize = true;
|
||||
this.statusLabel.Location = new System.Drawing.Point(119, 38);
|
||||
this.statusLabel.Name = "statusLabel";
|
||||
this.statusLabel.Size = new System.Drawing.Size(63, 13);
|
||||
this.statusLabel.TabIndex = 3;
|
||||
this.statusLabel.Text = "StatusLabel";
|
||||
//
|
||||
// userName1
|
||||
//
|
||||
this.userName1.AutoSize = true;
|
||||
this.userName1.Location = new System.Drawing.Point(12, 120);
|
||||
this.userName1.Name = "userName1";
|
||||
this.userName1.Size = new System.Drawing.Size(63, 13);
|
||||
this.userName1.TabIndex = 4;
|
||||
this.userName1.Text = "UserName1";
|
||||
//
|
||||
// userName2
|
||||
//
|
||||
this.userName2.AutoSize = true;
|
||||
this.userName2.Location = new System.Drawing.Point(119, 120);
|
||||
this.userName2.Name = "userName2";
|
||||
this.userName2.Size = new System.Drawing.Size(63, 13);
|
||||
this.userName2.TabIndex = 5;
|
||||
this.userName2.Text = "UserName2";
|
||||
//
|
||||
// userID1
|
||||
//
|
||||
this.userID1.AutoSize = true;
|
||||
this.userID1.Location = new System.Drawing.Point(12, 135);
|
||||
this.userID1.Name = "userID1";
|
||||
this.userID1.Size = new System.Drawing.Size(46, 13);
|
||||
this.userID1.TabIndex = 6;
|
||||
this.userID1.Text = "UserID1";
|
||||
//
|
||||
// userID2
|
||||
//
|
||||
this.userID2.AutoSize = true;
|
||||
this.userID2.Location = new System.Drawing.Point(119, 135);
|
||||
this.userID2.Name = "userID2";
|
||||
this.userID2.Size = new System.Drawing.Size(46, 13);
|
||||
this.userID2.TabIndex = 7;
|
||||
this.userID2.Text = "UserID2";
|
||||
//
|
||||
// email2
|
||||
//
|
||||
this.email2.AutoSize = true;
|
||||
this.email2.Location = new System.Drawing.Point(119, 150);
|
||||
this.email2.Name = "email2";
|
||||
this.email2.Size = new System.Drawing.Size(38, 13);
|
||||
this.email2.TabIndex = 9;
|
||||
this.email2.Text = "Email2";
|
||||
//
|
||||
// email1
|
||||
//
|
||||
this.email1.AutoSize = true;
|
||||
this.email1.Location = new System.Drawing.Point(12, 150);
|
||||
this.email1.Name = "email1";
|
||||
this.email1.Size = new System.Drawing.Size(38, 13);
|
||||
this.email1.TabIndex = 8;
|
||||
this.email1.Text = "Email1";
|
||||
//
|
||||
// PartnerInformation
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(576, 273);
|
||||
this.Controls.Add(this.email2);
|
||||
this.Controls.Add(this.email1);
|
||||
this.Controls.Add(this.userID2);
|
||||
this.Controls.Add(this.userID1);
|
||||
this.Controls.Add(this.userName2);
|
||||
this.Controls.Add(this.userName1);
|
||||
this.Controls.Add(this.statusLabel);
|
||||
this.Controls.Add(this.messageTextBox);
|
||||
this.Controls.Add(this.nameTextBox);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Name = "PartnerInformation";
|
||||
this.Text = "PartnerInformation";
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private Khendys.Controls.ExRichTextBox nameTextBox;
|
||||
private Khendys.Controls.ExRichTextBox messageTextBox;
|
||||
private System.Windows.Forms.Label statusLabel;
|
||||
private System.Windows.Forms.Label userName1;
|
||||
private System.Windows.Forms.Label userName2;
|
||||
private System.Windows.Forms.Label userID1;
|
||||
private System.Windows.Forms.Label userID2;
|
||||
private System.Windows.Forms.Label email2;
|
||||
private System.Windows.Forms.Label email1;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
public partial class PartnerInformation : Form
|
||||
{
|
||||
//public PartnerInformation(string shownname, int status, string message, string username, int userid, string email)
|
||||
public PartnerInformation(UserInfo uinfo)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
nameTextBox.BackColor = this.BackColor;
|
||||
messageTextBox.BackColor = this.BackColor;
|
||||
|
||||
string tmp = Path.GetTempPath();
|
||||
string pictlocation = tmp + "\\MSGer.tk\\pictures\\" + uinfo.UserID + ".png";
|
||||
if (File.Exists(pictlocation))
|
||||
pictureBox1.ImageLocation = pictlocation;
|
||||
else
|
||||
pictureBox1.ImageLocation = "noimage.png";
|
||||
nameTextBox.Text = uinfo.Name;
|
||||
//statusLabel.Text = uinfo.State.ToString();
|
||||
if (uinfo.State == 1)
|
||||
statusLabel.Text = Language.Translate("menu_file_status_online");
|
||||
else if (uinfo.State == 2)
|
||||
statusLabel.Text = Language.Translate("menu_file_status_busy");
|
||||
else if (uinfo.State == 3)
|
||||
statusLabel.Text = Language.Translate("menu_file_status_away");
|
||||
else
|
||||
statusLabel.Text = "";
|
||||
messageTextBox.Text = uinfo.Message;
|
||||
userName1.Text = Language.Translate("reg_username") + ":";
|
||||
userName2.Text = uinfo.UserName;
|
||||
userID1.Text = Language.Translate("userid");
|
||||
userID2.Text = uinfo.UserID.ToString();
|
||||
email1.Text = "E-mail:";
|
||||
email2.Text = uinfo.Email;
|
||||
}
|
||||
}
|
||||
}
|
120
Versions/Less Closed Beta/v3.0/MSGer.tk/PartnerInformation.resx
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
190
Versions/Less Closed Beta/v3.0/MSGer.tk/Program.cs
Normal file
|
@ -0,0 +1,190 @@
|
|||
//#define LOCAL_SERVER
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using SzNPProjects;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
public static MainForm MainF;
|
||||
public static string ProcessName = Process.GetCurrentProcess().ProcessName;
|
||||
//public static BeforeLogin BeforeLForm;
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Process[] pname = Process.GetProcessesByName(ProcessName);
|
||||
if (pname.Length > 1 && !(args.Length > 0 && args[0] == "multi"))
|
||||
//Program.Exit(false);
|
||||
Environment.Exit(0); //2014.09.26. - Felesleges bármi más műveletet végrehajtani, még nem is töltött be semmit
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
BeforeLogin.Create();
|
||||
//BeforeLForm.Show();
|
||||
Console.WriteLine("Starting MSGer.tk...");
|
||||
AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException;
|
||||
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
||||
try
|
||||
{
|
||||
MainF = new MainForm();
|
||||
//Console.WriteLine("Test: " + MainF.Test(MainF.Text));
|
||||
//Console.WriteLine("Test: " + MainF.Test(MainF));
|
||||
Application.Run(MainF);
|
||||
}
|
||||
catch (FileNotFoundException e)
|
||||
{
|
||||
MessageBox.Show("Egy fájl nem található.\nA fájl neve:\n" + e.FileName + "\nEnnél a műveletnél: " + e.TargetSite);
|
||||
|
||||
}
|
||||
/*catch(Exception e)
|
||||
{
|
||||
ErrorHandling.FormError(MainF, e);
|
||||
}*/
|
||||
}
|
||||
|
||||
public static readonly bool ShowFirstChangeExceptions = false;
|
||||
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||
{
|
||||
if (MessageBox.Show("An unhandled error occured\n" + ((Exception)e.ExceptionObject).Message + "\nHere: " + ((Exception)e.ExceptionObject).TargetSite + ((e.IsTerminating) ? "\nThe program will exit(?)." : "") + "\n\nExit?", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
||||
//Environment.Exit(0);
|
||||
Program.Exit(CurrentUser.UserID != 0); //2014.09.26. - Ha be van jelentkezve, elmenti a beállításokat - Csak mert így tán a legegyszerűbb
|
||||
}
|
||||
|
||||
static void CurrentDomain_FirstChanceException(object sender, System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs e)
|
||||
{
|
||||
if (ShowFirstChangeExceptions)
|
||||
MessageBox.Show("An error occured (a first change exception):\n" + e.Exception.Message + "\nHere: " + e.Exception.TargetSite);
|
||||
}
|
||||
|
||||
private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0,
|
||||
DateTimeKind.Utc);
|
||||
|
||||
public static DateTime UnixTimeToDateTime(string text)
|
||||
{
|
||||
double seconds = double.Parse(text, CultureInfo.InvariantCulture);
|
||||
//2014.04.25.
|
||||
DateTime time = Epoch.AddSeconds(seconds);
|
||||
time = DateTime.SpecifyKind(time, DateTimeKind.Utc);
|
||||
return time.ToLocalTime();
|
||||
}
|
||||
|
||||
public static string DateTimeToUnixTime(DateTime time) //2014.08.28.
|
||||
{
|
||||
return ((time.Ticks - 621355968000000000) / 10000000).ToString();
|
||||
}
|
||||
|
||||
private static void BeforeExit(bool savesettings)
|
||||
{ //2014.09.01.
|
||||
if (MainF != null)
|
||||
{
|
||||
MainF.Hide();
|
||||
MainF.toolStripMenuItem4.Enabled = false; //2014.04.12.
|
||||
MainF.toolStripMenuItem8.Enabled = false; //2014.04.12.
|
||||
MainF.notifyIcon1.Dispose(); //2014.08.28.
|
||||
if (CurrentUser.UserID != 0) //2014.04.18.
|
||||
{
|
||||
CurrentUser.SendChanges = false; //2014.08.30.
|
||||
MainF.SetOnlineState(null, null); //2014.04.12.)
|
||||
if (MainF.WindowState == FormWindowState.Maximized) //2014.04.18. - 2014.08.08.
|
||||
Storage.Settings["windowstate"] = "1";
|
||||
else if (MainF.WindowState == FormWindowState.Minimized)
|
||||
Storage.Settings["windowstate"] = "2";
|
||||
else if (MainF.WindowState == FormWindowState.Normal)
|
||||
Storage.Settings["windowstate"] = "3";
|
||||
//Settings.Default.Save();
|
||||
Storage.Save(true); //2014.08.07.
|
||||
}
|
||||
}
|
||||
if (savesettings) //2014.08.28.
|
||||
Storage.Save(false); //2014.08.08.
|
||||
if (Networking.ReceiverConnection != null)
|
||||
Networking.ReceiverConnection.Close();
|
||||
if (Networking.SenderConnection != null)
|
||||
Networking.SenderConnection.Close();
|
||||
}
|
||||
public static void Exit(bool savesettings)
|
||||
{ //2014.04.12.
|
||||
BeforeExit(savesettings);
|
||||
//CurrentUser.UserID = 0; - Felesleges, néha megáll itt, és úgy hajt végre egy bejelentkezést igénylő lekérést
|
||||
//Application.Exit();
|
||||
//Application.ExitThread();
|
||||
Environment.Exit(0); //Hatásosabb
|
||||
MessageBox.Show("Hiba: Nem sikerült leállítani a programot.");
|
||||
}
|
||||
public static void Exit()
|
||||
{ //2014.08.28. - Csak akkor ne mentse el a beállításokat, ha nem is töltötte még be őket
|
||||
Exit(true);
|
||||
}
|
||||
public static void Restart(bool savesettings)
|
||||
{ //2014.09.01.
|
||||
BeforeExit(savesettings);
|
||||
Process.Start(((ProcessName.Contains("vshost")) ? ProcessName.Replace(".vshost", "") : ProcessName) + ".exe");
|
||||
Environment.Exit(0);
|
||||
MessageBox.Show("Hiba: Nem sikerült leállítani a programot.");
|
||||
}
|
||||
}
|
||||
|
||||
static class EnumerableExtensions
|
||||
{
|
||||
public static bool HasSameElementsAs<T>(
|
||||
this IEnumerable<T> first,
|
||||
IEnumerable<T> second
|
||||
)
|
||||
{
|
||||
var firstMap = first
|
||||
.GroupBy(x => x)
|
||||
.ToDictionary(x => x.Key, x => x.Count());
|
||||
var secondMap = second
|
||||
.GroupBy(x => x)
|
||||
.ToDictionary(x => x.Key, x => x.Count());
|
||||
return
|
||||
firstMap.Keys.All(x =>
|
||||
secondMap.Keys.Contains(x) && firstMap[x] == secondMap[x]
|
||||
) &&
|
||||
secondMap.Keys.All(x =>
|
||||
firstMap.Keys.Contains(x) && secondMap[x] == firstMap[x]
|
||||
);
|
||||
}
|
||||
|
||||
public static bool Test(this object A, object B)
|
||||
{
|
||||
return object.ReferenceEquals(A, B);
|
||||
}
|
||||
|
||||
///
|
||||
/// Clones an object by using the .
|
||||
///
|
||||
/// The object to clone.
|
||||
///
|
||||
/// The object to be cloned must be serializable.
|
||||
///
|
||||
public static object Clone(object obj)
|
||||
{
|
||||
using (MemoryStream buffer = new MemoryStream())
|
||||
{
|
||||
BinaryFormatter formatter = new BinaryFormatter();
|
||||
formatter.Serialize(buffer, obj);
|
||||
buffer.Position = 0;
|
||||
object temp = formatter.Deserialize(buffer);
|
||||
return temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
357
Versions/Less Closed Beta/v3.0/MSGer.tk/ProgressStatistic.cs
Normal file
|
@ -0,0 +1,357 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace HdSystemLibrary.IO
|
||||
{
|
||||
public class ProgressEventArgs : EventArgs
|
||||
{
|
||||
public ProgressEventArgs(ProgressStatistic progressStatistic)
|
||||
{
|
||||
if (progressStatistic == null)
|
||||
throw new ArgumentNullException("progressStatistic");
|
||||
ProgressStatistic = progressStatistic;
|
||||
}
|
||||
|
||||
public ProgressStatistic ProgressStatistic { get; private set; }
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class OperationAlreadyStartedException : Exception
|
||||
{
|
||||
public OperationAlreadyStartedException() { }
|
||||
public OperationAlreadyStartedException(string message) : base(message) { }
|
||||
public OperationAlreadyStartedException(string message, Exception inner) : base(message, inner) { }
|
||||
protected OperationAlreadyStartedException(
|
||||
System.Runtime.Serialization.SerializationInfo info,
|
||||
System.Runtime.Serialization.StreamingContext context)
|
||||
: base(info, context) { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A class which calculates progress statistics like average bytes per second or estimated finishing time.
|
||||
/// To use it, call the ProgressChange method in regular intervals with the actual progress.
|
||||
/// </summary>
|
||||
public class ProgressStatistic
|
||||
{
|
||||
public ProgressStatistic()
|
||||
{
|
||||
StartingTime = DateTime.MinValue;
|
||||
FinishingTime = DateTime.MinValue;
|
||||
|
||||
progressChangedArgs = new ProgressEventArgs(this); //Event args can be cached
|
||||
}
|
||||
|
||||
private bool hasStarted = false;
|
||||
/// <summary>
|
||||
/// Gets whether the operation has started
|
||||
/// </summary>
|
||||
public bool HasStarted { get { return hasStarted; } }
|
||||
/// <summary>
|
||||
/// Gets whether the operation has finished
|
||||
/// </summary>
|
||||
public bool HasFinished { get { return FinishingTime != DateTime.MinValue; } }
|
||||
|
||||
/// <summary>
|
||||
/// Gets whether the operation is still running
|
||||
/// </summary>
|
||||
public bool IsRunning { get { return HasStarted && !HasFinished; } }
|
||||
|
||||
#region Time
|
||||
|
||||
/// <summary>
|
||||
/// Gets the date time when the operation has started
|
||||
/// </summary>
|
||||
public DateTime StartingTime { get; private set; }
|
||||
/// <summary>
|
||||
/// Gets the date time when the operation has finished
|
||||
/// </summary>
|
||||
public DateTime FinishingTime { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the duration of the operation.
|
||||
/// If the operation is still running, the time since starting is returned.
|
||||
/// If the operation has not started, TimeSpan.Zero is returned.
|
||||
/// If the operation has finished, the time between starting and finishing is returned.
|
||||
/// </summary>
|
||||
public TimeSpan Duration
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!HasStarted)
|
||||
return TimeSpan.Zero;
|
||||
else if (!HasFinished)
|
||||
return DateTime.Now - StartingTime;
|
||||
else
|
||||
return FinishingTime - StartingTime;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The method which will be used for estimating duration and finishing time
|
||||
/// </summary>
|
||||
public enum EstimatingMethod
|
||||
{
|
||||
/// <summary>
|
||||
/// Current bytes per second will be used for estimating.
|
||||
/// </summary>
|
||||
CurrentBytesPerSecond,
|
||||
/// <summary>
|
||||
/// Average bytes per second will be used for estimating
|
||||
/// </summary>
|
||||
AverageBytesPerSecond
|
||||
}
|
||||
|
||||
private EstimatingMethod estimatingMethod = EstimatingMethod.CurrentBytesPerSecond;
|
||||
/// <summary>
|
||||
/// Gets or sets which method will be used for estimating.
|
||||
/// Can only be set before the operation has started, otherwise an OperationAlreadyStartedException will be thrown.
|
||||
/// </summary>
|
||||
public EstimatingMethod UsedEstimatingMethod
|
||||
{
|
||||
get { return estimatingMethod; }
|
||||
set
|
||||
{
|
||||
if (HasStarted)
|
||||
throw new OperationAlreadyStartedException();
|
||||
estimatingMethod = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the estimated duration. Use UsedEstimatingMethod to specify which method will be used for estimating.
|
||||
/// If the operation will take more than 200 days, TimeSpan.MaxValue is returned.
|
||||
/// </summary>
|
||||
public TimeSpan EstimatedDuration
|
||||
{
|
||||
get
|
||||
{
|
||||
if (HasFinished)
|
||||
return Duration;
|
||||
if (TotalBytesToRead == -1)
|
||||
return TimeSpan.MaxValue;
|
||||
|
||||
double bytesPerSecond = 1;
|
||||
if (UsedEstimatingMethod == EstimatingMethod.AverageBytesPerSecond)
|
||||
bytesPerSecond = AverageBytesPerSecond;
|
||||
else if (UsedEstimatingMethod == EstimatingMethod.CurrentBytesPerSecond)
|
||||
bytesPerSecond = CurrentBytesPerSecond;
|
||||
|
||||
double seconds = (TotalBytesToRead - BytesRead) / bytesPerSecond;
|
||||
if (seconds > 60 * 60 * 24 * 200) //over 200 Days -> infinite
|
||||
return TimeSpan.MaxValue;
|
||||
else
|
||||
return Duration + TimeSpan.FromSeconds(seconds);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the estimated finishing time based on EstimatedDuration.
|
||||
/// If the operation will take more than 200 days, DateTime.MaxValue is returned.
|
||||
/// If the operation has finished, the actual finishing time is returned.
|
||||
/// </summary>
|
||||
public DateTime EstimatedFinishingTime
|
||||
{
|
||||
get
|
||||
{
|
||||
if (EstimatedDuration == TimeSpan.MaxValue)
|
||||
return DateTime.MaxValue;
|
||||
return StartingTime + EstimatedDuration;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Gets the amount of bytes already read.
|
||||
/// </summary>
|
||||
public long BytesRead { get; private set; }
|
||||
/// <summary>
|
||||
/// Gets the amount of total bytes to read. Can be -1 if unknown.
|
||||
/// </summary>
|
||||
public long TotalBytesToRead { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the progress in percent between 0 and 1.
|
||||
/// If the amount of total bytes to read is unknown, -1 is returned.
|
||||
/// </summary>
|
||||
public double Progress
|
||||
{
|
||||
get
|
||||
{
|
||||
if (TotalBytesToRead == -1)
|
||||
return -1;
|
||||
else
|
||||
return (double)BytesRead / (double)TotalBytesToRead;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the average bytes per second.
|
||||
/// </summary>
|
||||
public double AverageBytesPerSecond { get { return (double)BytesRead / Duration.TotalSeconds; } }
|
||||
|
||||
#region CurrentBytesPerSecond
|
||||
|
||||
/// <summary>
|
||||
/// Gets the approximated current count of bytes processed per second
|
||||
/// </summary>
|
||||
public double CurrentBytesPerSecond { get; private set; }
|
||||
|
||||
|
||||
private TimeSpan currentBytesCalculationInterval = TimeSpan.FromSeconds(0.5);
|
||||
/// <summary>
|
||||
/// Gets or sets the interval used for the calculation of the current bytes per second. Default is 500 ms.
|
||||
/// </summary>
|
||||
/// <exception cref="OperationAlreadyStartedException">
|
||||
/// Thrown when trying to set although the operation has already started.</exception>
|
||||
public TimeSpan CurrentBytesCalculationInterval
|
||||
{
|
||||
get { return currentBytesCalculationInterval; }
|
||||
set
|
||||
{
|
||||
if (HasStarted)
|
||||
throw new InvalidOperationException("Task has already started!");
|
||||
currentBytesCalculationInterval = value;
|
||||
}
|
||||
}
|
||||
|
||||
KeyValuePair<DateTime, long>[] currentBytesSamples = new KeyValuePair<DateTime, long>[6];
|
||||
/// <summary>
|
||||
/// Gets or sets the number of samples in CurrentBytesPerSecondInterval used for current bytes per second approximation
|
||||
/// </summary>
|
||||
/// <exception cref="OperationAlreadyStartedException">
|
||||
/// Thrown when trying to set although the operation has already started.</exception>
|
||||
public int CurrentBytesSampleCount
|
||||
{
|
||||
get { return currentBytesSamples.Length; }
|
||||
set
|
||||
{
|
||||
if (HasStarted)
|
||||
throw new InvalidOperationException("Task has already started!");
|
||||
if (value != currentBytesSamples.Length)
|
||||
{
|
||||
currentBytesSamples = new KeyValuePair<DateTime, long>[value];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int currentSample = 0; //current sample index in currentBytesSamples
|
||||
|
||||
DateTime lastSample;
|
||||
|
||||
private void ProcessSample(long bytes)
|
||||
{
|
||||
if ((DateTime.Now - lastSample).Ticks > CurrentBytesCalculationInterval.Ticks / currentBytesSamples.Length)
|
||||
{
|
||||
lastSample = DateTime.Now;
|
||||
|
||||
KeyValuePair<DateTime, long> current = new KeyValuePair<DateTime, long>(DateTime.Now, bytes);
|
||||
|
||||
var old = currentBytesSamples[currentSample];
|
||||
currentBytesSamples[currentSample] = current;
|
||||
|
||||
if (old.Key == DateTime.MinValue)
|
||||
CurrentBytesPerSecond = AverageBytesPerSecond;
|
||||
else
|
||||
CurrentBytesPerSecond = (double)(current.Value - old.Value) / (current.Key - old.Key).TotalSeconds;
|
||||
|
||||
currentSample++;
|
||||
if (currentSample >= currentBytesSamples.Length)
|
||||
currentSample = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// This method can be called to report progress changes.
|
||||
/// The signature of this method is compliant with the ProgressChange-delegate
|
||||
/// </summary>
|
||||
/// <param name="bytesRead">The amount of bytes already read</param>
|
||||
/// <param name="totalBytesToRead">The amount of total bytes to read. Can be -1 if unknown.</param>
|
||||
/// <exception cref="ArgumentException">Thrown if bytesRead has not changed or even shrunk.</exception>
|
||||
/// <exception cref="InvalidOperationException">Thrown if the operation has finished already.</exception>
|
||||
public virtual void ProgressChange(long bytesRead, long totalBytesToRead)
|
||||
{
|
||||
if (bytesRead <= BytesRead)
|
||||
throw new ArgumentException("Operation cannot go backwards!", "bytesRead");
|
||||
|
||||
if (HasFinished)
|
||||
throw new InvalidOperationException("Operation has finished already!");
|
||||
|
||||
if (!hasStarted)
|
||||
{
|
||||
StartingTime = DateTime.Now;
|
||||
hasStarted = true;
|
||||
OnStarted();
|
||||
}
|
||||
|
||||
BytesRead = bytesRead;
|
||||
TotalBytesToRead = totalBytesToRead;
|
||||
|
||||
ProcessSample(bytesRead);
|
||||
|
||||
OnProgressChanged();
|
||||
|
||||
if (bytesRead == TotalBytesToRead)
|
||||
{
|
||||
FinishingTime = DateTime.Now;
|
||||
OnFinished();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method can be called to finish an aborted operation.
|
||||
/// If the operation does not reach 100%, "Finished" will be never raised, so this method should be called.
|
||||
/// </summary>
|
||||
public virtual void Finish()
|
||||
{
|
||||
if (!HasFinished)
|
||||
{
|
||||
FinishingTime = DateTime.Now;
|
||||
OnFinished();
|
||||
}
|
||||
}
|
||||
|
||||
#region Events
|
||||
|
||||
private readonly ProgressEventArgs progressChangedArgs;
|
||||
|
||||
protected virtual void OnStarted()
|
||||
{
|
||||
if (Started != null)
|
||||
Started(this, progressChangedArgs);
|
||||
}
|
||||
|
||||
protected virtual void OnProgressChanged()
|
||||
{
|
||||
if (ProgressChanged != null)
|
||||
ProgressChanged(this, progressChangedArgs);
|
||||
}
|
||||
|
||||
protected virtual void OnFinished()
|
||||
{
|
||||
if (Finished != null)
|
||||
Finished(this, progressChangedArgs);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Will be raised when the operation has started
|
||||
/// </summary>
|
||||
public event EventHandler<ProgressEventArgs> Started;
|
||||
/// <summary>
|
||||
/// Will be raised when the progress has changed
|
||||
/// </summary>
|
||||
public event EventHandler<ProgressEventArgs> ProgressChanged;
|
||||
/// <summary>
|
||||
/// Will be raised when the operation has finished
|
||||
/// </summary>
|
||||
public event EventHandler<ProgressEventArgs> Finished;
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("MSGer.tk")]
|
||||
[assembly: AssemblyDescription("MSGer.tk program")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("MSGer.tk")]
|
||||
[assembly: AssemblyCopyright("GNU GPLv3")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("d2fdb449-71d7-425e-942b-516005de4cc8")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("3.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("3.0.0.0")]
|
93
Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Resources.Designer.cs
generated
Normal file
|
@ -0,0 +1,93 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.18444
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace MSGer.tk.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MSGer.tk.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Blue_Wallpaper_HD_2 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Blue_Wallpaper_HD_2", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Keresősáv {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Keresősáv", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Menü_2 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Menü_2", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,130 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="Keresősáv" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Keresősáv.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Blue_Wallpaper_HD_2" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Blue-Wallpaper-HD 2.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Menü_2" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Menü 2.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
30
Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Settings.Designer.cs
generated
Normal file
|
@ -0,0 +1,30 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.17929
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace MSGer.tk.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 123 KiB |
After Width: | Height: | Size: 123 KiB |
BIN
Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Keresősáv.jpg
Normal file
After Width: | Height: | Size: 7.2 KiB |
BIN
Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 2.jpg
Normal file
After Width: | Height: | Size: 708 B |
BIN
Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 21.jpg
Normal file
After Width: | Height: | Size: 708 B |
BIN
Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 22.jpg
Normal file
After Width: | Height: | Size: 708 B |
BIN
Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 3.jpg
Normal file
After Width: | Height: | Size: 1.8 KiB |
180
Versions/Less Closed Beta/v3.0/MSGer.tk/SelectPartnerForm.Designer.cs
generated
Normal file
|
@ -0,0 +1,180 @@
|
|||
namespace MSGer.tk
|
||||
{
|
||||
partial class SelectPartnerForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
GlacialComponents.Controls.GLColumn glColumn1 = new GlacialComponents.Controls.GLColumn();
|
||||
GlacialComponents.Controls.GLItem glItem1 = new GlacialComponents.Controls.GLItem();
|
||||
GlacialComponents.Controls.GLSubItem glSubItem1 = new GlacialComponents.Controls.GLSubItem();
|
||||
this.partnerList = new GlacialComponents.Controls.GlacialList();
|
||||
this.selectedPartners = new System.Windows.Forms.TextBox();
|
||||
this.okbtn = new System.Windows.Forms.Button();
|
||||
this.cancelbtn = new System.Windows.Forms.Button();
|
||||
this.titleText = new System.Windows.Forms.Label();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// partnerList
|
||||
//
|
||||
this.partnerList.AllowColumnResize = false;
|
||||
this.partnerList.AllowMultiselect = true;
|
||||
this.partnerList.AlternateBackground = System.Drawing.Color.DarkGreen;
|
||||
this.partnerList.AlternatingColors = false;
|
||||
this.partnerList.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.partnerList.AutoHeight = true;
|
||||
this.partnerList.BackColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.partnerList.BackgroundStretchToFit = true;
|
||||
glColumn1.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
|
||||
glColumn1.CheckBoxes = true;
|
||||
glColumn1.ImageIndex = -1;
|
||||
glColumn1.Name = "PartnerName";
|
||||
glColumn1.NumericSort = false;
|
||||
glColumn1.Text = "";
|
||||
glColumn1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
glColumn1.Width = 100;
|
||||
this.partnerList.Columns.AddRange(new GlacialComponents.Controls.GLColumn[] {
|
||||
glColumn1});
|
||||
this.partnerList.ControlStyle = GlacialComponents.Controls.GLControlStyles.Normal;
|
||||
this.partnerList.ForeColor = System.Drawing.Color.Black;
|
||||
this.partnerList.FullRowSelect = true;
|
||||
this.partnerList.GridColor = System.Drawing.Color.LightGray;
|
||||
this.partnerList.GridLines = GlacialComponents.Controls.GLGridLines.gridBoth;
|
||||
this.partnerList.GridLineStyle = GlacialComponents.Controls.GLGridLineStyles.gridNone;
|
||||
this.partnerList.GridTypes = GlacialComponents.Controls.GLGridTypes.gridOnExists;
|
||||
this.partnerList.HeaderHeight = 0;
|
||||
this.partnerList.HeaderVisible = false;
|
||||
this.partnerList.HeaderWordWrap = false;
|
||||
this.partnerList.HotColumnTracking = false;
|
||||
this.partnerList.HotItemTracking = true;
|
||||
this.partnerList.HotTrackingColor = System.Drawing.Color.LightGray;
|
||||
this.partnerList.HoverEvents = false;
|
||||
this.partnerList.HoverTime = 1;
|
||||
this.partnerList.ImageList = null;
|
||||
this.partnerList.ItemHeight = 17;
|
||||
glItem1.BackColor = System.Drawing.Color.White;
|
||||
glItem1.ForeColor = System.Drawing.Color.Black;
|
||||
glItem1.RowBorderColor = System.Drawing.Color.Black;
|
||||
glItem1.RowBorderSize = 0;
|
||||
glSubItem1.BackColor = System.Drawing.Color.Empty;
|
||||
glSubItem1.Checked = false;
|
||||
glSubItem1.ForceText = false;
|
||||
glSubItem1.ForeColor = System.Drawing.Color.Black;
|
||||
glSubItem1.ImageAlignment = System.Windows.Forms.HorizontalAlignment.Left;
|
||||
glSubItem1.ImageIndex = -1;
|
||||
glSubItem1.Text = "Test";
|
||||
glItem1.SubItems.AddRange(new GlacialComponents.Controls.GLSubItem[] {
|
||||
glSubItem1});
|
||||
glItem1.Text = "Test";
|
||||
this.partnerList.Items.AddRange(new GlacialComponents.Controls.GLItem[] {
|
||||
glItem1});
|
||||
this.partnerList.ItemWordWrap = false;
|
||||
this.partnerList.Location = new System.Drawing.Point(13, 26);
|
||||
this.partnerList.Name = "partnerList";
|
||||
this.partnerList.Selectable = true;
|
||||
this.partnerList.SelectedTextColor = System.Drawing.Color.White;
|
||||
this.partnerList.SelectionColor = System.Drawing.Color.DarkBlue;
|
||||
this.partnerList.ShowBorder = true;
|
||||
this.partnerList.ShowFocusRect = true;
|
||||
this.partnerList.Size = new System.Drawing.Size(359, 286);
|
||||
this.partnerList.SortType = GlacialComponents.Controls.SortTypes.InsertionSort;
|
||||
this.partnerList.SuperFlatHeaderColor = System.Drawing.Color.White;
|
||||
this.partnerList.TabIndex = 0;
|
||||
this.partnerList.Click += new System.EventHandler(this.ItemClicked);
|
||||
this.partnerList.DoubleClick += new System.EventHandler(this.ItemDoubleClick);
|
||||
//
|
||||
// selectedPartners
|
||||
//
|
||||
this.selectedPartners.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.selectedPartners.Location = new System.Drawing.Point(13, 319);
|
||||
this.selectedPartners.Multiline = true;
|
||||
this.selectedPartners.Name = "selectedPartners";
|
||||
this.selectedPartners.Size = new System.Drawing.Size(359, 103);
|
||||
this.selectedPartners.TabIndex = 1;
|
||||
//
|
||||
// okbtn
|
||||
//
|
||||
this.okbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.okbtn.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.okbtn.Location = new System.Drawing.Point(215, 428);
|
||||
this.okbtn.Name = "okbtn";
|
||||
this.okbtn.Size = new System.Drawing.Size(75, 23);
|
||||
this.okbtn.TabIndex = 2;
|
||||
this.okbtn.Text = "OK";
|
||||
this.okbtn.UseVisualStyleBackColor = true;
|
||||
this.okbtn.Click += new System.EventHandler(this.okbtn_Click);
|
||||
//
|
||||
// cancelbtn
|
||||
//
|
||||
this.cancelbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cancelbtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.cancelbtn.Location = new System.Drawing.Point(297, 429);
|
||||
this.cancelbtn.Name = "cancelbtn";
|
||||
this.cancelbtn.Size = new System.Drawing.Size(75, 23);
|
||||
this.cancelbtn.TabIndex = 3;
|
||||
this.cancelbtn.Text = "Mégse";
|
||||
this.cancelbtn.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// titleText
|
||||
//
|
||||
this.titleText.AutoSize = true;
|
||||
this.titleText.Location = new System.Drawing.Point(13, 7);
|
||||
this.titleText.Name = "titleText";
|
||||
this.titleText.Size = new System.Drawing.Size(53, 13);
|
||||
this.titleText.TabIndex = 4;
|
||||
this.titleText.Text = "Unknown";
|
||||
//
|
||||
// SelectPartnerForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.LightSkyBlue;
|
||||
this.ClientSize = new System.Drawing.Size(384, 462);
|
||||
this.Controls.Add(this.titleText);
|
||||
this.Controls.Add(this.cancelbtn);
|
||||
this.Controls.Add(this.okbtn);
|
||||
this.Controls.Add(this.selectedPartners);
|
||||
this.Controls.Add(this.partnerList);
|
||||
this.Name = "SelectPartnerForm";
|
||||
this.Text = "Partnerválasztás";
|
||||
this.ResizeEnd += new System.EventHandler(this.FormResizeFinish);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private GlacialComponents.Controls.GlacialList partnerList;
|
||||
private System.Windows.Forms.TextBox selectedPartners;
|
||||
private System.Windows.Forms.Button okbtn;
|
||||
private System.Windows.Forms.Button cancelbtn;
|
||||
private System.Windows.Forms.Label titleText;
|
||||
}
|
||||
}
|
93
Versions/Less Closed Beta/v3.0/MSGer.tk/SelectPartnerForm.cs
Normal file
|
@ -0,0 +1,93 @@
|
|||
using GlacialComponents.Controls;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
public partial class SelectPartnerForm : Form
|
||||
{
|
||||
public SelectPartnerForm(ToolStripMenuItem SelectPartnerSender) //paraméter: 2014.09.06.
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Text = SelectPartnerSender.Text; //2014.02.28.
|
||||
titleText.Text = SelectPartnerSender.Text;
|
||||
|
||||
cancelbtn.Text = Language.Translate("button_cancel");
|
||||
|
||||
partnerList.Items.Clear();
|
||||
for (int x = 0; x < UserInfo.KnownUsers.Count; x++) //Partners
|
||||
{
|
||||
if (!UserInfo.KnownUsers[x].IsPartner)
|
||||
continue;
|
||||
try
|
||||
{
|
||||
partnerList.Items.Add(UserInfo.KnownUsers[x].UserName);
|
||||
}
|
||||
catch (NullReferenceException)
|
||||
{
|
||||
break;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
MessageBox.Show(e.Message);
|
||||
break;
|
||||
}
|
||||
}
|
||||
partnerList.Columns[0].Width = partnerList.ClientSize.Width-5;
|
||||
}
|
||||
|
||||
private void FormResizeFinish(object sender, EventArgs e)
|
||||
{
|
||||
partnerList.Columns[0].Width = partnerList.ClientSize.Width-5;
|
||||
}
|
||||
|
||||
private void ItemClicked(object sender, EventArgs e)
|
||||
{
|
||||
for (int i = 0; i < partnerList.Items.Count; i++)
|
||||
{
|
||||
if(partnerList.Items[i].SubItems[0].Checked)
|
||||
{
|
||||
int p = selectedPartners.Text.IndexOf(partnerList.Items[i].SubItems[0].Text + ";");
|
||||
if (p == -1)
|
||||
{
|
||||
selectedPartners.Text += partnerList.Items[i].SubItems[0].Text + ";";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int p = selectedPartners.Text.IndexOf(partnerList.Items[i].SubItems[0].Text + ";");
|
||||
if (p != -1) //Eltávolitja a nem kiválasztott partner előfordulását a listából - Megcsinálom visszafelé is
|
||||
selectedPartners.Text = selectedPartners.Text.Remove(p, partnerList.Items[i].SubItems[0].Text.Length+1); //Eltávolitja a ;-t is
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ItemDoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
int a = partnerList.HotItemIndex;
|
||||
if (partnerList.Items[a].SubItems[0].Checked)
|
||||
partnerList.Items[a].SubItems[0].Checked = false;
|
||||
else
|
||||
partnerList.Items[a].SubItems[0].Checked = true;
|
||||
ItemClicked(sender, e);
|
||||
}
|
||||
|
||||
public string[] Partners;
|
||||
private void okbtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
while(selectedPartners.Text.Contains(' '))
|
||||
{ //Eltávolitja a szóközöket
|
||||
int x=selectedPartners.Text.IndexOf(' ');
|
||||
selectedPartners.Text.Remove(x, 1);
|
||||
}
|
||||
Partners = selectedPartners.Text.Split(';');
|
||||
}
|
||||
}
|
||||
}
|
120
Versions/Less Closed Beta/v3.0/MSGer.tk/SelectPartnerForm.resx
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
259
Versions/Less Closed Beta/v3.0/MSGer.tk/SettingsForm.Designer.cs
generated
Normal file
|
@ -0,0 +1,259 @@
|
|||
namespace MSGer.tk
|
||||
{
|
||||
partial class SettingsForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
GlacialComponents.Controls.GLColumn glColumn2 = new GlacialComponents.Controls.GLColumn();
|
||||
GlacialComponents.Controls.GLItem glItem2 = new GlacialComponents.Controls.GLItem();
|
||||
GlacialComponents.Controls.GLSubItem glSubItem2 = new GlacialComponents.Controls.GLSubItem();
|
||||
this.glacialList1 = new GlacialComponents.Controls.GlacialList();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.messageText = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.nameText = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.personal = new System.Windows.Forms.Label();
|
||||
this.okbtn = new System.Windows.Forms.Button();
|
||||
this.cancelbtn = new System.Windows.Forms.Button();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.listView1 = new System.Windows.Forms.ListView();
|
||||
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.panel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// glacialList1
|
||||
//
|
||||
this.glacialList1.AllowColumnResize = true;
|
||||
this.glacialList1.AllowMultiselect = false;
|
||||
this.glacialList1.AlternateBackground = System.Drawing.Color.DarkGreen;
|
||||
this.glacialList1.AlternatingColors = false;
|
||||
this.glacialList1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.glacialList1.AutoHeight = true;
|
||||
this.glacialList1.BackColor = System.Drawing.Color.White;
|
||||
this.glacialList1.BackgroundStretchToFit = true;
|
||||
glColumn2.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
|
||||
glColumn2.CheckBoxes = false;
|
||||
glColumn2.ImageIndex = -1;
|
||||
glColumn2.Name = "Column1";
|
||||
glColumn2.NumericSort = false;
|
||||
glColumn2.Text = "Column";
|
||||
glColumn2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
glColumn2.Width = 115;
|
||||
this.glacialList1.Columns.AddRange(new GlacialComponents.Controls.GLColumn[] {
|
||||
glColumn2});
|
||||
this.glacialList1.ControlStyle = GlacialComponents.Controls.GLControlStyles.Normal;
|
||||
this.glacialList1.ForeColor = System.Drawing.Color.Black;
|
||||
this.glacialList1.FullRowSelect = true;
|
||||
this.glacialList1.GridColor = System.Drawing.Color.LightGray;
|
||||
this.glacialList1.GridLines = GlacialComponents.Controls.GLGridLines.gridBoth;
|
||||
this.glacialList1.GridLineStyle = GlacialComponents.Controls.GLGridLineStyles.gridSolid;
|
||||
this.glacialList1.GridTypes = GlacialComponents.Controls.GLGridTypes.gridOnExists;
|
||||
this.glacialList1.HeaderHeight = 0;
|
||||
this.glacialList1.HeaderVisible = false;
|
||||
this.glacialList1.HeaderWordWrap = false;
|
||||
this.glacialList1.HotColumnTracking = false;
|
||||
this.glacialList1.HotItemTracking = true;
|
||||
this.glacialList1.HotTrackingColor = System.Drawing.Color.LightGray;
|
||||
this.glacialList1.HoverEvents = false;
|
||||
this.glacialList1.HoverTime = 1;
|
||||
this.glacialList1.ImageList = null;
|
||||
this.glacialList1.ItemHeight = 17;
|
||||
glItem2.BackColor = System.Drawing.Color.White;
|
||||
glItem2.ForeColor = System.Drawing.Color.Black;
|
||||
glItem2.RowBorderColor = System.Drawing.Color.Black;
|
||||
glItem2.RowBorderSize = 0;
|
||||
glSubItem2.BackColor = System.Drawing.Color.Empty;
|
||||
glSubItem2.Checked = false;
|
||||
glSubItem2.ForceText = false;
|
||||
glSubItem2.ForeColor = System.Drawing.Color.Black;
|
||||
glSubItem2.ImageAlignment = System.Windows.Forms.HorizontalAlignment.Left;
|
||||
glSubItem2.ImageIndex = -1;
|
||||
glSubItem2.Text = "Személyes";
|
||||
glItem2.SubItems.AddRange(new GlacialComponents.Controls.GLSubItem[] {
|
||||
glSubItem2});
|
||||
glItem2.Text = "Személyes";
|
||||
this.glacialList1.Items.AddRange(new GlacialComponents.Controls.GLItem[] {
|
||||
glItem2});
|
||||
this.glacialList1.ItemWordWrap = false;
|
||||
this.glacialList1.Location = new System.Drawing.Point(12, 12);
|
||||
this.glacialList1.Name = "glacialList1";
|
||||
this.glacialList1.Selectable = true;
|
||||
this.glacialList1.SelectedTextColor = System.Drawing.Color.White;
|
||||
this.glacialList1.SelectionColor = System.Drawing.Color.DarkBlue;
|
||||
this.glacialList1.ShowBorder = true;
|
||||
this.glacialList1.ShowFocusRect = false;
|
||||
this.glacialList1.Size = new System.Drawing.Size(120, 418);
|
||||
this.glacialList1.SortType = GlacialComponents.Controls.SortTypes.InsertionSort;
|
||||
this.glacialList1.SuperFlatHeaderColor = System.Drawing.Color.White;
|
||||
this.glacialList1.TabIndex = 0;
|
||||
this.glacialList1.Text = "glacialList1";
|
||||
this.glacialList1.Click += new System.EventHandler(this.glacialList1_Click);
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.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.panel1.AutoScroll = true;
|
||||
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.panel1.Controls.Add(this.listView1);
|
||||
this.panel1.Controls.Add(this.label3);
|
||||
this.panel1.Controls.Add(this.messageText);
|
||||
this.panel1.Controls.Add(this.label2);
|
||||
this.panel1.Controls.Add(this.nameText);
|
||||
this.panel1.Controls.Add(this.label1);
|
||||
this.panel1.Controls.Add(this.personal);
|
||||
this.panel1.Location = new System.Drawing.Point(139, 13);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(385, 391);
|
||||
this.panel1.TabIndex = 1;
|
||||
//
|
||||
// messageText
|
||||
//
|
||||
this.messageText.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.messageText.Location = new System.Drawing.Point(12, 99);
|
||||
this.messageText.Name = "messageText";
|
||||
this.messageText.Size = new System.Drawing.Size(354, 20);
|
||||
this.messageText.TabIndex = 4;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(9, 82);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(41, 13);
|
||||
this.label2.TabIndex = 3;
|
||||
this.label2.Text = "Üzenet";
|
||||
//
|
||||
// nameText
|
||||
//
|
||||
this.nameText.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.nameText.Location = new System.Drawing.Point(12, 52);
|
||||
this.nameText.Name = "nameText";
|
||||
this.nameText.Size = new System.Drawing.Size(354, 20);
|
||||
this.nameText.TabIndex = 2;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(9, 35);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(27, 13);
|
||||
this.label1.TabIndex = 1;
|
||||
this.label1.Text = "Név";
|
||||
//
|
||||
// personal
|
||||
//
|
||||
this.personal.AutoSize = true;
|
||||
this.personal.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.personal.Location = new System.Drawing.Point(3, 0);
|
||||
this.personal.Name = "personal";
|
||||
this.personal.Size = new System.Drawing.Size(147, 31);
|
||||
this.personal.TabIndex = 0;
|
||||
this.personal.Text = "Személyes";
|
||||
//
|
||||
// okbtn
|
||||
//
|
||||
this.okbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.okbtn.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.okbtn.Location = new System.Drawing.Point(368, 410);
|
||||
this.okbtn.Name = "okbtn";
|
||||
this.okbtn.Size = new System.Drawing.Size(75, 23);
|
||||
this.okbtn.TabIndex = 2;
|
||||
this.okbtn.Text = "OK";
|
||||
this.okbtn.UseVisualStyleBackColor = true;
|
||||
this.okbtn.Click += new System.EventHandler(this.okbtn_Click);
|
||||
//
|
||||
// cancelbtn
|
||||
//
|
||||
this.cancelbtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.cancelbtn.Location = new System.Drawing.Point(449, 410);
|
||||
this.cancelbtn.Name = "cancelbtn";
|
||||
this.cancelbtn.Size = new System.Drawing.Size(75, 23);
|
||||
this.cancelbtn.TabIndex = 3;
|
||||
this.cancelbtn.Text = "Mégse";
|
||||
this.cancelbtn.UseVisualStyleBackColor = true;
|
||||
this.cancelbtn.Click += new System.EventHandler(this.cancelbtn_Click);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(9, 131);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(34, 13);
|
||||
this.label3.TabIndex = 5;
|
||||
this.label3.Text = "Nyelv";
|
||||
//
|
||||
// listView1
|
||||
//
|
||||
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.columnHeader1});
|
||||
this.listView1.LabelWrap = false;
|
||||
this.listView1.Location = new System.Drawing.Point(12, 148);
|
||||
this.listView1.MultiSelect = false;
|
||||
this.listView1.Name = "listView1";
|
||||
this.listView1.Size = new System.Drawing.Size(121, 97);
|
||||
this.listView1.TabIndex = 6;
|
||||
this.listView1.UseCompatibleStateImageBehavior = false;
|
||||
//
|
||||
// SettingsForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(536, 442);
|
||||
this.Controls.Add(this.cancelbtn);
|
||||
this.Controls.Add(this.okbtn);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.Controls.Add(this.glacialList1);
|
||||
this.Name = "SettingsForm";
|
||||
this.Text = "SettingsForm";
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private GlacialComponents.Controls.GlacialList glacialList1;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label personal;
|
||||
private System.Windows.Forms.TextBox nameText;
|
||||
private System.Windows.Forms.TextBox messageText;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Button okbtn;
|
||||
private System.Windows.Forms.Button cancelbtn;
|
||||
private System.Windows.Forms.ListView listView1;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader1;
|
||||
}
|
||||
}
|
99
Versions/Less Closed Beta/v3.0/MSGer.tk/SettingsForm.cs
Normal file
|
@ -0,0 +1,99 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
public partial class SettingsForm : Form
|
||||
{
|
||||
public SettingsForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
listView1.Columns[0].Width = listView1.Width;
|
||||
this.Text = Language.Translate("settings");
|
||||
glacialList1.Items[0].Text = Language.Translate("settings_personal");
|
||||
personal.Text = Language.Translate("settings_personal");
|
||||
label1.Text = Language.Translate("name");
|
||||
label2.Text = Language.Translate("message");
|
||||
label3.Text = Language.Translate("language");
|
||||
nameText.Text = CurrentUser.Name;
|
||||
messageText.Text = CurrentUser.Message;
|
||||
|
||||
foreach(var entry in Language.UsedLangs)
|
||||
{
|
||||
listView1.Items.Add(Language.UsedLangs[entry.Key].Strings["currentlang"], Language.UsedLangs[entry.Key].Strings["currentlang"], 0);
|
||||
if (Language.UsedLangs[entry.Key].Equals(Language.GetCuurentLanguage()))
|
||||
listView1.Items[listView1.Items.Count - 1].Selected = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void glacialList1_Click(object sender, EventArgs e)
|
||||
{
|
||||
int tmp = glacialList1.HotItemIndex;
|
||||
if (tmp > glacialList1.Items.Count)
|
||||
return;
|
||||
switch(tmp)
|
||||
{
|
||||
case 0:
|
||||
//Személyes
|
||||
panel1.ScrollControlIntoView(personal);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void okbtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
string lang = "en";
|
||||
foreach (var lng in Language.UsedLangs)
|
||||
{
|
||||
if (lng.Value.Strings.ContainsKey("currentlang") && listView1.SelectedItems[0].Text == lng.Value.Strings["currentlang"])
|
||||
{
|
||||
lang = lng.Key;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//string result = Networking.SendRequest("updatesettings", nameText.Text + "ͦ" + messageText.Text, 0, true);
|
||||
//if (result != "Success")
|
||||
//MessageBox.Show(Language.Translate("error"] + ": " + result);
|
||||
//List<byte> bytes = new List<byte>();
|
||||
//bytes.AddRange(Encoding.Unicode.GetBytes(CurrentUser.UserID + "ͦ" + nameText.Text + "ͦ" + messageText.Text));
|
||||
//byte[][] result = Networking.SendUpdate(Networking.UpdateType.UpdateSettings, bytes.ToArray(), false);
|
||||
CurrentUser.Name = nameText.Text;
|
||||
CurrentUser.Message = messageText.Text;
|
||||
/*List<byte> bytes = new List<byte>();
|
||||
bytes.AddRange(BitConverter.GetBytes(CurrentUser.UserID));
|
||||
bytes.AddRange(BitConverter.GetBytes(CurrentUser.Name.Length));
|
||||
bytes.AddRange(Encoding.Unicode.GetBytes(CurrentUser.Name));
|
||||
bytes.AddRange(BitConverter.GetBytes(CurrentUser.Name.Length));
|
||||
bytes.AddRange(Encoding.Unicode.GetBytes(CurrentUser.Message));
|
||||
byte[][] result = Networking.SendUpdate(Networking.UpdateType.ListUpdate, bytes.ToArray(), false);
|
||||
if (result==null || !result[0].All(b => b == 0x00)) //Ha nincs online felhasználó, akkor is továbbhalad
|
||||
{*/ //Azért nem kell ez az egész fentebbi rész, mert minden egyes változást elküld mindenkinek
|
||||
if (Storage.Settings["lang"] != lang)
|
||||
{
|
||||
Storage.Settings["lang"] = lang;
|
||||
//Settings.Default.Save();
|
||||
MessageBox.Show(Language.Translate("restart_needed"));
|
||||
//System.Diagnostics.Process.Start("msger.tk.exe");
|
||||
//Environment.Exit(0);
|
||||
//Program.Exit();
|
||||
Program.Restart(true);
|
||||
}
|
||||
this.Close();
|
||||
/*}
|
||||
else //Ha az összes ismert címről hibajelentés érkezik, jelezze a hibát
|
||||
MessageBox.Show(Language.Translate("error"));*/
|
||||
}
|
||||
|
||||
private void cancelbtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
120
Versions/Less Closed Beta/v3.0/MSGer.tk/SettingsForm.resx
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
212
Versions/Less Closed Beta/v3.0/MSGer.tk/Storage.cs
Normal file
|
@ -0,0 +1,212 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MSGer.tk
|
||||
{
|
||||
static class Storage
|
||||
{ //2014.08.07.
|
||||
public static string FileName;
|
||||
public static Dictionary<string, string> Settings = new Dictionary<string, string>();
|
||||
public static Dictionary<string, string> LoggedInSettings = new Dictionary<string, string>();
|
||||
public static readonly string PasswordHash = "PWPassword";
|
||||
public static string SaltKey; //Bejelentkezéskor kapja meg
|
||||
public static readonly string VIKey = "SGf546HEfg56h45K";
|
||||
public static void Load(bool loggedin)
|
||||
{
|
||||
if (!loggedin)
|
||||
{
|
||||
SaltKey = "nologinnologinnologinnologin";
|
||||
FileName = "program.db";
|
||||
}
|
||||
if (!File.Exists(FileName))
|
||||
{
|
||||
if (!loggedin)
|
||||
{
|
||||
Settings.Add("email", "");
|
||||
//Settings.Add("picupdatetime", ""); <-- Store picture directly in database
|
||||
Settings.Add("windowstate", "3");
|
||||
Settings.Add("lang", CultureInfo.InstalledUICulture.TwoLetterISOLanguageName);
|
||||
Settings.Add("port", "4510"); //Use this to connect to different users <-- És fogalmam sincs, miért angolul írtam...
|
||||
//Settings.Add("receiveport", "4511"); //Connect to this port to perform updates <-- Mellesleg használjak UDP-t...
|
||||
Settings.Add("lastusedemail", "0");
|
||||
//Settings.Add("userinfo", "");
|
||||
//Settings.Add("ips", ""); //Az összes ismert IP, ami benne van a rendszerben - x.x.x.x:x;x.x.x.x:x
|
||||
Settings.Add("filelen", "-1"); //(long) Maximum fájlméret, ameddig bemásolhatja a memóriába
|
||||
//Settings.Add("myip", ""); //2014.08.29.
|
||||
Settings.Add("isserver", "");
|
||||
}
|
||||
/*else - Ha nincs még létrehozva, majd létrehozza a property-nél, itt nincs rá szükség
|
||||
{
|
||||
LoggedInSettings.Add("currentuser_name", CurrentUser.Name);
|
||||
LoggedInSettings.Add("currentuser_username", CurrentUser.UserName);
|
||||
LoggedInSettings.Add("currentuser_userid", CurrentUser.UserID.ToString());
|
||||
LoggedInSettings.Add("currentuser_message", CurrentUser.Message);
|
||||
LoggedInSettings.Add("currentuser_email", CurrentUser.Email);
|
||||
LoggedInSettings.Add("currentuser_state", CurrentUser.State);
|
||||
LoggedInSettings.Add("currentuser_language", CurrentUser.Language.ToString());
|
||||
}*/
|
||||
}
|
||||
else
|
||||
{
|
||||
Parse(Decrypt(Read(loggedin)), loggedin);
|
||||
if (loggedin)
|
||||
UserInfo.Load();
|
||||
}
|
||||
}
|
||||
|
||||
public static void Save(bool loggedin)
|
||||
{
|
||||
if (!loggedin)
|
||||
SaltKey = "nologinnologinnologinnologin";
|
||||
Write(Encrypt(GetString(loggedin)), loggedin);
|
||||
}
|
||||
|
||||
public static string GetString(bool loggedin)
|
||||
{
|
||||
string s = "";
|
||||
if (loggedin)
|
||||
{
|
||||
foreach (var entry in LoggedInSettings)
|
||||
{
|
||||
s += entry.Key;
|
||||
s += "=";
|
||||
s += entry.Value;
|
||||
s += "\n";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var entry in Settings)
|
||||
{
|
||||
s += entry.Key;
|
||||
s += "=";
|
||||
s += entry.Value;
|
||||
s += "\n";
|
||||
}
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
private static void Parse(string filecontent, bool loggedin)
|
||||
{
|
||||
string[] splitCache = filecontent.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
|
||||
var tmp = splitCache.ToDictionary(
|
||||
entry => entry.Substring(0, entry.IndexOf("=")),
|
||||
entry => entry.Substring(entry.IndexOf("=") + 1));
|
||||
if (loggedin)
|
||||
LoggedInSettings = tmp;
|
||||
else
|
||||
Settings = tmp;
|
||||
}
|
||||
|
||||
public static void Parse(string filecontent) //Publikus metódus
|
||||
{
|
||||
string[] splitCache = filecontent.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
|
||||
var tmp = splitCache.ToDictionary(
|
||||
entry => "userinfo_" + entry.Substring(0, entry.IndexOf("=")),
|
||||
entry => entry.Substring(entry.IndexOf("=") + 1));
|
||||
//LoggedInSettings = (Dictionary<string, string>)LoggedInSettings.Concat(tmp);
|
||||
LoggedInSettings = LoggedInSettings.Concat(tmp)
|
||||
.ToLookup(pair => pair.Key, pair => pair.Value)
|
||||
.ToDictionary(group => group.Key, group => group.Last());
|
||||
}
|
||||
|
||||
public static byte[] Encrypt(byte[] content, string code)
|
||||
{
|
||||
byte[] plainTextBytes = content;
|
||||
|
||||
byte[] keyBytes = new Rfc2898DeriveBytes(PasswordHash, Encoding.ASCII.GetBytes(code)).GetBytes(256 / 8);
|
||||
var symmetricKey = new RijndaelManaged() { Mode = CipherMode.CBC, Padding = PaddingMode.Zeros };
|
||||
var encryptor = symmetricKey.CreateEncryptor(keyBytes, Encoding.ASCII.GetBytes(VIKey));
|
||||
|
||||
byte[] cipherTextBytes;
|
||||
|
||||
using (var memoryStream = new MemoryStream())
|
||||
{
|
||||
using (var cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write))
|
||||
{
|
||||
cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
|
||||
cryptoStream.FlushFinalBlock();
|
||||
cipherTextBytes = memoryStream.ToArray();
|
||||
cryptoStream.Close();
|
||||
}
|
||||
memoryStream.Close();
|
||||
}
|
||||
return cipherTextBytes;
|
||||
}
|
||||
private static byte[] Encrypt(byte[] filecontent)
|
||||
{ //2014.09.01.
|
||||
return Encrypt(filecontent, SaltKey);
|
||||
}
|
||||
private static byte[] Encrypt(string filecontent)
|
||||
{
|
||||
return Encrypt(Encoding.UTF8.GetBytes(filecontent));
|
||||
}
|
||||
|
||||
public static byte[] Decrypt(byte[] b, bool tr, string code)
|
||||
{
|
||||
byte[] cipherTextBytes = b;
|
||||
byte[] keyBytes = new Rfc2898DeriveBytes(PasswordHash, Encoding.ASCII.GetBytes(code)).GetBytes(256 / 8);
|
||||
var symmetricKey = new RijndaelManaged() { Mode = CipherMode.CBC, Padding = PaddingMode.None };
|
||||
|
||||
var decryptor = symmetricKey.CreateDecryptor(keyBytes, Encoding.ASCII.GetBytes(VIKey));
|
||||
var memoryStream = new MemoryStream(cipherTextBytes);
|
||||
var cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read);
|
||||
byte[] plainTextBytes = new byte[cipherTextBytes.Length];
|
||||
|
||||
int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
|
||||
memoryStream.Close();
|
||||
cryptoStream.Close();
|
||||
return plainTextBytes;
|
||||
}
|
||||
private static byte[] Decrypt(byte[] b, bool tr)
|
||||
{ //2014.09.01.
|
||||
return Decrypt(b, tr, SaltKey);
|
||||
}
|
||||
private static string Decrypt(byte[] b)
|
||||
{
|
||||
byte[] tmp = Decrypt(b, true, SaltKey);
|
||||
return Encoding.UTF8.GetString(tmp, 0, tmp.Length).TrimEnd("\0".ToCharArray());
|
||||
}
|
||||
|
||||
private static byte[] Read(bool loggedin)
|
||||
{
|
||||
FileStream fs;
|
||||
if (loggedin)
|
||||
fs = new FileStream(FileName, FileMode.Open);
|
||||
else
|
||||
fs = new FileStream("program.db", FileMode.Open);
|
||||
byte[] b = new byte[4];
|
||||
fs.Read(b, 0, b.Length);
|
||||
var file_len = BitConverter.ToInt32(b, 0);
|
||||
b = new byte[file_len];
|
||||
fs.Read(b, 0, b.Length);
|
||||
fs.Close();
|
||||
return b;
|
||||
}
|
||||
|
||||
private static void Write(byte[] b, bool loggedin)
|
||||
{
|
||||
var len = BitConverter.GetBytes(b.Length);
|
||||
FileStream fs;
|
||||
if (loggedin)
|
||||
fs = new FileStream(FileName, FileMode.Create);
|
||||
else
|
||||
fs = new FileStream("program.db", FileMode.Create);
|
||||
fs.Write(len, 0, len.Length);
|
||||
fs.Write(b, 0, b.Length);
|
||||
fs.Close();
|
||||
}
|
||||
|
||||
public static void Dispose()
|
||||
{
|
||||
LoggedInSettings = new Dictionary<string, string>();
|
||||
}
|
||||
}
|
||||
}
|
213
Versions/Less Closed Beta/v3.0/MSGer.tk/StreamHelper.cs
Normal file
|
@ -0,0 +1,213 @@
|
|||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace HdSystemLibrary.IO
|
||||
{
|
||||
/// <summary>
|
||||
/// A delegate for reporting binary progress
|
||||
/// </summary>
|
||||
/// <param name="bytesRead">The amount of bytes already read</param>
|
||||
/// <param name="totalBytesToRead">The amount of total bytes to read. Can be -1 if unknown.</param>
|
||||
public delegate void ProgressChange(long bytesRead, long totalBytesToRead);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// The arguments for StreamHelper.CopyFrom(Stream, Stream, CopyFromArguments)
|
||||
/// </summary>
|
||||
public sealed class CopyFromArguments
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates the default arguments
|
||||
/// </summary>
|
||||
public CopyFromArguments()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates arguments with a progress change callback.
|
||||
/// </summary>
|
||||
/// <param name="progressChangeCallback">The progress change callback (see <see cref="ProgressChangeCallback"/>)</param>
|
||||
public CopyFromArguments(ProgressChange progressChangeCallback)
|
||||
{
|
||||
ProgressChangeCallback = progressChangeCallback;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates arguments with a progress change callback and an interval between to progress changes.
|
||||
/// </summary>
|
||||
/// <param name="progressChangeCallback">The progress change callback (see <see cref="ProgressChangeCallback"/>)</param>
|
||||
/// <param name="progressChangeCallbackInterval">The interval between to progress change callbacks (see <see cref="ProgressChangeCallbackInterval"/>)</param>
|
||||
public CopyFromArguments(ProgressChange progressChangeCallback,
|
||||
TimeSpan progressChangeCallbackInterval)
|
||||
{
|
||||
ProgressChangeCallback = progressChangeCallback;
|
||||
ProgressChangeCallbackInterval = progressChangeCallbackInterval;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates arguments with a progress change callback, an interval between to progress changes and a total length
|
||||
/// </summary>
|
||||
/// <param name="progressChangeCallback">The progress change callback (see <see cref="ProgressChangeCallback"/>)</param>
|
||||
/// <param name="progressChangeCallbackInterval">The interval between to progress change callbacks (see <see cref="ProgressChangeCallbackInterval"/>)</param>
|
||||
/// <param name="totalLength">The total bytes to read (see <see cref="TotalLength"/>)</param>
|
||||
public CopyFromArguments(ProgressChange progressChangeCallback,
|
||||
TimeSpan progressChangeCallbackInterval, long totalLength)
|
||||
{
|
||||
ProgressChangeCallback = progressChangeCallback;
|
||||
ProgressChangeCallbackInterval = progressChangeCallbackInterval;
|
||||
TotalLength = totalLength;
|
||||
}
|
||||
|
||||
private long totalLength = -1;
|
||||
/// <summary>
|
||||
/// Gets or sets the total length of stream. Set to -1 if the value has to be determined by stream.Length.
|
||||
/// If the stream is not seekable, the total length in the progress report will be stay -1.
|
||||
/// </summary>
|
||||
public long TotalLength { get { return totalLength; } set { totalLength = value; } }
|
||||
|
||||
private int bufferSize = 4096;
|
||||
/// <summary>
|
||||
/// Gets or sets the size of the buffer used for copying bytes. Default is 4096.
|
||||
/// </summary>
|
||||
public int BufferSize { get { return bufferSize; } set { bufferSize = value; } }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the callback for progress-report. Default is null.
|
||||
/// </summary>
|
||||
public ProgressChange ProgressChangeCallback { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the event for aborting the operation. Default is null.
|
||||
/// </summary>
|
||||
public WaitHandle StopEvent { get; set; }
|
||||
|
||||
private TimeSpan progressCallbackInterval = TimeSpan.FromSeconds(0.2);
|
||||
/// <summary>
|
||||
/// Gets or sets the time interval between to progress change callbacks. Default is 200 ms.
|
||||
/// </summary>
|
||||
public TimeSpan ProgressChangeCallbackInterval
|
||||
{
|
||||
get { return progressCallbackInterval; }
|
||||
set { progressCallbackInterval = value; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A static class for basic stream operations.
|
||||
/// </summary>
|
||||
public static class StreamHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// Copies the source stream into the current while reporting the progress.
|
||||
/// The copying process is done in a separate thread, therefore the stream has to
|
||||
/// support reading from a different thread as the one used for construction.
|
||||
/// Nethertheless, the separate thread is synchronized with the calling thread.
|
||||
/// The callback in arguments is called from the calling thread.
|
||||
/// </summary>
|
||||
/// <param name="target">The current stream</param>
|
||||
/// <param name="source">The source stream</param>
|
||||
/// <param name="arguments">The arguments for copying</param>
|
||||
/// <returns>The number of bytes actually copied.</returns>
|
||||
/// <exception cref="ArgumentNullException">Thrown if either target, source of arguments is null</exception>
|
||||
/// <exception cref="ArgumentOutOfRangeException">Thrown if arguments.BufferSize is less than 128 or arguments.ProgressChangeCallbackInterval is less than 0</exception>
|
||||
public static long CopyFrom(this Stream target, Stream source, CopyFromArguments arguments)
|
||||
{
|
||||
if (target == null)
|
||||
throw new ArgumentNullException("target");
|
||||
if (source == null)
|
||||
throw new ArgumentNullException("source");
|
||||
if (arguments == null)
|
||||
throw new ArgumentNullException("arguments");
|
||||
if (arguments.BufferSize < 128)
|
||||
throw new ArgumentOutOfRangeException("arguments.BufferSize",
|
||||
arguments.BufferSize, "BufferSize has to be greater or equal than 128.");
|
||||
if (arguments.ProgressChangeCallbackInterval.TotalSeconds < 0)
|
||||
throw new ArgumentOutOfRangeException("arguments.ProgressChangeCallbackInterval",
|
||||
arguments.ProgressChangeCallbackInterval,
|
||||
"ProgressChangeCallbackInterval has to be greater or equal than 0.");
|
||||
|
||||
long length = 0;
|
||||
|
||||
bool runningFlag = true;
|
||||
|
||||
Action<Stream, Stream, int> copyMemory = (Stream _target, Stream _source, int bufferSize) =>
|
||||
//Raw copy-operation, "length" and "runningFlag" are enclosed as closure
|
||||
{
|
||||
int count;
|
||||
byte[] buffer = new byte[bufferSize];
|
||||
|
||||
while ((count = _source.Read(buffer, 0, bufferSize)) != 0 && runningFlag)
|
||||
{
|
||||
_target.Write(buffer, 0, count);
|
||||
long newLength = length + count;
|
||||
//"length" can be read as this is the only thread which writes to "length"
|
||||
Interlocked.Exchange(ref length, newLength);
|
||||
}
|
||||
};
|
||||
|
||||
IAsyncResult asyncResult = copyMemory.BeginInvoke(target, source, arguments.BufferSize, null, null);
|
||||
|
||||
long totalLength = arguments.TotalLength;
|
||||
if (totalLength == -1 && source.CanSeek)
|
||||
totalLength = (long)source.Length;
|
||||
|
||||
DateTime lastCallback = DateTime.Now;
|
||||
long lastLength = 0;
|
||||
|
||||
while (!asyncResult.IsCompleted)
|
||||
{
|
||||
if (arguments.StopEvent != null && arguments.StopEvent.WaitOne(0))
|
||||
runningFlag = false; //to indicate that the copy-operation has to abort
|
||||
|
||||
Thread.Sleep((int)(arguments.ProgressChangeCallbackInterval.TotalMilliseconds / 10));
|
||||
|
||||
if (arguments.ProgressChangeCallback != null
|
||||
&& DateTime.Now - lastCallback > arguments.ProgressChangeCallbackInterval)
|
||||
{
|
||||
long currentLength = Interlocked.Read(ref length); //Since length is 64 bit, reading is not an atomic operation.
|
||||
|
||||
if (currentLength != lastLength)
|
||||
{
|
||||
lastLength = currentLength;
|
||||
lastCallback = DateTime.Now;
|
||||
arguments.ProgressChangeCallback(currentLength, totalLength);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (arguments.ProgressChangeCallback != null && lastLength != length)
|
||||
//to ensure that the callback is called once with maximum progress
|
||||
arguments.ProgressChangeCallback(length, totalLength);
|
||||
|
||||
copyMemory.EndInvoke(asyncResult);
|
||||
|
||||
return length;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Copies the source stream into the current
|
||||
/// </summary>
|
||||
/// <param name="stream">The current stream</param>
|
||||
/// <param name="source">The source stream</param>
|
||||
/// <param name="bufferSize">The size of buffer used for copying bytes</param>
|
||||
/// <returns>The number of bytes actually copied.</returns>
|
||||
public static long CopyFrom(this Stream stream, Stream source, int bufferSize = 4096)
|
||||
{
|
||||
int count = 0;
|
||||
byte[] buffer = new byte[bufferSize];
|
||||
long length = 0;
|
||||
|
||||
while ((count = source.Read(buffer, 0, bufferSize)) != 0)
|
||||
{
|
||||
length += count;
|
||||
stream.Write(buffer, 0, count);
|
||||
}
|
||||
|
||||
return length;
|
||||
}
|
||||
}
|
||||
|
||||
}
|