diff --git a/MSGer.tk/AboutBox1.cs b/MSGer.tk/AboutBox1.cs index 40e4fd3..583008b 100644 --- a/MSGer.tk/AboutBox1.cs +++ b/MSGer.tk/AboutBox1.cs @@ -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 desc = new List(); //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(); } diff --git a/MSGer.tk/AddPartner.cs b/MSGer.tk/AddPartner.cs index 356f53c..f8e8b87 100644 --- a/MSGer.tk/AddPartner.cs +++ b/MSGer.tk/AddPartner.cs @@ -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 FoundUsers = new List(); 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]; - 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]; + 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]; - 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 + ")"); diff --git a/MSGer.tk/ChatForm.Designer.cs b/MSGer.tk/ChatForm.Designer.cs index 53716b8..73391d0 100644 --- a/MSGer.tk/ChatForm.Designer.cs +++ b/MSGer.tk/ChatForm.Designer.cs @@ -28,7 +28,7 @@ /// 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; } } \ No newline at end of file diff --git a/MSGer.tk/ChatForm.cs b/MSGer.tk/ChatForm.cs index 666e9b5..8bc4d69 100644 --- a/MSGer.tk/ChatForm.cs +++ b/MSGer.tk/ChatForm.cs @@ -25,50 +25,58 @@ namespace MSGer.tk { public static List ChatWindows = new List(); public List ChatPartners = new List(); - public List PendingMessages = new List(); - public Thread UpdateT; + //public List PendingMessages = new List(); + //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,84 +123,48 @@ namespace MSGer.tk { 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 - */ - 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; - } - } - } + //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 string TMessage; + public static ChatForm GetChatFormByUsers(IEnumerable 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 buf = new List(); 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; + } + } } } diff --git a/MSGer.tk/CurrentUser.cs b/MSGer.tk/CurrentUser.cs index 63ae9aa..8c82339 100644 --- a/MSGer.tk/CurrentUser.cs +++ b/MSGer.tk/CurrentUser.cs @@ -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 = ""; - /// - /// Á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. - /// - 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 ips = new List(); + /*public static List 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(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; + ///// + ///// Á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. + ///// + //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; + } + } } } diff --git a/MSGer.tk/Language.cs b/MSGer.tk/Language.cs index 4e7be0a..b6784db 100644 --- a/MSGer.tk/Language.cs +++ b/MSGer.tk/Language.cs @@ -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 Strings = new Dictionary(); - 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"; + } } } } diff --git a/MSGer.tk/LoginForm.Designer.cs b/MSGer.tk/LoginForm.Designer.cs index cfb1f90..645f043 100644 --- a/MSGer.tk/LoginForm.Designer.cs +++ b/MSGer.tk/LoginForm.Designer.cs @@ -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; } } \ No newline at end of file diff --git a/MSGer.tk/LoginForm.RegistrationForm.cs b/MSGer.tk/LoginForm.RegistrationForm.cs index 27b293f..08eabc5 100644 --- a/MSGer.tk/LoginForm.RegistrationForm.cs +++ b/MSGer.tk/LoginForm.RegistrationForm.cs @@ -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; } } diff --git a/MSGer.tk/LoginForm.cs b/MSGer.tk/LoginForm.cs index 44ff181..83d3929 100644 --- a/MSGer.tk/LoginForm.cs +++ b/MSGer.tk/LoginForm.cs @@ -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 tmp; //E-mail - 2014.04.02. - if (Settings.Default.email.Length != 0) - tmp = Settings.Default.email.Split(',').ToList(); + if (Storage.Settings["email"].Length != 0) + tmp = Storage.Settings["email"].Split(',').ToList(); else tmp = new List(); //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 lines = new List(); - 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().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().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 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(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); + } + } } } diff --git a/MSGer.tk/MSGer.tk.csproj b/MSGer.tk/MSGer.tk.csproj index ff4c9cc..6098082 100644 --- a/MSGer.tk/MSGer.tk.csproj +++ b/MSGer.tk/MSGer.tk.csproj @@ -82,6 +82,12 @@ AddPartner.cs + + Form + + + BeforeLogin.cs + Form @@ -115,12 +121,19 @@ LoginForm.cs + Form Notifier.cs + + Form + + + PartnerInformation.cs + Form @@ -128,10 +141,10 @@ SettingsForm.cs + - - Component - + + @@ -146,12 +159,6 @@ SelectPartnerForm.cs - - - True - True - Settings.settings - Form @@ -162,6 +169,9 @@ AddPartner.cs + + BeforeLogin.cs + ChatForm.cs @@ -180,6 +190,9 @@ Notifier.cs + + PartnerInformation.cs + ResXFileCodeGenerator Resources.Designer.cs @@ -199,10 +212,6 @@ Settings.settings True - - SettingsSingleFileGenerator - Settings.Designer.cs - diff --git a/MSGer.tk/MSGer.tk.v12.suo b/MSGer.tk/MSGer.tk.v12.suo index 35da839..efadef8 100644 Binary files a/MSGer.tk/MSGer.tk.v12.suo and b/MSGer.tk/MSGer.tk.v12.suo differ diff --git a/MSGer.tk/MainForm.Designer.cs b/MSGer.tk/MainForm.Designer.cs index 074cc4e..1bd058c 100644 --- a/MSGer.tk/MainForm.Designer.cs +++ b/MSGer.tk/MainForm.Designer.cs @@ -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(this.contactList_ItemDoubleClicked); + this.contactList.ItemRightClicked += new System.EventHandler(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; } } diff --git a/MSGer.tk/MainForm.cs b/MSGer.tk/MainForm.cs index a20acf9..115c536 100644 --- a/MSGer.tk/MainForm.cs +++ b/MSGer.tk/MainForm.cs @@ -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,32 +188,160 @@ 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(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++) { - 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"; - - // 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; - - taskbarNotifier = new Notifier("popup-bg.bmp", Color.FromArgb(255, 0, 255), "close.bmp", 5000); - taskbarNotifier.Show("Teszt cím", "Teszt tartalom\nMásodik sor"); - - toolStripMenuItem4.Enabled = true; //2014.04.12. - toolStripMenuItem8.Enabled = true; //2014.04.12. + 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) @@ -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 tmp; - if (Settings.Default.picupdatetime.Length != 0) - tmp = Settings.Default.picupdatetime.Split(',').Select(s => Int32.Parse(s)).ToList(); - else tmp = new List(); - List tmpuser = UserInfo.Partners; - contactList.AutoUpdate = false; - var items = new List(); - 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; + } } } diff --git a/MSGer.tk/Notifier.Designer.cs b/MSGer.tk/Notifier.Designer.cs index 3bf3a18..cff2ac5 100644 --- a/MSGer.tk/Notifier.Designer.cs +++ b/MSGer.tk/Notifier.Designer.cs @@ -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(); diff --git a/MSGer.tk/Notifier.cs b/MSGer.tk/Notifier.cs index bc6bbd6..0465649 100644 --- a/MSGer.tk/Notifier.cs +++ b/MSGer.tk/Notifier.cs @@ -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); + } } } diff --git a/MSGer.tk/Program.cs b/MSGer.tk/Program.cs index 321c1bc..3ddb828 100644 --- a/MSGer.tk/Program.cs +++ b/MSGer.tk/Program.cs @@ -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; /// /// The main entry point for the application. /// - 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 + + static class EnumerableExtensions { - private static int Tries = 0; - public static string SendRequest(string action, string data, int remnum, bool loggedin) //2014.02.18. + public static bool HasSameElementsAs( + this IEnumerable first, + IEnumerable second + ) { - #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 + 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] + ); + } - 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); + public static bool Test(this object A, object B) + { + return object.ReferenceEquals(A, B); + } - httpWReq.Method = "POST"; - httpWReq.ContentType = "application/x-www-form-urlencoded"; - httpWReq.ContentLength = datax.Length; - - using (Stream stream = httpWReq.GetRequestStream()) + /// + /// 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()) { - stream.Write(datax, 0, datax.Length); + BinaryFormatter formatter = new BinaryFormatter(); + formatter.Serialize(buffer, obj); + buffer.Position = 0; + object temp = formatter.Deserialize(buffer); + return temp; } - - //Lista betöltése folyamatban... - - HttpWebResponse response; - - try - { - response = (HttpWebResponse)httpWReq.GetResponse(); - } - catch (Exception e) - { - 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; - } - Tries++; - return SendRequest(action, data, remnum, loggedin); //Újrapróbálkozik - } - string responseString; - responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); - return responseString; } } } diff --git a/MSGer.tk/Properties/AssemblyInfo.cs b/MSGer.tk/Properties/AssemblyInfo.cs index cfad8ab..0d583f3 100644 --- a/MSGer.tk/Properties/AssemblyInfo.cs +++ b/MSGer.tk/Properties/AssemblyInfo.cs @@ -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")] diff --git a/MSGer.tk/SelectPartnerForm.cs b/MSGer.tk/SelectPartnerForm.cs index 7b3da59..4a9eb1a 100644 --- a/MSGer.tk/SelectPartnerForm.cs +++ b/MSGer.tk/SelectPartnerForm.cs @@ -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) { diff --git a/MSGer.tk/SettingsForm.cs b/MSGer.tk/SettingsForm.cs index c466bdc..4cf6d1b 100644 --- a/MSGer.tk/SettingsForm.cs +++ b/MSGer.tk/SettingsForm.cs @@ -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 - { - 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); - } - this.Close(); } + //string result = Networking.SendRequest("updatesettings", nameText.Text + "ͦ" + messageText.Text, 0, true); + //if (result != "Success") + //MessageBox.Show(Language.Translate("error"] + ": " + result); + //List bytes = new List(); + //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 bytes = new List(); + 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) diff --git a/MSGer.tk/UserInfo.cs b/MSGer.tk/UserInfo.cs index ac5650b..5404d95 100644 --- a/MSGer.tk/UserInfo.cs +++ b/MSGer.tk/UserInfo.cs @@ -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 Partners = new List(); - 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 Partners = new List(); + public static List KnownUsers = new List(); //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 list=GetChatWindows(); + if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_name")) + Storage.LoggedInSettings.Add("userinfo_" + UserID + "_name", ""); + Storage.LoggedInSettings["userinfo_" + UserID + "_name"] = value; + /*List 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 list = GetChatWindows(); + if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_message")) + Storage.LoggedInSettings.Add("userinfo_" + UserID + "_message", ""); + Storage.LoggedInSettings["userinfo_" + UserID + "_message"] = value; + /*List 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 list = GetChatWindows(); + if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_state")) + Storage.LoggedInSettings.Add("userinfo_" + UserID + "_state", "-1"); + Storage.LoggedInSettings["userinfo_" + UserID + "_state"] = value.ToString(); + /*List 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; 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"]; + } + 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 ips = new HashSet(); + public static HashSet IPs + { + get + { + return ips; + } + set + { + ips = value; + } + } + private static List bannedips = new List(); + public static List 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 sendb = new List(); + 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(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 GetChatWindows() { List retlist = new List(); - for(int x=0; x 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 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); + }*/ } } diff --git a/MSGer.tk/bin/Debug/MSGer.tk.exe b/MSGer.tk/bin/Debug/MSGer.tk.exe index 25ca5df..a9be560 100644 Binary files a/MSGer.tk/bin/Debug/MSGer.tk.exe and b/MSGer.tk/bin/Debug/MSGer.tk.exe differ diff --git a/MSGer.tk/bin/Debug/MSGer.tk.pdb b/MSGer.tk/bin/Debug/MSGer.tk.pdb index 25639e1..3359e0a 100644 Binary files a/MSGer.tk/bin/Debug/MSGer.tk.pdb and b/MSGer.tk/bin/Debug/MSGer.tk.pdb differ diff --git a/MSGer.tk/bin/Debug/RichListView.dll b/MSGer.tk/bin/Debug/RichListView.dll index 17cf1fb..e17d3c1 100644 Binary files a/MSGer.tk/bin/Debug/RichListView.dll and b/MSGer.tk/bin/Debug/RichListView.dll differ diff --git a/MSGer.tk/bin/Debug/RichListView.pdb b/MSGer.tk/bin/Debug/RichListView.pdb index c5f50ca..2aca0d0 100644 Binary files a/MSGer.tk/bin/Debug/RichListView.pdb and b/MSGer.tk/bin/Debug/RichListView.pdb differ diff --git a/MSGer.tk/bin/Debug/languages/en.txt b/MSGer.tk/bin/Debug/languages/en.txt index b44ffff..9f39561 100644 --- a/MSGer.tk/bin/Debug/languages/en.txt +++ b/MSGer.tk/bin/Debug/languages/en.txt @@ -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 diff --git a/MSGer.tk/bin/Debug/languages/hu.txt b/MSGer.tk/bin/Debug/languages/hu.txt index f9b50c2..24cba6b 100644 --- a/MSGer.tk/bin/Debug/languages/hu.txt +++ b/MSGer.tk/bin/Debug/languages/hu.txt @@ -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 diff --git a/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache index 98dd33c..273bb50 100644 Binary files a/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache and b/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index 563100e..d19e1c3 100644 Binary files a/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt b/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt index bc1cc06..f9f1dd4 100644 --- a/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt +++ b/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt @@ -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 diff --git a/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache b/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache index e2d2aae..4859c0a 100644 Binary files a/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache and b/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache differ diff --git a/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache b/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache index 204f03d..9dace19 100644 Binary files a/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache and b/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache differ diff --git a/MSGer.tk/obj/Debug/MSGer.tk.exe b/MSGer.tk/obj/Debug/MSGer.tk.exe index 25ca5df..a9be560 100644 Binary files a/MSGer.tk/obj/Debug/MSGer.tk.exe and b/MSGer.tk/obj/Debug/MSGer.tk.exe differ diff --git a/MSGer.tk/obj/Debug/MSGer.tk.pdb b/MSGer.tk/obj/Debug/MSGer.tk.pdb index 25639e1..3359e0a 100644 Binary files a/MSGer.tk/obj/Debug/MSGer.tk.pdb and b/MSGer.tk/obj/Debug/MSGer.tk.pdb differ diff --git a/Versions/Less Closed Beta/v3.0/Changelog.txt b/Versions/Less Closed Beta/v3.0/Changelog.txt new file mode 100644 index 0000000..e152aa9 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/Changelog.txt @@ -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 optimalizci +- Automatikus kijelentkeztets, ha megszakad a kapcsolat (PHP) <-- Mr nincs is r szksg +- A kpfeltlts elkezdve +- Opci a hangulatjelek megjelentsre +- Mostantl csak egyetlen pldnyt enged futni, kivve ha a "multi" paramter meg van adva +- Rendszer teljes tszervezse +-- Nincs kzponti szerver <-- Pontosabban a terhelse cskkentve +-- A rendszer nyelvt hasznlja alaprtelmezetten, nem a magyart +-- A trolsi rendszert taln egy-kt nap alatt megoldottam (titkosts, stb.) - De mg nem hasznlta mindenhol azt a rendszert +-- Az zeneteket is mostantl ugyanaz a thread frissti, mint a partnerlistt elssorban az UDP mkdse miatt +-- Ha zenetet rnak, most mr automatikusan megjelenik az ablak +-- A profilkpeket mindenkppen elkldi mindenkinek, nem lehet belltani +-- Partnerinformci (MainForm, AddPartner, stb.) +-- RichListView: Az elemek kivlaszthatak, ha res terletre kattintasz, megsznteti a kivlasztst +-- Metdus a szvegek lefordtsra, gy jobban vgezhet a hibakeress (Language.GetCurrentLanguage().Strings trva 145 helyen Language.Translate-re) +-- Mostantl az sszes ismert informcit trolja, amit a felhasznlkrl kap +-- UserID hasznlata ListID helyett ahol lehet +-- Ideiglenesen kitilt minden IP-t, ahonnan nem rkezett vlasz +-- Most mr kirja azt is, ha nem elrhet egy ismers (eddig a listban nem jelzett semmit akkor) +-- A rejtve kapcsoldsnl mg ugyanaz a kliens is azt hiszi, hogy nem elrhet +-- BeforeLogin form hozzadva, mostantl jelzi, hogy mit csinl bejelentkezs eltt, ha lass lenne (leginkbb a frisstsellenrzs) +--- 1 mp-ig nem jelenik meg +-- A berkez zenetekkel csak akkor foglalkozik, ha van a beszlgetsben legalbb egy ismers (a kld ismers vagy legalbb egy ismersnek is kldte) + +PHP: +- Jelsztitkosts fejlesztve, ezrt pedig j jelsz krse, ezrt pedig ktelez E-mailt megadni + +Kisebb-nagyobb hibajavtsok +- Hiba tbb, mint 2 ismersnl javtva +- Az zenetkldsnek valami komoly gondja van... - Amit megoldottam az tszervezssel +- Nincs profilkp szveg lefordtva +- Az ideigelenesen eltrolt partnerkpekbe eddig a NoChange szveget rta, javtva +- Mikor elkezdi a program betltst, a contactList-be a "Betlts..." szveget rta - Javitva "Loading..."-ra +- Ktszer is elkldte az ismers hozzadsa zenetet a szervernek, javtva +- A keressvban most mr nem csak a magyar nyelv "Ismersk keresse..." szveget veszi figyelembe +- "Hiba trtnt az llapot belltsa sorn." szveg lefordtva +- Az ismerslistban zrjelben lv llapotjelzs lefordtva +- A tlcaikon most mr nem marad ott, ha helyesen ll le a program +- TaskbarNotifier lthatbb tve +- RichListView: Mivel a RichTextBox nem reagl a MouseClick esemnyre, a MouseUp esemnyt hasznltam a listanzetemben (ksbb lehet, hogy klnvlasztom, de egyelre j gy) +- Notifier javtva +- Nhny NullReferenceException kezels helyettestve if not null ellenrzsekkel +- Ha az aktulis nyelv vltozik, a program csak azutn indt el egy jabb pldnyt, hogy elmentette a belltsokat +- Most mr nem lehet trni a felhasznlnevet/jelszt bejelentkezs kzben +- A Language osztly is hasonl a TextFormathoz: egy new Language(); paranccsal betlti az egszet +-- Mindkettnl az egyes pldnyokat ltrehoz konstruktorok privtt tve +- PartnerListThreadActive vltoz trlve, LThread!=null ellenrzsek +- Most mr eltnteti a nyitott chatablakokat kijelentkezskor +- SelectPartnerSender vltoz trlve - Paramterknt adtam meg +- Most mr nem ugrik mindig egy grgetsv jobb szlre az ismerslista tmretezs utn +-- A grgetsv nha megjelenik kikapcsolva, ha kisebbre lltjuk a program mrett +- RichListView: Most mr nem frissl llandan az elz elemek listja (ami az elemek helyes trlshez kell), csak ha tnylegesen vltozik +- Most mr csak akkor jelenik meg az ikon a tlcn, ha bejelentkezett, gy nem marad ott, ha a bejelentkezablak bezrul bejelentkezs nlkl +- Most mr akkor is elmenti a legutbb hasznlt E-mail pozicijt, ha eddig nem volt eltrolva +- Most mr az sszes hangulatjelet felismeri az adott szvegben, s nem dolgozik feleslegesen + +Protokoll (sokszor n is sszekevertem, ezrt is rom ide): +!response (krelem/vlasz) - 1 byte +!UpdateType (frissts tpusa) - 1 byte +keyversion +UserID (felh. azonost) - 4 byte +data (adatok) - vltoz + +A felkiltjeleseket nem adja tovbb a ReceiveUpdates funkci - Vagy mgis most mr + +v4.0 (Design update) Tervek: +---- +- TransparencyKey hasznlata a kerektett sarkokhoz; kln megjelentsi md, ha teljes kpernys, s ha nem +- Fjlkldst megoldani +- Kpfeltlts +- tdizjnols (tmarendszer; #00FF00 tltsz (akr legyen llthat)) +-- A tbb emberes beszlgetseket megoldani +-- Valahogy trkksen csinlni dizjnert a paneleknek (pl. j UserControl, trva panelre, vagy ilyesmi) +- TaskbarNotifier +- ItemWordWrap csak nagy listanzetben +- Aero bevonsa - http://www.codeproject.com/Articles/17681/Windows-Vista-Aero-Glass-in-NET-Managed-Win-Appl +-- (TransparencyKey: black - tmretezs utn nem lehet a cmsorra sem kattintani) +- Mono vltozat (pp az Aero-s kinzet miatt kellene kln dizjn a Mono vltozathoz +- FormClosed esemnynl CloseReason-t kezelni +- Kd dokumentlsa (valamennyire) +- Kzrs bevonsa + +v5.0 (Packer update) Tervek: +---- +- Hangulatjelcsomagok - Csomagrendszer (hangulatjelek, hangok, kinzetek, stb.) +-- Age of Mythology hangpakk +- Ha nincs engedlye(tzfal) vagy HTTP proxy mgtt ll a felhasznl: HTTP (HttpListener, HttpWebRequest, HttpWebResponse) +- Hangulatjelek animlsa +- Pluginrendszer - http://www.c-sharpcorner.com/UploadFile/samhaidar/LateBindingWithReflection09122005053810AM/LateBindingWithReflection.aspx +- Az IP cmeket taln hozzrendelni a UserID-khoz, s leellenrizni, hogy j UserID-t kld-e +- Jelszkezels frisstse: "Jelszgenerl program"-om ltal ksztett jelszavak elfogadsa +- Titkosts fejlesztse (LoginUser frisstse s SetKey) +-- http://en.wikipedia.org/wiki/Man-in-the-middle_attack +- A hlzati rszt befejezni, javtani (pl. chat) +-- zenetklds akkor is, ha nincs ms online +-- "Szval ezt mondtk rlam"-rendszer +- Egy felhasznl csak egyszer jelentkezhessen be (egy gpre, vagy akr az egsz rendszerben is) +- Belltsok gyaraptsa + +v6.0 Tervek: +---- +- Steam integrci(?) https://github.com/Overv/SteamWebAPI - Igen valszntlen diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/AboutBox1.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/AboutBox1.Designer.cs new file mode 100644 index 0000000..f3a0e83 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/AboutBox1.Designer.cs @@ -0,0 +1,190 @@ +namespace MSGer.tk +{ + partial class AboutBox1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + 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; + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/AboutBox1.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/AboutBox1.cs new file mode 100644 index 0000000..583008b --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/AboutBox1.cs @@ -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 desc = new List(); //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); + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/AboutBox1.resx b/Versions/Less Closed Beta/v3.0/MSGer.tk/AboutBox1.resx new file mode 100644 index 0000000..e3289f3 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/AboutBox1.resx @@ -0,0 +1,604 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAAAAElFTkSuQmCC + + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/AddPartner.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/AddPartner.Designer.cs new file mode 100644 index 0000000..dd0f39c --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/AddPartner.Designer.cs @@ -0,0 +1,175 @@ +namespace MSGer.tk +{ + partial class AddPartner + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + 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; + } +} \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/AddPartner.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/AddPartner.cs new file mode 100644 index 0000000..f8e8b87 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/AddPartner.cs @@ -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 FoundUsers = new List(); + + 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 + ")"); + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/AddPartner.resx b/Versions/Less Closed Beta/v3.0/MSGer.tk/AddPartner.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/AddPartner.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/App.config b/Versions/Less Closed Beta/v3.0/MSGer.tk/App.config new file mode 100644 index 0000000..b8bf97a --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/App.config @@ -0,0 +1,33 @@ + + + + +
+ + + + + + + + + + + + + + + 3 + + + hu + + + 4510 + + + 0 + + + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/BeforeLogin.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/BeforeLogin.Designer.cs new file mode 100644 index 0000000..cbd9cc2 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/BeforeLogin.Designer.cs @@ -0,0 +1,68 @@ +namespace MSGer.tk +{ + partial class BeforeLogin + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.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; + } +} \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/BeforeLogin.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/BeforeLogin.cs new file mode 100644 index 0000000..082715c --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/BeforeLogin.cs @@ -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); + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/BeforeLogin.resx b/Versions/Less Closed Beta/v3.0/MSGer.tk/BeforeLogin.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/BeforeLogin.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/ChatForm.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/ChatForm.Designer.cs new file mode 100644 index 0000000..73391d0 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/ChatForm.Designer.cs @@ -0,0 +1,198 @@ +namespace MSGer.tk +{ + partial class ChatForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.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; + } +} \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/ChatForm.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/ChatForm.cs new file mode 100644 index 0000000..8bc4d69 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/ChatForm.cs @@ -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 ChatWindows = new List(); + public List ChatPartners = new List(); + //public List PendingMessages = new List(); + //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 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 buf = new List(); + 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; + } + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/ChatForm.resx b/Versions/Less Closed Beta/v3.0/MSGer.tk/ChatForm.resx new file mode 100644 index 0000000..3a7d671 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/ChatForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/CurrentUser.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/CurrentUser.cs new file mode 100644 index 0000000..8c82339 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/CurrentUser.cs @@ -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 ips = new List(); + /*public static List 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(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; + ///// + ///// Á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. + ///// + //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; + } + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/ErrorHandling.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/ErrorHandling.cs new file mode 100644 index 0000000..72e47a4 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/ErrorHandling.cs @@ -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; + } + } + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/InvitePartner.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/InvitePartner.Designer.cs new file mode 100644 index 0000000..71499a7 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/InvitePartner.Designer.cs @@ -0,0 +1,176 @@ +namespace MSGer.tk +{ + partial class InvitePartner + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.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; + } +} \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/InvitePartner.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/InvitePartner.cs new file mode 100644 index 0000000..9e250d1 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/InvitePartner.cs @@ -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(); + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/InvitePartner.resx b/Versions/Less Closed Beta/v3.0/MSGer.tk/InvitePartner.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/InvitePartner.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Language.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/Language.cs new file mode 100644 index 0000000..b6784db --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/Language.cs @@ -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 UsedLangs = new Dictionary(); + + public Dictionary Strings = new Dictionary(); + + 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"; + } + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.Designer.cs new file mode 100644 index 0000000..645f043 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.Designer.cs @@ -0,0 +1,193 @@ +namespace MSGer.tk +{ + partial class LoginForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + 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; + } +} \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.RegistrationForm.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.RegistrationForm.Designer.cs new file mode 100644 index 0000000..6bfb4b3 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.RegistrationForm.Designer.cs @@ -0,0 +1,176 @@ +namespace MSGer.tk +{ + partial class LoginForm_RegistrationForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.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; + } +} \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.RegistrationForm.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.RegistrationForm.cs new file mode 100644 index 0000000..08eabc5 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.RegistrationForm.cs @@ -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; + } + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.RegistrationForm.resx b/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.RegistrationForm.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.RegistrationForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.cs new file mode 100644 index 0000000..83d3929 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.cs @@ -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 tmp; //E-mail - 2014.04.02. + if (Storage.Settings["email"].Length != 0) + tmp = Storage.Settings["email"].Split(',').ToList(); + else tmp = new List(); + //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 lines = new List(); + 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().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 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(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); + } + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.resx b/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.resx new file mode 100644 index 0000000..7938e5e --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/LoginForm.resx @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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. + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.csproj b/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.csproj new file mode 100644 index 0000000..6098082 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.csproj @@ -0,0 +1,274 @@ + + + + + Debug + AnyCPU + {F60940C0-05FC-46C0-948E-6DBECBBE38DD} + WinExe + Properties + MSGer.tk + MSGer.tk + v4.5 + 512 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + true + + + + D:\Downloads\GlacialListSource13\ListView\bin\Debug\GlacialList.dll + + + False + D:\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll + + + + + + + + + + + + + + + + Form + + + AboutBox1.cs + + + Form + + + AddPartner.cs + + + Form + + + BeforeLogin.cs + + + Form + + + ChatForm.cs + + + + + Form + + + InvitePartner.cs + + + + Form + + + LoginForm.RegistrationForm.cs + + + Form + + + MainForm.cs + + + Form + + + LoginForm.cs + + + + Form + + + Notifier.cs + + + Form + + + PartnerInformation.cs + + + + Form + + + SettingsForm.cs + + + + + + + + + + True + True + Resources.resx + + + Form + + + SelectPartnerForm.cs + + + Form + + + + AboutBox1.cs + + + AddPartner.cs + + + BeforeLogin.cs + + + ChatForm.cs + + + InvitePartner.cs + + + LoginForm.RegistrationForm.cs + + + MainForm.cs + + + LoginForm.cs + + + Notifier.cs + + + PartnerInformation.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SelectPartnerForm.cs + + + SettingsForm.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + Microsoft .NET Framework 4.5 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + + + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + RichListView + + + + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.csproj.user b/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.csproj.user new file mode 100644 index 0000000..be7881f --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.csproj.user @@ -0,0 +1,13 @@ + + + + publish\ + + + + + + en-US + false + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.sln b/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.sln new file mode 100644 index 0000000..29a2465 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.sln @@ -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 diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.v11.suo b/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.v11.suo new file mode 100644 index 0000000..88974bf Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.v11.suo differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.v12.suo b/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.v12.suo new file mode 100644 index 0000000..efadef8 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/MSGer.tk.v12.suo differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/MainForm.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/MainForm.Designer.cs new file mode 100644 index 0000000..1bd058c --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/MainForm.Designer.cs @@ -0,0 +1,911 @@ +namespace MSGer.tk +{ + partial class MainForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + 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(this.contactList_ItemDoubleClicked); + this.contactList.ItemRightClicked += new System.EventHandler(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; + } +} + diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/MainForm.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/MainForm.cs new file mode 100644 index 0000000..115c536 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/MainForm.cs @@ -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; + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/MainForm.resx b/Versions/Less Closed Beta/v3.0/MSGer.tk/MainForm.resx new file mode 100644 index 0000000..4ec6651 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/MainForm.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WLM 2009 Logo base64-encoded probably - Spent hours on the correct sed command + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 530, 17 + + + + WLM 2009 Logo base64-encoded probably - Spent hours on the correct sed command + + + 130, 17 + + + 245, 17 + + + 375, 17 + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Networking.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/Networking.cs new file mode 100644 index 0000000..40fadce --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/Networking.cs @@ -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 senddata = new List(); + //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(); //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 Ret = new List(); + List ResponsedIPs = new List(); + //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 bytes = new List(); + 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 strs = new List(); + //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 senddata = new List(); + 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 sendd = new List(); + 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); + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Notifier.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/Notifier.Designer.cs new file mode 100644 index 0000000..cff2ac5 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/Notifier.Designer.cs @@ -0,0 +1,99 @@ +namespace MSGer.tk +{ + partial class Notifier + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.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; + } +} \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Notifier.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/Notifier.cs new file mode 100644 index 0000000..0465649 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/Notifier.cs @@ -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); + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Notifier.resx b/Versions/Less Closed Beta/v3.0/MSGer.tk/Notifier.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/Notifier.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/ObjectListView.dll b/Versions/Less Closed Beta/v3.0/MSGer.tk/ObjectListView.dll new file mode 100644 index 0000000..d4a658e Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/ObjectListView.dll differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/ObjectListView2012.csproj b/Versions/Less Closed Beta/v3.0/MSGer.tk/ObjectListView2012.csproj new file mode 100644 index 0000000..87f1f0f --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/ObjectListView2012.csproj @@ -0,0 +1,188 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {18FEDA0C-D147-4286-B39A-01204808106A} + Library + Properties + BrightIdeasSoftware + ObjectListView + + + + + 3.5 + v2.0 + true + olv-keyfile.snk + + + + true + full + false + bin\Debug\ + TRACE;DEBUG + prompt + 4 + false + bin\Debug\ObjectListView.XML + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + + + + + + + + + + + Component + + + + + + + + Component + + + + + + + + + Component + + + True + True + Resources.resx + + + + + Component + + + + Component + + + + + + + Component + + + Component + + + + + + Component + + + + + + + Component + + + Component + + + Form + + + ColumnSelectionForm.cs + + + + Form + + + + Code + + + + + + + + Component + + + + + + Component + + + Component + + + + Component + + + + + + + Component + + + + + + + + + + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + ColumnSelectionForm.cs + Designer + + + + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/PartnerInformation.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/PartnerInformation.Designer.cs new file mode 100644 index 0000000..bca1828 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/PartnerInformation.Designer.cs @@ -0,0 +1,182 @@ +namespace MSGer.tk +{ + partial class PartnerInformation + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.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; + } +} \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/PartnerInformation.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/PartnerInformation.cs new file mode 100644 index 0000000..f60fd25 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/PartnerInformation.cs @@ -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; + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/PartnerInformation.resx b/Versions/Less Closed Beta/v3.0/MSGer.tk/PartnerInformation.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/PartnerInformation.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Program.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/Program.cs new file mode 100644 index 0000000..3ddb828 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/Program.cs @@ -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; + /// + /// The main entry point for the application. + /// + [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( + this IEnumerable first, + IEnumerable 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; + } + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/ProgressStatistic.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/ProgressStatistic.cs new file mode 100644 index 0000000..75e7776 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/ProgressStatistic.cs @@ -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) { } + } + + /// + /// 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. + /// + public class ProgressStatistic + { + public ProgressStatistic() + { + StartingTime = DateTime.MinValue; + FinishingTime = DateTime.MinValue; + + progressChangedArgs = new ProgressEventArgs(this); //Event args can be cached + } + + private bool hasStarted = false; + /// + /// Gets whether the operation has started + /// + public bool HasStarted { get { return hasStarted; } } + /// + /// Gets whether the operation has finished + /// + public bool HasFinished { get { return FinishingTime != DateTime.MinValue; } } + + /// + /// Gets whether the operation is still running + /// + public bool IsRunning { get { return HasStarted && !HasFinished; } } + + #region Time + + /// + /// Gets the date time when the operation has started + /// + public DateTime StartingTime { get; private set; } + /// + /// Gets the date time when the operation has finished + /// + public DateTime FinishingTime { get; private set; } + + /// + /// 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. + /// + public TimeSpan Duration + { + get + { + if (!HasStarted) + return TimeSpan.Zero; + else if (!HasFinished) + return DateTime.Now - StartingTime; + else + return FinishingTime - StartingTime; + } + } + + /// + /// The method which will be used for estimating duration and finishing time + /// + public enum EstimatingMethod + { + /// + /// Current bytes per second will be used for estimating. + /// + CurrentBytesPerSecond, + /// + /// Average bytes per second will be used for estimating + /// + AverageBytesPerSecond + } + + private EstimatingMethod estimatingMethod = EstimatingMethod.CurrentBytesPerSecond; + /// + /// 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. + /// + public EstimatingMethod UsedEstimatingMethod + { + get { return estimatingMethod; } + set + { + if (HasStarted) + throw new OperationAlreadyStartedException(); + estimatingMethod = value; + } + } + + /// + /// 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. + /// + 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); + } + } + + /// + /// 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. + /// + public DateTime EstimatedFinishingTime + { + get + { + if (EstimatedDuration == TimeSpan.MaxValue) + return DateTime.MaxValue; + return StartingTime + EstimatedDuration; + } + } + + #endregion + + /// + /// Gets the amount of bytes already read. + /// + public long BytesRead { get; private set; } + /// + /// Gets the amount of total bytes to read. Can be -1 if unknown. + /// + public long TotalBytesToRead { get; private set; } + + /// + /// Gets the progress in percent between 0 and 1. + /// If the amount of total bytes to read is unknown, -1 is returned. + /// + public double Progress + { + get + { + if (TotalBytesToRead == -1) + return -1; + else + return (double)BytesRead / (double)TotalBytesToRead; + } + } + + /// + /// Gets the average bytes per second. + /// + public double AverageBytesPerSecond { get { return (double)BytesRead / Duration.TotalSeconds; } } + + #region CurrentBytesPerSecond + + /// + /// Gets the approximated current count of bytes processed per second + /// + public double CurrentBytesPerSecond { get; private set; } + + + private TimeSpan currentBytesCalculationInterval = TimeSpan.FromSeconds(0.5); + /// + /// Gets or sets the interval used for the calculation of the current bytes per second. Default is 500 ms. + /// + /// + /// Thrown when trying to set although the operation has already started. + public TimeSpan CurrentBytesCalculationInterval + { + get { return currentBytesCalculationInterval; } + set + { + if (HasStarted) + throw new InvalidOperationException("Task has already started!"); + currentBytesCalculationInterval = value; + } + } + + KeyValuePair[] currentBytesSamples = new KeyValuePair[6]; + /// + /// Gets or sets the number of samples in CurrentBytesPerSecondInterval used for current bytes per second approximation + /// + /// + /// Thrown when trying to set although the operation has already started. + public int CurrentBytesSampleCount + { + get { return currentBytesSamples.Length; } + set + { + if (HasStarted) + throw new InvalidOperationException("Task has already started!"); + if (value != currentBytesSamples.Length) + { + currentBytesSamples = new KeyValuePair[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 current = new KeyValuePair(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 + + /// + /// This method can be called to report progress changes. + /// The signature of this method is compliant with the ProgressChange-delegate + /// + /// The amount of bytes already read + /// The amount of total bytes to read. Can be -1 if unknown. + /// Thrown if bytesRead has not changed or even shrunk. + /// Thrown if the operation has finished already. + 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(); + } + } + + /// + /// 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. + /// + 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); + } + + /// + /// Will be raised when the operation has started + /// + public event EventHandler Started; + /// + /// Will be raised when the progress has changed + /// + public event EventHandler ProgressChanged; + /// + /// Will be raised when the operation has finished + /// + public event EventHandler Finished; + + #endregion + } + +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/AssemblyInfo.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0d583f3 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/AssemblyInfo.cs @@ -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")] diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Resources.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Resources.Designer.cs new file mode 100644 index 0000000..fa972d7 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Resources.Designer.cs @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------ +// +// 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. +// +//------------------------------------------------------------------------------ + +namespace MSGer.tk.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // 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() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [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; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Blue_Wallpaper_HD_2 { + get { + object obj = ResourceManager.GetObject("Blue_Wallpaper_HD_2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Keresősáv { + get { + object obj = ResourceManager.GetObject("Keresősáv", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Menü_2 { + get { + object obj = ResourceManager.GetObject("Menü_2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Resources.resx b/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Resources.resx new file mode 100644 index 0000000..23a4950 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Resources.resx @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\Keresősáv.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Blue-Wallpaper-HD 2.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Menü 2.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Settings.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Settings.Designer.cs new file mode 100644 index 0000000..c795cd2 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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. +// +//------------------------------------------------------------------------------ + +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; + } + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Settings.settings b/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Blue-Wallpaper-HD 2.jpg b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Blue-Wallpaper-HD 2.jpg new file mode 100644 index 0000000..2cf5782 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Blue-Wallpaper-HD 2.jpg differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Blue-Wallpaper-HD 21.jpg b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Blue-Wallpaper-HD 21.jpg new file mode 100644 index 0000000..2cf5782 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Blue-Wallpaper-HD 21.jpg differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Blue-Wallpaper-HD.jpg b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Blue-Wallpaper-HD.jpg new file mode 100644 index 0000000..38e9cbc Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Blue-Wallpaper-HD.jpg differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Blue-Wallpaper-HD1.jpg b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Blue-Wallpaper-HD1.jpg new file mode 100644 index 0000000..38e9cbc Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Blue-Wallpaper-HD1.jpg differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Keresősáv.jpg b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Keresősáv.jpg new file mode 100644 index 0000000..f54cf78 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Keresősáv.jpg differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 2.jpg b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 2.jpg new file mode 100644 index 0000000..d4b1794 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 2.jpg differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 21.jpg b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 21.jpg new file mode 100644 index 0000000..d4b1794 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 21.jpg differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 22.jpg b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 22.jpg new file mode 100644 index 0000000..d4b1794 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 22.jpg differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 3.jpg b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 3.jpg new file mode 100644 index 0000000..a021f2f Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/Resources/Menü 3.jpg differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/SelectPartnerForm.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/SelectPartnerForm.Designer.cs new file mode 100644 index 0000000..578fd72 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/SelectPartnerForm.Designer.cs @@ -0,0 +1,180 @@ +namespace MSGer.tk +{ + partial class SelectPartnerForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + 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; + } +} \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/SelectPartnerForm.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/SelectPartnerForm.cs new file mode 100644 index 0000000..4a9eb1a --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/SelectPartnerForm.cs @@ -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(';'); + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/SelectPartnerForm.resx b/Versions/Less Closed Beta/v3.0/MSGer.tk/SelectPartnerForm.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/SelectPartnerForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/SettingsForm.Designer.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/SettingsForm.Designer.cs new file mode 100644 index 0000000..014f248 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/SettingsForm.Designer.cs @@ -0,0 +1,259 @@ +namespace MSGer.tk +{ + partial class SettingsForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + 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; + } +} \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/SettingsForm.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/SettingsForm.cs new file mode 100644 index 0000000..4cf6d1b --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/SettingsForm.cs @@ -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 bytes = new List(); + //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 bytes = new List(); + 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(); + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/SettingsForm.resx b/Versions/Less Closed Beta/v3.0/MSGer.tk/SettingsForm.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/SettingsForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/Storage.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/Storage.cs new file mode 100644 index 0000000..66ecf22 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/Storage.cs @@ -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 Settings = new Dictionary(); + public static Dictionary LoggedInSettings = new Dictionary(); + 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)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(); + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/StreamHelper.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/StreamHelper.cs new file mode 100644 index 0000000..e6ae2d7 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/StreamHelper.cs @@ -0,0 +1,213 @@ +using System.Collections.Generic; +using System; +using System.IO; +using System.Threading; +using System.ComponentModel; + +namespace HdSystemLibrary.IO +{ + /// + /// A delegate for reporting binary progress + /// + /// The amount of bytes already read + /// The amount of total bytes to read. Can be -1 if unknown. + public delegate void ProgressChange(long bytesRead, long totalBytesToRead); + + + /// + /// The arguments for StreamHelper.CopyFrom(Stream, Stream, CopyFromArguments) + /// + public sealed class CopyFromArguments + { + /// + /// Creates the default arguments + /// + public CopyFromArguments() + { + } + + /// + /// Creates arguments with a progress change callback. + /// + /// The progress change callback (see ) + public CopyFromArguments(ProgressChange progressChangeCallback) + { + ProgressChangeCallback = progressChangeCallback; + } + + /// + /// Creates arguments with a progress change callback and an interval between to progress changes. + /// + /// The progress change callback (see ) + /// The interval between to progress change callbacks (see ) + public CopyFromArguments(ProgressChange progressChangeCallback, + TimeSpan progressChangeCallbackInterval) + { + ProgressChangeCallback = progressChangeCallback; + ProgressChangeCallbackInterval = progressChangeCallbackInterval; + } + + /// + /// Creates arguments with a progress change callback, an interval between to progress changes and a total length + /// + /// The progress change callback (see ) + /// The interval between to progress change callbacks (see ) + /// The total bytes to read (see ) + public CopyFromArguments(ProgressChange progressChangeCallback, + TimeSpan progressChangeCallbackInterval, long totalLength) + { + ProgressChangeCallback = progressChangeCallback; + ProgressChangeCallbackInterval = progressChangeCallbackInterval; + TotalLength = totalLength; + } + + private long totalLength = -1; + /// + /// 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. + /// + public long TotalLength { get { return totalLength; } set { totalLength = value; } } + + private int bufferSize = 4096; + /// + /// Gets or sets the size of the buffer used for copying bytes. Default is 4096. + /// + public int BufferSize { get { return bufferSize; } set { bufferSize = value; } } + + /// + /// Gets or sets the callback for progress-report. Default is null. + /// + public ProgressChange ProgressChangeCallback { get; set; } + + /// + /// Gets or sets the event for aborting the operation. Default is null. + /// + public WaitHandle StopEvent { get; set; } + + private TimeSpan progressCallbackInterval = TimeSpan.FromSeconds(0.2); + /// + /// Gets or sets the time interval between to progress change callbacks. Default is 200 ms. + /// + public TimeSpan ProgressChangeCallbackInterval + { + get { return progressCallbackInterval; } + set { progressCallbackInterval = value; } + } + } + + /// + /// A static class for basic stream operations. + /// + public static class StreamHelper + { + /// + /// 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. + /// + /// The current stream + /// The source stream + /// The arguments for copying + /// The number of bytes actually copied. + /// Thrown if either target, source of arguments is null + /// Thrown if arguments.BufferSize is less than 128 or arguments.ProgressChangeCallbackInterval is less than 0 + 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 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; + } + + /// + /// Copies the source stream into the current + /// + /// The current stream + /// The source stream + /// The size of buffer used for copying bytes + /// The number of bytes actually copied. + 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; + } + } + +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/TaskbarNotifier.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/TaskbarNotifier.cs new file mode 100644 index 0000000..d5c9b1c --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/TaskbarNotifier.cs @@ -0,0 +1,774 @@ +// C# TaskbarNotifier Class v1.0 +// by John O'Byrne - 02 december 2002 +// 01 april 2003 : Small fix in the OnMouseUp handler +// 11 january 2003 : Patrick Vanden Driessche added a few enhancements +// Small Enhancements/Bugfix +// Small bugfix: When Content text measures larger than the corresponding ContentRectangle +// the focus rectangle was not correctly drawn. This has been solved. +// Added KeepVisibleOnMouseOver +// Added ReShowOnMouseOver +// Added If the Title or Content are too long to fit in the corresponding Rectangles, +// the text is truncateed and the ellipses are appended (StringTrimming). + +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.Drawing.Drawing2D; +using System.Windows.Forms; +using System.Runtime.InteropServices; + +namespace CustomUIControls +{ + /// + /// TaskbarNotifier allows to display MSN style/Skinned instant messaging popups + /// + public class TaskbarNotifier : System.Windows.Forms.Form + { + #region TaskbarNotifier Protected Members + protected Bitmap BackgroundBitmap = null; + protected Bitmap CloseBitmap = null; + protected Point CloseBitmapLocation; + protected Size CloseBitmapSize; + protected Rectangle RealTitleRectangle; + protected Rectangle RealContentRectangle; + protected Rectangle WorkAreaRectangle; + protected Timer timer = new Timer(); + protected TaskbarStates taskbarState = TaskbarStates.hidden; + protected string titleText; + protected string contentText; + protected Color normalTitleColor = Color.FromArgb(255,0,0); + protected Color hoverTitleColor = Color.FromArgb(255,0,0); + protected Color normalContentColor = Color.FromArgb(0,0,0); + protected Color hoverContentColor = Color.FromArgb(0,0,0x66); + protected Font normalTitleFont = new Font("Arial",12,FontStyle.Regular,GraphicsUnit.Pixel); + protected Font hoverTitleFont = new Font("Arial",12,FontStyle.Bold,GraphicsUnit.Pixel); + protected Font normalContentFont = new Font("Arial",11,FontStyle.Regular,GraphicsUnit.Pixel); + protected Font hoverContentFont = new Font("Arial",11,FontStyle.Regular,GraphicsUnit.Pixel); + protected int nShowEvents; + protected int nHideEvents; + protected int nVisibleEvents; + protected int nIncrementShow; + protected int nIncrementHide; + protected bool bIsMouseOverPopup = false; + protected bool bIsMouseOverClose = false; + protected bool bIsMouseOverContent = false; + protected bool bIsMouseOverTitle = false; + protected bool bIsMouseDown = false; + protected bool bKeepVisibleOnMouseOver = true; // Added Rev 002 + protected bool bReShowOnMouseOver = false; // Added Rev 002 + #endregion + + #region TaskbarNotifier Public Members + public Rectangle TitleRectangle; + public Rectangle ContentRectangle; + public bool TitleClickable = false; + public bool ContentClickable = true; + public bool CloseClickable = true; + public bool EnableSelectionRectangle = true; + public event EventHandler CloseClick = null; + public event EventHandler TitleClick = null; + public event EventHandler ContentClick = null; + #endregion + + #region TaskbarNotifier Enums + /// + /// List of the different popup animation status + /// + public enum TaskbarStates + { + hidden = 0, + appearing = 1, + visible = 2, + disappearing = 3 + } + #endregion + + #region TaskbarNotifier Constructor + /// + /// The Constructor for TaskbarNotifier + /// + public TaskbarNotifier() + { + // Window Style + FormBorderStyle = FormBorderStyle.None; + WindowState = FormWindowState.Minimized; + base.Show(); + base.Hide(); + WindowState = FormWindowState.Normal; + ShowInTaskbar = false; + TopMost = true; + MaximizeBox = false; + MinimizeBox = false; + ControlBox = false; + + timer.Enabled = true; + timer.Tick += new EventHandler(OnTimer); + } + #endregion + + #region TaskbarNotifier Properties + /// + /// Get the current TaskbarState (hidden, showing, visible, hiding) + /// + public TaskbarStates TaskbarState + { + get + { + return taskbarState; + } + } + + /// + /// Get/Set the popup Title Text + /// + public string TitleText + { + get + { + return titleText; + } + set + { + titleText=value; + Refresh(); + } + } + + /// + /// Get/Set the popup Content Text + /// + public string ContentText + { + get + { + return contentText; + } + set + { + contentText=value; + Refresh(); + } + } + + /// + /// Get/Set the Normal Title Color + /// + public Color NormalTitleColor + { + get + { + return normalTitleColor; + } + set + { + normalTitleColor = value; + Refresh(); + } + } + + /// + /// Get/Set the Hover Title Color + /// + public Color HoverTitleColor + { + get + { + return hoverTitleColor; + } + set + { + hoverTitleColor = value; + Refresh(); + } + } + + /// + /// Get/Set the Normal Content Color + /// + public Color NormalContentColor + { + get + { + return normalContentColor; + } + set + { + normalContentColor = value; + Refresh(); + } + } + + /// + /// Get/Set the Hover Content Color + /// + public Color HoverContentColor + { + get + { + return hoverContentColor; + } + set + { + hoverContentColor = value; + Refresh(); + } + } + + /// + /// Get/Set the Normal Title Font + /// + public Font NormalTitleFont + { + get + { + return normalTitleFont; + } + set + { + normalTitleFont = value; + Refresh(); + } + } + + /// + /// Get/Set the Hover Title Font + /// + public Font HoverTitleFont + { + get + { + return hoverTitleFont; + } + set + { + hoverTitleFont = value; + Refresh(); + } + } + + /// + /// Get/Set the Normal Content Font + /// + public Font NormalContentFont + { + get + { + return normalContentFont; + } + set + { + normalContentFont = value; + Refresh(); + } + } + + /// + /// Get/Set the Hover Content Font + /// + public Font HoverContentFont + { + get + { + return hoverContentFont; + } + set + { + hoverContentFont = value; + Refresh(); + } + } + + /// + /// Indicates if the popup should remain visible when the mouse pointer is over it. + /// Added Rev 002 + /// + public bool KeepVisibleOnMousOver + { + get + { + return bKeepVisibleOnMouseOver; + } + set + { + bKeepVisibleOnMouseOver=value; + } + } + + /// + /// Indicates if the popup should appear again when mouse moves over it while it's disappearing. + /// Added Rev 002 + /// + public bool ReShowOnMouseOver + { + get + { + return bReShowOnMouseOver; + } + set + { + bReShowOnMouseOver=value; + } + } + + #endregion + + #region TaskbarNotifier Public Methods + //[DllImport("user32.dll")] + //private static extern Boolean ShowWindow(IntPtr hWnd,Int32 nCmdShow); + /// + /// Displays the popup for a certain amount of time + /// + /// The string which will be shown as the title of the popup + /// The string which will be shown as the content of the popup + /// Duration of the showing animation (in milliseconds) + /// Duration of the visible state before collapsing (in milliseconds) + /// Duration of the hiding animation (in milliseconds) + /// Nothing + public void Show(string strTitle, string strContent, int nTimeToShow, int nTimeToStay, int nTimeToHide) + { + WorkAreaRectangle = Screen.GetWorkingArea(WorkAreaRectangle); + titleText = strTitle; + contentText = strContent; + nVisibleEvents = nTimeToStay; + CalculateMouseRectangles(); + + // We calculate the pixel increment and the timer value for the showing animation + int nEvents; + if (nTimeToShow > 10) + { + nEvents = Math.Min((nTimeToShow / 10), BackgroundBitmap.Height); + nShowEvents = nTimeToShow / nEvents; + nIncrementShow = BackgroundBitmap.Height / nEvents; + } + else + { + nShowEvents = 10; + nIncrementShow = BackgroundBitmap.Height; + } + + // We calculate the pixel increment and the timer value for the hiding animation + if( nTimeToHide > 10) + { + nEvents = Math.Min((nTimeToHide / 10), BackgroundBitmap.Height); + nHideEvents = nTimeToHide / nEvents; + nIncrementHide = BackgroundBitmap.Height / nEvents; + } + else + { + nHideEvents = 10; + nIncrementHide = BackgroundBitmap.Height; + } + + switch (taskbarState) + { + case TaskbarStates.hidden: + taskbarState = TaskbarStates.appearing; + SetBounds(WorkAreaRectangle.Right-BackgroundBitmap.Width-17, WorkAreaRectangle.Bottom-1, BackgroundBitmap.Width, 0); + timer.Interval = nShowEvents; + timer.Start(); + // We Show the popup without stealing focus + //ShowWindow(this.Handle, 4); + Show(); //2014.04.13. + break; + + case TaskbarStates.appearing: + Refresh(); + break; + + case TaskbarStates.visible: + timer.Stop(); + timer.Interval = nVisibleEvents; + timer.Start(); + Refresh(); + break; + + case TaskbarStates.disappearing: + timer.Stop(); + taskbarState = TaskbarStates.visible; + SetBounds(WorkAreaRectangle.Right-BackgroundBitmap.Width-17, WorkAreaRectangle.Bottom-BackgroundBitmap.Height-1, BackgroundBitmap.Width, BackgroundBitmap.Height); + timer.Interval = nVisibleEvents; + timer.Start(); + Refresh(); + break; + } + } + + /// + /// Hides the popup + /// + /// Nothing + public new void Hide() + { + if (taskbarState != TaskbarStates.hidden) + { + timer.Stop(); + taskbarState = TaskbarStates.hidden; + base.Hide(); + } + } + + /// + /// Sets the background bitmap and its transparency color + /// + /// Path of the Background Bitmap on the disk + /// Color of the Bitmap which won't be visible + /// Nothing + public void SetBackgroundBitmap(string strFilename, Color transparencyColor) + { + BackgroundBitmap = new Bitmap(strFilename); + Width = BackgroundBitmap.Width; + Height = BackgroundBitmap.Height; + Region = BitmapToRegion(BackgroundBitmap, transparencyColor); + } + + /// + /// Sets the background bitmap and its transparency color + /// + /// Image/Bitmap object which represents the Background Bitmap + /// Color of the Bitmap which won't be visible + /// Nothing + public void SetBackgroundBitmap(Image image, Color transparencyColor) + { + BackgroundBitmap = new Bitmap(image); + Width = BackgroundBitmap.Width; + Height = BackgroundBitmap.Height; + Region = BitmapToRegion(BackgroundBitmap, transparencyColor); + } + + /// + /// Sets the 3-State Close Button bitmap, its transparency color and its coordinates + /// + /// Path of the 3-state Close button Bitmap on the disk (width must a multiple of 3) + /// Color of the Bitmap which won't be visible + /// Location of the close button on the popup + /// Nothing + public void SetCloseBitmap(string strFilename, Color transparencyColor, Point position) + { + CloseBitmap = new Bitmap(strFilename); + CloseBitmap.MakeTransparent(transparencyColor); + CloseBitmapSize = new Size(CloseBitmap.Width/3, CloseBitmap.Height); + CloseBitmapLocation = position; + } + + /// + /// Sets the 3-State Close Button bitmap, its transparency color and its coordinates + /// + /// Image/Bitmap object which represents the 3-state Close button Bitmap (width must be a multiple of 3) + /// Color of the Bitmap which won't be visible + /// /// Location of the close button on the popup + /// Nothing + public void SetCloseBitmap(Image image, Color transparencyColor, Point position) + { + CloseBitmap = new Bitmap(image); + CloseBitmap.MakeTransparent(transparencyColor); + CloseBitmapSize = new Size(CloseBitmap.Width/3, CloseBitmap.Height); + CloseBitmapLocation = position; + } + #endregion + + #region TaskbarNotifier Protected Methods + protected void DrawCloseButton(Graphics grfx) + { + if (CloseBitmap != null) + { + Rectangle rectDest = new Rectangle(CloseBitmapLocation, CloseBitmapSize); + Rectangle rectSrc; + + if (bIsMouseOverClose) + { + if (bIsMouseDown) + rectSrc = new Rectangle(new Point(CloseBitmapSize.Width*2, 0), CloseBitmapSize); + else + rectSrc = new Rectangle(new Point(CloseBitmapSize.Width, 0), CloseBitmapSize); + } + else + rectSrc = new Rectangle(new Point(0, 0), CloseBitmapSize); + + + grfx.DrawImage(CloseBitmap, rectDest, rectSrc, GraphicsUnit.Pixel); + } + } + + protected void DrawText(Graphics grfx) + { + if (titleText != null && titleText.Length != 0) + { + StringFormat sf = new StringFormat(); + sf.Alignment = StringAlignment.Near; + sf.LineAlignment = StringAlignment.Center; + sf.FormatFlags = StringFormatFlags.NoWrap; + sf.Trimming = StringTrimming.EllipsisCharacter; // Added Rev 002 + if (bIsMouseOverTitle) + grfx.DrawString(titleText, hoverTitleFont, new SolidBrush(hoverTitleColor), TitleRectangle, sf); + else + grfx.DrawString(titleText, normalTitleFont, new SolidBrush(normalTitleColor), TitleRectangle, sf); + } + + if (contentText != null && contentText.Length != 0) + { + StringFormat sf = new StringFormat(); + sf.Alignment = StringAlignment.Center; + sf.LineAlignment = StringAlignment.Center; + sf.FormatFlags = StringFormatFlags.MeasureTrailingSpaces; + sf.Trimming = StringTrimming.Word; // Added Rev 002 + + if (bIsMouseOverContent) + { + grfx.DrawString(contentText, hoverContentFont, new SolidBrush(hoverContentColor), ContentRectangle, sf); + if (EnableSelectionRectangle) + ControlPaint.DrawBorder3D(grfx, RealContentRectangle, Border3DStyle.Etched, Border3DSide.Top | Border3DSide.Bottom | Border3DSide.Left | Border3DSide.Right); + + } + else + grfx.DrawString(contentText, normalContentFont, new SolidBrush(normalContentColor), ContentRectangle, sf); + } + } + + protected void CalculateMouseRectangles() + { + Graphics grfx = CreateGraphics(); + StringFormat sf = new StringFormat(); + sf.Alignment = StringAlignment.Center; + sf.LineAlignment = StringAlignment.Center; + sf.FormatFlags = StringFormatFlags.MeasureTrailingSpaces; + SizeF sizefTitle = grfx.MeasureString(titleText, hoverTitleFont, TitleRectangle.Width, sf); + SizeF sizefContent = grfx.MeasureString(contentText, hoverContentFont, ContentRectangle.Width, sf); + grfx.Dispose(); + + // Added Rev 002 + //We should check if the title size really fits inside the pre-defined title rectangle + if (sizefTitle.Height > TitleRectangle.Height) + { + RealTitleRectangle = new Rectangle(TitleRectangle.Left, TitleRectangle.Top, TitleRectangle.Width , TitleRectangle.Height ); + } + else + { + RealTitleRectangle = new Rectangle(TitleRectangle.Left, TitleRectangle.Top, (int)sizefTitle.Width, (int)sizefTitle.Height); + } + RealTitleRectangle.Inflate(0,2); + + // Added Rev 002 + //We should check if the Content size really fits inside the pre-defined Content rectangle + if (sizefContent.Height > ContentRectangle.Height) + { + RealContentRectangle = new Rectangle((ContentRectangle.Width-(int)sizefContent.Width)/2+ContentRectangle.Left, ContentRectangle.Top, (int)sizefContent.Width, ContentRectangle.Height ); + } + else + { + RealContentRectangle = new Rectangle((ContentRectangle.Width-(int)sizefContent.Width)/2+ContentRectangle.Left, (ContentRectangle.Height-(int)sizefContent.Height)/2+ContentRectangle.Top, (int)sizefContent.Width, (int)sizefContent.Height); + } + RealContentRectangle.Inflate(0,2); + } + + protected Region BitmapToRegion(Bitmap bitmap, Color transparencyColor) + { + if (bitmap == null) + throw new ArgumentNullException("Bitmap", "Bitmap cannot be null!"); + + int height = bitmap.Height; + int width = bitmap.Width; + + GraphicsPath path = new GraphicsPath(); + + for (int j=0; j CloseBitmapLocation.X) && (mea.X < CloseBitmapLocation.X + CloseBitmapSize.Width) && (mea.Y > CloseBitmapLocation.Y) && (mea.Y < CloseBitmapLocation.Y + CloseBitmapSize.Height) && CloseClickable ) + { + if (!bIsMouseOverClose) + { + bIsMouseOverClose = true; + bIsMouseOverTitle = false; + bIsMouseOverContent = false; + Cursor = Cursors.Hand; + bContentModified = true; + } + } + else if (RealContentRectangle.Contains(new Point(mea.X, mea.Y)) && ContentClickable) + { + if (!bIsMouseOverContent) + { + bIsMouseOverClose = false; + bIsMouseOverTitle = false; + bIsMouseOverContent = true; + Cursor = Cursors.Hand; + bContentModified = true; + } + } + else if (RealTitleRectangle.Contains(new Point(mea.X, mea.Y)) && TitleClickable) + { + if (!bIsMouseOverTitle) + { + bIsMouseOverClose = false; + bIsMouseOverTitle = true; + bIsMouseOverContent = false; + Cursor = Cursors.Hand; + bContentModified = true; + } + } + else + { + if (bIsMouseOverClose || bIsMouseOverTitle || bIsMouseOverContent) + bContentModified = true; + + bIsMouseOverClose = false; + bIsMouseOverTitle = false; + bIsMouseOverContent = false; + Cursor = Cursors.Default; + } + + if (bContentModified) + Refresh(); + } + + protected override void OnMouseDown(MouseEventArgs mea) + { + base.OnMouseDown(mea); + bIsMouseDown = true; + + if (bIsMouseOverClose) + Refresh(); + } + + protected override void OnMouseUp(MouseEventArgs mea) + { + base.OnMouseUp(mea); + bIsMouseDown = false; + + if (bIsMouseOverClose) + { + Hide(); + + if (CloseClick != null) + CloseClick(this, new EventArgs()); + } + else if (bIsMouseOverTitle) + { + if (TitleClick != null) + TitleClick(this, new EventArgs()); + } + else if (bIsMouseOverContent) + { + if (ContentClick != null) + ContentClick(this, new EventArgs()); + } + } + + protected override void OnPaintBackground(PaintEventArgs pea) + { + Graphics grfx = pea.Graphics; + grfx.PageUnit = GraphicsUnit.Pixel; + + Graphics offScreenGraphics; + Bitmap offscreenBitmap; + + offscreenBitmap = new Bitmap(BackgroundBitmap.Width, BackgroundBitmap.Height); + offScreenGraphics = Graphics.FromImage(offscreenBitmap); + + if (BackgroundBitmap != null) + { + offScreenGraphics.DrawImage(BackgroundBitmap, 0, 0, BackgroundBitmap.Width, BackgroundBitmap.Height); + } + + DrawCloseButton(offScreenGraphics); + DrawText(offScreenGraphics); + + grfx.DrawImage(offscreenBitmap, 0, 0); + } + #endregion + + //Tallt javtsok + protected override bool ShowWithoutActivation + { + get { return true; } + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/TextFormat.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/TextFormat.cs new file mode 100644 index 0000000..b699b08 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/TextFormat.cs @@ -0,0 +1,206 @@ +using Khendys.Controls; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace MSGer.tk +{ + class TextFormat + { + public TextFormat() + { + var img = Image.FromFile("emoticons\\iconbase.png"); + var bitmap = new Bitmap(img); + int x = 0; + Bitmap bitmap1 = bitmap.Clone(new Rectangle(x, 0, 19, 19), bitmap.PixelFormat); + x += 19; + new TextFormat(":)", bitmap1); + new TextFormat(":-)", bitmap1); + bitmap1 = bitmap.Clone(new Rectangle(x, 0, 19, 19), bitmap.PixelFormat); + x += 19; + new TextFormat(":D", bitmap1); + new TextFormat(":-D", bitmap1); + new TextFormat(":d", bitmap1); + new TextFormat(":-d", bitmap1); + bitmap1 = bitmap.Clone(new Rectangle(x, 0, 19, 19), bitmap.PixelFormat); + x += 19; + new TextFormat(";)", bitmap1); + new TextFormat(";-)", bitmap1); + bitmap1 = bitmap.Clone(new Rectangle(x, 0, 19, 19), bitmap.PixelFormat); + x += 19; + new TextFormat(":O", bitmap1); + new TextFormat(":o", bitmap1); + new TextFormat(":-O", bitmap1); + new TextFormat(":-o", bitmap1); + bitmap1 = bitmap.Clone(new Rectangle(x, 0, 19, 19), bitmap.PixelFormat); + x += 19; + new TextFormat(":P", bitmap1); + new TextFormat(":-P", bitmap1); + new TextFormat(":p", bitmap1); + new TextFormat(":-p", bitmap1); + + bitmap.Dispose(); + } + private TextFormat(string text, Image image) + { + var tmp = new ImgReplaceStrs(); + tmp.Text = text; + tmp.Image = image; + ImgReplaceStrings.Add(tmp); + } + public static List ImgReplaceStrings = new List(); + public static ExRichTextBox Parse(ExRichTextBox textbox) + { + /*int j; + do + { + j = 0; + for (int i = 0; i < ImgReplaceStrings.Count; i++) + { + int index = textbox.Text.IndexOf(ImgReplaceStrings[i].Text); + if (index >= 0) + { //Feldolgozza a hangualtjeleket + textbox.Select(index, ImgReplaceStrings[i].Text.Length); + textbox.InsertImage(ImgReplaceStrings[i].Image); + //set = true; + } + else j++; + } + } + while (j != ImgReplaceStrings.Count);*/ + for (int i = 0; i < ImgReplaceStrings.Count; i++) + { //2014.10.12. + int index=0; + while((index=textbox.Text.IndexOf(ImgReplaceStrings[i].Text))!=-1) + { + textbox.Select(index, ImgReplaceStrings[i].Text.Length); + textbox.InsertImage(ImgReplaceStrings[i].Image); + } + } + return textbox; + } + /*public static ExExRichTextBox Parse(ExExRichTextBox textbox) + { + int pos = textbox.SelectionStart; + int len = textbox.SelectionLength; + ((ChatForm)textbox.Parent).InternalMessageChange = true; + textbox.Rtf = TextFormat.removeRtfObjects(textbox.Rtf); + ((ChatForm)textbox.Parent).InternalMessageChange = false; + for (int i = 0; i < ImgReplaceStrings.Count; i++) + { + for (int j = 0; textbox.Text.IndexOf(ImgReplaceStrings[i].Text, j + 1) != -1; j = textbox.Text.IndexOf(ImgReplaceStrings[i].Text, j + 1) + 1) + { + int index = textbox.Text.IndexOf(ImgReplaceStrings[i].Text, j) - 1; + if (index >= 0) + { //Feldolgozza a hangualtjeleket + ((ChatForm)textbox.Parent).InternalMessageChange = true; + textbox.Text = textbox.Text.Remove(index, ImgReplaceStrings[i].Text.Length); + textbox.Select(index, 0); + TextFormat.InsertHiddenText(textbox, ImgReplaceStrings[i].Text); + textbox.Select(index + ImgReplaceStrings[i].Text.Length, 0); + textbox.InsertImage(ImgReplaceStrings[i].Image); + ((ChatForm)textbox.Parent).InternalMessageChange = false; + } + } + } + textbox.Select(pos, len); + return textbox; + } + public static ExExRichTextBox InsertHiddenText(ExExRichTextBox textbox, string text) + { + textbox.SelectedRtf = @"{\rtf1\ansi{\v " + text + "}}"; + return textbox; + }*/ + //http://stackoverflow.com/questions/14321385/how-to-make-richtextbox-text-only + /*public static string removeRtfObjects(string rtf) + { + //removing {\pict or {\object groups + string pattern = "\\{\\\\pict|\\{\\\\object"; + Match m = Regex.Match(rtf, pattern); + while (m.Success) + { + int count = 1; + for (int i = m.Index + 2; i <= rtf.Length; i++) + { + //start group + if (rtf[i] == '{') + { + count += 1; + //end group + } + else if (rtf[i] == '}') + { + count -= 1; + } + //found end of pict/object group + if (count == 0) + { + rtf = rtf.Remove(m.Index, i - m.Index + 1); + break; // TODO: might not be correct. Was : Exit For + } + } + m = Regex.Match(rtf, pattern); + //go again + } + return rtf; + } + + public static byte[] GetBytes(string str) + { + byte[] bytes = new byte[str.Length * sizeof(char)]; + System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length); + return bytes; + } + + public static string GetString(byte[] bytes) + { + char[] chars = new char[bytes.Length / sizeof(char)]; + System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length); + return new string(chars); + }*/ + } + class ImgReplaceStrs + { + public string Text; + public Image Image; + } + /*class ExExRichTextBox : ExRichTextBox + { + private string originaltext = ""; + public string OriginalText + { + get + { + //http://www.pcreview.co.uk/forums/re-adding-hidden-text-rich-text-box-control-t1348949.html + for(int i=0; i UsedIcons = new Dictionary(); + /*public new void InsertImage(Image _image) + { + int sel = SelectionStart; + int len = SelectionLength; + string tmp=Text.Substring(sel, len); + //UsedIcons.Add(sel, tmp); + base.InsertImage(_image); + //OriginalText = Text; + //OriginalText.Remove(sel, len); - Magától eltávolítja + *foreach(var entry in UsedIcons) + { + OriginalText = OriginalText.Insert(entry.Key, entry.Value); + }* + OriginalText = OriginalText.Insert(sel, tmp); + } + }*/ +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/UpdateListAndChat.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/UpdateListAndChat.cs new file mode 100644 index 0000000..80d55ed --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/UpdateListAndChat.cs @@ -0,0 +1,263 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + class UpdateListAndChat + { + public void Run() + { + //while (MainForm.PartnerListThreadActive && MainForm.MainThread.IsAlive) + while (MainForm.LThread != null && MainForm.MainThread.IsAlive) + //{ Az egészet ellenőrizni, akár egyszerűsíteni a pozíciókat + { + do + { + //string[] row = Networking.SendRequest("getlist", "", 0, true).Split('ͦ'); //Lekéri a listát, és különválogatja egyben - 2014.02.28. + object[] retobj = Networking.ReceiveUpdates(); + byte[] resp = (byte[])retobj[0]; //2014.10.24. + IPEndPoint remoteEP = (IPEndPoint)retobj[1]; //2014.10.24. + if (resp == null) + break; + byte isresponse; //2014.09.15. + Networking.UpdateType updatetype; //2014.09.15. + int keyversion; //2014.09.15. + int userid; //2014.09.15. + byte[] data; //2014.09.15. + Networking.ParsePacket(resp, out isresponse, out updatetype, out keyversion, out userid, out data); //2014.09.15. + if (!UserInfo.IPs.Contains(remoteEP) && updatetype != Networking.UpdateType.LoginUser) //2014.10.24. + break; + //if (resp[1] == (byte)Networking.UpdateType.ListUpdate) //0x01: getlist + if (updatetype == Networking.UpdateType.ListUpdate) + { + //throw new NotImplementedException(); //2014.08.28. - Elkezdtem magamtól használni ezeket :P + /*var tmp = new byte[resp.Length - 6]; //2014.08.30. + Array.Copy(resp, 6, tmp, 0, tmp.Length); //2014.08.30. + Networking.ParseUpdateInfo(new byte[][] { tmp }); //2014.08.30.*/ + Networking.ParseUpdateInfo(new byte[][] { data }); //2014.09.15. + } + //Thread.Sleep(5000); + //else if (resp[1] == (byte)Networking.UpdateType.UpdateMessages) //0x02: updatemessages + else if (updatetype == Networking.UpdateType.UpdateMessages) + { + //string[] response = Networking.GetStrings(resp, 2); //0: response, 1: action + string[] response = Networking.GetStrings(data, 0); + string[] tmp = response[0].Split(','); + //int[] tmp2 = new int[tmp.Length]; + List tmp2 = new List(); + /*for (int i = 0; i < tmp.Length; i++) + { + tmp2[i] = Int32.Parse(tmp[i]); + }*/ + //tmp2 = tmp.Select(entry => Int32.Parse(entry)).ToArray(); //2014.09.22. + tmp2.Add(CurrentUser.UserID); + tmp2.AddRange(tmp.Select(entry => Int32.Parse(entry))); //2014.10.24. + if (tmp2.All(entry => !UserInfo.Select(entry).IsPartner)) //2014.10.24. + break; //Ha a beszélgetésben nincs ismerőse, akkor nem foglalkozik vele + var cf = ChatForm.GetChatFormByUsers(tmp2); + if (cf == null) + { + Program.MainF.Invoke((MethodInvoker)delegate + { + ChatForm.ChatWindows.Add(new ChatForm()); + cf = ChatForm.ChatWindows[ChatForm.ChatWindows.Count - 1]; + cf.ChatPartners.AddRange(tmp2); + cf.Show(); + }); + } + //0 - Résztvevők; 1 - Üzenet; 2 - Üzenetküldés időpontja + //for (int x = 0; x + 2 < response.Length; x += 3) + //{ + string[] cmd = response[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; + } + cf.TMessage = "\n" + ((userid == CurrentUser.UserID) ? CurrentUser.Name : UserInfo.Select(userid).Name) + " " + Language.Translate("said") + " (" + Program.UnixTimeToDateTime(response[2]).ToString("yyyy.MM.dd. HH:mm:ss") + "):\n" + response[1] + "\n"; + Program.MainF.Invoke(new LoginForm.MyDelegate(cf.SetThreadValues)); + //} + } + //else if(resp[5]==0x00) //Nem adatküldés, kérelem + /*else if (resp[1] == (byte)Networking.UpdateType.SetState) + { + //byte[] tmpuid = new byte[4]; + //Array.Copy(resp, 1, tmpuid, 0, 4); //UserID + //int uid = BitConverter.ToInt32(tmpuid, 0); + int uid = BitConverter.ToInt32(resp, 1); + if (uid == 0) + break; + for (int i = 0; i < UserInfo.KnownUsers.Count; i++) + { + if (UserInfo.KnownUsers[i].UserID == uid) + { + //byte[] tmparr = new byte[4]; + //Array.Copy(resp, 6, tmparr, 0, 4); + //UserInfo.Partners[i].State = BitConverter.ToInt32(tmparr, 0); + UserInfo.KnownUsers[i].State = BitConverter.ToInt32(resp, 6); + } + } + Networking.SendUpdate(Networking.UpdateType.SetState, new byte[] { 0x01 }, true); + } + else if (resp[1] == (byte)Networking.UpdateType.GetImage) + { + int senderuid = BitConverter.ToInt32(resp, 6); + int imguid = BitConverter.ToInt32(resp, 10); + int picupdatetime = BitConverter.ToInt32(resp, 14); + int i; + for (i = 0; i < UserInfo.KnownUsers.Count; i++) + { + if (UserInfo.KnownUsers[i].UserID == imguid) + { + if (UserInfo.KnownUsers[i].PicUpdateTime >= picupdatetime) + { + string tmp = Path.GetTempPath(); + List tmptmp = new List(); + tmptmp.AddRange(BitConverter.GetBytes(UserInfo.KnownUsers[i].PicUpdateTime)); + tmptmp.AddRange(File.ReadAllBytes(tmp + "\\MSGer.tk\\pictures\\" + imguid + ".png")); + Networking.SendUpdate(Networking.UpdateType.GetImage, tmptmp.ToArray(), true); + } + break; + } + } + if (i == UserInfo.KnownUsers.Count) + Networking.SendUpdate(Networking.UpdateType.GetImage, new byte[] { 0x00 }, true); + }*/ + /*else if (resp[1] == (byte)Networking.UpdateType.FindPeople) + { + //List retstrs = new List(); + string retstr = ""; + string name = Encoding.Unicode.GetString(resp, 5, resp.Length - 5); + if (CurrentUser.UserName.Contains(name)) + { + //retstrs.Add(CurrentUser.UserName); + retstr += CurrentUser.UserName + 'ͦ'; + retstr += CurrentUser.UserID + 'ͦ'; + retstr += CurrentUser.Message + 'ͦ'; + retstr += CurrentUser.State + 'ͦ'; + retstr += CurrentUser.Name + 'ͦ'; + retstr += CurrentUser.Email + 'ͦ'; + } + for (int i = 0; i < UserInfo.KnownUsers.Count; i++) + { + if (UserInfo.KnownUsers[i].UserName.Contains(name)) + { + retstr += UserInfo.KnownUsers[i].UserName + 'ͦ'; + retstr += UserInfo.KnownUsers[i].UserID + 'ͦ'; + retstr += UserInfo.KnownUsers[i].Message + 'ͦ'; + retstr += UserInfo.KnownUsers[i].State + 'ͦ'; + retstr += UserInfo.KnownUsers[i].Name + 'ͦ'; + retstr += UserInfo.KnownUsers[i].Email + 'ͦ'; + } + } + retstr.TrimEnd('ͦ'); + Networking.SendUpdate(Networking.UpdateType.FindPeople, Encoding.Unicode.GetBytes(retstr), true); + }*/ + /*else if (resp[5] == (byte)Networking.UpdateType.UpdateSettings) + { + string[] tmpstr = Encoding.Unicode.GetString(resp, 6, resp.Length - 5).Split('ͦ'); + for (int i = 0; i < UserInfo.KnownUsers.Count; i++) + { + if (UserInfo.KnownUsers[i].UserID == Int32.Parse(tmpstr[0])) + { + UserInfo.KnownUsers[i].Name = tmpstr[1]; + UserInfo.KnownUsers[i].Message = tmpstr[2]; + break; + } + } + }*/ + //else if (resp[1] == (byte)Networking.UpdateType.LoginUser) + else if (updatetype == Networking.UpdateType.LoginUser) + { + string tmpresp = Networking.SendRequest("checkuser", userid.ToString(), 0, true); //2014.09.19. + if (tmpresp == "Fail") + { + break; //Nem küld el neki semmit, hanem újra várja a packet-eket + } + else if (tmpresp != "Success") + { + MessageBox.Show("LoginUser:\n" + tmpresp); + break; + } + + //string str = ""; + /*foreach (var entry in Storage.LoggedInSettings) + { + Storage.LoggedInSettings[entry.Key.Remove("userinfo_".Length)+"_"+"_updated"] + string tmp = entry.Key.Remove(0, "userinfo_".Length); + //Int32.Parse(tmp.Split('_')[0]) + str += tmp; + }*/ + //int userid = BitConverter.ToInt32(resp, 6); + //int userid = BitConverter.ToInt32(resp, 2); + //int iplen = BitConverter.ToInt32(resp, 6); + int iplen = BitConverter.ToInt32(data, 0); + string ip = Encoding.Unicode.GetString(data, 4, iplen); + if (!Storage.Settings["ips"].Contains(ip)) + Storage.Settings["ips"] += ";" + ip; + string retstr = ""; + //for (int i = 0; i < (resp.Length - 9) / 8; i++) + for (int i = 4 + iplen; i + 8 < resp.Length; i += 8) + { + int uid = BitConverter.ToInt32(resp, i); + int utime = BitConverter.ToInt32(resp, i + 4); + if (Int32.Parse(Storage.LoggedInSettings["userinfo_" + uid + "_updatetime"]) > utime) + { + retstr += uid + "_name=" + Storage.LoggedInSettings["userinfo_" + uid + "_name"] + "\n"; + retstr += uid + "_message=" + Storage.LoggedInSettings["userinfo_" + uid + "_message"] + "\n"; + retstr += uid + "_state=" + Storage.LoggedInSettings["userinfo_" + uid + "_state"] + "\n"; + retstr += uid + "_username=" + Storage.LoggedInSettings["userinfo_" + uid + "_username"] + "\n"; + retstr += uid + "_email=" + Storage.LoggedInSettings["userinfo_" + uid + "_email"] + "\n"; + retstr += uid + "_ispartner=" + Storage.LoggedInSettings["userinfo_" + uid + "_ispartner"] + "\n"; + retstr += uid + "_lastupdate=" + Program.DateTimeToUnixTime(DateTime.Now); + //if (i + 1 != (resp.Length - 9) / 8) + if (i + 16 < resp.Length) + retstr += "\n"; + } + } + /*foreach (var entry in UserInfo.KnownUsers) + { + if (entry.UserID == userid) + entry.State = 1; + else + { + //entry.LastUpdate> + } + }*/ + UserInfo.Select(userid).State = 1; + //Networking.SendUpdate(Networking.UpdateType.LoginUser, Storage.Encrypt(retstr), true); + Networking.SendUpdate(Networking.UpdateType.LoginUser, Encoding.Unicode.GetBytes(retstr), true); + } + //else if (resp[1] == (byte)Networking.UpdateType.LogoutUser) + else if (updatetype == Networking.UpdateType.LogoutUser) + { //2014.08.31. 0:32 + //int len = BitConverter.ToInt32(resp, 6); + int len = BitConverter.ToInt32(data, 0); + string ipstr = Encoding.Unicode.GetString(data, 4, len); + //Storage.Settings["ips"].Substring(Storage.Settings["ips"].IndexOf(ipstr), ipstr.Length); + Storage.Settings["ips"] = Storage.Settings["ips"].Remove(Storage.Settings["ips"].IndexOf(ipstr), ipstr.Length); //2014.09.22. + } + else if (updatetype == Networking.UpdateType.SetKey) //2014.09.09. + { //2014.09.22. + CurrentUser.KeyIndex = BitConverter.ToInt32(data, 0); + } + } while (false); + } + } + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/UserInfo.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/UserInfo.cs new file mode 100644 index 0000000..5404d95 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/UserInfo.cs @@ -0,0 +1,541 @@ +using System; +using System.Collections.Generic; +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 +{ + public partial class UserInfo + { + /* + * 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 Partners = new List(); + public static List KnownUsers = new List(); //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 + { + if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_name")) + Storage.LoggedInSettings.Add("userinfo_" + UserID + "_name", ""); + return Storage.LoggedInSettings["userinfo_" + UserID + "_name"]; + } + set + { + if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_name")) + Storage.LoggedInSettings.Add("userinfo_" + UserID + "_name", ""); + Storage.LoggedInSettings["userinfo_" + UserID + "_name"] = value; + /*List 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; + public string Message + { + get + { + if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_message")) + Storage.LoggedInSettings.Add("userinfo_" + UserID + "_message", ""); + return Storage.LoggedInSettings["userinfo_" + UserID + "_message"]; + } + set + { + if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_message")) + Storage.LoggedInSettings.Add("userinfo_" + UserID + "_message", ""); + Storage.LoggedInSettings["userinfo_" + UserID + "_message"] = value; + /*List 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 int state; + public int State + { + get + { + if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_state")) + Storage.LoggedInSettings.Add("userinfo_" + UserID + "_state", "-1"); + return Int32.Parse(Storage.LoggedInSettings["userinfo_" + UserID + "_state"]); + } + set + { + if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_state")) + Storage.LoggedInSettings.Add("userinfo_" + UserID + "_state", "-1"); + Storage.LoggedInSettings["userinfo_" + UserID + "_state"] = value.ToString(); + /*List 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 + string tmp = "Hiba"; + switch (value) + { + case 0: + tmp = Language.Translate("offline"); + break; + case 1: + tmp = Language.Translate("menu_file_status_online"); + break; + case 2: + tmp = Language.Translate("menu_file_status_busy"); + break; + 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"]; + } + 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 ips = new HashSet(); + public static HashSet IPs + { + get + { + return ips; + } + set + { + ips = value; + } + } + private static List bannedips = new List(); + public static List 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() + { + /* + * Szükséges információk az adatbázisban: + * - Felhasználó képe a users táblában + * - A legutóbbi képváltás dátuma + * Ebből megállapitja a program, hogy le kell-e tölteni. + * 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 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 sendb = new List(); + 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(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" || 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); + File.WriteAllBytes(tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png", bytes); + return tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; //2014.08.16. + } + //return "noimage.png"; + } + public List GetChatWindows() + { + List retlist = new List(); + for (int x = 0; x < ChatForm.ChatWindows.Count; x++) + { + 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 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); + }*/ + } +} diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/_MyNotifier.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/_MyNotifier.cs new file mode 100644 index 0000000..50bd026 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/_MyNotifier.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MSGer.tk +{/* + class _MyNotifier + { //Értesítő általam készítve + public _MyNotifier() + { //Csak épp ez nem WinForms + "Teszt".TestFunc(); + } + }*/ +} +/* +namespace System +{ + partial class Object + { + public void TestFunc() + { + Windows.Forms.MessageBox.Show("TestFunc"); + } + } +}*/ \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/1.db b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/1.db new file mode 100644 index 0000000..be2d0ce Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/1.db differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/2.db b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/2.db new file mode 100644 index 0000000..d850dd5 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/2.db differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/GlacialList.dll b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/GlacialList.dll new file mode 100644 index 0000000..6652693 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/GlacialList.dll differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/GlacialList.pdb b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/GlacialList.pdb new file mode 100644 index 0000000..ee239c7 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/GlacialList.pdb differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.dll b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.dll new file mode 100644 index 0000000..1851254 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.dll differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.pdb b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.pdb new file mode 100644 index 0000000..1610b6d Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.pdb differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.exe b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.exe new file mode 100644 index 0000000..a9be560 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.exe differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.exe.CodeAnalysisLog.xml b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.exe.CodeAnalysisLog.xml new file mode 100644 index 0000000..84a5816 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.exe.CodeAnalysisLog.xml @@ -0,0 +1,28 @@ + + + + + Category + Certainty + Collapse All + Check Id + Error + error(s) + Expand All + Help + Line + message(s) + [Location not stored in Pdb] + Project + Resolution + Rule + Rule File + Rule Description + Source + Status + Target + Warning + warning(s) + Code Analysis Report + + diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.exe.config b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.exe.config new file mode 100644 index 0000000..b8bf97a --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.exe.config @@ -0,0 +1,33 @@ + + + + +
+ + + + + + + + + + + + + + + 3 + + + hu + + + 4510 + + + 0 + + + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.pdb b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.pdb new file mode 100644 index 0000000..3359e0a Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.pdb differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe new file mode 100644 index 0000000..c0dfecc Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe.config b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe.config new file mode 100644 index 0000000..b8bf97a --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe.config @@ -0,0 +1,33 @@ + + + + +
+ + + + + + + + + + + + + + + 3 + + + hu + + + 4510 + + + 0 + + + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/RichListView.dll b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/RichListView.dll new file mode 100644 index 0000000..e17d3c1 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/RichListView.dll differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/RichListView.pdb b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/RichListView.pdb new file mode 100644 index 0000000..2aca0d0 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/RichListView.pdb differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/close.bmp b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/close.bmp new file mode 100644 index 0000000..8677d1e Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/close.bmp differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/languages/en.txt b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/languages/en.txt new file mode 100644 index 0000000..9f39561 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/languages/en.txt @@ -0,0 +1,114 @@ +menu_file=File +menu_file_logout=Logout +menu_file_loginnewuser=Login new user... +menu_file_status=Status +menu_file_status_online=Online +menu_file_status_busy=Busy +menu_file_status_away=Away +menu_file_status_hidden=Hidden +menu_file_sendfile=Send file... +menu_file_openreceivedfiles=Open received files... +menu_file_openrecentmsgs=Open recent messages... +menu_file_close=Close +menu_file_exit=Exit +menu_contacts=Contacts +menu_contacts_add=Add contact... +menu_contacts_edit=Edit contact... +menu_contacts_remove=Remove contact... +menu_contacts_invite=Invite contact... +menu_contacts_makegroup=Make group... +menu_contacts_makecategory=Make category... +menu_contacts_editcategory=Edit category... +menu_contacts_removecategory=Remove category... +menu_operations=Operations +menu_operations_sendmsg=Send message... +menu_operations_sendother=Send other +menu_operations_sendother_sendmail=Send E-mail +menu_operations_callcontact=Call contact... +menu_operations_videocall=Start video call... +menu_operations_showonlinefiles=Show online files +menu_operations_playgame=Play game... +menu_operations_askforhelp=Ask for help... +menu_tools=Tools +menu_tools_alwaysontop=Always on top +menu_tools_emoticons=Emoticons... +menu_tools_changeimage=Change image... +menu_tools_changebackground=Change background... +menu_tools_voicevideosettings=Voice and video settings +menu_tools_settings=Settings +menu_help=Help +menu_help_contents=Contents +menu_help_status=Service state +menu_help_privacypolicy=Privacy policy +menu_help_termsofuse=Terms of use +menu_help_report=Report abuse +menu_help_improveprogram=Help improving the program +menu_help_about=About +searchbar=Search contacts... +loading=Loading... +contact_sendemail=Send E-mail +contact_copyemail=Copy E-mail address +contact_info=Information +contact_block=Block contact +contact_remove=Remove contact +contact_editname=Edit name +contact_eventnotifications=Event notifications +contact_openchatlog=Open chat log +iconmenu_show=Show +login=Login +button_cancel=Cancel +login_password=Password +registration=Registration +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. +login_badnamepass=Incorrect username or password. +reg_code=Code +reg_username=Username +reg_emptyfield=Fill in every field. +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 +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 +said=said +about=About {0} +about_version=Version: {0} +about_programmer=Programmer: +about_specialthanks=Special thanks: +about_specthanks1=for answering my questions/for testing +about_specthanks2=for translating the program +about_specthanks3=for making GlacialList +about_specthanks4=for textboxes that you can insert images into +settings=Settings +settings_personal=Personal +outofdate=A new version is available. Would you like to install it? +outofdate_caption=New verison +error_network=Network error +error_network2=The program retries to send, so preventing data loss. +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 diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/languages/hu.txt b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/languages/hu.txt new file mode 100644 index 0000000..24cba6b --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/languages/hu.txt @@ -0,0 +1,114 @@ +menu_file=Fájl +menu_file_logout=Kijelentkezés +menu_file_loginnewuser=Újabb felhasználó bejelentkeztetése... +menu_file_status=Állapot +menu_file_status_online=Elérhető +menu_file_status_busy=Elfoglalt +menu_file_status_away=Nincs a gépnél +menu_file_status_hidden=Rejtve kapcsolódik +menu_file_sendfile=Fálj küldése... +menu_file_openreceivedfiles=Beérkezett fájlok mappájának megnyitása... +menu_file_openrecentmsgs=Üzenetek előzményeinek megtekintése... +menu_file_close=Bezárás +menu_file_exit=Kilépés +menu_contacts=Ismerősök +menu_contacts_add=Ismerős felvétele... +menu_contacts_edit=Ismerős szerkesztése... +menu_contacts_remove=Ismerős törlése... +menu_contacts_invite=Ismerős meghívása... +menu_contacts_makegroup=Csoport létrehozása... +menu_contacts_makecategory=Kategória létrehozása... +menu_contacts_editcategory=Kategória szerkesztése... +menu_contacts_removecategory=Kategória törlése... +menu_operations=Műveletek +menu_operations_sendmsg=Üzenetküldés... +menu_operations_sendother=Egyéb küldése +menu_operations_sendother_sendmail=E-mail küldése +menu_operations_callcontact=Ismerős felhívása... +menu_operations_videocall=Videohívás indítása... +menu_operations_showonlinefiles=Online fájlok megtekintése +menu_operations_playgame=Játék... +menu_operations_askforhelp=Távsegítség kérése... +menu_tools=Eszközök +menu_tools_alwaysontop=Mindig legfelül +menu_tools_emoticons=Hangulatjelek... +menu_tools_changeimage=Kép megváltoztatása... +menu_tools_changebackground=Háttér megváltoztatása... +menu_tools_voicevideosettings=Hang- és videobeállítások... +menu_tools_settings=Beállítások +menu_help=Súgó +menu_help_contents=Tartalom +menu_help_status=A szolgáltatás állapota +menu_help_privacypolicy=Adatvédelmi nyilatkozat +menu_help_termsofuse=Felhasználási feltételek +menu_help_report=Visszaélés bejelentése +menu_help_improveprogram=Segíts a program tökéletesítésében +menu_help_about=Névjegy +searchbar=Ismerősök keresése... +loading=Betöltés... +contact_sendemail=E-mail küldése +contact_copyemail=E-mail cím másolása +contact_info=Információ +contact_block=Ismerős letiltása +contact_remove=Ismerős törlése +contact_editname=Becenév szerkesztése +contact_eventnotifications=Eseményértesítések +contact_openchatlog=Beszélgetésnapló megnyitása +iconmenu_show=Megjelenítés +login=Bejelentkezés +button_cancel=Mégse +login_password=Jelszó +registration=Regisztráció +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. +login_badnamepass=Helytelen felhasználónév, vagy jelszó. +reg_code=Kód +reg_username=Felhasználónév +reg_emptyfield=Minden mezőt tölts ki. +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 +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ő +said=üzenete +about=A {0} programról +about_version=Verzió: {0} +about_programmer=Programozó: +about_specialthanks=Külön köszönet: +about_specthanks1=a kérdéseim megválaszolásáért/tesztelésért +about_specthanks2=a program lefordításáért +about_specthanks3=a GlacialList elkészítéséért +about_specthanks4=a szövegdobozokba illeszthető képekért +settings=Beállítások +settings_personal=Személyes +outofdate=Elérhető egy újabb verzió. Szeretnéd telepíteni? +outofdate_caption=Új verzió +error_network=Hálózati hiba +error_network2=A program újrapróbálkozik a küldéssel, így elkerülve az adatvesztést. +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 diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/noimage.png b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/noimage.png new file mode 100644 index 0000000..7519e19 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/noimage.png differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/popup-bg.bmp b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/popup-bg.bmp new file mode 100644 index 0000000..07c9dca Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/popup-bg.bmp differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/program.db b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/program.db new file mode 100644 index 0000000..3aaad2d Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Debug/program.db differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/GlacialList.dll b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/GlacialList.dll new file mode 100644 index 0000000..6652693 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/GlacialList.dll differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/GlacialList.pdb b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/GlacialList.pdb new file mode 100644 index 0000000..ee239c7 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/GlacialList.pdb differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.dll b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.dll new file mode 100644 index 0000000..1851254 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.dll differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.pdb b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.pdb new file mode 100644 index 0000000..1610b6d Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.pdb differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.exe b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.exe new file mode 100644 index 0000000..6f44cc0 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.exe differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.exe b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.exe new file mode 100644 index 0000000..acc488b Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.exe differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.exe.config b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.exe.config new file mode 100644 index 0000000..b8bf97a --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.exe.config @@ -0,0 +1,33 @@ + + + + +
+ + + + + + + + + + + + + + + 3 + + + hu + + + 4510 + + + 0 + + + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.pdb b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.pdb new file mode 100644 index 0000000..7ba9397 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.pdb differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe new file mode 100644 index 0000000..c0dfecc Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe.config b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe.config new file mode 100644 index 0000000..b8bf97a --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe.config @@ -0,0 +1,33 @@ + + + + +
+ + + + + + + + + + + + + + + 3 + + + hu + + + 4510 + + + 0 + + + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/RichListView.dll b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/RichListView.dll new file mode 100644 index 0000000..d80b490 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/RichListView.dll differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/RichListView.pdb b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/RichListView.pdb new file mode 100644 index 0000000..08d5ff2 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/RichListView.pdb differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/close.bmp b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/close.bmp new file mode 100644 index 0000000..8677d1e Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/close.bmp differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/languages/en.txt b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/languages/en.txt new file mode 100644 index 0000000..b44ffff --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/languages/en.txt @@ -0,0 +1,102 @@ +menu_file=File +menu_file_logout=Logout +menu_file_loginnewuser=Login new user... +menu_file_status=Status +menu_file_status_online=Online +menu_file_status_busy=Busy +menu_file_status_away=Away +menu_file_status_hidden=Hidden +menu_file_sendfile=Send file... +menu_file_openreceivedfiles=Open received files... +menu_file_openrecentmsgs=Open recent messages... +menu_file_close=Close +menu_file_exit=Exit +menu_contacts=Contacts +menu_contacts_add=Add contact... +menu_contacts_edit=Edit contact... +menu_contacts_remove=Remove contact... +menu_contacts_invite=Invite contact... +menu_contacts_makegroup=Make group... +menu_contacts_makecategory=Make category... +menu_contacts_editcategory=Edit category... +menu_contacts_removecategory=Remove category... +menu_operations=Operations +menu_operations_sendmsg=Send message... +menu_operations_sendother=Send other +menu_operations_sendother_sendmail=Send E-mail +menu_operations_callcontact=Call contact... +menu_operations_videocall=Start video call... +menu_operations_showonlinefiles=Show online files +menu_operations_playgame=Play game... +menu_operations_askforhelp=Ask for help... +menu_tools=Tools +menu_tools_alwaysontop=Always on top +menu_tools_emoticons=Emoticons... +menu_tools_changeimage=Change image... +menu_tools_changebackground=Change background... +menu_tools_voicevideosettings=Voice and video settings +menu_tools_settings=Settings +menu_help=Help +menu_help_contents=Contents +menu_help_status=Service state +menu_help_privacypolicy=Privacy policy +menu_help_termsofuse=Terms of use +menu_help_report=Report abuse +menu_help_improveprogram=Help improving the program +menu_help_about=About +searchbar=Search contacts... +loading=Loading... +contact_sendemail=Send E-mail +contact_copyemail=Copy E-mail address +contact_info=Information +contact_block=Block contact +contact_remove=Remove contact +contact_editname=Edit name +contact_eventnotifications=Event notifications +contact_openchatlog=Open chat log +iconmenu_show=Show +login=Login +button_cancel=Cancel +login_password=Password +registration=Registration +login_desc1=You can use your username 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. +login_badnamepass=Incorrect username or password. +reg_code=Code +reg_username=Username +reg_emptyfield=Fill in every field. +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_success=Registration succesful. +unknown_error=Unknown error. +addcontact=Add contact +addcontact_nameemail=Name/E-mail/Username +addcontact_search=Search +addcontact_add=Add +chat_nowindow=The partner creating the window is not found. +offline=Offline +msgupdate_error=Failed to update messages. +said=said +about=About {0} +about_version=Version: {0} +about_programmer=Programmer: +about_specialthanks=Special thanks: +about_specthanks1=for answering my questions/for testing +about_specthanks2=for translating the program +about_specthanks3=for making GlacialList +about_specthanks4=for textboxes that you can insert images into +settings=Settings +settings_personal=Personal +outofdate=A new version is available. Would you like to install it? +outofdate_caption=New verison +error_network=Network error +error_network2=The program retries to send, so preventing data loss. +name=Name +message=Message +language=Language +restart_needed=The program will restart due to the changes made. +currentlang=English diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/languages/hu.txt b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/languages/hu.txt new file mode 100644 index 0000000..f9b50c2 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/languages/hu.txt @@ -0,0 +1,102 @@ +menu_file=Fájl +menu_file_logout=Kijelentkezés +menu_file_loginnewuser=Újabb felhasználó bejelentkeztetése... +menu_file_status=Állapot +menu_file_status_online=Elérhető +menu_file_status_busy=Elfoglalt +menu_file_status_away=Nincs a gépnél +menu_file_status_hidden=Rejtve kapcsolódik +menu_file_sendfile=Fálj küldése... +menu_file_openreceivedfiles=Beérkezett fájlok mappájának megnyitása... +menu_file_openrecentmsgs=Üzenetek előzményeinek megtekintése... +menu_file_close=Bezárás +menu_file_exit=Kilépés +menu_contacts=Ismerősök +menu_contacts_add=Ismerős felvétele... +menu_contacts_edit=Ismerős szerkesztése... +menu_contacts_remove=Ismerős törlése... +menu_contacts_invite=Ismerős meghívása... +menu_contacts_makegroup=Csoport létrehozása... +menu_contacts_makecategory=Kategória létrehozása... +menu_contacts_editcategory=Kategória szerkesztése... +menu_contacts_removecategory=Kategória törlése... +menu_operations=Műveletek +menu_operations_sendmsg=Üzenetküldés... +menu_operations_sendother=Egyéb küldése +menu_operations_sendother_sendmail=E-mail küldése +menu_operations_callcontact=Ismerős felhívása... +menu_operations_videocall=Videohívás indítása... +menu_operations_showonlinefiles=Online fájlok megtekintése +menu_operations_playgame=Játék... +menu_operations_askforhelp=Távsegítség kérése... +menu_tools=Eszközök +menu_tools_alwaysontop=Mindig legfelül +menu_tools_emoticons=Hangulatjelek... +menu_tools_changeimage=Kép megváltoztatása... +menu_tools_changebackground=Háttér megváltoztatása... +menu_tools_voicevideosettings=Hang- és videobeállítások... +menu_tools_settings=Beállítások +menu_help=Súgó +menu_help_contents=Tartalom +menu_help_status=A szolgáltatás állapota +menu_help_privacypolicy=Adatvédelmi nyilatkozat +menu_help_termsofuse=Felhasználási feltételek +menu_help_report=Visszaélés bejelentése +menu_help_improveprogram=Segíts a program tökéletesítésében +menu_help_about=Névjegy +searchbar=Ismerősök keresése... +loading=Betöltés... +contact_sendemail=E-mail küldése +contact_copyemail=E-mail cím másolása +contact_info=Információ +contact_block=Ismerős letiltása +contact_remove=Ismerős törlése +contact_editname=Becenév szerkesztése +contact_eventnotifications=Eseményértesítések +contact_openchatlog=Beszélgetésnapló megnyitása +iconmenu_show=Megjelenítés +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. +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. +login_badnamepass=Helytelen felhasználónév, vagy jelszó. +reg_code=Kód +reg_username=Felhasználónév +reg_emptyfield=Minden mezőt tölts ki. +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_success=Sikeres regisztráció. +unknown_error=Ismeretlen hiba +addcontact=Ismerős felvétele +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ó. +offline=Nem elérhető +msgupdate_error=Az üzenetek frissitése sikertelen. +said=üzenete +about=A {0} programról +about_version=Verzió: {0} +about_programmer=Programozó: +about_specialthanks=Külön köszönet: +about_specthanks1=a kérdéseim megválaszolásáért/tesztelésért +about_specthanks2=a program lefordításáért +about_specthanks3=a GlacialList elkészítéséért +about_specthanks4=a szövegdobozokba illeszthető képekért +settings=Beállítások +settings_personal=Személyes +outofdate=Elérhető egy újabb verzió. Szeretnéd telepíteni? +outofdate_caption=Új verzió +error_network=Hálózati hiba +error_network2=A program újrapróbálkozik a küldéssel, így elkerülve az adatvesztést. +name=Név +message=Üzenet +language=Nyelv +restart_needed=A módosítások érvényesítésének érdekében a program újraindul. +currentlang=Magyar diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/noimage.png b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/noimage.png new file mode 100644 index 0000000..7519e19 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/noimage.png differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/popup-bg.bmp b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/popup-bg.bmp new file mode 100644 index 0000000..07c9dca Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/bin/Release/popup-bg.bmp differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..273bb50 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..d19e1c3 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.AboutBox1.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.AboutBox1.resources new file mode 100644 index 0000000..374671b Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.AboutBox1.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.AddPartner.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.AddPartner.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.AddPartner.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.BeforeLogin.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.BeforeLogin.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.BeforeLogin.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.ChatForm.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.ChatForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.ChatForm.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.InvitePartner.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.InvitePartner.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.InvitePartner.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm.resources new file mode 100644 index 0000000..62b9f73 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm_RegistrationForm.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm_RegistrationForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm_RegistrationForm.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.MainForm.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.MainForm.resources new file mode 100644 index 0000000..d664d05 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.MainForm.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.Notifier.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.Notifier.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.Notifier.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.PartnerInformation.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.PartnerInformation.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.PartnerInformation.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.Properties.Resources.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.Properties.Resources.resources new file mode 100644 index 0000000..af48a80 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.Properties.Resources.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.SelectPartnerForm.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.SelectPartnerForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.SelectPartnerForm.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsForm.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsForm.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..f9f1dd4 --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt @@ -0,0 +1,72 @@ +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\bin\Debug\MSGer.tk.exe.config +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\bin\Debug\MSGer.tk.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\bin\Debug\MSGer.tk.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.csprojResolveAssemblyReference.cache +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.ChatForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.InvitePartner.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.LoginForm_RegistrationForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.MainForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.LoginForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.Notifier.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.Properties.Resources.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.SelectPartnerForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.csproj.GenerateResource.Cache +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\bin\Debug\GlacialList.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\bin\Debug\Khendys.Controls.ExRichTextBox.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\bin\Debug\GlacialList.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\bin\Debug\Khendys.Controls.ExRichTextBox.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.AddPartner.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.AboutBox1.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\MSGer.tk (C#)\obj\Debug\MSGer.tk.SettingsForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Debug\MSGer.tk.exe.config +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Debug\MSGer.tk.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Debug\MSGer.tk.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Debug\GlacialList.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Debug\Khendys.Controls.ExRichTextBox.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Debug\GlacialList.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Debug\Khendys.Controls.ExRichTextBox.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.csprojResolveAssemblyReference.cache +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.AboutBox1.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.AddPartner.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.ChatForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.InvitePartner.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.LoginForm_RegistrationForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.MainForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.LoginForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.Notifier.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.Properties.Resources.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.SelectPartnerForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Debug\MSGer.tk.SettingsForm.resources +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 diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache new file mode 100644 index 0000000..4859c0a Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..9dace19 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.exe b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.exe new file mode 100644 index 0000000..a9be560 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.exe differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.pdb b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.pdb new file mode 100644 index 0000000..3359e0a Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/MSGer.tk.pdb differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..8efa26f Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferences.cache b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..1f92c39 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferences.cache differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..ee38181 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.AboutBox1.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.AboutBox1.resources new file mode 100644 index 0000000..374671b Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.AboutBox1.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.AddPartner.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.AddPartner.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.AddPartner.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.ChatForm.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.ChatForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.ChatForm.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.InvitePartner.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.InvitePartner.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.InvitePartner.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm.resources new file mode 100644 index 0000000..62b9f73 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm_RegistrationForm.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm_RegistrationForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm_RegistrationForm.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.MainForm.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.MainForm.resources new file mode 100644 index 0000000..d664d05 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.MainForm.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.Notifier.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.Notifier.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.Notifier.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.Properties.Resources.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.Properties.Resources.resources new file mode 100644 index 0000000..af48a80 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.Properties.Resources.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.SelectPartnerForm.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.SelectPartnerForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.SelectPartnerForm.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.SettingsForm.resources b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.SettingsForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.SettingsForm.resources differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.csproj.FileListAbsolute.txt b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..a9cd58a --- /dev/null +++ b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.csproj.FileListAbsolute.txt @@ -0,0 +1,27 @@ +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Release\MSGer.tk.exe.config +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Release\MSGer.tk.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Release\MSGer.tk.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Release\GlacialList.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Release\Khendys.Controls.ExRichTextBox.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Release\RichListView.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Release\RichListView.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Release\GlacialList.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\bin\Release\Khendys.Controls.ExRichTextBox.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.csprojResolveAssemblyReference.cache +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.AboutBox1.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.AddPartner.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.ChatForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.InvitePartner.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.LoginForm_RegistrationForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.MainForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.LoginForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.Notifier.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.Properties.Resources.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.SelectPartnerForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.SettingsForm.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.csproj.GenerateResource.Cache +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk (C#)\obj\Release\MSGer.tk.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Release\MSGer.tk.exe.config +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Release\MSGer.tk.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Release\MSGer.tk.pdb diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.csproj.GenerateResource.Cache b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.csproj.GenerateResource.Cache new file mode 100644 index 0000000..e2d2aae Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.csproj.GenerateResource.Cache differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.csprojResolveAssemblyReference.cache b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..78d5169 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.csprojResolveAssemblyReference.cache differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.exe b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.exe new file mode 100644 index 0000000..acc488b Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.exe differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.pdb b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.pdb new file mode 100644 index 0000000..7ba9397 Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/MSGer.tk.pdb differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/TempPE/Properties.Resources.Designer.cs.dll b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..7c9638a Binary files /dev/null and b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Versions/Less Closed Beta/v3.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29