diff --git a/Handwriting program/Handwriting program.sln b/Handwriting program/Handwriting program.sln new file mode 100644 index 0000000..9aac3b7 --- /dev/null +++ b/Handwriting program/Handwriting program.sln @@ -0,0 +1,22 @@ + +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}") = "Handwriting program", "Handwriting program\Handwriting program.csproj", "{9DED0C68-3F97-4B14-88D8-F76A749F8943}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9DED0C68-3F97-4B14-88D8-F76A749F8943}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9DED0C68-3F97-4B14-88D8-F76A749F8943}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9DED0C68-3F97-4B14-88D8-F76A749F8943}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9DED0C68-3F97-4B14-88D8-F76A749F8943}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Handwriting program/Handwriting program.v12.suo b/Handwriting program/Handwriting program.v12.suo new file mode 100644 index 0000000..15b5fc8 Binary files /dev/null and b/Handwriting program/Handwriting program.v12.suo differ diff --git a/Handwriting program/Handwriting program/App.config b/Handwriting program/Handwriting program/App.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/Handwriting program/Handwriting program/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Handwriting program/Handwriting program/Form1.Designer.cs b/Handwriting program/Handwriting program/Form1.Designer.cs new file mode 100644 index 0000000..becf01a --- /dev/null +++ b/Handwriting program/Handwriting program/Form1.Designer.cs @@ -0,0 +1,112 @@ +namespace Handwriting_program +{ + partial class Form1 + { + /// + /// 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.trackBar1 = new System.Windows.Forms.TrackBar(); + this.button1 = new System.Windows.Forms.Button(); + this.handwriting1 = new Handwriting_program.Handwriting(); + this.button2 = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).BeginInit(); + this.SuspendLayout(); + // + // trackBar1 + // + this.trackBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.trackBar1.LargeChange = 20; + this.trackBar1.Location = new System.Drawing.Point(12, 198); + this.trackBar1.Maximum = 100; + this.trackBar1.Name = "trackBar1"; + this.trackBar1.Size = new System.Drawing.Size(260, 45); + this.trackBar1.SmallChange = 10; + this.trackBar1.TabIndex = 1; + this.trackBar1.ValueChanged += new System.EventHandler(this.trackBar1_ValueChanged); + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.button1.Location = new System.Drawing.Point(12, 249); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(260, 23); + this.button1.TabIndex = 2; + this.button1.Text = "Clear"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // handwriting1 + // + this.handwriting1.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.handwriting1.Location = new System.Drawing.Point(60, 29); + this.handwriting1.Name = "handwriting1"; + this.handwriting1.PaintColor = System.Drawing.Color.Black; + this.handwriting1.PaintSize = 1; + this.handwriting1.Size = new System.Drawing.Size(150, 154); + this.handwriting1.TabIndex = 0; + // + // button2 + // + this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.button2.Location = new System.Drawing.Point(12, 278); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(260, 23); + this.button2.TabIndex = 3; + this.button2.Text = "Save"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(284, 319); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.trackBar1); + this.Controls.Add(this.handwriting1); + this.Name = "Form1"; + this.Text = "Form1"; + ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private Handwriting handwriting1; + private System.Windows.Forms.TrackBar trackBar1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + } +} + diff --git a/Handwriting program/Handwriting program/Form1.cs b/Handwriting program/Handwriting program/Form1.cs new file mode 100644 index 0000000..942f40e --- /dev/null +++ b/Handwriting program/Handwriting program/Form1.cs @@ -0,0 +1,35 @@ +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 Handwriting_program +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + + private void trackBar1_ValueChanged(object sender, EventArgs e) + { + handwriting1.PaintSize = trackBar1.Value; + } + + private void button1_Click(object sender, EventArgs e) + { + handwriting1.Clear(); + } + + private void button2_Click(object sender, EventArgs e) + { + handwriting1.GetBitmap().Save("bmp.bmp"); + } + } +} diff --git a/Handwriting program/Handwriting program/Form1.resx b/Handwriting program/Handwriting program/Form1.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Handwriting program/Handwriting program/Form1.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/Handwriting program/Handwriting program/Handwriting program.csproj b/Handwriting program/Handwriting program/Handwriting program.csproj new file mode 100644 index 0000000..3b3d01b --- /dev/null +++ b/Handwriting program/Handwriting program/Handwriting program.csproj @@ -0,0 +1,107 @@ + + + + + Debug + AnyCPU + {9DED0C68-3F97-4B14-88D8-F76A749F8943} + Library + Properties + Handwriting_program + Handwriting program + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + UserControl + + + Handwriting.cs + + + + + Form1.cs + + + Handwriting.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Handwriting program/Handwriting program/Handwriting.Designer.cs b/Handwriting program/Handwriting program/Handwriting.Designer.cs new file mode 100644 index 0000000..5e2f773 --- /dev/null +++ b/Handwriting program/Handwriting program/Handwriting.Designer.cs @@ -0,0 +1,142 @@ +namespace Handwriting_program +{ + partial class Handwriting + { + /// + /// 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 Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.colorbtn = new System.Windows.Forms.Button(); + this.erasebtn = new System.Windows.Forms.Button(); + this.trackBar1 = new System.Windows.Forms.TrackBar(); + this.sendbtn = new System.Windows.Forms.Button(); + this.flowLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).BeginInit(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.White; + this.panel1.Cursor = System.Windows.Forms.Cursors.Cross; + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(439, 129); + this.panel1.TabIndex = 0; + this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.Handwriting_Paint); + this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Handwriting_MouseDown); + this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Handwriting_MouseUp); + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.Controls.Add(this.colorbtn); + this.flowLayoutPanel1.Controls.Add(this.erasebtn); + this.flowLayoutPanel1.Controls.Add(this.trackBar1); + this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 129); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(514, 40); + this.flowLayoutPanel1.TabIndex = 1; + // + // colorbtn + // + this.colorbtn.FlatAppearance.BorderColor = System.Drawing.Color.Blue; + this.colorbtn.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Red; + this.colorbtn.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Aqua; + this.colorbtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.colorbtn.Image = global::Handwriting_program.Properties.Resources.colorpicker; + this.colorbtn.Location = new System.Drawing.Point(3, 3); + this.colorbtn.Name = "colorbtn"; + this.colorbtn.Size = new System.Drawing.Size(32, 32); + this.colorbtn.TabIndex = 0; + this.colorbtn.UseVisualStyleBackColor = false; + this.colorbtn.Click += new System.EventHandler(this.colorbtn_Click); + // + // erasebtn + // + this.erasebtn.FlatAppearance.BorderColor = System.Drawing.Color.Blue; + this.erasebtn.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Red; + this.erasebtn.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Aqua; + this.erasebtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.erasebtn.Image = global::Handwriting_program.Properties.Resources.erase; + this.erasebtn.Location = new System.Drawing.Point(41, 3); + this.erasebtn.Name = "erasebtn"; + this.erasebtn.Size = new System.Drawing.Size(32, 32); + this.erasebtn.TabIndex = 1; + this.erasebtn.UseVisualStyleBackColor = true; + this.erasebtn.Click += new System.EventHandler(this.erasebtn_Click); + // + // trackBar1 + // + this.trackBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.trackBar1.Location = new System.Drawing.Point(79, 3); + this.trackBar1.Maximum = 50; + this.trackBar1.Name = "trackBar1"; + this.trackBar1.Size = new System.Drawing.Size(130, 45); + this.trackBar1.TabIndex = 2; + this.trackBar1.TickStyle = System.Windows.Forms.TickStyle.None; + this.trackBar1.Scroll += new System.EventHandler(this.trackBar1_Scroll); + // + // sendbtn + // + this.sendbtn.Dock = System.Windows.Forms.DockStyle.Right; + this.sendbtn.Location = new System.Drawing.Point(439, 0); + this.sendbtn.Name = "sendbtn"; + this.sendbtn.Size = new System.Drawing.Size(75, 129); + this.sendbtn.TabIndex = 2; + this.sendbtn.Text = "send"; + this.sendbtn.UseVisualStyleBackColor = true; + // + // Handwriting + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.panel1); + this.Controls.Add(this.sendbtn); + this.Controls.Add(this.flowLayoutPanel1); + this.Cursor = System.Windows.Forms.Cursors.Default; + this.Name = "Handwriting"; + this.Size = new System.Drawing.Size(514, 169); + this.flowLayoutPanel1.ResumeLayout(false); + this.flowLayoutPanel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private System.Windows.Forms.Button colorbtn; + private System.Windows.Forms.Button erasebtn; + private System.Windows.Forms.TrackBar trackBar1; + public System.Windows.Forms.Button sendbtn; + + } +} diff --git a/Handwriting program/Handwriting program/Handwriting.cs b/Handwriting program/Handwriting program/Handwriting.cs new file mode 100644 index 0000000..736bf87 --- /dev/null +++ b/Handwriting program/Handwriting program/Handwriting.cs @@ -0,0 +1,310 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Threading; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; + +namespace Handwriting_program +{ + public partial class Handwriting : UserControl //2014.09.11-12. + { + public Handwriting() + { + InitializeComponent(); + /*pictureBox1.Image = new Bitmap(this.Width, this.Height); + pictureBox1.SizeMode = PictureBoxSizeMode.Normal;*/ + //pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; + //this.ResizeRedraw = true; + pen = new Pen(PaintColor, PaintSize); + //pen.Brush = new SolidBrush(PaintColor); + pen.SetLineCap(LineCap.Round, LineCap.Round, DashCap.Round); + pen.StartCap = LineCap.Round; + pen.EndCap = LineCap.Round; + //gr = this.CreateGraphics(); + gr = panel1.CreateGraphics(); //2014.11.08. + gr.SmoothingMode = SmoothingMode.HighQuality; + thread = new Thread(new ThreadStart(ThreadFunc)); + thread.IsBackground = true; + MainT = Thread.CurrentThread; + thread.Start(); + //bmp = new Bitmap(this.Width, this.Height); + //bmp = new Bitmap(panel1.Width, panel1.Height, PixelFormat.Format64bppArgb); //2014.11.08. - 2014.12.05. - PixelFormat + bmp = new Bitmap(panel1.Width, panel1.Height); + } + + private Color paintcolor = Color.Black; + public Color PaintColor + { + get + { + return paintcolor; + } + set + { + paintcolor = value; + //pen.Dispose(); + //pen = new Pen(PaintColor, PaintSize); + pen.Color = value; + } + } + private int paintsize = 1; + public int PaintSize + { + get + { + return paintsize; + } + set + { + paintsize = value; + //pen.Dispose(); + //pen = new Pen(PaintColor, PaintSize); + pen.Width = value; + } + } + public bool Erase { get; set; } + //private Timer timer = new Timer(); + //private Timer resizeT = new Timer(); + private Thread thread; + //private bool resizing = false; + private Pen pen; + private Point prevp; + private Graphics gr; + private Graphics bmpgr; + private Bitmap bmp; + private bool drawing = false; + private Thread MainT; + private void Handwriting_MouseDown(object sender, MouseEventArgs e) + { + /*timer.Interval = 100; + timer.Tick += timer_Tick; + timer.Start();*/ + drawing = true; + } + + //void timer_Tick(object sender, EventArgs e) + void ThreadFunc() + { + while (MainT.IsAlive) + { + if (!drawing) + { + prevp = new Point(); + continue; + } + //GC.Collect(); + /*var bm = new Bitmap(pictureBox1.Image); + Point p = pictureBox1.PointToClient(Cursor.Position);*/ + Point p = new Point(); + //this.Invoke(new Action(() => p = this.PointToClient(Cursor.Position))); + this.Invoke(new Action(() => p = panel1.PointToClient(Cursor.Position))); //2014.11.08. + //Graphics gr = this.CreateGraphics(); + //this.Invoke(new Action(() => gr = this.CreateGraphics())); + this.Invoke(new Action(() => gr = panel1.CreateGraphics())); //2014.11.08. + /*if (bmp != null) + { + bmp.Dispose(); + bmp = null; + } + bmp = new Bitmap(this.Width, this.Height);*/ + this.Invoke(new Action(() => bmpgr = Graphics.FromImage(bmp))); + var tmppen = (Pen)pen.Clone(); + if (Erase) + tmppen.Color = Color.White; //2014.11.08. + gr.DrawLine(tmppen, p, ((prevp.X != 0 && prevp.Y != 0) ? prevp : p)); + //if (Erase) + //tmppen.Color = Color.Transparent; //2014.11.08. + //tmppen.Color = Color.Empty; //2014.12.05. + bmpgr.DrawLine(tmppen, p, ((prevp.X != 0 && prevp.Y != 0) ? prevp : p)); + if (Erase) + bmp.MakeTransparent(Color.White); //2014.12.05. + prevp = p; + //Bitmap tmpbmp = new Bitmap(this.Width, this.Height); + //Bitmap tmpbmp = new Bitmap(panel1.Width, panel1.Height, PixelFormat.Format64bppArgb); //2014.11.08. - 2014.12.05. - PixelFormat + Bitmap tmpbmp = new Bitmap(panel1.Width, panel1.Height); + using (Graphics g = Graphics.FromImage(tmpbmp)) + //g.DrawImage(bmp, 0, 0, this.Width, this.Height); + g.DrawImage(bmp, 0, 0, panel1.Width, panel1.Height); //2014.11.08. + bmp.Dispose(); + bmp = tmpbmp; + + /*if (bmp != null) + { + bmp.Dispose(); + bmp = null; + } + bmp = new Bitmap(this.Width, this.Height); + this.Invoke(new Action(() => this.DrawToBitmap(bmp, new Rectangle(new Point(), this.Size))));*/ + GC.Collect(); + } + /*if (p.X < 0 || p.X >= bm.Width || p.Y < 0 || p.Y >= bm.Height) + return; + for (int i = 0; i < PaintSize; i++) + { + *try { bm.SetPixel(p.X - i, p.Y - i, PaintColor); } + catch (ArgumentOutOfRangeException) + { + }* + if (p.X - i >= 0 && p.Y - i >= 0) + bm.SetPixel(p.X - i, p.Y - i, PaintColor); + if (p.X - i >= 0 && p.Y + i < bm.Height) + bm.SetPixel(p.X - i, p.Y + i, PaintColor); + if (p.X + i < bm.Width && p.Y - i >= 0) + bm.SetPixel(p.X + i, p.Y - i, PaintColor); + if (p.X + i < bm.Width && p.Y + i < bm.Height) + bm.SetPixel(p.X + i, p.Y + i, PaintColor); + if (p.Y - i >= 0) + bm.SetPixel(p.X, p.Y - i, PaintColor); + if (p.Y + i < bm.Height) + bm.SetPixel(p.X, p.Y + i, PaintColor); + if (p.X - i >= 0) + bm.SetPixel(p.X - i, p.Y, PaintColor); + if (p.X + i < bm.Width) + bm.SetPixel(p.X + i, p.Y, PaintColor); + for (int j = 0; j < i; j++) + { + if (p.X - j >= 0 && p.Y + i < bm.Height) + bm.SetPixel(p.X - j, p.Y + i, PaintColor); + if (p.X + j < bm.Width && p.Y + i < bm.Height) + bm.SetPixel(p.X + j, p.Y + i, PaintColor); + if (p.X - j >= 0 && p.Y - i >= 0) + bm.SetPixel(p.X - j, p.Y - i, PaintColor); + if (p.X + j < bm.Width && p.Y - i >= 0) + bm.SetPixel(p.X + j, p.Y - i, PaintColor); + //} + //for (int j = 0; j < i; j++) + //{ + if (p.X - i >= 0 && p.Y + j < bm.Height) + bm.SetPixel(p.X - i, p.Y + j, PaintColor); + if (p.X + i < bm.Height && p.Y + j < bm.Height) + bm.SetPixel(p.X + i, p.Y + j, PaintColor); + if (p.X - i >= 0 && p.Y - j >= 0) + bm.SetPixel(p.X - i, p.Y - j, PaintColor); + if (p.X + i < bm.Width && p.Y - j >= 0) + bm.SetPixel(p.X + i, p.Y - j, PaintColor); + } + } + + pictureBox1.Image.Dispose(); + pctureBox1.Image = bm;*/ + } + + private void Handwriting_MouseUp(object sender, MouseEventArgs e) + { + //timer.Stop(); + drawing = false; + + //prevp = null; + prevp = new Point(); + } + + public void Clear() + { + //pictureBox1.Image = new Bitmap(this.Width, this.Height); + //Graphics gr = this.CreateGraphics(); + //gr.Clear(this.BackColor); + gr.Clear(panel1.BackColor); //2014.11.08. + bmpgr = Graphics.FromImage(bmp); + bmpgr.Clear(Color.Transparent); + } + + /*private void pictureBox1_Resize(object sender, EventArgs e) + { + if(!resizeT.Enabled) + { + resizeT.Interval = 100; + resizeT.Tick += resizeT_Tick; + resizeT.Start(); + } + resizing = true; + //pictureBox1.Size = this.Size; + /*try + { + var tmp = pictureBox1.Image; + pictureBox1.Image = new Bitmap(pictureBox1.Image, this.Size); + tmp.Dispose(); + } + catch (ArgumentException) + { + }*/ + //Refresh(); + //} + + /*void resizeT_Tick(object sender, EventArgs e) + { + if (!resizing) + { + pictureBox1.Size = this.Size; + try + { + var tmp = pictureBox1.Image; + pictureBox1.Image = new Bitmap(pictureBox1.Image, this.Size); + tmp.Dispose(); + } + catch (ArgumentException) + { + } + Refresh(); + resizeT.Stop(); + } + else + resizing = false; //If true set it to false and if it doesn't turn back to true then the resizing is done + }*/ + + public Bitmap GetBitmap() + { + /*var bmp = new Bitmap(this.Width, this.Height); + this.DrawToBitmap(bmp, new Rectangle(new Point(), this.Size));*/ + return bmp; + } + + private void Handwriting_Paint(object sender, PaintEventArgs e) + { + /*var bmp = new Bitmap(this.Width, this.Height); + this.DrawToBitmap(bmp, new Rectangle(new Point(), this.Size));*/ + if (bmp != null) + e.Graphics.DrawImage(bmp, new Point()); + } + + private void colorbtn_Click(object sender, EventArgs e) + { + var cpicker = new ColorDialog(); + if (cpicker.ShowDialog() == DialogResult.Cancel) + return; + PaintColor = cpicker.Color; + } + + private void erasebtn_Click(object sender, EventArgs e) + { + if (Erase) + { + Erase = false; + //erasebtn.Text = "erase"; //Képekkel helyettesíteni + erasebtn.FlatAppearance.BorderSize = 1; //2014.11.08. + } + else + { + Erase = true; + //erasebtn.Text = "draw"; //Képekkel helyettesíteni + erasebtn.FlatAppearance.BorderSize = 3; //2014.11.08. + } + } + + private void trackBar1_Scroll(object sender, EventArgs e) + { + pen.Width = trackBar1.Value; + } + + /*private void Handwriting_MouseClick(object sender, MouseEventArgs e) + { + Handwriting_MouseUp(sender, e); + }*/ + } +} diff --git a/Handwriting program/Handwriting program/Handwriting.resx b/Handwriting program/Handwriting program/Handwriting.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Handwriting program/Handwriting program/Handwriting.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/Handwriting program/Handwriting program/Program.cs b/Handwriting program/Handwriting program/Program.cs new file mode 100644 index 0000000..24d22d3 --- /dev/null +++ b/Handwriting program/Handwriting program/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Handwriting_program +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/Handwriting program/Handwriting program/Properties/AssemblyInfo.cs b/Handwriting program/Handwriting program/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9c24a16 --- /dev/null +++ b/Handwriting program/Handwriting program/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("Handwriting program")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Handwriting program")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("ca0951cd-7f48-49c9-ab87-0efba0a54df8")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Handwriting program/Handwriting program/Properties/Resources.Designer.cs b/Handwriting program/Handwriting program/Properties/Resources.Designer.cs new file mode 100644 index 0000000..1ade736 --- /dev/null +++ b/Handwriting program/Handwriting program/Properties/Resources.Designer.cs @@ -0,0 +1,83 @@ +//------------------------------------------------------------------------------ +// +// 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 Handwriting_program.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("Handwriting_program.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 colorpicker { + get { + object obj = ResourceManager.GetObject("colorpicker", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap erase { + get { + object obj = ResourceManager.GetObject("erase", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Handwriting program/Handwriting program/Properties/Resources.resx b/Handwriting program/Handwriting program/Properties/Resources.resx new file mode 100644 index 0000000..609dc27 --- /dev/null +++ b/Handwriting program/Handwriting program/Properties/Resources.resx @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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\colorpicker.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\erase.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Handwriting program/Handwriting program/Properties/Settings.Designer.cs b/Handwriting program/Handwriting program/Properties/Settings.Designer.cs new file mode 100644 index 0000000..9d2b6b7 --- /dev/null +++ b/Handwriting program/Handwriting program/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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 Handwriting_program.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/Handwriting program/Handwriting program/Properties/Settings.settings b/Handwriting program/Handwriting program/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/Handwriting program/Handwriting program/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Handwriting program/Handwriting program/Resources/colorpicker.jpg b/Handwriting program/Handwriting program/Resources/colorpicker.jpg new file mode 100644 index 0000000..04f687d Binary files /dev/null and b/Handwriting program/Handwriting program/Resources/colorpicker.jpg differ diff --git a/Handwriting program/Handwriting program/Resources/erase.png b/Handwriting program/Handwriting program/Resources/erase.png new file mode 100644 index 0000000..aa71a51 Binary files /dev/null and b/Handwriting program/Handwriting program/Resources/erase.png differ diff --git a/Handwriting program/Handwriting program/bin/Debug/Anya szerint harcoló kínai.bmp b/Handwriting program/Handwriting program/bin/Debug/Anya szerint harcoló kínai.bmp new file mode 100644 index 0000000..0457634 Binary files /dev/null and b/Handwriting program/Handwriting program/bin/Debug/Anya szerint harcoló kínai.bmp differ diff --git a/Handwriting program/Handwriting program/bin/Debug/Handwriting program.dll b/Handwriting program/Handwriting program/bin/Debug/Handwriting program.dll new file mode 100644 index 0000000..d949d4e Binary files /dev/null and b/Handwriting program/Handwriting program/bin/Debug/Handwriting program.dll differ diff --git a/Handwriting program/Handwriting program/bin/Debug/Handwriting program.dll.config b/Handwriting program/Handwriting program/bin/Debug/Handwriting program.dll.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/Handwriting program/Handwriting program/bin/Debug/Handwriting program.dll.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Handwriting program/Handwriting program/bin/Debug/Handwriting program.pdb b/Handwriting program/Handwriting program/bin/Debug/Handwriting program.pdb new file mode 100644 index 0000000..b9cda3d Binary files /dev/null and b/Handwriting program/Handwriting program/bin/Debug/Handwriting program.pdb differ diff --git a/Handwriting program/Handwriting program/bin/Debug/Handwriting program.vshost.exe b/Handwriting program/Handwriting program/bin/Debug/Handwriting program.vshost.exe new file mode 100644 index 0000000..c0dfecc Binary files /dev/null and b/Handwriting program/Handwriting program/bin/Debug/Handwriting program.vshost.exe differ diff --git a/Handwriting program/Handwriting program/bin/Debug/Handwriting program.vshost.exe.config b/Handwriting program/Handwriting program/bin/Debug/Handwriting program.vshost.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/Handwriting program/Handwriting program/bin/Debug/Handwriting program.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Handwriting program/Handwriting program/bin/Debug/Handwriting program.vshost.exe.manifest b/Handwriting program/Handwriting program/bin/Debug/Handwriting program.vshost.exe.manifest new file mode 100644 index 0000000..f96b1d6 --- /dev/null +++ b/Handwriting program/Handwriting program/bin/Debug/Handwriting program.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Handwriting program/Handwriting program/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/Handwriting program/Handwriting program/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..4239caf Binary files /dev/null and b/Handwriting program/Handwriting program/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/Handwriting program/Handwriting program/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Handwriting program/Handwriting program/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..54f6b18 Binary files /dev/null and b/Handwriting program/Handwriting program/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Handwriting program/Handwriting program/obj/Debug/Handwriting program.csproj.FileListAbsolute.txt b/Handwriting program/Handwriting program/obj/Debug/Handwriting program.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..c06f0d8 --- /dev/null +++ b/Handwriting program/Handwriting program/obj/Debug/Handwriting program.csproj.FileListAbsolute.txt @@ -0,0 +1,19 @@ +D:\Z - Norbi cucca\0 Projektek\Handwriting program\Handwriting program\bin\Debug\Handwriting program.pdb +D:\Z - Norbi cucca\0 Projektek\Handwriting program\Handwriting program\obj\Debug\Handwriting_program.Form1.resources +D:\Z - Norbi cucca\0 Projektek\Handwriting program\Handwriting program\obj\Debug\Handwriting_program.Handwriting.resources +D:\Z - Norbi cucca\0 Projektek\Handwriting program\Handwriting program\obj\Debug\Handwriting_program.Properties.Resources.resources +D:\Z - Norbi cucca\0 Projektek\Handwriting program\Handwriting program\obj\Debug\Handwriting program.csproj.GenerateResource.Cache +D:\Z - Norbi cucca\0 Projektek\Handwriting program\Handwriting program\obj\Debug\Handwriting program.pdb +D:\Z - Norbi cucca\0 Projektek\Handwriting program\Handwriting program\bin\Debug\Handwriting program.dll.config +D:\Z - Norbi cucca\0 Projektek\Handwriting program\Handwriting program\bin\Debug\Handwriting program.dll +D:\Z - Norbi cucca\0 Projektek\Handwriting program\Handwriting program\obj\Debug\Handwriting program.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\bin\Debug\Handwriting program.dll.config +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\bin\Debug\Handwriting program.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\bin\Debug\Handwriting program.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\obj\Debug\Handwriting_program.Form1.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\obj\Debug\Handwriting_program.Handwriting.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\obj\Debug\Handwriting_program.Properties.Resources.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\obj\Debug\Handwriting program.csproj.GenerateResource.Cache +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\obj\Debug\Handwriting program.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\obj\Debug\Handwriting program.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Handwriting program\Handwriting program\obj\Debug\Handwriting program.csprojResolveAssemblyReference.cache diff --git a/Handwriting program/Handwriting program/obj/Debug/Handwriting program.csproj.GenerateResource.Cache b/Handwriting program/Handwriting program/obj/Debug/Handwriting program.csproj.GenerateResource.Cache new file mode 100644 index 0000000..c24b036 Binary files /dev/null and b/Handwriting program/Handwriting program/obj/Debug/Handwriting program.csproj.GenerateResource.Cache differ diff --git a/Handwriting program/Handwriting program/obj/Debug/Handwriting program.csprojResolveAssemblyReference.cache b/Handwriting program/Handwriting program/obj/Debug/Handwriting program.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..f0ed9bd Binary files /dev/null and b/Handwriting program/Handwriting program/obj/Debug/Handwriting program.csprojResolveAssemblyReference.cache differ diff --git a/Handwriting program/Handwriting program/obj/Debug/Handwriting program.dll b/Handwriting program/Handwriting program/obj/Debug/Handwriting program.dll new file mode 100644 index 0000000..d949d4e Binary files /dev/null and b/Handwriting program/Handwriting program/obj/Debug/Handwriting program.dll differ diff --git a/Handwriting program/Handwriting program/obj/Debug/Handwriting program.pdb b/Handwriting program/Handwriting program/obj/Debug/Handwriting program.pdb new file mode 100644 index 0000000..b9cda3d Binary files /dev/null and b/Handwriting program/Handwriting program/obj/Debug/Handwriting program.pdb differ diff --git a/Handwriting program/Handwriting program/obj/Debug/Handwriting_program.Form1.resources b/Handwriting program/Handwriting program/obj/Debug/Handwriting_program.Form1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Handwriting program/Handwriting program/obj/Debug/Handwriting_program.Form1.resources differ diff --git a/Handwriting program/Handwriting program/obj/Debug/Handwriting_program.Handwriting.resources b/Handwriting program/Handwriting program/obj/Debug/Handwriting_program.Handwriting.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Handwriting program/Handwriting program/obj/Debug/Handwriting_program.Handwriting.resources differ diff --git a/Handwriting program/Handwriting program/obj/Debug/Handwriting_program.Properties.Resources.resources b/Handwriting program/Handwriting program/obj/Debug/Handwriting_program.Properties.Resources.resources new file mode 100644 index 0000000..7d8e885 Binary files /dev/null and b/Handwriting program/Handwriting program/obj/Debug/Handwriting_program.Properties.Resources.resources differ diff --git a/Handwriting program/Handwriting program/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/Handwriting program/Handwriting program/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..78246e4 Binary files /dev/null and b/Handwriting program/Handwriting program/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/Handwriting program/Handwriting program/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Handwriting program/Handwriting program/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Handwriting program/Handwriting program/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/Handwriting program/Handwriting program/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Handwriting program/Handwriting program/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/MSGer.tk/AboutBox1.cs b/MSGer.tk/AboutBox1.cs index 583008b..d217f47 100644 --- a/MSGer.tk/AboutBox1.cs +++ b/MSGer.tk/AboutBox1.cs @@ -9,7 +9,7 @@ using System.Windows.Forms; namespace MSGer.tk { - partial class AboutBox1 : Form + partial class AboutBox1 : ThemedForms { public AboutBox1() { diff --git a/MSGer.tk/AddPartner.cs b/MSGer.tk/AddPartner.cs index 13535ea..80561f1 100644 --- a/MSGer.tk/AddPartner.cs +++ b/MSGer.tk/AddPartner.cs @@ -11,7 +11,7 @@ using System.Windows.Forms; namespace MSGer.tk { - public partial class AddPartner : Form + public partial class AddPartner : ThemedForms { public AddPartner() { @@ -20,7 +20,7 @@ namespace MSGer.tk 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"); + glacialList1.Columns[0].Text = Language.Translate("username"); gobtn.Text = Language.Translate("addcontact_add"); } diff --git a/MSGer.tk/BeforeLogin.Designer.cs b/MSGer.tk/BeforeLogin.Designer.cs new file mode 100644 index 0000000..cbd9cc2 --- /dev/null +++ b/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/MSGer.tk/BeforeLogin.cs b/MSGer.tk/BeforeLogin.cs new file mode 100644 index 0000000..4b648d6 --- /dev/null +++ b/MSGer.tk/BeforeLogin.cs @@ -0,0 +1,64 @@ +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 : ThemedForms + { + 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(); + } + + 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 (!done) + Program.Exit(false); + } + } +} diff --git a/MSGer.tk/BeforeLogin.resx b/MSGer.tk/BeforeLogin.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/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/MSGer.tk/ChatForm.Designer.cs b/MSGer.tk/ChatForm.Designer.cs index 73391d0..80c8738 100644 --- a/MSGer.tk/ChatForm.Designer.cs +++ b/MSGer.tk/ChatForm.Designer.cs @@ -28,171 +28,22 @@ /// 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/MSGer.tk/ChatForm.cs b/MSGer.tk/ChatForm.cs index 1721dc3..0fcc68d 100644 --- a/MSGer.tk/ChatForm.cs +++ b/MSGer.tk/ChatForm.cs @@ -21,198 +21,19 @@ using HdSystemLibrary.IO; namespace MSGer.tk { - public partial class ChatForm : Form + public partial class ChatForm : ThemedForms { - public static List ChatWindows = new List(); - public List ChatPartners = new List(); 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; - } - } - } - } - - 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; - 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); + this.Text = Language.Translate("chat_title", this); } 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 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 (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; - } + //chatPanel.Close(); } } } diff --git a/MSGer.tk/ChatForm.resx b/MSGer.tk/ChatForm.resx index 3a7d671..29dcb1b 100644 --- a/MSGer.tk/ChatForm.resx +++ b/MSGer.tk/ChatForm.resx @@ -117,7 +117,4 @@ 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/MSGer.tk/ChatPanel.Designer.cs b/MSGer.tk/ChatPanel.Designer.cs new file mode 100644 index 0000000..fa13603 --- /dev/null +++ b/MSGer.tk/ChatPanel.Designer.cs @@ -0,0 +1,296 @@ +namespace MSGer.tk +{ + partial class ChatPanel + { + /// + /// 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 Component 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.partnerName = new Khendys.Controls.ExRichTextBox(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.showicons = new System.Windows.Forms.CheckBox(); + this.button1 = new System.Windows.Forms.Button(); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.splitContainer2 = new System.Windows.Forms.SplitContainer(); + this.splitContainer3 = new System.Windows.Forms.SplitContainer(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.masterPanel = new System.Windows.Forms.Panel(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.panel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); + this.splitContainer2.Panel1.SuspendLayout(); + this.splitContainer2.Panel2.SuspendLayout(); + this.splitContainer2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit(); + this.splitContainer3.Panel1.SuspendLayout(); + this.splitContainer3.Panel2.SuspendLayout(); + this.splitContainer3.SuspendLayout(); + this.menuStrip1.SuspendLayout(); + this.masterPanel.SuspendLayout(); + this.SuspendLayout(); + // + // messageTextBox + // + this.messageTextBox.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.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(0, 3); + this.messageTextBox.Name = "messageTextBox"; + this.messageTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; + this.messageTextBox.Size = new System.Drawing.Size(391, 113); + 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.BackColor = System.Drawing.Color.White; + this.recentMsgTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.recentMsgTextBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.recentMsgTextBox.ForeColor = System.Drawing.Color.Black; + this.recentMsgTextBox.HiglightColor = Khendys.Controls.RtfColor.White; + this.recentMsgTextBox.Location = new System.Drawing.Point(0, 0); + this.recentMsgTextBox.Name = "recentMsgTextBox"; + this.recentMsgTextBox.ReadOnly = true; + this.recentMsgTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; + this.recentMsgTextBox.Size = new System.Drawing.Size(391, 160); + this.recentMsgTextBox.TabIndex = 4; + 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.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(169, 363); + this.panel1.TabIndex = 0; + // + // panel2 + // + this.panel2.Controls.Add(this.partnerName); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(391, 39); + this.panel2.TabIndex = 0; + // + // 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(337, 25); + this.partnerName.TabIndex = 3; + this.partnerName.Text = "partnerName"; + this.partnerName.TextColor = Khendys.Controls.RtfColor.Black; + // + // openFileDialog1 + // + this.openFileDialog1.FileName = "openFileDialog1"; + // + // showicons + // + this.showicons.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.showicons.AutoSize = true; + this.showicons.Location = new System.Drawing.Point(2, 126); + this.showicons.Name = "showicons"; + this.showicons.Size = new System.Drawing.Size(76, 17); + this.showicons.TabIndex = 1; + this.showicons.Text = "showicons"; + this.showicons.UseVisualStyleBackColor = true; + this.showicons.CheckedChanged += new System.EventHandler(this.showicons_CheckedChanged); + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.button1.Location = new System.Drawing.Point(313, 122); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 2; + this.button1.Text = "handwriting"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // splitContainer1 + // + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer1.Location = new System.Drawing.Point(0, 0); + this.splitContainer1.Name = "splitContainer1"; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.panel1); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.splitContainer2); + this.splitContainer1.Size = new System.Drawing.Size(564, 363); + this.splitContainer1.SplitterDistance = 169; + this.splitContainer1.TabIndex = 7; + this.splitContainer1.TabStop = false; + // + // splitContainer2 + // + this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer2.Location = new System.Drawing.Point(0, 0); + this.splitContainer2.Name = "splitContainer2"; + this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer2.Panel1 + // + this.splitContainer2.Panel1.Controls.Add(this.splitContainer3); + // + // splitContainer2.Panel2 + // + this.splitContainer2.Panel2.Controls.Add(this.showicons); + this.splitContainer2.Panel2.Controls.Add(this.button1); + this.splitContainer2.Panel2.Controls.Add(this.messageTextBox); + this.splitContainer2.Size = new System.Drawing.Size(391, 363); + this.splitContainer2.SplitterDistance = 203; + this.splitContainer2.TabIndex = 2; + this.splitContainer2.TabStop = false; + // + // splitContainer3 + // + this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer3.Location = new System.Drawing.Point(0, 0); + this.splitContainer3.Name = "splitContainer3"; + this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer3.Panel1 + // + this.splitContainer3.Panel1.Controls.Add(this.panel2); + // + // splitContainer3.Panel2 + // + this.splitContainer3.Panel2.Controls.Add(this.recentMsgTextBox); + this.splitContainer3.Size = new System.Drawing.Size(391, 203); + this.splitContainer3.SplitterDistance = 39; + this.splitContainer3.TabIndex = 2; + this.splitContainer3.TabStop = false; + // + // menuStrip1 + // + this.menuStrip1.BackgroundImage = global::MSGer.tk.Properties.Resources.Menü_2; + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileToolStripMenuItem}); + 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(564, 24); + this.menuStrip1.TabIndex = 0; + this.menuStrip1.Text = "menuStrip1"; + // + // masterPanel + // + this.masterPanel.Controls.Add(this.splitContainer1); + this.masterPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.masterPanel.Location = new System.Drawing.Point(0, 24); + this.masterPanel.Name = "masterPanel"; + this.masterPanel.Size = new System.Drawing.Size(564, 363); + this.masterPanel.TabIndex = 0; + // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.fileToolStripMenuItem.Text = "File"; + // + // ChatPanel + // + 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.Controls.Add(this.masterPanel); + this.Controls.Add(this.menuStrip1); + this.Name = "ChatPanel"; + this.Size = new System.Drawing.Size(564, 387); + this.Load += new System.EventHandler(this.ChatForm_Load); + this.panel2.ResumeLayout(false); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); + this.splitContainer1.ResumeLayout(false); + this.splitContainer2.Panel1.ResumeLayout(false); + this.splitContainer2.Panel2.ResumeLayout(false); + this.splitContainer2.Panel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); + this.splitContainer2.ResumeLayout(false); + this.splitContainer3.Panel1.ResumeLayout(false); + this.splitContainer3.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit(); + this.splitContainer3.ResumeLayout(false); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.masterPanel.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; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + private System.Windows.Forms.CheckBox showicons; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.SplitContainer splitContainer2; + private System.Windows.Forms.SplitContainer splitContainer3; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.Panel masterPanel; + private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; + } +} diff --git a/MSGer.tk/ChatPanel.cs b/MSGer.tk/ChatPanel.cs new file mode 100644 index 0000000..cce50eb --- /dev/null +++ b/MSGer.tk/ChatPanel.cs @@ -0,0 +1,370 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.IO; +using System.Net; +using System.Net.Sockets; +using HdSystemLibrary.IO; +using System.Diagnostics; +using Handwriting_program; + +namespace MSGer.tk +{ + public partial class ChatPanel : UserControl + { + //public static List ChatWindows = new List(); + public static List ChatWindows = new List(); + public List ChatPartners = new List(); + private string chatname = ""; + public string ChatName //2014.12.13. - A beszélgetés neve + { + get + { + return chatname; + } + set + { + chatname = value; + this.Text = chatname; + } + } + public ChatPanel() + { + InitializeComponent(); + //Amint létrehozom, ez a kód lefut - Nem számit, hogy megjelenik-e + + this.Text = Language.Translate("chat_title", this); + showicons.Text = Language.Translate("chat_showicons", 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) - A partnerinformációkat bal oldalt jelezze, akárhányan vannak, hogy egységes legyen + { - Felül a csoportnév látszódjon + partnerName.Text = ChatPartners[0].Name; + TextFormat.Parse(partnerName); + partnerMsg.Text = ChatPartners[0].Message; + TextFormat.Parse(partnerMsg); + switch (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; + } + } + }*/ + if (ChatName.Length == 0) + { + this.Text = ""; + foreach (var item in ChatPartners) + this.Text += item.Name + ", "; + this.Text = this.Text.Remove(this.Text.Length - 2); + partnerName.Text = this.Text; + this.Text += " - " + Language.Translate("chat_title"); + Language.ReloadEvent += delegate + { + if (ChatName.Length != 0) + return; + this.Text = ""; + foreach (var item in ChatPartners) + this.Text += item.Name + ", "; + this.Text = this.Text.Remove(this.Text.Length - 2); + partnerName.Text = this.Text; + this.Text += " - " + Language.Translate("chat_title"); + }; + } + else + { + this.Text = ChatName; + } + Parent.Parent.Text = this.Text; //2014.12.22. + messageTextBox.Select(); + } + + 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 || !messageTextBox.Visible) //Visible: 2014.11.07. + return; + messageTextBox.ReadOnly = true; + if (!Networking.SendChatMessage(this, messageTextBox.Text)) + MessageBox.Show(Language.Translate("networking_alone")); + else //else: 2014.10.31. + messageTextBox.Text = ""; + //messageTextBox.Focus(); + messageTextBox.Select(); //2014.12.13. + 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); + } + + /*private void ChatForm_FormClosing(object sender, FormClosingEventArgs e) + { + ChatWindows.Remove(this); + }*/ + + public static ChatPanel 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; + } + + 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 (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; + } + } + + public void Close() + { + ChatWindows.Remove(this); + if (Storage.Settings["chatwindow"] == "0" ^ SettingsForm.ApplyingSettings) //Ha az új beállítás szerint(!) külön ablakokban kell megjeleníteni, akkor hajtsa végre + { //2014.10.31. + this.Dispose(); + if (ChatIcon != null) //Most már nem feltétlenül változik a beállítás + ChatIcon.Dispose(); + } + /*else + ((Form)this.Parent).Close();*/ + } + + public void Init() + { //2014.10.28. + if (!Storage.LoggedInSettings.ContainsKey("chatwindow")) //2014.12.05. + Storage.LoggedInSettings.Add("chatwindow", "0"); //2014.12.05. + if (Storage.Settings["chatwindow"] == "1") + { + //ChatForm a ChatPanel-lel + var cf = new ChatForm(); + cf.Controls.Add(this); + cf.FormClosing += cf_FormClosing; + this.Dock = DockStyle.Fill; + cf.Show(); + //cf.Focus(); + cf.Select(); //2014.12.13. + } + else + { + Program.MainF.Controls.Add(this); + Program.MainF.PlaceChatIcon(this); + this.BringToFront(); + this.Show(); + } + } + + void cf_FormClosing(object sender, FormClosingEventArgs e) + { + this.Close(); + } + + internal static void ReopenChatWindows(bool settingchanged) + { + for (int i = 0; i < ChatWindows.Count; i++) + { + var tmp = ChatWindows[i].ChatPartners; + if (settingchanged) + { + if (Storage.Settings["chatwindow"] == "0") //Ha az új beállítás szerint(!) külön ablakokban kell megjeleníteni, akkor hajtsa végre + ((Form)ChatWindows[i].Parent.Parent).Close(); //Ezzel meghívja a saját Close()-ját is + else + ChatWindows[i].Close(); + } + else + { + if (Storage.Settings["chatwindow"] == "1") //Ha a régi beállítás szerint(!) külön ablakokban kell megjeleníteni, akkor hajtsa végre + ((Form)ChatWindows[i].Parent.Parent).Close(); //Ezzel meghívja a saját Close()-ját is + else + ChatWindows[i].Close(); + } + var tmp2 = new ChatPanel(); + tmp2.ChatPartners = tmp; + tmp2.Init(); + ChatWindows.Add(tmp2); + } + } + + public new void Show() + { + if (Storage.Settings["chatwindow"] == "0") + { + foreach (var item in ChatWindows) + { + item.Hide(); + } + //this.Location = new Point(this.ChatIcon.Location.X + 150, this.ChatIcon.Location.Y); + //A ChatIcon-hoz a legközelebbi helyre rakja - Vagy fedje be kb. a partnerlistát, úgyis elég nagy + this.Location = new Point(150, Program.MainF.contactList.Location.Y); + } + base.Show(); + } + + public PictureBox ChatIcon { get; set; } + + public Handwriting handw; + private void button1_Click(object sender, EventArgs e) + { + if (messageTextBox.Visible) + { + if (handw == null) + { + handw = new Handwriting(); + handw.Parent = this.splitContainer2.Panel2; + handw.Bounds = messageTextBox.Bounds; + handw.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + handw.sendbtn.Text = Language.Translate("sendbtn_send", handw.sendbtn); + handw.sendbtn.Click += Handw_sendbtn_Click; + } + else + handw.Show(); + messageTextBox.Hide(); + } + else + { + handw.Hide(); + messageTextBox.Show(); + } + } + + void Handw_sendbtn_Click(object sender, EventArgs e) + { + handw.GetBitmap().Save("test.bmp"); + } + } +} diff --git a/MSGer.tk/ChatPanel.resx b/MSGer.tk/ChatPanel.resx new file mode 100644 index 0000000..cbf9d91 --- /dev/null +++ b/MSGer.tk/ChatPanel.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 157, 17 + + \ No newline at end of file diff --git a/MSGer.tk/CurrentUser.cs b/MSGer.tk/CurrentUser.cs index aea56d1..1ce0617 100644 --- a/MSGer.tk/CurrentUser.cs +++ b/MSGer.tk/CurrentUser.cs @@ -131,7 +131,8 @@ namespace MSGer.tk SendUpdate(); } } - public static IPAddress IP; + //public static IPAddress IP; + public static List IPs; public static string[] Keys { //2014.09.08-09. get @@ -170,6 +171,21 @@ namespace MSGer.tk Storage.LoggedInSettings["currentuser_keys"] = value.ToString(); } } + public static int PicUpdateTime + { + get + { + if (!Storage.LoggedInSettings.ContainsKey("currentuser_picupdatetime")) + Storage.LoggedInSettings.Add("currentuser_picupdatetime", "0"); + return Int32.Parse(Storage.LoggedInSettings["currentuser_picupdatetime"]); + } + set + { + if (!Storage.LoggedInSettings.ContainsKey("currentuser_picupdatetime")) + Storage.LoggedInSettings.Add("currentuser_picupdatetime", "0"); + Storage.LoggedInSettings["currentuser_picupdatetime"] = value.ToString(); + } + } public static bool SendChanges = false; public static void SendUpdate() @@ -188,20 +204,24 @@ namespace MSGer.tk 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 - { - if (Networking.ParsePacket(item).Data[0] == 0x01) //2014.09.19. - fine = true; - } - if (fine) - break; - } + retstr += UserID + "_picupdatetime=" + PicUpdateTime; + //while (true) + //{ + //byte[][] resp = Networking.SendUpdate(Networking.UpdateType.ListUpdate, Encoding.Unicode.GetBytes(retstr), false); + //bool fine = false; //Elvileg így az event működésekor is tudja használni, és utána ha minden rendben, akkor törli az objectet + Networking.SendUpdateInThread(Networking.UpdateType.ListUpdate, Encoding.Unicode.GetBytes(retstr), null); + /*(e, resp) => + { + if (resp == null || resp.Length == 0) + fine = true; + foreach (var item in resp) //Ha sehonnan nem kapott választ (egy perc után), újrapróbálkozik + { + if (Networking.ParsePacket(item).Data[0] == 0x01) //2014.09.19. + fine = true; + }*/ + /*if (fine) + break;*/ + //} } } } diff --git a/MSGer.tk/ICMPPacket.cs b/MSGer.tk/ICMPPacket.cs new file mode 100644 index 0000000..bc0378e --- /dev/null +++ b/MSGer.tk/ICMPPacket.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; + +namespace MSGer.tk +{ + public static class ICMPPacket + { + public const byte Type = ICMP_ECHO; + public const byte SubCode = 0; + public const byte RespType = ICMP_TIME_EXCEEDED; + public const byte RespCode = 1; + public const UInt16 CheckSum = 0; + public const UInt16 Identifier = 52; + public const UInt16 SequenceNumber = 84; + public static readonly byte[] Data = Encoding.Unicode.GetBytes("MSGer.tk connection"); + + public const byte ICMP_ECHO = 8; + public const byte ICMP_REPLY = 0; + public const byte ICMP_TIME_EXCEEDED = 11; + + public static byte[] CreateRequest() //2015.02.05. + { + var data = new List(); + data.Add(Type); + data.Add(SubCode); + data.AddRange(BitConverter.GetBytes(CheckSum)); + data.AddRange(BitConverter.GetBytes(Identifier)); + data.AddRange(BitConverter.GetBytes(SequenceNumber)); + data.AddRange(Data); + return data.ToArray(); + } + + public static byte[] CreateReply() + { + //ICMPPacket packet = new ICMPPacket(); + var data = new List(); + data.Add(RespType); + data.Add(RespCode); + data.AddRange(BitConverter.GetBytes(CheckSum)); + data.AddRange(BitConverter.GetBytes((int)0)); //4 bytes unused + data.AddRange(CreateRequest()); //Original packet + return data.ToArray(); + } + + public static bool IsPacketGood(byte[] bytes) + { + return (bytes[0] == ICMP_TIME_EXCEEDED); + } + } +} diff --git a/MSGer.tk/InvitePartner.cs b/MSGer.tk/InvitePartner.cs index 9e250d1..f058542 100644 --- a/MSGer.tk/InvitePartner.cs +++ b/MSGer.tk/InvitePartner.cs @@ -10,7 +10,7 @@ using System.Windows.Forms; namespace MSGer.tk { - public partial class InvitePartner : Form + public partial class InvitePartner : ThemedForms { public InvitePartner() { diff --git a/MSGer.tk/Language.cs b/MSGer.tk/Language.cs index 2efaf17..ca28fd2 100644 --- a/MSGer.tk/Language.cs +++ b/MSGer.tk/Language.cs @@ -15,6 +15,8 @@ namespace MSGer.tk public Dictionary Strings = new Dictionary(); + private static Dictionary Controls = new Dictionary(); + private Language(string lang) { UsedLangs.Add(lang, this); @@ -33,7 +35,16 @@ namespace MSGer.tk { string[] lines = File.ReadAllLines(files[x]); var dict = lines.Select(l => l.Split('=')).ToDictionary(a => a[0], a => a[1]); - 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 + var finaldict = new Dictionary(); + foreach(var item in dict) + { + var spl = item.Key.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + foreach(var key in spl) + { + finaldict.Add(key, item.Value); //Hozzáadja az összes felsorolt keyt külön, ugyanazzal az értékkel + } + } + new Language(new FileInfo(files[x]).Name.Split('.')[0]).Strings = finaldict; //(FileInfo: 2014.09.01.) - Eltárol egy új nyelvet, majd a szövegeket hozzátársítja } /*if (Language.FromString(Storage.Settings["lang"]) == null) @@ -66,20 +77,32 @@ namespace MSGer.tk UsedLangs.TryGetValue(value, out tmp); return tmp; } - public static Language GetCuurentLanguage() + public static Language GetCurrentLanguage() //Javítva Cuurent-ről Current-re: 2014.12.13. - Már régóta ki akartam javítani { return Language.FromString(Storage.Settings["lang"]); } - public static string Translate(string id) + public static string Translate(string id, Control defaultevent = null) //Csak akkor kell az event, ha látszódik az adott ablak, amikor átállítódik - Tehát csak MainForm és ChatForm { //2014.08.19. - Language lang = GetCuurentLanguage(); + Language lang = GetCurrentLanguage(); if (lang.Strings.ContainsKey(id)) + { + if (defaultevent != null) //2014.12.22. + ReloadEvent += delegate { defaultevent.Text = lang.Strings[id]; }; //2014.12.22. return lang.Strings[id]; + } else { MessageBox.Show("Translation string not found: " + id + "\nIn file: " + lang + ".txt"); return "Str not found"; } } + public static event EventHandler ReloadEvent; + public static void ReloadLangs() + { + ChatPanel.ReopenChatWindows(false); + ReloadEvent(null, null); + Program.MainF.contactList.Items.Clear(); + Program.MainF.LoadPartnerList(); + } } } diff --git a/MSGer.tk/Logging.cs b/MSGer.tk/Logging.cs new file mode 100644 index 0000000..982b180 --- /dev/null +++ b/MSGer.tk/Logging.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace MSGer.tk +{ + public class Logging + { + public enum LogType + { + Network + } + public static void Log(string message, LogType logtype) //2014.12.31. + { + if (!Directory.Exists("logs")) + Directory.CreateDirectory("logs"); + string path; + switch (logtype) + { + case LogType.Network: + path = "network"; + break; + default: + throw new NotImplementedException("Log type not implemented."); + } + string finaltext = "[" + Process.GetCurrentProcess().Id + ": " + Thread.CurrentThread.Name + " | " + DateTime.Now.ToString("yyyy.MM.dd. HH:mm:ss") + "] " + message + Environment.NewLine; + Console.WriteLine(logtype.ToString() + " - " + finaltext); + while(true) + { + bool retry = false; + try + { + File.AppendAllText("logs\\" + path + ".txt", finaltext); + } + catch(IOException) + { + retry = true; + } + if (!retry) + break; + } + } + } +} diff --git a/MSGer.tk/LoginForm.Designer.cs b/MSGer.tk/LoginForm.Designer.cs index 645f043..9318efa 100644 --- a/MSGer.tk/LoginForm.Designer.cs +++ b/MSGer.tk/LoginForm.Designer.cs @@ -173,6 +173,15 @@ this.Text = "Bejelentkezés"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.LoginForm_FormClosing); this.Load += new System.EventHandler(this.LoginForm_Load); + this.Controls.SetChildIndex(this.label1, 0); + this.Controls.SetChildIndex(this.label2, 0); + this.Controls.SetChildIndex(this.textBox1, 0); + this.Controls.SetChildIndex(this.label3, 0); + this.Controls.SetChildIndex(this.textBox2, 0); + this.Controls.SetChildIndex(this.button1, 0); + this.Controls.SetChildIndex(this.textBox3, 0); + this.Controls.SetChildIndex(this.linkLabel1, 0); + this.Controls.SetChildIndex(this.linkLabel2, 0); this.ResumeLayout(false); this.PerformLayout(); diff --git a/MSGer.tk/LoginForm.LoginUser.cs b/MSGer.tk/LoginForm.LoginUser.cs new file mode 100644 index 0000000..a1e92e3 --- /dev/null +++ b/MSGer.tk/LoginForm.LoginUser.cs @@ -0,0 +1,206 @@ +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 +{ + partial class LoginForm + { + 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. + /*postData += "&myip=" + Dns.GetHostEntry(Dns.GetHostName()).AddressList.Single(entry => + entry.AddressFamily == AddressFamily.InterNetwork + && (entry.ToString().Contains("192.168.0.") || entry.ToString().Contains("192.168.1.") || entry.ToString().Contains("10.0.0.") || entry.ToString().Contains("172.16.0.")) //Helyi IP-k + ); //2014.11.15. - Pontok téve az IP-prefixek után, hogy pontos legyen az egyezés: 2014.12.22. + */ //Nincs már szükség rá; IPv6 + 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; + } + } + + 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(); + + /* + * respstr: + * 0: uid + * 1: username + * 2: myip + * 3: server ips + * 4: non-server ips + * 5: server same ips + * 6: non-server same ips + * 7: password + */ + string[] respstr = responseString.Split('ͦ'); + + //if (respstr[3].Contains("Fail")) + if(respstr.Any(entry=>entry.Contains("Fail"))) //2014.12.05. + { + this.Invoke(new MyDelegate(ResetAfterLogin)); + //MessageBox.Show(respstr[3]); + try + { + MessageBox.Show(respstr.Single(entry => entry.Contains("Fail"))); //2014.12.05. + } + catch { } + return; + } + //string[] entries = respstr[(int)LoginInfo.ServerIPs].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); + string[] entries = respstr[(int)LoginInfo.IPs].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 = new HashSet(ips); //2014.08.30. + //UserInfo.IPs = new HashSet(ips.Select(entry => new IPEndPoint(entry, true))); //2014.11.23. + //CurrentUser.IP = IPAddress.Parse(respstr[(int)LoginInfo.MyIP]); //2014.10.24. - Most már csak ott lehet rá hivatkozni, felesleges eltárolni + CurrentUser.IPs = new List(respstr[(int)LoginInfo.MyIP].Split(new char[] { ';' }).Select(entry => IPAddress.Parse(entry))); + + /*entries = respstr[(int)LoginInfo.NonServerIPs].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); + ips = entries.Select(entry => ((entry != ":") ? new IPEndPoint(IPAddress.Parse(entry.Split(':')[0]), Int32.Parse(entry.Split(':')[1])) : new IPEndPoint(IPAddress.Loopback, 0))); + foreach (var item in ips) + UserInfo.IPs.Add(new IPEndPoint(item, false)); //2014.11.23.*/ + + /*entries = respstr[(int)LoginInfo.ServerIPsOnNAT].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); //2014.12.18. + ips = entries.Select(entry => ((entry != ":") ? new IPEndPoint(IPAddress.Parse(entry.Split(':')[0]), Int32.Parse(entry.Split(':')[1])) : new IPEndPoint(IPAddress.Loopback, 0))); //2014.12.18. + foreach (var item in ips) //2014.12.18. + UserInfo.IPs.Add(new IPEndPoint(item, true)); //2014.12.18.*/ + + /*entries = respstr[(int)LoginInfo.NonServerIPsOnNat].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); //2014.12.18. + ips = entries.Select(entry => ((entry != ":") ? new IPEndPoint(IPAddress.Parse(entry.Split(':')[0]), Int32.Parse(entry.Split(':')[1])) : new IPEndPoint(IPAddress.Loopback, 0))); //2014.12.18. + foreach (var item in ips) //2014.12.18. + UserInfo.IPs.Add(new IPEndPoint(item, false)); //2014.12.18.*/ + + /*entries = respstr[(int)LoginInfo.IPs].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); + ips = entries.Select(entry => ((entry != ":") ? new IPEndPoint(IPAddress.Parse(entry.Split(':')[0]), Int32.Parse(entry.Split(':')[1])) : new IPEndPoint(IPAddress.Loopback, 0))); + f*oreach (var item in ips) + UserInfo.IPs.Add(item);*/ + + //2014.09.19. - Bejelentkezés elküldése áthelyezve a MainForm-ba + + CurrentUser.UserID = Int32.Parse(respstr[(int)LoginInfo.UserID]); //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 = respstr[(int)LoginInfo.UserID] + ".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[(int)LoginInfo.Password]; //2014.10.24. 1:39 + LoginForm.UserCode = CalculateMD5Hash(ReceivedPass + " Some text because why not " + CurrentUser.UserID).ToLower(); + + Closeable = true; + this.Invoke(new MyDelegate(SetLoginValues)); + } + } + } +} diff --git a/MSGer.tk/LoginForm.RegistrationForm.cs b/MSGer.tk/LoginForm.RegistrationForm.cs index 08eabc5..b784d44 100644 --- a/MSGer.tk/LoginForm.RegistrationForm.cs +++ b/MSGer.tk/LoginForm.RegistrationForm.cs @@ -10,7 +10,7 @@ using System.Windows.Forms; namespace MSGer.tk { - public partial class LoginForm_RegistrationForm : Form + public partial class LoginForm_RegistrationForm : ThemedForms { public LoginForm_RegistrationForm() { diff --git a/MSGer.tk/LoginForm.cs b/MSGer.tk/LoginForm.cs index 10f6f45..83fd0ca 100644 --- a/MSGer.tk/LoginForm.cs +++ b/MSGer.tk/LoginForm.cs @@ -14,10 +14,11 @@ using System.IO; using System.Security.Cryptography; using System.Configuration; using System.Threading; +using System.Net.Sockets; namespace MSGer.tk { - public partial class LoginForm : Form + public partial class LoginForm : ThemedForms { public static string UserCode = ""; public static Thread LThread; @@ -127,148 +128,18 @@ namespace MSGer.tk { //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() + public enum LoginInfo { - //Á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; - } - } - - 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(); - string[] respstr = responseString.Split('ͦ'); - - 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 = new HashSet(ips); //2014.08.30. - CurrentUser.IP = IPAddress.Parse(respstr[2]); //2014.10.24. - Most már csak ott lehet rá hivatkozni, felesleges eltárolni - //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 = 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(ReceivedPass + " Some text because why not " + CurrentUser.UserID).ToLower(); - - Closeable = true; - this.Invoke(new MyDelegate(SetLoginValues)); - } + UserID, + UserName, + MyIP, + //ServerIPs, + //NonServerIPs, + //ServerIPsOnNAT, + //NonServerIPsOnNat, + IPs, + Password } public static string CalculateMD5Hash(string input) diff --git a/MSGer.tk/MSGer.tk.csproj b/MSGer.tk/MSGer.tk.csproj index 6b009a4..96fdef3 100644 --- a/MSGer.tk/MSGer.tk.csproj +++ b/MSGer.tk/MSGer.tk.csproj @@ -11,6 +11,7 @@ MSGer.tk v4.5 512 + false publish\ true Disk @@ -23,7 +24,6 @@ true 0 1.0.0.%2a - false false true @@ -45,6 +45,7 @@ TRACE prompt 4 + true true @@ -94,8 +95,15 @@ ChatForm.cs + + UserControl + + + ChatPanel.cs + + Form @@ -103,6 +111,7 @@ InvitePartner.cs + Form @@ -121,7 +130,12 @@ LoginForm.cs + + Form + + + Form @@ -144,6 +158,13 @@ + + + Form + + + ThemedForms.cs + @@ -172,6 +193,9 @@ ChatForm.cs + + ChatPanel.cs + InvitePartner.cs @@ -193,6 +217,7 @@ ResXFileCodeGenerator Resources.Designer.cs + Designer SelectPartnerForm.cs @@ -200,6 +225,14 @@ SettingsForm.cs + + ThemedForms.cs + + + Form + + + SettingsSingleFileGenerator Settings.Designer.cs @@ -255,11 +288,26 @@ - - {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + + {9ded0c68-3f97-4b14-88d8-f76a749f8943} + Handwriting program + + + {ae5ca7f1-d19e-479b-b06b-39c1280c5005} RichListView + + + {1C565858-F302-471E-B409-F180AA4ABEC6} + 1 + 0 + 0 + tlbimp + False + True + + OnlineServers*/ + //2014.12.31. + MessageBox.Show("Internal error: Network call was made in the same thread as the UI. This could lead to freezes.\nNetwork update canceled."); + return null; + } + } + + if (UserInfo.IPs.Count == 0 + && !UserInfo.IPs.Any(entry => entry.Address.Equals(RemoteEP.Address)) + && ut != Networking.UpdateType.LoginUser + /*&& ut != Networking.UpdateType.CheckConn + && ut != Networking.UpdateType.RequestConn + && ut != Networking.UpdateType.MakeConn + && ut != Networking.UpdateType.MakeConn2*/) //2014.12.19. + return null; + //Log("Packet sending begins: there are users online and/or it is an update type that does not require that."); + byte[] senddata = CreatePacket(response, (byte)ut, data); + //Log("Packet created successfully (" + ((response) ? "" : "not ") + "response) with update type " + ut.ToString()); + if (UserInfo.BanTime < Environment.TickCount - 1000 * 10) //2014.08.30. - 2014.10.09. - 10 percről 1-re csökkentve - 2014.11.22. - 1 percről 10 mp-re csökkentve + //UserInfo.BannedIPs = new List(); //2014.08.30. + UserInfo.BannedIPs = new List(); //2014.11.23. + 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. + } + //Log("Hole punching begins."); + /*if (ut != UpdateType.CheckConn && ut != UpdateType.RequestConn) + CheckNPunchHole(); //2014.11.22.*/ + //Log("Hole punching done."); + if (onlythisep == null) //2014.11.22. - != helyett ==: 2014.12.18. + { + //Log("Sending to every known user..."); + foreach (var item in UserInfo.IPs) + { //Elküldi az összes ismert címre + 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; + } + } + } + else + { //2014.11.22. + //Log("Sending to single ip: " + onlythisep.Address + ":" + onlythisep.Port); + try + { + //if (UserInfo.IPs.Any(entry=>entry.IP==onlythisep) && !UserInfo.BannedIPs.Any(entry=>entry.IP==onlythisep)) + //if (UserInfo.IPs.Any(entry => entry.IP == onlythisep) && !UserInfo.BannedIPs.Any(entry => entry.IP == onlythisep)) + SenderConnection.Send(senddata, senddata.Length, onlythisep); + } + catch (ObjectDisposedException) + { + return null; + } + } + + if (!response) + { + int lasttick = Environment.TickCount; + List Ret = new List(); + List ResponsedIPs = new List(); + int count = 1; + //Log("Starting to wait on response..."); + while (Environment.TickCount - 1000 * 10 < lasttick && ( + (onlythisep == null) ? //2014.11.22. + ResponsedIPs.Count < UserInfo.IPs.Count - UserInfo.BannedIPs.Count : + ResponsedIPs.Count == 0 //2014.11.22. + )) //2014.09.09. - 2014.10.09. - 60 mp --> 10 mp + { //2014.08.19. - Ret.Count == tmp.Length + if (MainForm.LThread != null) //2014.09.06. + { + //Log("Waiting to get response... Wait time: " + count * 2 + "seconds"); + 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 + { + SenderConnection.Send(senddata, senddata.Length, item.IP); + } + catch (ObjectDisposedException) + { + return null; + } + } + count++;*/ + } + if (DataBuffer == null) //2014.08.30. - Az idő telt le + { + //Log("No response received. Retrying..."); + //UserInfo.BannedIPs = UserInfo.IPs.Except(ResponsedIPs).ToList(); //2014.08.30. - Ideiglenesen kitilt minden IP-t, ahonnan nem érkezett válasz + //UserInfo.BanTime = Environment.TickCount; + + foreach (var item in UserInfo.IPs.Except(UserInfo.BannedIPs).Except(ResponsedIPs)) //2014.09.22. + { //Elküldi az összes ismert címre + try + { + SenderConnection.Send(senddata, senddata.Length, item); + } + catch (ObjectDisposedException) + { + return null; + } + } + count++; + //break; + continue; + } + //Log("A response received."); + //if (UserInfo.IPs.Any(entry=>entry.IP==RemoteEP) && !UserInfo.BannedIPs.Any(entry=>entry.IP==RemoteEP)) + if (!(!UserInfo.IPs.Any(entry => entry.Address.Equals(RemoteEP.Address)) + && ut != Networking.UpdateType.LoginUser + /*&& ut != Networking.UpdateType.CheckConn + && ut != Networking.UpdateType.RequestConn + && ut != Networking.UpdateType.MakeConn + && ut != Networking.UpdateType.MakeConn2*/)) //2014.12.22. - Ha az egész feltétel nem teljesül, akkor sikerült + { + //Log("Response is from known ip or it's not required to be that."); + //ResponsedIPs.Add(RemoteEP); + foreach (var item in UserInfo.IPs.Where(entry => entry == RemoteEP)) + ResponsedIPs.Add(item); + var pparts = ParsePacket(DataBuffer); + //Log("Packet parsed."); + if (pparts.KeyVersion != CurrentUser.KeyIndex && pparts.UpdateType != UpdateType.SetKey) + { + //Log("Key version mismatch."); + DataBuffer = null; //2014.09.22. - Mindig adja meg a lehetőséget, hogy újra beállítsa + continue; + } + //Log("Complete success!"); + + int i; + for (i = 0; i < Ret.Count; i++) + { + if (DataBuffer.SequenceEqual(Ret[i])) + break; + } + if (i == Ret.Count) + Ret.Add(DataBuffer); + } //(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 + } + //Log("Resetting everything."); + DataBuffer = null; + RemoteEP = null; + WaitingOnResponse = false; + WaitingOnPacket = 0x00; + //Log("Returning response if there was any."); + return Ret.ToArray(); + } + return null; + } + } +} diff --git a/MSGer.tk/Networking.Threads.cs b/MSGer.tk/Networking.Threads.cs new file mode 100644 index 0000000..c45ca10 --- /dev/null +++ b/MSGer.tk/Networking.Threads.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.NetworkInformation; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace MSGer.tk +{ + partial class Networking + { + //private const string ConnID = "MSGer.tk connection"; + /*public static void WaitForNewConnections() + { + while (true) + { + Ping pingSender = new Ping(); + //byte[] id = Encoding.Unicode.GetBytes(ConnID); + //PingReply reply = pingSender.Send("3.3.3.3", 30000, id, new PingOptions(512, true)); + Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp); + socket.SendTo(ICMPPacket.CreateRequest(), new IPEndPoint(IPAddress.Parse("3.3.3.3"), 8988)); + byte[] buffer = new byte[128]; + //IPEndPoint ep = new IPEndPoint(IPAddress.Any, 8988); + EndPoint ep = (EndPoint)new IPEndPoint(IPAddress.Any, 8988); + socket.ReceiveFrom(buffer, ref ep); + //if (reply.Status == IPStatus.TimeExceeded) + if(ICMPPacket.IsPacketGood(buffer)) + { + Log("A client is trying to connect..."); + //MakeConnection(reply.Address); + MakeConnection(((IPEndPoint)ep).Address); + } + else + { + //Log("An error occured during ICMP... - Status: " + reply.Status); + Log("An error occured during ICMP..."); + } + Thread.Sleep(28 * 1000); + } + } + public static void ConnectToServer(IPEndPoint server) + { + Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp); + socket.SendTo(ICMPPacket.CreateReply(),server); + } + + private static void MakeConnection(IPAddress addr) + { + + }*/ + + public static void KeepUpThread() + { //2014.08.28. + while (true) //while: 2014.12.19. + { + 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 + { + while (true) //while: 2014.12.19. + { + Thread.Sleep(20 * 1000); + Networking.SendUpdate(UpdateType.KeepAlive, new byte[] { 0x01 }, false); + } + } + + public static void SendUpdateInThread(UpdateType ut, byte[] data, EventHandler doneevent, IPEndPoint onlythisep = null) + { //2014.12.31. 0:24 - Válaszadásra van külön thread, itt csak eredeti küldést használhat + threadobject.Clear(); + threadobject.Add(ut); + threadobject.Add(data); + threadobject.Add(doneevent); + threadobject.Add(onlythisep); + while (networkthread == null) ; + networkthread.Interrupt(); + } + private static List threadobject = new List(); + private static Thread networkthread; + public static void NetworkThread() //A MainThread ezen keresztül hívja meg, hogy ne fagyjon le + { //2014.12.30. + networkthread = Thread.CurrentThread; + while (true) + { + try + { + Thread.Sleep(Timeout.Infinite); + } + catch (ThreadInterruptedException) + { + var resp = SendUpdate((UpdateType)threadobject[0], (byte[])threadobject[1], false, (IPEndPoint)threadobject[3]); + if (threadobject[2] != null) + ((EventHandler)threadobject[2])(null, resp); + } + } + } + } +} diff --git a/MSGer.tk/Networking.cs b/MSGer.tk/Networking.cs new file mode 100644 index 0000000..ab302b4 --- /dev/null +++ b/MSGer.tk/Networking.cs @@ -0,0 +1,140 @@ +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 partial class Networking + { + public enum UpdateType : byte + { + ListUpdate = 0x01, //0x01: OK + UpdateMessages, //0x01: OK + GetImage, //(int)0: Hiba, egyébként a kép hossza, majd a kép + LoginUser, //0x00: Hiba - Egyébként minden fontos információ, amiről "lemaradt" + LogoutUser, //0x01: OK + SetKey, //0x01: OK + KeepAlive, + /*CheckConn, //0x01: Csatlakozva + RequestConn, // + MakeConn, + MakeConn2*/ + }; + + private static void Log(string message) //2014.12.31. + { + Logging.Log(message, Logging.LogType.Network); + } + + /*public static byte[][] SendUpdate(UpdateType ut, byte[] data, bool response) - Opcionális paraméterre változtatva: 2014.12.22. + { //2014.11.22. + return SendUpdate(ut, data, response, null); + }*/ + /*private static void CheckNPunchHole() //Még előtte tudja meg a belső portot + { //2014.11.22. + try + { + foreach (var item in UserInfo.IPs.Except(UserInfo.BannedIPs)) + { + if (Thread.CurrentThread == MainForm.MainThread) + { + SendUpdateInThread(UpdateType.CheckConn, new byte[] { }, new EventHandler( + (e, resp) => + { + if (resp != null && resp.Length != 0 && ParsePacket(resp[0]).Data[0] == 0x01) + return; //Minden rendben, válaszolt + UserInfo.BannedIPs.Remove(item); //2014.12.19. + //if (Storage.Settings["isserver"] == "1") - Ha szerver, ha nem, kérje a többi szervert, hogy csatlakoztassa össze + resp = SendUpdate(UpdateType.RequestConn, Encoding.Unicode.GetBytes(item.ToString()), false); //Mindenkitől kéri, akivel van kapcsolata + if (resp != null && resp.Length != 0 && ParsePacket(resp[0]).Data[0] == 0x01) //2014.11.23. - Ilyenkor már tudnia kellene a portot, és hasonlókat + { + Networking.SendUpdate(UpdateType.MakeConn2, new byte[] { 0x01 }, false); //Elvileg akkor végez ez az utasítás, ha létrejött a kapcsolat, vagy letelt a határidő + } + } + ), item); + } + else + { + var resp = SendUpdate(UpdateType.CheckConn, new byte[] { }, false, item); + if (resp != null && resp.Length != 0 && ParsePacket(resp[0]).Data[0] == 0x01) + continue; //Minden rendben, válaszolt + UserInfo.BannedIPs.Remove(item); //2014.12.19. + //if (Storage.Settings["isserver"] == "1") - Ha szerver, ha nem, kérje a többi szervert, hogy csatlakoztassa össze + resp = SendUpdate(UpdateType.RequestConn, Encoding.Unicode.GetBytes(item.ToString()), false); //Mindenkitől kéri, akivel van kapcsolata + if (resp != null && resp.Length != 0 && ParsePacket(resp[0]).Data[0] == 0x01) //2014.11.23. - Ilyenkor már tudnia kellene a portot, és hasonlókat + { + Networking.SendUpdate(UpdateType.MakeConn2, new byte[] { 0x01 }, false); //Elvileg akkor végez ez az utasítás, ha létrejött a kapcsolat, vagy letelt a határidő + } + } + } + } + catch (InvalidOperationException) { } + }*/ + + public static bool SendChatMessage(ChatPanel chat, string message) + { //2014.09.22. + List bytes = new List(); + string sendstr = ""; + foreach (var pID in chat.ChatPartners) + { + sendstr += pID + ","; + } + 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 + { + IPEndPoint remoteEP; + remoteEP = new IPEndPoint(IPAddress.Any, Int32.Parse(Storage.Settings["port"])); //2014.09.04. - A port beállítása már megtörtént + 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; //2014.09.19. - Küldön el mindenhova mindent, és egységesen egy funkcióval dolgozza fel + RemoteEP = remoteEP; + return null; + } + else + return new object[] { buf, remoteEP }; + } + + public struct PacketParts + { + public bool Response; + public UpdateType UpdateType; + public int KeyVersion; + public int Port; //2014.12.19. + public int UserID; + public byte[] Data; + }; + } +} diff --git a/MSGer.tk/ObjectListView.dll b/MSGer.tk/ObjectListView.dll new file mode 100644 index 0000000..d4a658e Binary files /dev/null and b/MSGer.tk/ObjectListView.dll differ diff --git a/MSGer.tk/ObjectListView2012.csproj b/MSGer.tk/ObjectListView2012.csproj new file mode 100644 index 0000000..87f1f0f --- /dev/null +++ b/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/MSGer.tk/PartnerInformation.Designer.cs b/MSGer.tk/PartnerInformation.Designer.cs new file mode 100644 index 0000000..bca1828 --- /dev/null +++ b/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/MSGer.tk/PartnerInformation.cs b/MSGer.tk/PartnerInformation.cs new file mode 100644 index 0000000..52e6351 --- /dev/null +++ b/MSGer.tk/PartnerInformation.cs @@ -0,0 +1,47 @@ +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 : ThemedForms + { + 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; + 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/MSGer.tk/PartnerInformation.resx b/MSGer.tk/PartnerInformation.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/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/MSGer.tk/Program.cs b/MSGer.tk/Program.cs index 458e6d9..4aba586 100644 --- a/MSGer.tk/Program.cs +++ b/MSGer.tk/Program.cs @@ -21,6 +21,7 @@ namespace MSGer.tk static class Program { public static MainForm MainF; + public static SettingsForm SettingsF; public static string ProcessName = Process.GetCurrentProcess().ProcessName; /// /// The main entry point for the application. @@ -40,8 +41,9 @@ namespace MSGer.tk AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; try { - MainF = new MainForm(); - Application.Run(MainF); + //MainF = new MainForm(); - 2014.11.21. - A létrehozáskor hozzárendeli, így már akkor hozzáférhető ezen a néven + //Application.Run(MainF); + Application.Run(new MainForm()); //2014.11.21. } catch (FileNotFoundException e) { @@ -161,7 +163,7 @@ namespace MSGer.tk /// /// The object to be cloned must be serializable. /// - public static object Clone(object obj) + public static object Clone(this object obj) { using (MemoryStream buffer = new MemoryStream()) { @@ -172,5 +174,16 @@ namespace MSGer.tk return temp; } } + public static IEnumerable GetAll(this Control control, Type type = null) + { //2015.02.26. + var controls = control.Controls.Cast(); + + /*return controls.SelectMany(ctrl => GetAll(ctrl, type)) + .Concat(controls) + .Where(c => c.GetType() == type);*/ + var ret = controls.SelectMany(ctrl => GetAll(ctrl, type)) + .Concat(controls); + return (type == null) ? ret : ret.Where(c => c.GetType() == type); + } } } diff --git a/MSGer.tk/ProgressStatistic.cs b/MSGer.tk/ProgressStatistic.cs new file mode 100644 index 0000000..75e7776 --- /dev/null +++ b/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/MSGer.tk/Resources/tmp/colorpicker.jpg b/MSGer.tk/Resources/tmp/colorpicker.jpg new file mode 100644 index 0000000..04f687d Binary files /dev/null and b/MSGer.tk/Resources/tmp/colorpicker.jpg differ diff --git a/MSGer.tk/Resources/tmp/erase.png b/MSGer.tk/Resources/tmp/erase.png new file mode 100644 index 0000000..aa71a51 Binary files /dev/null and b/MSGer.tk/Resources/tmp/erase.png differ diff --git a/MSGer.tk/SelectPartnerForm.cs b/MSGer.tk/SelectPartnerForm.cs index 4a9eb1a..6a83b34 100644 --- a/MSGer.tk/SelectPartnerForm.cs +++ b/MSGer.tk/SelectPartnerForm.cs @@ -11,7 +11,7 @@ using System.Windows.Forms; namespace MSGer.tk { - public partial class SelectPartnerForm : Form + public partial class SelectPartnerForm : ThemedForms { public SelectPartnerForm(ToolStripMenuItem SelectPartnerSender) //paraméter: 2014.09.06. { diff --git a/MSGer.tk/SettingsForm.Designer.cs b/MSGer.tk/SettingsForm.Designer.cs index 014f248..4332dca 100644 --- a/MSGer.tk/SettingsForm.Designer.cs +++ b/MSGer.tk/SettingsForm.Designer.cs @@ -28,11 +28,23 @@ /// private void InitializeComponent() { - GlacialComponents.Controls.GLColumn glColumn2 = new GlacialComponents.Controls.GLColumn(); + GlacialComponents.Controls.GLColumn glColumn1 = new GlacialComponents.Controls.GLColumn(); + GlacialComponents.Controls.GLItem glItem1 = new GlacialComponents.Controls.GLItem(); + GlacialComponents.Controls.GLSubItem glSubItem1 = new GlacialComponents.Controls.GLSubItem(); GlacialComponents.Controls.GLItem glItem2 = new GlacialComponents.Controls.GLItem(); GlacialComponents.Controls.GLSubItem glSubItem2 = new GlacialComponents.Controls.GLSubItem(); + GlacialComponents.Controls.GLItem glItem3 = new GlacialComponents.Controls.GLItem(); + GlacialComponents.Controls.GLSubItem glSubItem3 = new GlacialComponents.Controls.GLSubItem(); this.glacialList1 = new GlacialComponents.Controls.GlacialList(); this.panel1 = new System.Windows.Forms.Panel(); + this.isserver = new System.Windows.Forms.CheckBox(); + this.technical = new System.Windows.Forms.Label(); + this.chatwindowTabs = new System.Windows.Forms.CheckBox(); + this.chatwindow = new System.Windows.Forms.CheckBox(); + this.layout = new System.Windows.Forms.Label(); + this.listView1 = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.label3 = new System.Windows.Forms.Label(); this.messageText = new System.Windows.Forms.TextBox(); this.label2 = new System.Windows.Forms.Label(); this.nameText = new System.Windows.Forms.TextBox(); @@ -40,9 +52,6 @@ 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(); // @@ -57,16 +66,16 @@ 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; + glColumn1.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None; + glColumn1.CheckBoxes = false; + glColumn1.ImageIndex = -1; + glColumn1.Name = "Column1"; + glColumn1.NumericSort = false; + glColumn1.Text = "Column"; + glColumn1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + glColumn1.Width = 115; this.glacialList1.Columns.AddRange(new GlacialComponents.Controls.GLColumn[] { - glColumn2}); + glColumn1}); this.glacialList1.ControlStyle = GlacialComponents.Controls.GLControlStyles.Normal; this.glacialList1.ForeColor = System.Drawing.Color.Black; this.glacialList1.FullRowSelect = true; @@ -84,6 +93,20 @@ this.glacialList1.HoverTime = 1; this.glacialList1.ImageList = null; this.glacialList1.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 = "Személyes"; + glItem1.SubItems.AddRange(new GlacialComponents.Controls.GLSubItem[] { + glSubItem1}); + glItem1.Text = "Személyes"; glItem2.BackColor = System.Drawing.Color.White; glItem2.ForeColor = System.Drawing.Color.Black; glItem2.RowBorderColor = System.Drawing.Color.Black; @@ -94,12 +117,28 @@ glSubItem2.ForeColor = System.Drawing.Color.Black; glSubItem2.ImageAlignment = System.Windows.Forms.HorizontalAlignment.Left; glSubItem2.ImageIndex = -1; - glSubItem2.Text = "Személyes"; + glSubItem2.Text = "Kinézet"; glItem2.SubItems.AddRange(new GlacialComponents.Controls.GLSubItem[] { glSubItem2}); - glItem2.Text = "Személyes"; + glItem2.Text = "Kinézet"; + glItem3.BackColor = System.Drawing.Color.White; + glItem3.ForeColor = System.Drawing.Color.Black; + glItem3.RowBorderColor = System.Drawing.Color.Black; + glItem3.RowBorderSize = 0; + glSubItem3.BackColor = System.Drawing.Color.Empty; + glSubItem3.Checked = false; + glSubItem3.ForceText = false; + glSubItem3.ForeColor = System.Drawing.Color.Black; + glSubItem3.ImageAlignment = System.Windows.Forms.HorizontalAlignment.Left; + glSubItem3.ImageIndex = -1; + glSubItem3.Text = "Technikai"; + glItem3.SubItems.AddRange(new GlacialComponents.Controls.GLSubItem[] { + glSubItem3}); + glItem3.Text = "Technikai"; this.glacialList1.Items.AddRange(new GlacialComponents.Controls.GLItem[] { - glItem2}); + glItem1, + glItem2, + glItem3}); this.glacialList1.ItemWordWrap = false; this.glacialList1.Location = new System.Drawing.Point(12, 12); this.glacialList1.Name = "glacialList1"; @@ -122,6 +161,11 @@ | System.Windows.Forms.AnchorStyles.Right))); this.panel1.AutoScroll = true; this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.Controls.Add(this.isserver); + this.panel1.Controls.Add(this.technical); + this.panel1.Controls.Add(this.chatwindowTabs); + this.panel1.Controls.Add(this.chatwindow); + this.panel1.Controls.Add(this.layout); this.panel1.Controls.Add(this.listView1); this.panel1.Controls.Add(this.label3); this.panel1.Controls.Add(this.messageText); @@ -134,13 +178,85 @@ this.panel1.Size = new System.Drawing.Size(385, 391); this.panel1.TabIndex = 1; // + // isserver + // + this.isserver.AutoSize = true; + this.isserver.Location = new System.Drawing.Point(12, 405); + this.isserver.Name = "isserver"; + this.isserver.Size = new System.Drawing.Size(217, 17); + this.isserver.TabIndex = 11; + this.isserver.Text = "Szerver mód (port forwarding szükséges)"; + this.isserver.UseVisualStyleBackColor = true; + // + // technical + // + this.technical.AutoSize = true; + this.technical.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.technical.Location = new System.Drawing.Point(6, 371); + this.technical.Name = "technical"; + this.technical.Size = new System.Drawing.Size(131, 31); + this.technical.TabIndex = 10; + this.technical.Text = "Technikai"; + // + // chatwindowTabs + // + this.chatwindowTabs.AutoSize = true; + this.chatwindowTabs.Enabled = false; + this.chatwindowTabs.Location = new System.Drawing.Point(50, 329); + this.chatwindowTabs.Name = "chatwindowTabs"; + this.chatwindowTabs.Size = new System.Drawing.Size(194, 17); + this.chatwindowTabs.TabIndex = 9; + this.chatwindowTabs.Text = "A beszélgetések fülekbe rendezése"; + this.chatwindowTabs.UseVisualStyleBackColor = true; + // + // chatwindow + // + this.chatwindow.AutoSize = true; + this.chatwindow.Location = new System.Drawing.Point(12, 305); + this.chatwindow.Name = "chatwindow"; + this.chatwindow.Size = new System.Drawing.Size(272, 17); + this.chatwindow.TabIndex = 8; + this.chatwindow.Text = "A beszélgetések jelenjenek meg külön ablak(ok)ban"; + this.chatwindow.UseVisualStyleBackColor = true; + // + // layout + // + this.layout.AutoSize = true; + this.layout.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.layout.Location = new System.Drawing.Point(6, 270); + this.layout.Name = "layout"; + this.layout.Size = new System.Drawing.Size(105, 31); + this.layout.TabIndex = 7; + this.layout.Text = "Kinézet"; + // + // 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; + // + // 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"; + // // 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.Size = new System.Drawing.Size(337, 20); this.messageText.TabIndex = 4; // // label2 @@ -158,7 +274,7 @@ | 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.Size = new System.Drawing.Size(337, 20); this.nameText.TabIndex = 2; // // label1 @@ -194,6 +310,7 @@ // // 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(449, 410); this.cancelbtn.Name = "cancelbtn"; @@ -203,27 +320,6 @@ 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); @@ -235,6 +331,7 @@ this.Controls.Add(this.glacialList1); this.Name = "SettingsForm"; this.Text = "SettingsForm"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.SettingsForm_FormClosed); this.panel1.ResumeLayout(false); this.panel1.PerformLayout(); this.ResumeLayout(false); @@ -255,5 +352,10 @@ private System.Windows.Forms.ListView listView1; private System.Windows.Forms.Label label3; private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.Label layout; + private System.Windows.Forms.CheckBox chatwindowTabs; + private System.Windows.Forms.CheckBox chatwindow; + private System.Windows.Forms.Label technical; + private System.Windows.Forms.CheckBox isserver; } } \ No newline at end of file diff --git a/MSGer.tk/SettingsForm.cs b/MSGer.tk/SettingsForm.cs index fa919a6..f1c3153 100644 --- a/MSGer.tk/SettingsForm.cs +++ b/MSGer.tk/SettingsForm.cs @@ -10,25 +10,38 @@ using System.Windows.Forms; namespace MSGer.tk { - public partial class SettingsForm : Form + public partial class SettingsForm : ThemedForms { + public static bool ApplyingSettings = false; public SettingsForm() { InitializeComponent(); listView1.Columns[0].Width = listView1.Width; this.Text = Language.Translate("settings"); + //Language.Translate(this, "settings"); + glacialList1.Items[0].Text = Language.Translate("settings_personal"); personal.Text = Language.Translate("settings_personal"); + glacialList1.Items[1].Text = Language.Translate("settings_layout"); + + layout.Text = Language.Translate("settings_layout"); //2014.10.28. label1.Text = Language.Translate("name"); label2.Text = Language.Translate("message"); label3.Text = Language.Translate("language"); + chatwindow.Text = Language.Translate("settings_chatwindow"); //2014.10.28. + chatwindowTabs.Text = Language.Translate("settings_chatwindowTabs"); //2014.10.28. + //isserver.Text = Language.Translate("settings_isserver"); //2014.11.15. + nameText.Text = CurrentUser.Name; messageText.Text = CurrentUser.Message; + chatwindow.Checked = (Storage.Settings["chatwindow"] == "1"); //2014.10.28. + //isserver.Checked = (Storage.Settings["isserver"] == "1"); //2014.11.15. + isserver.Enabled = false; //2015.01.12. - foreach(var entry in Language.UsedLangs) + 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())) + if (Language.UsedLangs[entry.Key].Equals(Language.GetCurrentLanguage())) listView1.Items[listView1.Items.Count - 1].Selected = true; } } @@ -44,28 +57,52 @@ namespace MSGer.tk //Személyes panel1.ScrollControlIntoView(personal); break; + case 1: + //Kinézet + panel1.ScrollControlIntoView(layout); + 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; - } - } + ApplyingSettings = true; CurrentUser.Name = nameText.Text; CurrentUser.Message = messageText.Text; - if (Storage.Settings["lang"] != lang) + bool reopen = false; + if (chatwindow.Checked && Storage.Settings["chatwindow"] == "0") { - Storage.Settings["lang"] = lang; - MessageBox.Show(Language.Translate("restart_needed")); - Program.Restart(true); + reopen = true; + Storage.Settings["chatwindow"] = "1"; } + else if (!chatwindow.Checked && Storage.Settings["chatwindow"] == "1") + { + reopen = true; + Storage.Settings["chatwindow"] = "0"; + } + //Storage.Settings["isserver"] = isserver.Checked ? "1" : "0"; //2014.11.15. + string lang = "en"; + if(listView1.SelectedItems.Count!=0) //2014.10.28. - Eddig valószínűleg hiba történt a SelectedItems[0]-nál + { + foreach (var lng in Language.UsedLangs) + { + if (lng.Value.Strings.ContainsKey("currentlang") && listView1.SelectedItems[0].Text == lng.Value.Strings["currentlang"]) + { + lang = lng.Key; + break; + } + } + if (Storage.Settings["lang"] != lang) + { + Storage.Settings["lang"] = lang; + //MessageBox.Show(Language.Translate("restart_needed")); + //Program.Restart(true); + Language.ReloadLangs(); + } + } + if (reopen) + ChatPanel.ReopenChatWindows(true); + ApplyingSettings = false; this.Close(); } @@ -73,5 +110,10 @@ namespace MSGer.tk { this.Close(); } + + private void SettingsForm_FormClosed(object sender, FormClosedEventArgs e) + { + Program.SettingsF = null; + } } } diff --git a/MSGer.tk/Storage.cs b/MSGer.tk/Storage.cs new file mode 100644 index 0000000..764dac1 --- /dev/null +++ b/MSGer.tk/Storage.cs @@ -0,0 +1,222 @@ +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("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("lastusedemail", "0"); + Settings.Add("filelen", "-1"); //(long) Maximum fájlméret, ameddig bemásolhatja a memóriába + //Settings.Add("isserver", ""); + Settings.Add("chatwindow", "0"); + } + } + 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 = 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.None }; + var encryptor = symmetricKey.CreateEncryptor(keyBytes, Encoding.ASCII.GetBytes(VIKey)); + + byte[] plainTextBytes; + //if (content.Length + 4 > keyBytes.Length) + /*plainTextBytes = new byte[content.Length + 4]; + else + plainTextBytes = new byte[content.Length + 4];*/ + int targetsize = content.Length + 16 - content.Length % 16; //Hozzáadja a hosszához a hossz 16-tal való osztásának maradékát - Tehát 16-tal osztható lesz + plainTextBytes = new byte[targetsize]; + /*Array.Copy(BitConverter.GetBytes(content.Length), plainTextBytes, 4); + Array.Copy(content, 0, plainTextBytes, 4, content.Length);*/ + Array.Copy(content, plainTextBytes, content.Length); + + 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(); + } + byte[] final = new byte[cipherTextBytes.Length + 4]; + Array.Copy(BitConverter.GetBytes(cipherTextBytes.Length), final, 4); + Array.Copy(cipherTextBytes, 0, final, 4, cipherTextBytes.Length); + return final; + } + 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; + int len = BitConverter.ToInt32(b, 0); + byte[] cipherTextBytes = new byte[len]; + Array.Copy(b, 4, cipherTextBytes, 0, b.Length - 4); //Itt még az eredeti, feltöltött hosszal számol + 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]; + //List plainTextBytes = new List(); //2014.12.18. + + int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length); + /*int r=0; //2014.12.18. + while ((r = cryptoStream.ReadByte()) != -1) + { //2014.12.18. + plainTextBytes.Add((byte)r); + }*/ + memoryStream.Close(); + cryptoStream.Close(); + byte[] ret = new byte[len]; + Array.Copy(plainTextBytes, ret, len); + return ret; + } + 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/MSGer.tk/StreamHelper.cs b/MSGer.tk/StreamHelper.cs new file mode 100644 index 0000000..e6ae2d7 --- /dev/null +++ b/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/MSGer.tk/TextFormat.cs b/MSGer.tk/TextFormat.cs new file mode 100644 index 0000000..70404f4 --- /dev/null +++ b/MSGer.tk/TextFormat.cs @@ -0,0 +1,76 @@ +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) + { + 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; + } + } + class ImgReplaceStrs + { + public string Text; + public Image Image; + } +} diff --git a/MSGer.tk/Theme.cs b/MSGer.tk/Theme.cs new file mode 100644 index 0000000..f4a22b4 --- /dev/null +++ b/MSGer.tk/Theme.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public class Theme + { + public void Save(string themepath) + { + List bytes = new List(); + foreach (var item in Images) + { + bytes.AddRange(BitConverter.GetBytes((int)item.Key)); + var ms = new MemoryStream(); + item.Value.Save(ms, ImageFormat.Tiff); + byte[] img = ms.ToArray(); + ms.Dispose(); + bytes.AddRange(BitConverter.GetBytes(img.Length)); + bytes.AddRange(img); + } + File.WriteAllBytes(themepath, bytes.ToArray()); + } + + public enum ThemePart + { + MainBackgorund, + MinimizeButton, + MaximizeButton, + CloseButton, + Border + } + + public Theme(string themepath) + { + //FileStream fs = new FileStream(themepath, FileMode.Open); + Images.Clear(); + byte[] bytes = File.ReadAllBytes(themepath); + int i = 0; + while (i < bytes.Length) + { + int part = BitConverter.ToInt32(bytes, i); //4 byte ThemePart + i += sizeof(int); + int len = BitConverter.ToInt32(bytes, i); //4 byte imglen + i += sizeof(int); + Image img = Image.FromStream(new MemoryStream(bytes, i, len)); //len byte image + new Theme((ThemePart)part, img); + } + ReloadEvent(null, null); + } + private Theme(ThemePart themepart, Image image) + { + Images.Add(themepart, image); + //Frissítse az összes helyen a képeket (lásd Language osztály) - Csak ne itt + } + public static event EventHandler ReloadEvent; //2014.12.24. + + public static void SkinControl(ThemePart themepart, Control control) + { + if (control != null && !control.IsDisposed && Images.ContainsKey(themepart)) + { + control.BackgroundImage = Images[themepart]; + if (themepart == ThemePart.MainBackgorund) + { + foreach(Control c in control.GetAll()) + { + Bitmap bmp = new Bitmap(Images[themepart]).Clone(new Rectangle(c.Location.X, c.Location.Y, c.Width, c.Height), PixelFormat.Format32bppRgb); + c.BackgroundImage = bmp; + } + } + } + ReloadEvent += delegate + { //Ugyanazt az indexű képet fogja használni, csak a kép változik meg + if (control != null && !control.IsDisposed && Images.ContainsKey(themepart)) + { + control.BackgroundImage = Images[themepart]; + } + }; + } + + private static Dictionary Images = new Dictionary(); + } +} diff --git a/MSGer.tk/ThemedForms.Designer.cs b/MSGer.tk/ThemedForms.Designer.cs new file mode 100644 index 0000000..074a872 --- /dev/null +++ b/MSGer.tk/ThemedForms.Designer.cs @@ -0,0 +1,120 @@ +namespace MSGer.tk +{ + partial class ThemedForms + { + /// + /// 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.containerPanel = new System.Windows.Forms.Panel(); + this.titleLabel = new System.Windows.Forms.Label(); + this.CloseButton = new System.Windows.Forms.PictureBox(); + this.MaximizeButton = new System.Windows.Forms.PictureBox(); + this.MinimizeButton = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.CloseButton)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.MaximizeButton)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.MinimizeButton)).BeginInit(); + this.SuspendLayout(); + // + // containerPanel + // + this.containerPanel.Location = new System.Drawing.Point(12, 30); + this.containerPanel.Name = "containerPanel"; + this.containerPanel.Size = new System.Drawing.Size(123, 51); + this.containerPanel.TabIndex = 0; + // + // titleLabel + // + this.titleLabel.AutoSize = true; + this.titleLabel.Location = new System.Drawing.Point(13, 11); + this.titleLabel.Name = "titleLabel"; + this.titleLabel.Size = new System.Drawing.Size(27, 13); + this.titleLabel.TabIndex = 1; + this.titleLabel.Text = "Title"; + // + // CloseButton + // + this.CloseButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.CloseButton.Location = new System.Drawing.Point(122, 1); + this.CloseButton.Name = "CloseButton"; + this.CloseButton.Size = new System.Drawing.Size(24, 23); + this.CloseButton.TabIndex = 2; + this.CloseButton.TabStop = false; + this.CloseButton.Click += new System.EventHandler(this.CloseButton_Click); + // + // MaximizeButton + // + this.MaximizeButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.MaximizeButton.Location = new System.Drawing.Point(92, 1); + this.MaximizeButton.Name = "MaximizeButton"; + this.MaximizeButton.Size = new System.Drawing.Size(24, 23); + this.MaximizeButton.TabIndex = 3; + this.MaximizeButton.TabStop = false; + this.MaximizeButton.Click += new System.EventHandler(this.MaximizeButton_Click); + // + // MinimizeButton + // + this.MinimizeButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.MinimizeButton.Location = new System.Drawing.Point(62, 1); + this.MinimizeButton.Name = "MinimizeButton"; + this.MinimizeButton.Size = new System.Drawing.Size(24, 23); + this.MinimizeButton.TabIndex = 4; + this.MinimizeButton.TabStop = false; + this.MinimizeButton.Click += new System.EventHandler(this.MinimizeButton_Click); + // + // ThemedForms + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(147, 93); + this.Controls.Add(this.MinimizeButton); + this.Controls.Add(this.MaximizeButton); + this.Controls.Add(this.CloseButton); + this.Controls.Add(this.titleLabel); + this.Controls.Add(this.containerPanel); + this.Name = "ThemedForms"; + this.Text = "ThemedForms"; + this.DoubleClick += new System.EventHandler(this.ThemedForms_DoubleClick); + this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.ThemedForms_MouseDown); + this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.ThemedForms_MouseUp); + this.Resize += new System.EventHandler(this.ThemedForms_Resize); + ((System.ComponentModel.ISupportInitialize)(this.CloseButton)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.MaximizeButton)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.MinimizeButton)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + + private System.Windows.Forms.Panel containerPanel; + private System.Windows.Forms.Label titleLabel; + private System.Windows.Forms.PictureBox CloseButton; + private System.Windows.Forms.PictureBox MaximizeButton; + private System.Windows.Forms.PictureBox MinimizeButton; + } +} \ No newline at end of file diff --git a/MSGer.tk/ThemedForms.cs b/MSGer.tk/ThemedForms.cs new file mode 100644 index 0000000..c56e327 --- /dev/null +++ b/MSGer.tk/ThemedForms.cs @@ -0,0 +1,242 @@ +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 ThemedForms : Form + { //2014.12.21. + public const int BorderSize = 3; + + private bool overridecontrols = false; + public ThemedForms() + { + InitializeComponent(); + this.Load += ThemedForms_Load; + overridecontrols = true; + } + + protected void ThemedForms_Load(object sender, EventArgs e) + { + List anchors = new List(); + foreach (Control control in containerPanel.Controls) + { + anchors.Add(control.Anchor); + control.Anchor = AnchorStyles.Top | AnchorStyles.Left; + } + this.SuspendLayout(); + base.FormBorderStyle = FormBorderStyle.None; + this.Size = base.Size; + CloseButton.Location = new Point(this.Size.Width - CloseButton.Size.Width, 0); + MaximizeButton.Location = new Point(this.Size.Width - CloseButton.Size.Width - MaximizeButton.Size.Width, 0); + MinimizeButton.Location = new Point(this.Size.Width - CloseButton.Size.Width - MaximizeButton.Size.Width - MinimizeButton.Size.Width, 0); + titleLabel.Location = new Point(BorderSize, titleLabel.Location.Y); + containerPanel.Location = new Point(BorderSize, titleLabel.Location.Y + titleLabel.Size.Height); + int i = 0; + this.ResumeLayout(true); + foreach (var anchor in anchors) + { + containerPanel.Controls[i].Anchor = anchor; + i++; + } + titleLabel.Anchor = AnchorStyles.Top | AnchorStyles.Left; + CloseButton.Anchor = AnchorStyles.Top | AnchorStyles.Right; + MaximizeButton.Anchor = AnchorStyles.Top | AnchorStyles.Right; + MinimizeButton.Anchor = AnchorStyles.Top | AnchorStyles.Right; + containerPanel.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom; + Theme.SkinControl(Theme.ThemePart.Border, this); //2014.12.24. + Theme.SkinControl(Theme.ThemePart.MinimizeButton, MinimizeButton); //2014.12.24. + Theme.SkinControl(Theme.ThemePart.MaximizeButton, MaximizeButton); //2014.12.24. + Theme.SkinControl(Theme.ThemePart.CloseButton, CloseButton); //2014.12.24. + } + public new Control.ControlCollection Controls + { + get + { + if (overridecontrols) + return containerPanel.Controls; + else + return base.Controls; + } + } + private FormBorderStyle borderstyle = FormBorderStyle.Sizable; + public new FormBorderStyle FormBorderStyle + { + get + { + return borderstyle; + } + set + { + borderstyle = value; + base.FormBorderStyle = FormBorderStyle.None; + } + } + public override string Text + { + get + { + return base.Text; + } + set + { + titleLabel.Text = value; + base.Text = value; + } + } + public new Size Size + { + get + { + return base.Size; + } + set + { + base.Size = new Size(value.Width + containerPanel.Location.X + BorderSize, value.Height + containerPanel.Location.Y + BorderSize); + containerPanel.Size = value; + } + } + + private void CloseButton_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void MaximizeButton_Click(object sender, EventArgs e) + { + if (!MaximizeBox) + return; + FormWindowState ws; //Anti-virus program miatt + if (WindowState == FormWindowState.Normal) + ws = FormWindowState.Maximized; + else + ws = FormWindowState.Normal; + + Timer t = new Timer(); + t.Interval = 10; + t.Tick += delegate + { + t.Stop(); + base.FormBorderStyle = FormBorderStyle.Sizable; //Látszik egy kis időre, de tán így a legkönnyebb + WindowState = ws; + base.FormBorderStyle = FormBorderStyle.None; + }; + t.Start(); + } + + private void MinimizeButton_Click(object sender, EventArgs e) + { + if (!MinimizeBox) + return; + //base.FormBorderStyle = FormBorderStyle.Sizable; + WindowState = FormWindowState.Minimized; + } + + private FormWindowState wstate; + private void ThemedForms_Resize(object sender, EventArgs e) + { + if (this.WindowState == wstate) + return; + if (this.WindowState == FormWindowState.Maximized && wstate == FormWindowState.Minimized) //minimized-ről váltott maximized-re + { + this.WindowState = FormWindowState.Normal; + base.FormBorderStyle = FormBorderStyle.Sizable; + this.WindowState = FormWindowState.Maximized; + base.FormBorderStyle = FormBorderStyle.None; + } + wstate = this.WindowState; + } + + private bool moving = false; + private int resizing = 0; + private Timer moveresizetimer = new Timer(); + //private Point diffcursorpos; + private Point moveresizecursor; + private void ThemedForms_MouseDown(object sender, MouseEventArgs e) + { + Point cursorpos = this.PointToClient(Cursor.Position); + //diffcursorpos = this.PointToClient(Cursor.Position); + moveresizecursor = this.PointToClient(Cursor.Position); //Mindig ehhez igazítsa + if (cursorpos.X > containerPanel.Location.X + containerPanel.Size.Width) + resizing = 1; //right + else if (cursorpos.X < containerPanel.Location.X) + resizing = 2; //left + else if (cursorpos.Y > containerPanel.Location.Y + containerPanel.Size.Height) + resizing = 3; //bottom + else if (cursorpos.Y < containerPanel.Location.Y) + moving = true; //top + if(!moveresizetimer.Enabled) + { + moveresizetimer.Interval = 10; + moveresizetimer.Tick += moveresizetimer_Tick; + moveresizetimer.Start(); + } + } + + void moveresizetimer_Tick(object sender, EventArgs e) + { + if (moving) + { + //this.Location -= cursorpos - this.PointToClient(Cursor.Position); + /*int diffx = diffcursorpos.X - this.PointToClient(Cursor.Position).X; + int diffy = diffcursorpos.Y - this.PointToClient(Cursor.Position).Y; + this.Location = new Point(this.Location.X - diffx, this.Location.Y - diffy); + diffcursorpos = this.PointToClient(Cursor.Position);*/ + int diffx = this.PointToClient(Cursor.Position).X - moveresizecursor.X; + int diffy = this.PointToClient(Cursor.Position).Y - moveresizecursor.Y; + this.Location = new Point(this.Location.X + diffx, this.Location.Y + diffy); + } + if (resizing > 0 && borderstyle == FormBorderStyle.Sizable) + { + /*int diffx = diffcursorpos.X - this.PointToClient(Cursor.Position).X; + int diffy = diffcursorpos.Y - this.PointToClient(Cursor.Position).Y; + switch(resizing) + { + case 1: //right + base.Size = new Size(this.Size.Width - diffx, this.Size.Height); + break; + } + diffcursorpos = this.PointToClient(Cursor.Position);*/ + if (resizing == 1) + base.Size = new Size(Cursor.Position.X - base.Location.X, base.Size.Height); + else if (resizing == 2) + { + int diff = base.Location.X - Cursor.Position.X; + base.Location = new Point(Cursor.Position.X, base.Location.Y); + base.Size = new Size(base.Size.Width + diff, base.Size.Height); + } + else if (resizing == 3) + base.Size = new Size(base.Size.Width, Cursor.Position.Y - base.Location.Y); + } + } + + private void ThemedForms_MouseUp(object sender, MouseEventArgs e) + { + moving = false; + resizing = 0; + moveresizetimer.Stop(); + } + + private void ThemedForms_DoubleClick(object sender, EventArgs e) + { + if (this.PointToClient(Cursor.Position).Y < containerPanel.Location.Y) + { + if (this.WindowState == FormWindowState.Normal) + { + this.WindowState = FormWindowState.Normal; + base.FormBorderStyle = FormBorderStyle.Sizable; + this.WindowState = FormWindowState.Maximized; + base.FormBorderStyle = FormBorderStyle.None; + } + else + this.WindowState = FormWindowState.Normal; + } + } + } +} diff --git a/MSGer.tk/ThemedForms.resx b/MSGer.tk/ThemedForms.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/MSGer.tk/ThemedForms.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/MSGer.tk/UpdateListAndChat.cs b/MSGer.tk/UpdateListAndChat.cs new file mode 100644 index 0000000..2dee4fc --- /dev/null +++ b/MSGer.tk/UpdateListAndChat.cs @@ -0,0 +1,199 @@ +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.LThread != null && MainForm.MainThread.IsAlive) + { + do + { + object[] retobj = Networking.ReceiveUpdates(); + if (retobj == null) //2014.12.05. + return; //2014.12.05. - Leállt a program + 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 port; //2014.12.19. + int userid; //2014.09.15. + byte[] data; //2014.09.15. + Networking.ParsePacket(resp, out isresponse, out updatetype, out keyversion, out port, out userid, out data); //2014.09.15. + //if (!UserInfo.IPs.Any(entry=>entry.IP==remoteEP) && updatetype != Networking.UpdateType.LoginUser) //2014.10.24. + //if (!UserInfo.IPs.Any(entry => entry.IP == remoteEP) && updatetype != Networking.UpdateType.LoginUser) //2014.11.23 + if (!UserInfo.IPs.Any(entry => entry.Address.Equals(remoteEP.Address)) //2014.12.19. - A port nem ugyanaz, ráadásul a == nem hívja meg a .Equals metódust + && updatetype != Networking.UpdateType.LoginUser + /*&& updatetype != Networking.UpdateType.CheckConn + && updatetype != Networking.UpdateType.RequestConn + && updatetype != Networking.UpdateType.MakeConn + && updatetype != Networking.UpdateType.MakeConn2*/) + break; + //bool x = UserInfo.IPs.Single().IP.Address.Equals(remoteEP.Address); + if (updatetype == Networking.UpdateType.ListUpdate) + { + //Networking.ParseUpdateInfo(new byte[][] { data }); //2014.09.15. + Networking.ParseUpdateInfo(new byte[][] { resp }); //2014.12.22. - A funkció az egész packet-re számít, nem csak a data-ra + } + else if (updatetype == Networking.UpdateType.UpdateMessages) + { + string[] response = Networking.GetStrings(data, 0); + string[] tmp = response[0].Split(','); + List tmp2 = new List(); + tmp2.Add(UserInfo.Select(userid)); //Adja hozzá a küldőt is + tmp2.AddRange(tmp.Select(entry => UserInfo.Select(Int32.Parse(entry)))); //2014.10.24. + //if (tmp2.All(entry => !UserInfo.Select(entry).IsPartner)) //2014.10.24. + if (tmp2.All(entry => !entry.IsPartner)) //2014.10.31. + break; //Ha a beszélgetésben nincs ismerőse, akkor nem foglalkozik vele + var cf = ChatPanel.GetChatFormByUsers(tmp2); + if (cf == null) + { + Program.MainF.Invoke((MethodInvoker)delegate + { + ChatPanel.ChatWindows.Add(new ChatPanel()); + cf = ChatPanel.ChatWindows[ChatPanel.ChatWindows.Count - 1]; + cf.ChatPartners.AddRange(tmp2); + cf.Init(); + }); + } + //0 - Résztvevők; 1 - Üzenet; 2 - Üzenetküldés időpontja + 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 (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; + } + + //int iplen = BitConverter.ToInt32(data, 0); + //string ip = Encoding.Unicode.GetString(data, 4, iplen); + //IPAddress ip = IPAddress.Parse(Encoding.Unicode.GetString(data, 4, iplen)); + /*if (!Storage.Settings["ips"].Contains(ip)) + Storage.Settings["ips"] += ";" + ip;*/ + //var ep = new IPEndPoint(ip, UserInfo.GetPortForIP(ip)); //2014.11.15. + //var ep = new IPEndPoint(ip, port); //2014.12.19. + var ep = new IPEndPoint(remoteEP.Address, port); + //if (!UserInfo.IPs.Any(entry=>entry.IP==ep)) + if (!UserInfo.IPs.Any(entry=>entry==ep)) + UserInfo.IPs.Add(ep); + string retstr = ""; + //for (int i = 4 + iplen; i + 8 < resp.Length; i += 8) + for (int i = 0; i + 8 < data.Length; i += 8) + { + int uid = BitConverter.ToInt32(data, i); + int utime = BitConverter.ToInt32(data, i + 4); + if (Storage.LoggedInSettings.ContainsKey("userinfo_" + uid + "_updatetime") && 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 (uid != CurrentUser.UserID) //2014.11.29. + retstr += uid + "_lastupdate=" + Storage.LoggedInSettings["userinfo_" + uid + "_lastupdate"]; //2014.11.29. - Arra az időpontra állítsa, amikor ő kapta a frissítést, így ez elvileg az eredeti frissítés időpontját mutatja kb. - Ezért a sajátját biztosan frissen kell tartani + else + retstr += uid + "_lastupdate=" + Program.DateTimeToUnixTime(DateTime.Now); + //if (i + 1 != (resp.Length - 9) / 8) + if (i + 16 < data.Length) + retstr += "\n"; + } + } + UserInfo.Select(userid).State = 1; + Networking.SendUpdate(Networking.UpdateType.LoginUser, Encoding.Unicode.GetBytes(retstr), true); + } + else if (updatetype == Networking.UpdateType.LogoutUser) + { //2014.08.31. 0:32 + int len = BitConverter.ToInt32(data, 0); + string ipstr = Encoding.Unicode.GetString(data, 4, len); + //Storage.Settings["ips"] = Storage.Settings["ips"].Remove(Storage.Settings["ips"].IndexOf(ipstr), ipstr.Length); //2014.09.22. + //var ip = IPAddress.Parse(ipstr); + string[] ips = ipstr.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); + var ip = ips.Select(entry => IPAddress.Parse(entry)); + //UserInfo.IPs.RemoveWhere(entry => entry.IP.Address == ip && entry.IP.Port == UserInfo.GetPortForIP(entry.IP.Address)); //2014.11.15. + UserInfo.IPs.RemoveWhere(entry => entry.Address == ip && entry.Port == port); //2014.11.15. - Port: 2014.12.19. + } + else if (updatetype == Networking.UpdateType.SetKey) //2014.09.09. + { //2014.09.22. + CurrentUser.KeyIndex = BitConverter.ToInt32(data, 0); + } + else if (updatetype == Networking.UpdateType.GetImage) //2014.11.01. 0:53 + { + string tmp = Path.GetTempPath(); + List sendb = new List(); + int user = BitConverter.ToInt32(data, 0); + int picupdatetime = BitConverter.ToInt32(data, 4); + //int thispicupdatetime = UserInfo.Select(user).PicUpdateTime; + int thispicupdatetime = 0; + UserInfo userinfo = UserInfo.Select(user); + if (userinfo != null) + thispicupdatetime = UserInfo.Select(user).PicUpdateTime; + if (thispicupdatetime > picupdatetime) + { + sendb.AddRange(BitConverter.GetBytes(thispicupdatetime)); + sendb.AddRange(File.ReadAllBytes(tmp + "\\MSGer.tk\\pictures\\" + user + ".png")); + } + Networking.SendUpdate(Networking.UpdateType.GetImage, sendb.ToArray(), true); //2014.11.23. + } + /*else if (updatetype == Networking.UpdateType.CheckConn) + { //2014.11.23. + Networking.SendUpdate(Networking.UpdateType.CheckConn, new byte[] { 0x01 }, true, new IPEndPoint(remoteEP.Address, port)); + } + else if (updatetype == Networking.UpdateType.RequestConn) + { //2014.11.23. + string[] s = Encoding.Unicode.GetString(data).Split(':'); + var secondEP = new IPEndPoint(IPAddress.Parse(s[0]), Int32.Parse(s[1])); + Networking.SendUpdate(Networking.UpdateType.MakeConn, Encoding.Unicode.GetBytes(secondEP.ToString()), false, remoteEP); //Elküldi, hogy próbálkozzon kapcsolódni + Networking.SendUpdate(Networking.UpdateType.RequestConn, new byte[] { 0x01 }, true); //Majd válaszol, hogy ő is próbálkozhat + } + else if (updatetype == Networking.UpdateType.MakeConn) + { //2014.11.23. + string[] s = Encoding.Unicode.GetString(data).Split(':'); + var secondEP = new IPEndPoint(IPAddress.Parse(s[0]), Int32.Parse(s[1])); + Networking.SendUpdate(Networking.UpdateType.MakeConn2, new byte[] { 0x01 }, false, secondEP); //Próbálkoziks + Networking.SendUpdate(Networking.UpdateType.MakeConn, new byte[] { 0x01 }, true); //Válaszol, hogy ne várjon rá a szerver + } + else if (updatetype == Networking.UpdateType.MakeConn2) + { //2014.11.23. + Networking.SendUpdate(Networking.UpdateType.MakeConn2, new byte[] { 0x01 }, true); //Végzett + }*/ + } while (false); + } + } + } +} diff --git a/MSGer.tk/UserInfo.cs b/MSGer.tk/UserInfo.cs index 4906188..f5a9e11 100644 --- a/MSGer.tk/UserInfo.cs +++ b/MSGer.tk/UserInfo.cs @@ -38,6 +38,7 @@ namespace MSGer.tk Storage.LoggedInSettings["userinfo_" + UserID + "_listid"] = value.ToString(); } } + public int TMPListID { get; set; } //2014.12.05. public string Name { get @@ -150,7 +151,7 @@ namespace MSGer.tk Update(); } } - public string LoginCode + public string LoginCode // { get { @@ -166,6 +167,39 @@ namespace MSGer.tk Update(); } } + public int PicUpdateTime + { + get + { + if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_picupdatetime")) + Storage.LoggedInSettings.Add("userinfo_" + UserID + "_picupdatetime", "0"); + return Int32.Parse(Storage.LoggedInSettings["userinfo_" + UserID + "_picupdatetime"]); + } + set + { + if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_picupdatetime")) + Storage.LoggedInSettings.Add("userinfo_" + UserID + "_picupdatetime", "0"); + Storage.LoggedInSettings["userinfo_" + UserID + "_picupdatetime"] = value.ToString(); + Update(); + } + } + public string ImagePath = "noimage.png"; + /*public struct IPEndPoint - Nincs már szükség az IsServer beállításra + { + public IPEndPoint IP; + public bool IsServer;*/ + /*public IPEndPoint(IPEndPoint ip) + { + IP = ip; + IsServer = false; + }*/ + /*public IPEndPoint(IPEndPoint ip, bool isserver) + { + IP = ip; + IsServer = isserver; + } + }*/ + private static HashSet ips = new HashSet(); public static HashSet IPs { @@ -199,51 +233,62 @@ namespace MSGer.tk ~UserInfo() //2014.10.09. { } - public int PicUpdateTime = 0; - public string GetImage() - { + //public int PicUpdateTime = 0; + //public string GetImage() + public void GetImage(int receivedupdate) + { //Most már elvileg csak akkor hívja meg, amikor feldolgozza a kapott adatokat, tehát nem a Main Thread-ban 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"); + if (this.PicUpdateTime > receivedupdate) + { + if (File.Exists(tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png")) + this.ImagePath = tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; + else + this.ImagePath = "noimage.png"; + } + //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(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"; + this.ImagePath = tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; else - return "noimage.png"; + this.ImagePath = "noimage.png"; } bytesb = bytesb.Select(entry => Networking.ParsePacket(entry).Data).ToArray(); 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 + //byte[] bytes = bytesb[maxIndex]; //Attól tölti le a képet, akinek a legfrissebb + byte[] bytes = new byte[bytesb[maxIndex].Length]; + Array.Copy(bytesb[maxIndex], 4, bytes, 0, bytes.Length); //Hagyja ki a PicUpdateTime-ot if (bytes[0] == 0x00) //Nincs kép, vagy hiba történt { - return "noimage.png"; + this.ImagePath = "noimage.png"; } else if (bytes[0] == 0x01) { - return tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; + this.ImagePath = tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; } else { //Mentse el a képet File.WriteAllBytes(tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png", bytes); - return tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; //2014.08.16. + this.ImagePath = tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; //2014.08.16. } } public List GetChatWindows() { List retlist = new List(); - for (int x = 0; x < ChatForm.ChatWindows.Count; x++) + for (int x = 0; x < ChatPanel.ChatWindows.Count; x++) { - if (ChatForm.ChatWindows[x].ChatPartners.Contains(UserID)) + if (ChatPanel.ChatWindows[x].ChatPartners.Any(entry => entry.UserID == UserID)) { retlist.Add(x); } @@ -282,7 +327,7 @@ namespace MSGer.tk { for (int i = 0; i < UserInfo.KnownUsers.Count; i++) { - if (UserInfo.KnownUsers[i].IsPartner && UserInfo.KnownUsers[i].ListID == ListID) + if (UserInfo.KnownUsers[i].IsPartner && UserInfo.KnownUsers[i].TMPListID == ListID) //Ahol szükség van rá, ott az aktuális ListID szükséges, nem a beállított return UserInfo.KnownUsers[i].UserID; } return 0; @@ -306,7 +351,66 @@ namespace MSGer.tk UpdateTimer.Stop(); //Partnerlista frissítése //2014.10.09. - string imgpath = this.GetImage(); + /*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 + state = " (" + Language.Translate("offline") + ")"; + string text = this.Name + state + "\n" + this.Message; + */ + if (ListID == -1) + { + int i; + for (i = 0; i < Program.MainF.contactList.Items.Count; i++) + { + if (Program.MainF.contactList.Items[i].SubItems[1].Text == "") + { + break; + } + } + ListID = i; + } + //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 })); + } + ((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;*/ + + CreateListItem(Program.MainF.contactList, ListID); + } + + /*internal static int GetPortForIP(IPAddress iPAddress) - Elküldi + { + throw new NotImplementedException(); //TODO + }*/ + + public void CreateListItem(RichListView listView, int pos) + { + //TO!DO: A fenti kódot átrakni ide, hogy itt létrehozza az item-et + //string imgpath = this.GetImage(); + string imgpath = this.ImagePath; //2014.12.31. if (!(imgpath != "noimage.png" || File.Exists("noimage.png"))) //2014.03.13. - 2014.10.09. { imgpath = ""; @@ -323,22 +427,12 @@ namespace MSGer.tk state = " (" + Language.Translate("offline") + ")"; string text = this.Name + state + "\n" + this.Message; - if (ListID == -1) - { - int i; - for (i = 0; i < Program.MainF.contactList.Items.Count; i++) - { - if (Program.MainF.contactList.Items[i].SubItems[1].Text == "") - { - break; - } - } - ListID = i; - } - //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 + TMPListID = pos; + + bool tmp = listView.AutoUpdate; + listView.AutoUpdate = false; + listView.SuspendLayout(); //2014.12.21. + while (listView.Items.Count <= TMPListID) //Azt is adja hozzá, ami a kész listaelem lesz { var pictb = new PictureBox(); pictb.SizeMode = PictureBoxSizeMode.Zoom; @@ -346,12 +440,13 @@ namespace MSGer.tk var listtext = new ExRichTextBox(); listtext.Text = text; listtext = TextFormat.Parse(listtext); - Program.MainF.contactList.Items.Add(new RichListViewItem(new Control[] { pictb, listtext })); + listView.Items.Add(new RichListViewItem(new Control[] { pictb, listtext })); } - ((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; + ((PictureBox)listView.Items[TMPListID].SubItems[0]).ImageLocation = imgpath; + listView.Items[TMPListID].SubItems[1].Text = text; + listView.Items[TMPListID].SubItems[1] = TextFormat.Parse((ExRichTextBox)listView.Items[TMPListID].SubItems[1]); + listView.AutoUpdate = tmp; + listView.ResumeLayout(true); //2014.12.21. } } } diff --git a/MSGer.tk/bin/Debug/1.db b/MSGer.tk/bin/Debug/1.db new file mode 100644 index 0000000..4257df2 Binary files /dev/null and b/MSGer.tk/bin/Debug/1.db differ diff --git a/MSGer.tk/bin/Debug/2.db b/MSGer.tk/bin/Debug/2.db new file mode 100644 index 0000000..7d2254c Binary files /dev/null and b/MSGer.tk/bin/Debug/2.db differ diff --git a/MSGer.tk/bin/Debug/Handwriting program.dll b/MSGer.tk/bin/Debug/Handwriting program.dll new file mode 100644 index 0000000..d949d4e Binary files /dev/null and b/MSGer.tk/bin/Debug/Handwriting program.dll differ diff --git a/MSGer.tk/bin/Debug/Handwriting program.pdb b/MSGer.tk/bin/Debug/Handwriting program.pdb new file mode 100644 index 0000000..b9cda3d Binary files /dev/null and b/MSGer.tk/bin/Debug/Handwriting program.pdb differ diff --git a/MSGer.tk/bin/Debug/MSGer.tk.exe b/MSGer.tk/bin/Debug/MSGer.tk.exe index f86b097..0037761 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 57d3104..d83a0a7 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/MSGer.tk.vshost.exe b/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe index c0dfecc..666c0af 100644 Binary files a/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe and b/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe differ diff --git a/MSGer.tk/bin/Debug/RichListView.dll b/MSGer.tk/bin/Debug/RichListView.dll index e17d3c1..d3b744b 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 2aca0d0..6e89f91 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/SVN/LICENSE b/MSGer.tk/bin/Debug/SVN/LICENSE new file mode 100644 index 0000000..b6cae27 --- /dev/null +++ b/MSGer.tk/bin/Debug/SVN/LICENSE @@ -0,0 +1,270 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +SUBVERSION SUBCOMPONENTS: + +Subversion includes a number of subcomponents with separate copyright +notices and license terms. Your use of the source code for the these +subcomponents is subject to the terms and conditions of the following +licenses. + +For portions of the Python bindings test suite at +subversion/bindings/swig/python/tests/trac/: + + I. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + + II. Copyright (C) 2003, 2004, 2005 Edgewall Software + Copyright (C) 2003, 2004, 2005 Jonas Borgström + Copyright (C) 2005 Christopher Lenz + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + the documentation and/or other materials provided with the + distribution. + 3. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +For the file subversion/libsvn_subr/utf_width.c + + * Markus Kuhn -- 2007-05-26 (Unicode 5.0) + * + * Permission to use, copy, modify, and distribute this software + * for any purpose and without fee is hereby granted. The author + * disclaims all warranties with regard to this software. diff --git a/MSGer.tk/bin/Debug/SVN/SVN Cheat Sheet.htm b/MSGer.tk/bin/Debug/SVN/SVN Cheat Sheet.htm new file mode 100644 index 0000000..2134755 --- /dev/null +++ b/MSGer.tk/bin/Debug/SVN/SVN Cheat Sheet.htm @@ -0,0 +1,101 @@ + + + + + +SVN Cheat Sheet + + + + + + + + +
+
+Todo..
+
+
+ +
+
+Cheat Sheet
+
+
+ + + + diff --git a/MSGer.tk/bin/Debug/SVN/SVN Readme.htm b/MSGer.tk/bin/Debug/SVN/SVN Readme.htm new file mode 100644 index 0000000..d45f699 --- /dev/null +++ b/MSGer.tk/bin/Debug/SVN/SVN Readme.htm @@ -0,0 +1,105 @@ + + + + + +SVN Readme + + + + + + + + +
+
+Windows binaries from http://alagazam.net/
+Subversion build 1.6.15 : Zip file (see website for latest versions)
+
+Also available on authors sourceforge site.
+http://sourceforge.net/projects/win32svn/files/
+
+
+ +
+
+Subversion Portable Readme
+
+
+ + + + diff --git a/MSGer.tk/bin/Debug/SVN/SVN Reference.htm b/MSGer.tk/bin/Debug/SVN/SVN Reference.htm new file mode 100644 index 0000000..862f04e --- /dev/null +++ b/MSGer.tk/bin/Debug/SVN/SVN Reference.htm @@ -0,0 +1,106 @@ + + + + + +SVN reference + + + + + + + + +
+
+Version Control with Subversion
+http://svnbook.red-bean.com/en/1.5/index.html
+
+Article - Dump a SVN repository from a URL
+http://pogopixels.com/blog/dumping-a-svn-repository-from-a-remote-url/
+
+
+
+ +
+
+Subversion References
+
+
+ + + + diff --git a/MSGer.tk/bin/Debug/SVN/intl3_svn.dll b/MSGer.tk/bin/Debug/SVN/intl3_svn.dll new file mode 100644 index 0000000..850645a Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/intl3_svn.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libapr-1.dll b/MSGer.tk/bin/Debug/SVN/libapr-1.dll new file mode 100644 index 0000000..4942e33 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libapr-1.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libapriconv-1.dll b/MSGer.tk/bin/Debug/SVN/libapriconv-1.dll new file mode 100644 index 0000000..b14001b Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libapriconv-1.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libaprutil-1.dll b/MSGer.tk/bin/Debug/SVN/libaprutil-1.dll new file mode 100644 index 0000000..e50dbb4 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libaprutil-1.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libdb44.dll b/MSGer.tk/bin/Debug/SVN/libdb44.dll new file mode 100644 index 0000000..347a942 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libdb44.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libeay32.dll b/MSGer.tk/bin/Debug/SVN/libeay32.dll new file mode 100644 index 0000000..8cdeaed Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libeay32.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libsasl.dll b/MSGer.tk/bin/Debug/SVN/libsasl.dll new file mode 100644 index 0000000..770c06e Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libsasl.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libsvn_client-1.dll b/MSGer.tk/bin/Debug/SVN/libsvn_client-1.dll new file mode 100644 index 0000000..0dc8be9 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libsvn_client-1.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libsvn_delta-1.dll b/MSGer.tk/bin/Debug/SVN/libsvn_delta-1.dll new file mode 100644 index 0000000..69e6eac Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libsvn_delta-1.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libsvn_diff-1.dll b/MSGer.tk/bin/Debug/SVN/libsvn_diff-1.dll new file mode 100644 index 0000000..97132ae Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libsvn_diff-1.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libsvn_fs-1.dll b/MSGer.tk/bin/Debug/SVN/libsvn_fs-1.dll new file mode 100644 index 0000000..1b3b2a8 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libsvn_fs-1.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libsvn_ra-1.dll b/MSGer.tk/bin/Debug/SVN/libsvn_ra-1.dll new file mode 100644 index 0000000..a5484ec Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libsvn_ra-1.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libsvn_repos-1.dll b/MSGer.tk/bin/Debug/SVN/libsvn_repos-1.dll new file mode 100644 index 0000000..c4bd5a7 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libsvn_repos-1.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libsvn_subr-1.dll b/MSGer.tk/bin/Debug/SVN/libsvn_subr-1.dll new file mode 100644 index 0000000..1d1544f Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libsvn_subr-1.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/libsvn_wc-1.dll b/MSGer.tk/bin/Debug/SVN/libsvn_wc-1.dll new file mode 100644 index 0000000..e25391a Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/libsvn_wc-1.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/openssl.exe b/MSGer.tk/bin/Debug/SVN/openssl.exe new file mode 100644 index 0000000..61f5e53 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/openssl.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/pluginviewer.exe b/MSGer.tk/bin/Debug/SVN/pluginviewer.exe new file mode 100644 index 0000000..56f69a1 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/pluginviewer.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/saslANONYMOUS.dll b/MSGer.tk/bin/Debug/SVN/saslANONYMOUS.dll new file mode 100644 index 0000000..db01077 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/saslANONYMOUS.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/saslCRAMMD5.dll b/MSGer.tk/bin/Debug/SVN/saslCRAMMD5.dll new file mode 100644 index 0000000..86af07b Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/saslCRAMMD5.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/saslDIGESTMD5.dll b/MSGer.tk/bin/Debug/SVN/saslDIGESTMD5.dll new file mode 100644 index 0000000..fc97449 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/saslDIGESTMD5.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/saslLOGIN.dll b/MSGer.tk/bin/Debug/SVN/saslLOGIN.dll new file mode 100644 index 0000000..48e0862 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/saslLOGIN.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/saslNTLM.dll b/MSGer.tk/bin/Debug/SVN/saslNTLM.dll new file mode 100644 index 0000000..1c6bd0d Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/saslNTLM.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/saslPLAIN.dll b/MSGer.tk/bin/Debug/SVN/saslPLAIN.dll new file mode 100644 index 0000000..acf7c2c Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/saslPLAIN.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/saslSASLDB.dll b/MSGer.tk/bin/Debug/SVN/saslSASLDB.dll new file mode 100644 index 0000000..69b5ac4 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/saslSASLDB.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/sasldblistusers2.exe b/MSGer.tk/bin/Debug/SVN/sasldblistusers2.exe new file mode 100644 index 0000000..f997c6c Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/sasldblistusers2.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/saslpasswd2.exe b/MSGer.tk/bin/Debug/SVN/saslpasswd2.exe new file mode 100644 index 0000000..544e037 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/saslpasswd2.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/ssleay32.dll b/MSGer.tk/bin/Debug/SVN/ssleay32.dll new file mode 100644 index 0000000..ee1b39f Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/ssleay32.dll differ diff --git a/MSGer.tk/bin/Debug/SVN/svn-populate-node-origins-index.exe b/MSGer.tk/bin/Debug/SVN/svn-populate-node-origins-index.exe new file mode 100644 index 0000000..18a846f Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/svn-populate-node-origins-index.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/svn-push.exe b/MSGer.tk/bin/Debug/SVN/svn-push.exe new file mode 100644 index 0000000..2ce8b87 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/svn-push.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/svn.exe b/MSGer.tk/bin/Debug/SVN/svn.exe new file mode 100644 index 0000000..3ea00ea Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/svn.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/svnadmin.exe b/MSGer.tk/bin/Debug/SVN/svnadmin.exe new file mode 100644 index 0000000..647ccd8 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/svnadmin.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/svnauthz-validate.exe b/MSGer.tk/bin/Debug/SVN/svnauthz-validate.exe new file mode 100644 index 0000000..2c75e15 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/svnauthz-validate.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/svndumpfilter.exe b/MSGer.tk/bin/Debug/SVN/svndumpfilter.exe new file mode 100644 index 0000000..e309a27 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/svndumpfilter.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/svnlook.exe b/MSGer.tk/bin/Debug/SVN/svnlook.exe new file mode 100644 index 0000000..d8c5d7f Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/svnlook.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/svnmucc.exe b/MSGer.tk/bin/Debug/SVN/svnmucc.exe new file mode 100644 index 0000000..f144b3d Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/svnmucc.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/svnserve.exe b/MSGer.tk/bin/Debug/SVN/svnserve.exe new file mode 100644 index 0000000..bf75d49 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/svnserve.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/svnsync.exe b/MSGer.tk/bin/Debug/SVN/svnsync.exe new file mode 100644 index 0000000..b28b0bc Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/svnsync.exe differ diff --git a/MSGer.tk/bin/Debug/SVN/svnversion.exe b/MSGer.tk/bin/Debug/SVN/svnversion.exe new file mode 100644 index 0000000..03ec595 Binary files /dev/null and b/MSGer.tk/bin/Debug/SVN/svnversion.exe differ diff --git a/MSGer.tk/bin/Debug/Updater.exe b/MSGer.tk/bin/Debug/Updater.exe new file mode 100644 index 0000000..cbf5225 Binary files /dev/null and b/MSGer.tk/bin/Debug/Updater.exe differ diff --git a/MSGer.tk/bin/Debug/Updater.exe.config b/MSGer.tk/bin/Debug/Updater.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/MSGer.tk/bin/Debug/Updater.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/MSGer.tk/bin/Debug/Updater.pdb b/MSGer.tk/bin/Debug/Updater.pdb new file mode 100644 index 0000000..34f5b8e Binary files /dev/null and b/MSGer.tk/bin/Debug/Updater.pdb differ diff --git a/MSGer.tk/bin/Debug/Updater.vshost.exe b/MSGer.tk/bin/Debug/Updater.vshost.exe new file mode 100644 index 0000000..666c0af Binary files /dev/null and b/MSGer.tk/bin/Debug/Updater.vshost.exe differ diff --git a/MSGer.tk/bin/Debug/Updater.vshost.exe.config b/MSGer.tk/bin/Debug/Updater.vshost.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/MSGer.tk/bin/Debug/Updater.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/MSGer.tk/bin/Debug/languages/en.txt b/MSGer.tk/bin/Debug/languages/en.txt index 9f39561..ca959f6 100644 --- a/MSGer.tk/bin/Debug/languages/en.txt +++ b/MSGer.tk/bin/Debug/languages/en.txt @@ -9,7 +9,7 @@ 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_close,close=Close menu_file_exit=Exit menu_contacts=Contacts menu_contacts_add=Add contact... @@ -66,7 +66,7 @@ error=Error connecterror=Connecting to server failed. login_badnamepass=Incorrect username or password. reg_code=Code -reg_username=Username +reg_username,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. @@ -94,10 +94,15 @@ about_specthanks3=for making GlacialList about_specthanks4=for textboxes that you can insert images into settings=Settings settings_personal=Personal +settings_layout=Layout +settings_chatwindow=Show conversations in different window(s) +settings_chatwindowTabs=Organise conversations with tabs +settings_isserver=Server mode (port forwarding needed) 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. +error_no_network=No internet connection! name=Name message=Message language=Language @@ -111,4 +116,12 @@ beforelogin_translatemainf=Translating texts in the main window... beforelogin_loadtextformat=Loading emoticons... beforelogin_checkforupdates=Checking updates... beforelogin_loginform=Showing login window... +stats_servers=Available servers +stats_onlineservers=Connected servers +stats_mainserver=Main server +stats_nonetwork=No network +stats_retrying=Reconnecting... +stats_connected=Connected +updater=Downloading updates... +updater_infO=If the system requests, allow running svn.exe currentlang=English diff --git a/MSGer.tk/bin/Debug/languages/hu.txt b/MSGer.tk/bin/Debug/languages/hu.txt index 24cba6b..a553a0d 100644 --- a/MSGer.tk/bin/Debug/languages/hu.txt +++ b/MSGer.tk/bin/Debug/languages/hu.txt @@ -9,7 +9,7 @@ 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_close,close=Bezárás menu_file_exit=Kilépés menu_contacts=Ismerősök menu_contacts_add=Ismerős felvétele... @@ -66,7 +66,7 @@ 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_username,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. @@ -94,10 +94,15 @@ 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 +settings_layout=Kinézet +settings_chatwindow=A beszélgetések jelenjenek meg külön ablak(ok)ban +settings_chatwindowTabs=A beszélgetések fülekbe rendezése +settings_isserver=Szerver mód (port forwarding szükséges) 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. +error_no_network=Nincs internetkapcsolat! name=Név message=Üzenet language=Nyelv @@ -111,4 +116,12 @@ 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... +stats_servers=Elérhető szerverek +stats_onlineservers=Csatlakozott szerverek +stats_mainserver=Fő szerver +stats_nonetwork=Nincs hálózat +stats_retrying=Újracsatlakozás... +stats_connected=Csatlakozva +updater=Frissítések letöltése... +updater_info=Ha a rendszer kéri, engedélyezd az svn.exe futtatását currentlang=Magyar diff --git a/MSGer.tk/bin/Debug/logs/network.txt b/MSGer.tk/bin/Debug/logs/network.txt new file mode 100644 index 0000000..dc87214 --- /dev/null +++ b/MSGer.tk/bin/Debug/logs/network.txt @@ -0,0 +1,486 @@ +[8924 | 2014.12.31. 18:27:17] Packet sending begins: there are users online and/or it is an update type that does not require that. +[8924 | 2014.12.31. 18:27:17] Packet created successfully (not response) with update type ListUpdate and data: System.Byte[] +[8924 | 2014.12.31. 18:27:17] Hole punching begins. +[8924 | 2014.12.31. 18:27:17] Packet sending begins: there are users online and/or it is an update type that does not require that. +[8924 | 2014.12.31. 18:27:17] Packet created successfully (not response) with update type CheckConn and data: System.Byte[] +[8924 | 2014.12.31. 18:27:17] Hole punching begins. +[8924 | 2014.12.31. 18:27:17] Hole punching done. +[8924 | 2014.12.31. 18:27:17] Sending to single ip: 192.168.1.6:4542 +[8924 | 2014.12.31. 18:27:17] Starting to wait on response... +[8924 | 2014.12.31. 18:27:17] Waiting to get response... Wait time: 2seconds +[2488 | 2014.12.31. 18:27:17] Packet sending begins: there are users online and/or it is an update type that does not require that. +[2488 | 2014.12.31. 18:27:17] Packet created successfully (response) with update type CheckConn and data: System.Byte[] +[2488 | 2014.12.31. 18:27:17] Hole punching begins. +[2488 | 2014.12.31. 18:27:17] Hole punching done. +[2488 | 2014.12.31. 18:27:17] Sending to single ip: 192.168.1.6:4543 +[8924 | 2014.12.31. 18:27:17] A response received. +[8924 | 2014.12.31. 18:27:17] Response is from known ip or it's not required to be that. +[8924 | 2014.12.31. 18:27:17] Packet parsed. +[8924 | 2014.12.31. 18:27:17] Complete success! +[8924 | 2014.12.31. 18:27:17] Waiting to get response... Wait time: 2seconds +[8924 | 2014.12.31. 18:27:19] No response received. Retrying... +[8924 | 2014.12.31. 18:27:19] Waiting to get response... Wait time: 4seconds +[2488 | 2014.12.31. 18:27:19] Packet sending begins: there are users online and/or it is an update type that does not require that. +[2488 | 2014.12.31. 18:27:19] Packet created successfully (response) with update type CheckConn and data: System.Byte[] +[2488 | 2014.12.31. 18:27:19] Hole punching begins. +[2488 | 2014.12.31. 18:27:19] Hole punching done. +[2488 | 2014.12.31. 18:27:19] Sending to single ip: 192.168.1.6:4543 +[8924 | 2014.12.31. 18:27:21] No response received. Retrying... +[8924 | 2014.12.31. 18:27:21] Waiting to get response... Wait time: 6seconds +[2488 | 2014.12.31. 18:27:21] Packet sending begins: there are users online and/or it is an update type that does not require that. +[2488 | 2014.12.31. 18:27:21] Packet created successfully (response) with update type CheckConn and data: System.Byte[] +[2488 | 2014.12.31. 18:27:21] Hole punching begins. +[2488 | 2014.12.31. 18:27:21] Hole punching done. +[2488 | 2014.12.31. 18:27:21] Sending to single ip: 192.168.1.6:4543 +[8924 | 2014.12.31. 18:27:23] No response received. Retrying... +[8924 | 2014.12.31. 18:27:23] Waiting to get response... Wait time: 8seconds +[2488 | 2014.12.31. 18:27:23] Packet sending begins: there are users online and/or it is an update type that does not require that. +[2488 | 2014.12.31. 18:27:23] Packet created successfully (response) with update type CheckConn and data: System.Byte[] +[2488 | 2014.12.31. 18:27:23] Hole punching begins. +[2488 | 2014.12.31. 18:27:23] Hole punching done. +[2488 | 2014.12.31. 18:27:23] Sending to single ip: 192.168.1.6:4543 +[8924 | 2014.12.31. 18:27:25] No response received. Retrying... +[8924 | 2014.12.31. 18:27:25] Waiting to get response... Wait time: 10seconds +[2488 | 2014.12.31. 18:27:25] Packet sending begins: there are users online and/or it is an update type that does not require that. +[2488 | 2014.12.31. 18:27:25] Packet created successfully (response) with update type CheckConn and data: System.Byte[] +[2488 | 2014.12.31. 18:27:25] Hole punching begins. +[2488 | 2014.12.31. 18:27:25] Hole punching done. +[2488 | 2014.12.31. 18:27:25] Sending to single ip: 192.168.1.6:4543 +[8924 | 2014.12.31. 18:27:27] No response received. Retrying... +[8924 | 2014.12.31. 18:27:27] Resetting everything. +[8924 | 2014.12.31. 18:27:27] Returning response if there was any. +[2488 | 2014.12.31. 18:27:27] Packet sending begins: there are users online and/or it is an update type that does not require that. +[8924 | 2014.12.31. 18:27:27] Hole punching done. +[8924 | 2014.12.31. 18:27:27] Sending to every known user... +[8924 | 2014.12.31. 18:27:27] Starting to wait on response... +[8924 | 2014.12.31. 18:27:27] Waiting to get response... Wait time: 2seconds +[2488 | 2014.12.31. 18:27:27] Packet created successfully (response) with update type CheckConn and data: System.Byte[] +[2488 | 2014.12.31. 18:27:27] Hole punching begins. +[2488 | 2014.12.31. 18:27:27] Hole punching done. +[2488 | 2014.12.31. 18:27:27] Sending to single ip: 192.168.1.6:4543 +[8924 | 2014.12.31. 18:27:29] No response received. Retrying... +[8924 | 2014.12.31. 18:27:29] Waiting to get response... Wait time: 4seconds +[8924 | 2014.12.31. 18:27:31] No response received. Retrying... +[8924 | 2014.12.31. 18:27:31] Waiting to get response... Wait time: 6seconds +[8924 | 2014.12.31. 18:27:33] No response received. Retrying... +[8924 | 2014.12.31. 18:27:33] Waiting to get response... Wait time: 8seconds +[8924 | 2014.12.31. 18:27:35] No response received. Retrying... +[8924 | 2014.12.31. 18:27:35] Waiting to get response... Wait time: 10seconds +[8924 | 2014.12.31. 18:27:37] No response received. Retrying... +[8924 | 2014.12.31. 18:27:37] Resetting everything. +[8924 | 2014.12.31. 18:27:37] Returning response if there was any. +[5220: Network Thread | 2014.12.31. 18:30:35] Packet sending begins: there are users online and/or it is an update type that does not require that. +[5220: Network Thread | 2014.12.31. 18:30:35] Packet created successfully (not response) with update type LoginUser +[5220: Network Thread | 2014.12.31. 18:30:35] Hole punching begins. +[5220: Network Thread | 2014.12.31. 18:30:35] Hole punching done. +[5220: Network Thread | 2014.12.31. 18:30:35] Sending to every known user... +[5220: Network Thread | 2014.12.31. 18:30:35] Starting to wait on response... +[5220: Network Thread | 2014.12.31. 18:30:35] Resetting everything. +[5220: Network Thread | 2014.12.31. 18:30:35] Returning response if there was any. +[3272: Network Thread | 2014.12.31. 18:34:42] Packet sending begins: there are users online and/or it is an update type that does not require that. +[3272: Network Thread | 2014.12.31. 18:34:42] Packet created successfully (not response) with update type LoginUser +[3272: Network Thread | 2014.12.31. 18:34:42] Hole punching begins. +[3272: Network Thread | 2014.12.31. 18:34:42] Hole punching done. +[3272: Network Thread | 2014.12.31. 18:34:42] Sending to every known user... +[3272: Network Thread | 2014.12.31. 18:34:42] Starting to wait on response... +[3272: Network Thread | 2014.12.31. 18:34:42] Resetting everything. +[3272: Network Thread | 2014.12.31. 18:34:42] Returning response if there was any. +[7572: Network Thread | 2014.12.31. 18:34:49] Packet sending begins: there are users online and/or it is an update type that does not require that. +[7572: Network Thread | 2014.12.31. 18:34:49] Packet created successfully (not response) with update type LoginUser +[7572: Network Thread | 2014.12.31. 18:34:49] Hole punching begins. +[7572: Network Thread | 2014.12.31. 18:34:49] Packet sending begins: there are users online and/or it is an update type that does not require that. +[7572: Network Thread | 2014.12.31. 18:34:49] Packet created successfully (not response) with update type CheckConn +[7572: Network Thread | 2014.12.31. 18:34:49] Hole punching begins. +[7572: Network Thread | 2014.12.31. 18:34:49] Hole punching done. +[7572: Network Thread | 2014.12.31. 18:34:49] Sending to single ip: 192.168.1.6:4542 +[7572: Network Thread | 2014.12.31. 18:34:49] Starting to wait on response... +[7572: Network Thread | 2014.12.31. 18:34:49] Waiting to get response... Wait time: 2seconds +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:49] Packet sending begins: there are users online and/or it is an update type that does not require that. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:49] Packet created successfully (response) with update type CheckConn +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:49] Hole punching begins. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:49] Hole punching done. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:49] Sending to single ip: 192.168.1.6:4543 +[7572: Network Thread | 2014.12.31. 18:34:49] A response received. +[7572: Network Thread | 2014.12.31. 18:34:49] Response is from known ip or it's not required to be that. +[7572: Network Thread | 2014.12.31. 18:34:49] Packet parsed. +[7572: Network Thread | 2014.12.31. 18:34:49] Complete success! +[7572: Network Thread | 2014.12.31. 18:34:49] Waiting to get response... Wait time: 2seconds +[7572: Network Thread | 2014.12.31. 18:34:51] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:34:51] Waiting to get response... Wait time: 4seconds +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:51] Packet sending begins: there are users online and/or it is an update type that does not require that. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:51] Packet created successfully (response) with update type CheckConn +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:51] Hole punching begins. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:51] Hole punching done. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:51] Sending to single ip: 192.168.1.6:4543 +[7572: Network Thread | 2014.12.31. 18:34:53] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:34:53] Waiting to get response... Wait time: 6seconds +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:53] Packet sending begins: there are users online and/or it is an update type that does not require that. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:53] Packet created successfully (response) with update type CheckConn +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:53] Hole punching begins. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:53] Hole punching done. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:53] Sending to single ip: 192.168.1.6:4543 +[7572: Network Thread | 2014.12.31. 18:34:55] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:34:55] Waiting to get response... Wait time: 8seconds +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:55] Packet sending begins: there are users online and/or it is an update type that does not require that. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:55] Packet created successfully (response) with update type CheckConn +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:55] Hole punching begins. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:55] Hole punching done. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:55] Sending to single ip: 192.168.1.6:4543 +[7572: Network Thread | 2014.12.31. 18:34:57] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:34:57] Waiting to get response... Wait time: 10seconds +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:57] Packet sending begins: there are users online and/or it is an update type that does not require that. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:57] Packet created successfully (response) with update type CheckConn +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:57] Hole punching begins. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:57] Hole punching done. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:57] Sending to single ip: 192.168.1.6:4543 +[7572: Network Thread | 2014.12.31. 18:34:59] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:34:59] Resetting everything. +[7572: Network Thread | 2014.12.31. 18:34:59] Returning response if there was any. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:59] Packet sending begins: there are users online and/or it is an update type that does not require that. +[7572: Network Thread | 2014.12.31. 18:34:59] Hole punching done. +[7572: Network Thread | 2014.12.31. 18:34:59] Sending to every known user... +[7572: Network Thread | 2014.12.31. 18:34:59] Starting to wait on response... +[7572: Network Thread | 2014.12.31. 18:34:59] Waiting to get response... Wait time: 2seconds +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:59] Packet created successfully (response) with update type CheckConn +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:59] Hole punching begins. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:59] Hole punching done. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:59] Sending to single ip: 192.168.1.6:4543 +[7572: Network Thread | 2014.12.31. 18:35:01] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:35:01] Waiting to get response... Wait time: 4seconds +[7572: Network Thread | 2014.12.31. 18:35:03] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:35:03] Waiting to get response... Wait time: 6seconds +[6284: Network Thread | 2014.12.31. 18:36:30] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6284: Network Thread | 2014.12.31. 18:36:30] Packet created successfully (not response) with update type LoginUser +[6284: Network Thread | 2014.12.31. 18:36:30] Hole punching begins. +[6284: Network Thread | 2014.12.31. 18:36:30] Hole punching done. +[6284: Network Thread | 2014.12.31. 18:36:30] Sending to every known user... +[6284: Network Thread | 2014.12.31. 18:36:30] Starting to wait on response... +[6284: Network Thread | 2014.12.31. 18:36:30] Resetting everything. +[6284: Network Thread | 2014.12.31. 18:36:30] Returning response if there was any. +[4984: Network Thread | 2015.01.07. 20:16:43] Packet sending begins: there are users online and/or it is an update type that does not require that. +[4984: Network Thread | 2015.01.07. 20:16:43] Packet created successfully (not response) with update type LoginUser +[4984: Network Thread | 2015.01.07. 20:16:43] Hole punching begins. +[4984: Network Thread | 2015.01.07. 20:16:43] Hole punching done. +[4984: Network Thread | 2015.01.07. 20:16:43] Sending to every known user... +[4984: Network Thread | 2015.01.07. 20:16:43] Starting to wait on response... +[4984: Network Thread | 2015.01.07. 20:16:43] Resetting everything. +[4984: Network Thread | 2015.01.07. 20:16:43] Returning response if there was any. +[6584: Network Thread | 2015.01.12. 20:00:23] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Network Thread | 2015.01.12. 20:00:23] Packet created successfully (not response) with update type LoginUser +[6584: Network Thread | 2015.01.12. 20:00:23] Hole punching begins. +[6584: Network Thread | 2015.01.12. 20:00:23] Hole punching done. +[6584: Network Thread | 2015.01.12. 20:00:23] Sending to every known user... +[6584: Network Thread | 2015.01.12. 20:00:23] Starting to wait on response... +[6584: Network Thread | 2015.01.12. 20:00:23] Resetting everything. +[6584: Network Thread | 2015.01.12. 20:00:23] Returning response if there was any. +[6440: Network Thread | 2015.01.12. 20:01:14] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6440: Network Thread | 2015.01.12. 20:01:14] Packet created successfully (not response) with update type LoginUser +[6440: Network Thread | 2015.01.12. 20:01:15] Hole punching begins. +[6440: Network Thread | 2015.01.12. 20:01:15] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6440: Network Thread | 2015.01.12. 20:01:15] Packet created successfully (not response) with update type CheckConn +[6440: Network Thread | 2015.01.12. 20:01:15] Hole punching begins. +[6440: Network Thread | 2015.01.12. 20:01:15] Hole punching done. +[6440: Network Thread | 2015.01.12. 20:01:15] Sending to single ip: 192.168.1.6:4542 +[6440: Network Thread | 2015.01.12. 20:01:15] Starting to wait on response... +[6440: Network Thread | 2015.01.12. 20:01:15] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:15] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:15] Packet created successfully (response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:15] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:15] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:15] Sending to single ip: 192.168.1.6:4543 +[6440: Network Thread | 2015.01.12. 20:01:15] A response received. +[6440: Network Thread | 2015.01.12. 20:01:15] Response is from known ip or it's not required to be that. +[6440: Network Thread | 2015.01.12. 20:01:15] Packet parsed. +[6440: Network Thread | 2015.01.12. 20:01:15] Complete success! +[6440: Network Thread | 2015.01.12. 20:01:15] Waiting to get response... Wait time: 2seconds +[6440: Network Thread | 2015.01.12. 20:01:17] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:17] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:17] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:17] Packet created successfully (response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:17] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:17] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:17] Sending to single ip: 192.168.1.6:4543 +[6440: Network Thread | 2015.01.12. 20:01:19] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:19] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:19] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:19] Packet created successfully (response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:19] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:19] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:19] Sending to single ip: 192.168.1.6:4543 +[6440: Network Thread | 2015.01.12. 20:01:21] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:21] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:21] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:21] Packet created successfully (response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:21] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:21] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:21] Sending to single ip: 192.168.1.6:4543 +[6440: Network Thread | 2015.01.12. 20:01:23] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:23] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:23] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:23] Packet created successfully (response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:23] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:23] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:23] Sending to single ip: 192.168.1.6:4543 +[6440: Network Thread | 2015.01.12. 20:01:25] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:25] Resetting everything. +[6440: Network Thread | 2015.01.12. 20:01:25] Returning response if there was any. +[6440: Network Thread | 2015.01.12. 20:01:25] Hole punching done. +[6440: Network Thread | 2015.01.12. 20:01:25] Sending to every known user... +[6440: Network Thread | 2015.01.12. 20:01:25] Starting to wait on response... +[6440: Network Thread | 2015.01.12. 20:01:25] Waiting to get response... Wait time: 2seconds +[6440: Network Thread | 2015.01.12. 20:01:27] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:27] Waiting to get response... Wait time: 4seconds +[6440: Network Thread | 2015.01.12. 20:01:29] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:29] Waiting to get response... Wait time: 6seconds +[6440: Network Thread | 2015.01.12. 20:01:31] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:31] Waiting to get response... Wait time: 8seconds +[6440: Network Thread | 2015.01.12. 20:01:33] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:33] Waiting to get response... Wait time: 10seconds +[6440: Network Thread | 2015.01.12. 20:01:35] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:35] Resetting everything. +[6440: Network Thread | 2015.01.12. 20:01:35] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:06] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:06] Packet created successfully (response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:06] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:06] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:06] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Packet created successfully (response) with update type LoginUser +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Packet created successfully (not response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:09] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:09] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:11] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:11] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:13] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:13] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:15] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:15] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Packet created successfully (not response) with update type RequestConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:19] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:19] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:21] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:21] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:23] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:23] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:25] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:25] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Packet created successfully (response) with update type LoginUser +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Packet created successfully (not response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:29] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:29] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:31] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:31] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:33] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:33] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:35] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:35] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Packet created successfully (not response) with update type RequestConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:39] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:39] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:41] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:41] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:43] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:43] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:45] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:45] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Packet created successfully (response) with update type LoginUser +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Packet created successfully (not response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:49] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:49] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:51] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:51] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:53] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:53] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:55] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:55] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Packet created successfully (not response) with update type RequestConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:59] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:59] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:01] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:01] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:03] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:03] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:05] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:05] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:07] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:07] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:07] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:07] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:07] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Packet created successfully (response) with update type LoginUser +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Packet created successfully (not response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:10] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:10] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:12] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:12] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:14] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:14] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:16] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:16] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Packet created successfully (not response) with update type RequestConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:20] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:20] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:22] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:22] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:24] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:24] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:26] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:26] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Packet created successfully (response) with update type LoginUser +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Packet created successfully (not response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:30] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:30] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:32] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:32] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:34] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:34] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:36] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:36] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Packet created successfully (not response) with update type RequestConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:40] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:40] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:58] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:59] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:59] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:59] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:59] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Packet created successfully (response) with update type LoginUser +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Packet created successfully (not response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:02] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:02] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:04] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:04] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:06] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:06] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:08] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:08] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Packet created successfully (not response) with update type RequestConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:12] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:12] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:14] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:14] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:16] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:16] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:18] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:18] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:20] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:20] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:20] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:20] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:20] Sending to every known user... diff --git a/MSGer.tk/bin/Debug/program.db b/MSGer.tk/bin/Debug/program.db new file mode 100644 index 0000000..d9a06f4 Binary files /dev/null and b/MSGer.tk/bin/Debug/program.db differ diff --git a/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache index 273bb50..61ddb21 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 d19e1c3..8caedef 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/Interop.NATUPNPLib.dll b/MSGer.tk/obj/Debug/Interop.NATUPNPLib.dll new file mode 100644 index 0000000..4626e36 Binary files /dev/null and b/MSGer.tk/obj/Debug/Interop.NATUPNPLib.dll differ diff --git a/MSGer.tk/obj/Debug/Interop.UPNPLib.dll b/MSGer.tk/obj/Debug/Interop.UPNPLib.dll new file mode 100644 index 0000000..9db5884 Binary files /dev/null and b/MSGer.tk/obj/Debug/Interop.UPNPLib.dll differ diff --git a/MSGer.tk/obj/Debug/MSGer.tk.BeforeLogin.resources b/MSGer.tk/obj/Debug/MSGer.tk.BeforeLogin.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/MSGer.tk/obj/Debug/MSGer.tk.BeforeLogin.resources differ diff --git a/MSGer.tk/obj/Debug/MSGer.tk.ChatPanel.resources b/MSGer.tk/obj/Debug/MSGer.tk.ChatPanel.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/MSGer.tk/obj/Debug/MSGer.tk.ChatPanel.resources differ diff --git a/MSGer.tk/obj/Debug/MSGer.tk.PartnerInformation.resources b/MSGer.tk/obj/Debug/MSGer.tk.PartnerInformation.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/MSGer.tk/obj/Debug/MSGer.tk.PartnerInformation.resources differ diff --git a/MSGer.tk/obj/Debug/MSGer.tk.ThemedForms.resources b/MSGer.tk/obj/Debug/MSGer.tk.ThemedForms.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/MSGer.tk/obj/Debug/MSGer.tk.ThemedForms.resources differ diff --git a/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt b/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt index f9f1dd4..f52c08d 100644 --- a/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt +++ b/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt @@ -45,8 +45,6 @@ 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#)\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 @@ -58,15 +56,23 @@ D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\Khendys. 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.BeforeLogin.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.PartnerInformation.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 +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\obj\Debug\MSGer.tk.ChatPanel.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\Handwriting program.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\Handwriting program.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.ThemedForms.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\Interop.NATUPNPLib.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.csproj.ResolveComReference.cache diff --git a/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache b/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache index 4859c0a..3764689 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.csproj.ResolveComReference.cache b/MSGer.tk/obj/Debug/MSGer.tk.csproj.ResolveComReference.cache new file mode 100644 index 0000000..149a1d3 Binary files /dev/null and b/MSGer.tk/obj/Debug/MSGer.tk.csproj.ResolveComReference.cache differ diff --git a/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache b/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache index 9dace19..17eb322 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 f86b097..0037761 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 57d3104..d83a0a7 100644 Binary files a/MSGer.tk/obj/Debug/MSGer.tk.pdb and b/MSGer.tk/obj/Debug/MSGer.tk.pdb differ diff --git a/MSGer.tk/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/MSGer.tk/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll index 8efa26f..61bf257 100644 Binary files a/MSGer.tk/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll and b/MSGer.tk/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferences.cache b/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..1f92c39 Binary files /dev/null and b/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferences.cache differ diff --git a/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..ee38181 Binary files /dev/null and b/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.AboutBox1.resources b/MSGer.tk/obj/Release/MSGer.tk.AboutBox1.resources new file mode 100644 index 0000000..374671b Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.AboutBox1.resources differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.AddPartner.resources b/MSGer.tk/obj/Release/MSGer.tk.AddPartner.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.AddPartner.resources differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.ChatForm.resources b/MSGer.tk/obj/Release/MSGer.tk.ChatForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.ChatForm.resources differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.InvitePartner.resources b/MSGer.tk/obj/Release/MSGer.tk.InvitePartner.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.InvitePartner.resources differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.LoginForm.resources b/MSGer.tk/obj/Release/MSGer.tk.LoginForm.resources new file mode 100644 index 0000000..62b9f73 Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.LoginForm.resources differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.LoginForm_RegistrationForm.resources b/MSGer.tk/obj/Release/MSGer.tk.LoginForm_RegistrationForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.LoginForm_RegistrationForm.resources differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.MainForm.resources b/MSGer.tk/obj/Release/MSGer.tk.MainForm.resources new file mode 100644 index 0000000..d664d05 Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.MainForm.resources differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.Notifier.resources b/MSGer.tk/obj/Release/MSGer.tk.Notifier.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.Notifier.resources differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.Properties.Resources.resources b/MSGer.tk/obj/Release/MSGer.tk.Properties.Resources.resources new file mode 100644 index 0000000..af48a80 Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.Properties.Resources.resources differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.SelectPartnerForm.resources b/MSGer.tk/obj/Release/MSGer.tk.SelectPartnerForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.SelectPartnerForm.resources differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.SettingsForm.resources b/MSGer.tk/obj/Release/MSGer.tk.SettingsForm.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.SettingsForm.resources differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.csproj.FileListAbsolute.txt b/MSGer.tk/obj/Release/MSGer.tk.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..a9cd58a --- /dev/null +++ b/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/MSGer.tk/obj/Release/MSGer.tk.csproj.GenerateResource.Cache b/MSGer.tk/obj/Release/MSGer.tk.csproj.GenerateResource.Cache new file mode 100644 index 0000000..e2d2aae Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.csproj.GenerateResource.Cache differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.csprojResolveAssemblyReference.cache b/MSGer.tk/obj/Release/MSGer.tk.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..78d5169 Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.csprojResolveAssemblyReference.cache differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.exe b/MSGer.tk/obj/Release/MSGer.tk.exe new file mode 100644 index 0000000..acc488b Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.exe differ diff --git a/MSGer.tk/obj/Release/MSGer.tk.pdb b/MSGer.tk/obj/Release/MSGer.tk.pdb new file mode 100644 index 0000000..7ba9397 Binary files /dev/null and b/MSGer.tk/obj/Release/MSGer.tk.pdb differ diff --git a/MSGer.tk/obj/Release/TempPE/Properties.Resources.Designer.cs.dll b/MSGer.tk/obj/Release/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..7c9638a Binary files /dev/null and b/MSGer.tk/obj/Release/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/MSGer.tk/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/MSGer.tk/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/MSGer.tk/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/MSGer.tk/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/MSGer.tk/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/MSGer.tk/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/NoParentException.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/NoParentException.cs new file mode 100644 index 0000000..44ec1a7 --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/NoParentException.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SzNPProjects +{ + class NoParentException : Exception + { + /*public override System.Collections.IDictionary Data + { + get + { + var ret = new Dictionary(); + ret["details"] = "Try to reference ListViewItem which is not assigned to a ListView control."; + return ret; + } + } + public override string Message + { + get + { + return "Try to reference ListViewItem which is not assigned to a ListView control."; + } + }*/ + public NoParentException(string message) : base(message) + { + } + } +} diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/Properties/AssemblyInfo.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2d7e6fa --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/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("RichListView")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RichListView")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("1820b274-58b3-405f-8390-5377cb74fa29")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListView.Designer.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListView.Designer.cs new file mode 100644 index 0000000..0d60986 --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListView.Designer.cs @@ -0,0 +1,48 @@ +namespace SzNPProjects +{ + partial class RichListView + { + /// + /// 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 Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // RichListView + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScroll = true; + this.Name = "RichListView"; + this.Size = new System.Drawing.Size(152, 196); + this.Resize += new System.EventHandler(this.RichListView_Resize); + this.ResumeLayout(false); + + } + + #endregion + + } +} diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListView.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListView.cs new file mode 100644 index 0000000..ac9e7bd --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListView.cs @@ -0,0 +1,175 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Khendys.Controls; + +namespace SzNPProjects +{ + public partial class RichListView : UserControl + { + public RichListView() + { + InitializeComponent(); + Items.ListChanged += Items_ListChanged; + //Columns = new BindingList(); + + //var item = new ExRichTextBox(); + //var listitem = new RichListViewItem(item); + //Items.Add(listitem); + } + + #region Events + void Items_ListChanged(object sender, ListChangedEventArgs e) + { + switch(e.ListChangedType) + { + case ListChangedType.ItemAdded: + Items[e.NewIndex].Parent = this; + Items[e.NewIndex]._CreateInstance(); + break; + } + _RefreshList(); + } + public event EventHandler ItemClicked; + public event EventHandler ItemDoubleClicked; + #endregion + + #region Properties + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public BindingList items; + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public BindingList Items + { + get + { + if (items == null) + items = new BindingList(); + return items; + } + } + /*[Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public BindingList Columns { get; set; }*/ + public RichListViewColumn[] columns; + public RichListViewColumn[] Columns + { + get + { + if (columns == null) + return new RichListViewColumn[0]; + return columns; + } + set + { + columns = value; + _RefreshList(); + } + } + public int HeaderHeight { get; set; } + public int ItemHeight { get; set; } + /// + /// Determines whenether to set last column width to fit the remaining space. + /// + public bool ColumnAutoFill { get; set; } + public override Color BackColor + { + get + { + return base.BackColor; + } + set + { + _SetItemsBackground(value); + base.BackColor = value; + } + } + public override Color ForeColor + { + get + { + return base.ForeColor; + } + set + { + _SetItemsForeground(value); + base.ForeColor = value; + } + } + #endregion + + #region Public Methods + public new void Show() + { + _RefreshList(); + for (int i = 0; i < Items.Count; i++) + Items[i].Show(); + base.Show(); + } + public new void Hide() + { + + } + public void SetItems(List items) + { + for (int i = 0; i < items.Count; i++) + Items.Add(new RichListViewItem(items[i])); + _RefreshList(); + } + #endregion + + #region Internal Methods + private void _SetItemsBackground(Color value) + { + for (int i = 0; i < Items.Count; i++) + Items[i].BackColor = value; + } + private void _SetItemsForeground(Color value) + { + for (int i = 0; i < Items.Count; i++) + Items[i].ForeColor = value; + } + private void _RefreshList() + { + //Console.WriteLine("RefreshList"); + for (int i = 0; i < Items.Count; i++) + { + //Console.WriteLine("Item found: " + i); + Items[i].SetBounds(HeaderHeight + ItemHeight * i, ItemHeight); + //for (int j = 0; j < Columns.Count; i++) + //Items[i].Control.SetBounds(this.Location.X, this.Location.Y + HeaderHeight + ItemHeight * i, Columns[j].Width, ItemHeight); + /*Items[i].Control.Show(); + Items[i].Control.Parent = this;*/ + Items[i].Show(); + } + Refresh(); + } + internal void _ItemClicked(object sender) + { + ItemClicked(sender, Items.IndexOf((RichListViewItem)sender)); + } + internal void _ItemDoubleClicked(object sender) + { + var index=Items.IndexOf((RichListViewItem)sender); + ItemDoubleClicked(sender, index); + for (int i = 0; i < Items[index].SubItems.Length; i++) + if (Items[index].SubItems[i].GetType().IsSubclassOf(typeof(TextBoxBase))) + ((TextBoxBase)Items[index].SubItems[i]).SelectionLength = 0; + } + private void RichListView_Resize(object sender, EventArgs e) + { + _RefreshList(); + } + #endregion + } +} diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListView.csproj b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListView.csproj new file mode 100644 index 0000000..e066664 --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListView.csproj @@ -0,0 +1,72 @@ + + + + + Debug + AnyCPU + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + Library + Properties + SzNPProjects + RichListView + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + Auto + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll + + + + + + + + + + + + + + + + UserControl + + + RichListView.cs + + + + + + + RichListView.cs + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListView.resx b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListView.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListView.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/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListViewColumn.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListViewColumn.cs new file mode 100644 index 0000000..03a2b00 --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListViewColumn.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace SzNPProjects +{ + public class RichListViewColumn + { + public int Width { get; set; } + public string Text { get; set; } + } +} diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListViewItem.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListViewItem.cs new file mode 100644 index 0000000..27f0874 --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/RichListView/RichListViewItem.cs @@ -0,0 +1,124 @@ +using Khendys.Controls; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace SzNPProjects +{ + public class RichListViewItem + { + /*public Control Control { get; set; } + public string[] SubItems { get; internal set; }*/ + public Control[] SubItems { get; internal set; } + public RichListView Parent { get; internal set; } + private Color backcolor; + public Color BackColor + { + get + { + return backcolor; + } + set + { + for (int i = 0; i < SubItems.Length; i++) + SubItems[i].BackColor = value; + backcolor = value; + } + } + private Color forecolor; + public Color ForeColor + { + get + { + return forecolor; + } + set + { + for (int i = 0; i < SubItems.Length; i++) + SubItems[i].ForeColor = value; + forecolor = value; + } + } + public RichListViewItem() + { + //_CreateInstance(); + } + //public RichListViewItem(Control control) + public RichListViewItem(Control[] subitems) + { + //Control = control; + SubItems = subitems; + _CreateInstance(); + } + internal void _CreateInstance() + { + /*if (Control == null) + Control = new ExRichTextBox(); + ((ExRichTextBox)Control).ReadOnly = true;*/ + if (SubItems == null) + SubItems = new Control[Parent.Columns.Length]; + for (int i = 0; i < Parent.Columns.Length; i++) + { + if (SubItems[i] == null) + { + SubItems[i] = new ExRichTextBox(); + SubItems[i].Parent = this.Parent; + } + if (SubItems[i].GetType().IsSubclassOf(typeof(TextBoxBase))) //If it's a TextBox, set it to read-only + { + ((TextBoxBase)SubItems[i]).ReadOnly = true; + ((TextBoxBase)SubItems[i]).BorderStyle = BorderStyle.None; + ((TextBoxBase)SubItems[i]).Cursor = Cursors.Arrow; + } + this.SubItems[i].BackColor = this.Parent.BackColor; + this.SubItems[i].ForeColor = this.Parent.ForeColor; + SubItems[i].Click += _ItemClicked; + SubItems[i].DoubleClick += _ItemDoubleClicked; + } + } + private void _ItemClicked(object sender, EventArgs e) + {/* + for(int i=0; i + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Form1.Designer.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Form1.Designer.cs new file mode 100644 index 0000000..e79076f --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Form1.Designer.cs @@ -0,0 +1,79 @@ +namespace Test_Project +{ + partial class Form1 + { + /// + /// 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() + { + SzNPProjects.RichListViewColumn richListViewColumn1 = new SzNPProjects.RichListViewColumn(); + SzNPProjects.RichListViewColumn richListViewColumn2 = new SzNPProjects.RichListViewColumn(); + this.richListView1 = new SzNPProjects.RichListView(); + this.SuspendLayout(); + // + // richListView1 + // + this.richListView1.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.richListView1.AutoScroll = true; + this.richListView1.BackColor = System.Drawing.Color.Navy; + this.richListView1.ColumnAutoFill = true; + richListViewColumn1.Text = "Na most már elvileg működik"; + richListViewColumn1.Width = 100; + richListViewColumn2.Text = "Újabb oszlop"; + richListViewColumn2.Width = 100; + this.richListView1.Columns = new SzNPProjects.RichListViewColumn[] { + richListViewColumn1, + richListViewColumn2}; + this.richListView1.ForeColor = System.Drawing.Color.Aqua; + this.richListView1.HeaderHeight = 0; + this.richListView1.ItemHeight = 50; + this.richListView1.Location = new System.Drawing.Point(106, 12); + this.richListView1.Name = "richListView1"; + this.richListView1.Size = new System.Drawing.Size(657, 278); + this.richListView1.TabIndex = 0; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(786, 439); + this.Controls.Add(this.richListView1); + this.Name = "Form1"; + this.Text = "Test Form"; + this.ResumeLayout(false); + + } + + #endregion + + private SzNPProjects.RichListView richListView1; + + + + } +} + diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Form1.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Form1.cs new file mode 100644 index 0000000..f02fec9 --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Form1.cs @@ -0,0 +1,52 @@ +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 SzNPProjects; + +namespace Test_Project +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + /*var tmp = new RichListView(); + tmp.ItemHeight = 50; + tmp.Columns.Add(new RichListViewColumn()); + tmp.Columns[0].Width = 100; + Console.WriteLine("Main call"); + tmp.Items.Add(new RichListViewItem()); + this.Controls.Add(tmp); + tmp.Show();*/ + + //var col = new RichListViewColumn(); + //col.Width = 50; + //richListView1.Columns.Add(col); + var item=new RichListViewItem(); + //item.Control.Text = "Test :P"; + richListView1.Items.Add(item); + richListView1.Items[0].SubItems[0].Text = "Test :P"; + richListView1.Items[0].SubItems[1].Text = "Second col"; + richListView1.Items.Add(new RichListViewItem()); + richListView1.Items[1].SubItems[0].Text = "Only one col of text"; + richListView1.ItemClicked += richListView1_ItemClicked; + richListView1.ItemDoubleClicked += richListView1_ItemDoubleClicked; + } + + void richListView1_ItemDoubleClicked(object sender, int e) + { + MessageBox.Show(e + 1 + ". item double clicked"); + } + + void richListView1_ItemClicked(object sender, int e) + { + //MessageBox.Show(e + 1 + ". item clicked"); + } + } +} diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Form1.resx b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Form1.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Form1.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/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Program.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Program.cs new file mode 100644 index 0000000..bc18a48 --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Test_Project +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/AssemblyInfo.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..bce6b2d --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/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("Test Project")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Test Project")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("5687fade-08c8-4c73-9b0e-e0ea562b787c")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/Resources.Designer.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/Resources.Designer.cs new file mode 100644 index 0000000..6d37e11 --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_Project.Properties +{ + + + /// + /// 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 ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Test_Project.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; + } + } + } +} diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/Resources.resx b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/Resources.resx new file mode 100644 index 0000000..ffecec8 --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/Settings.Designer.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/Settings.Designer.cs new file mode 100644 index 0000000..673388f --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_Project.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/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/Settings.settings b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Test Project.csproj b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Test Project.csproj new file mode 100644 index 0000000..368299a --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/Test Project.csproj @@ -0,0 +1,97 @@ + + + + + Debug + AnyCPU + {A4C26FE5-9705-4E0D-8CAC-29C368663E10} + WinExe + Properties + Test_Project + Test Project + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + RichListView + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll new file mode 100644 index 0000000..1851254 Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb new file mode 100644 index 0000000..1610b6d Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/RichListView.dll b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/RichListView.dll new file mode 100644 index 0000000..8218c4e Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/RichListView.dll differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/RichListView.pdb b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/RichListView.pdb new file mode 100644 index 0000000..06b1993 Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/RichListView.pdb differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.exe b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.exe new file mode 100644 index 0000000..3164823 Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.exe differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.exe.config b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.pdb b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.pdb new file mode 100644 index 0000000..4794d62 Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.pdb differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.vshost.exe b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.vshost.exe new file mode 100644 index 0000000..c0dfecc Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.vshost.exe differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.vshost.exe.config b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.vshost.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.vshost.exe.manifest b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.vshost.exe.manifest new file mode 100644 index 0000000..f96b1d6 --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/bin/Debug/Test Project.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..81dea61 Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..8931c86 Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..54c6764 --- /dev/null +++ b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt @@ -0,0 +1,13 @@ +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.exe.config +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.exe +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Khendys.Controls.ExRichTextBox.dll +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\RichListView.dll +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\RichListView.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Khendys.Controls.ExRichTextBox.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.csprojResolveAssemblyReference.cache +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test_Project.Form1.resources +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test_Project.Properties.Resources.resources +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.csproj.GenerateResource.Cache +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.exe +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.pdb diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache new file mode 100644 index 0000000..a5c8ab6 Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..a32f1e5 Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.exe b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.exe new file mode 100644 index 0000000..3164823 Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.exe differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.pdb b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.pdb new file mode 100644 index 0000000..4794d62 Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test Project.pdb differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test_Project.Form1.resources b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test_Project.Form1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test_Project.Form1.resources differ diff --git a/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test_Project.Properties.Resources.resources b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test_Project.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/RichListView/0 Versions/2014.05.09.-2014.05.11/Test Project/obj/Debug/Test_Project.Properties.Resources.resources differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/NoParentException.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/NoParentException.cs new file mode 100644 index 0000000..44ec1a7 --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/NoParentException.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SzNPProjects +{ + class NoParentException : Exception + { + /*public override System.Collections.IDictionary Data + { + get + { + var ret = new Dictionary(); + ret["details"] = "Try to reference ListViewItem which is not assigned to a ListView control."; + return ret; + } + } + public override string Message + { + get + { + return "Try to reference ListViewItem which is not assigned to a ListView control."; + } + }*/ + public NoParentException(string message) : base(message) + { + } + } +} diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/Properties/AssemblyInfo.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2d7e6fa --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/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("RichListView")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RichListView")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("1820b274-58b3-405f-8390-5377cb74fa29")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListView.Designer.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListView.Designer.cs new file mode 100644 index 0000000..0d60986 --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListView.Designer.cs @@ -0,0 +1,48 @@ +namespace SzNPProjects +{ + partial class RichListView + { + /// + /// 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 Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // RichListView + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScroll = true; + this.Name = "RichListView"; + this.Size = new System.Drawing.Size(152, 196); + this.Resize += new System.EventHandler(this.RichListView_Resize); + this.ResumeLayout(false); + + } + + #endregion + + } +} diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListView.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListView.cs new file mode 100644 index 0000000..e412718 --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListView.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Khendys.Controls; + +namespace SzNPProjects +{ + public partial class RichListView : UserControl + { + public RichListView() + { + InitializeComponent(); + Items.ListChanged += Items_ListChanged; + SetStyle(ControlStyles.SupportsTransparentBackColor, true); + //Columns = new BindingList(); + + //var item = new ExRichTextBox(); + //var listitem = new RichListViewItem(item); + //Items.Add(listitem); + } + + #region Events + void Items_ListChanged(object sender, ListChangedEventArgs e) + { + switch(e.ListChangedType) + { + case ListChangedType.ItemAdded: + Items[e.NewIndex].Parent = this; + Items[e.NewIndex]._CreateInstance(); + break; + } + _RefreshList(); + } + public event EventHandler ItemClicked; + public event EventHandler ItemDoubleClicked; + #endregion + + #region Properties + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public BindingList items; + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public BindingList Items + { + get + { + if (items == null) + items = new BindingList(); + return items; + } + } + /*[Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public BindingList Columns { get; set; }*/ + public RichListViewColumn[] columns; + public RichListViewColumn[] Columns + { + get + { + if (columns == null) + return new RichListViewColumn[0]; + return columns; + } + set + { + columns = value; + _RefreshList(); + } + } + public int HeaderHeight { get; set; } + public int ItemHeight { get; set; } + /// + /// Determines whenether to set last column width to fit the remaining space. + /// + public bool ColumnAutoFill { get; set; } + public override Color BackColor + { + get + { + return base.BackColor; + } + set + { + _SetItemsBackground(value); + base.BackColor = value; + } + } + public override Color ForeColor + { + get + { + return base.ForeColor; + } + set + { + _SetItemsForeground(value); + base.ForeColor = value; + } + } + #endregion + + #region Public Methods + public new void Show() + { + _RefreshList(); + for (int i = 0; i < Items.Count; i++) + Items[i].Show(); + base.Show(); + } + public new void Hide() + { + + } + public void SetItems(List items) + { + for (int i = 0; i < items.Count; i++) + Items.Add(new RichListViewItem(items[i])); + _RefreshList(); + } + #endregion + + #region Internal Methods + private void _SetItemsBackground(Color value) + { + for (int i = 0; i < Items.Count; i++) + Items[i].BackColor = value; + } + private void _SetItemsForeground(Color value) + { + for (int i = 0; i < Items.Count; i++) + Items[i].ForeColor = value; + } + private void _RefreshList() + { + //Console.WriteLine("RefreshList"); + for (int i = 0; i < Items.Count; i++) + { + Items[i].Hide(); + //Console.WriteLine("Item found: " + i); + Items[i].SetBounds(HeaderHeight + ItemHeight * i, ItemHeight); + //for (int j = 0; j < Columns.Count; i++) + //Items[i].Control.SetBounds(this.Location.X, this.Location.Y + HeaderHeight + ItemHeight * i, Columns[j].Width, ItemHeight); + /*Items[i].Control.Show(); + Items[i].Control.Parent = this;*/ + Items[i].Show(); + } + Refresh(); + } + internal void _ItemClicked(object sender) + { + ItemClicked(sender, Items.IndexOf((RichListViewItem)sender)); + } + internal void _ItemDoubleClicked(object sender) + { + var index=Items.IndexOf((RichListViewItem)sender); + ItemDoubleClicked(sender, index); + for (int i = 0; i < Items[index].SubItems.Length; i++) + if (Items[index].SubItems[i].GetType().IsSubclassOf(typeof(TextBoxBase))) + ((TextBoxBase)Items[index].SubItems[i]).SelectionLength = 0; + } + private void RichListView_Resize(object sender, EventArgs e) + { + _RefreshList(); + } + #endregion + } +} diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListView.csproj b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListView.csproj new file mode 100644 index 0000000..e066664 --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListView.csproj @@ -0,0 +1,72 @@ + + + + + Debug + AnyCPU + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + Library + Properties + SzNPProjects + RichListView + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + Auto + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll + + + + + + + + + + + + + + + + UserControl + + + RichListView.cs + + + + + + + RichListView.cs + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListView.resx b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListView.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListView.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/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListViewColumn.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListViewColumn.cs new file mode 100644 index 0000000..03a2b00 --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListViewColumn.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace SzNPProjects +{ + public class RichListViewColumn + { + public int Width { get; set; } + public string Text { get; set; } + } +} diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListViewItem.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListViewItem.cs new file mode 100644 index 0000000..b310a21 --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/RichListView/RichListViewItem.cs @@ -0,0 +1,175 @@ +using Khendys.Controls; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace SzNPProjects +{ + public class RichListViewItem + { + /*public Control Control { get; set; } + public string[] SubItems { get; internal set; }*/ + public Control[] SubItems { get; internal set; } + public RichListView Parent { get; internal set; } + private Color backcolor; + public Color BackColor + { + get + { + return backcolor; + } + set + { + for (int i = 0; i < SubItems.Length; i++) + SubItems[i].BackColor = value; + backcolor = value; + } + } + private Color forecolor; + public Color ForeColor + { + get + { + return forecolor; + } + set + { + for (int i = 0; i < SubItems.Length; i++) + SubItems[i].ForeColor = value; + forecolor = value; + } + } + public RichListViewItem() + { + //_CreateInstance(); + } + //public RichListViewItem(Control control) + public RichListViewItem(Control[] subitems) + { + //Control = control; + SubItems = subitems; + //_CreateInstance(); + } + internal void _CreateInstance() + { + /*if (Control == null) + Control = new ExRichTextBox(); + ((ExRichTextBox)Control).ReadOnly = true;*/ + if (SubItems == null) + SubItems = new Control[Parent.Columns.Length]; + for (int i = 0; i < Parent.Columns.Length; i++) + { + if (SubItems[i] == null) + { + SubItems[i] = new ExRichTextBox(); + SubItems[i].Cursor = Cursors.Arrow; + } + SubItems[i].Parent = this.Parent; + if (SubItems[i].GetType().IsSubclassOf(typeof(TextBoxBase))) //If it's a TextBox, set it to read-only + { + ((TextBoxBase)SubItems[i]).ReadOnly = true; + ((TextBoxBase)SubItems[i]).BorderStyle = BorderStyle.None; + //((TextBoxBase)SubItems[i]). + } + /*if (SubItems[i].GetType()==typeof(ExExRichTextBox)) + { + ((ExExRichTextBox)SubItems[i]).SetTransparent(true); + //SubItems[i] = ((ExExRichTextBox)SubItems[i]).SetTransparent(true); + }*/ + bool success = true; + Control parent = this.Parent; + do + { + success = true; + try + { + this.SubItems[i].BackColor = parent.BackColor; + } + catch (ArgumentException) + { + Console.WriteLine("Transparency is not supported. Using container BackColor."); + this.SubItems[i].BackColor = this.Parent.Parent.BackColor; + success = false; + parent = parent.Parent; + } + } while (!success); + this.SubItems[i].ForeColor = this.Parent.ForeColor; + SubItems[i].Click += _ItemClicked; + SubItems[i].DoubleClick += _ItemDoubleClicked; + } + } + private void _ItemClicked(object sender, EventArgs e) + {/* + for(int i=0; i + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Form1.Designer.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Form1.Designer.cs new file mode 100644 index 0000000..dc8f7ae --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Form1.Designer.cs @@ -0,0 +1,81 @@ +namespace Test_Project +{ + partial class Form1 + { + /// + /// 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() + { + SzNPProjects.RichListViewColumn richListViewColumn1 = new SzNPProjects.RichListViewColumn(); + SzNPProjects.RichListViewColumn richListViewColumn2 = new SzNPProjects.RichListViewColumn(); + this.richListView1 = new SzNPProjects.RichListView(); + this.SuspendLayout(); + // + // richListView1 + // + this.richListView1.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.richListView1.AutoScroll = true; + this.richListView1.BackColor = System.Drawing.Color.Black; + this.richListView1.ColumnAutoFill = true; + richListViewColumn1.Text = "Na most már elvileg működik"; + richListViewColumn1.Width = 100; + richListViewColumn2.Text = "Újabb oszlop"; + richListViewColumn2.Width = 100; + this.richListView1.Columns = new SzNPProjects.RichListViewColumn[] { + richListViewColumn1, + richListViewColumn2}; + this.richListView1.ForeColor = System.Drawing.Color.Aqua; + this.richListView1.HeaderHeight = 0; + this.richListView1.ItemHeight = 50; + this.richListView1.Location = new System.Drawing.Point(12, 12); + this.richListView1.Name = "richListView1"; + this.richListView1.Size = new System.Drawing.Size(762, 415); + this.richListView1.TabIndex = 0; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Navy; + this.ClientSize = new System.Drawing.Size(786, 439); + this.Controls.Add(this.richListView1); + this.ForeColor = System.Drawing.Color.Aqua; + this.Name = "Form1"; + this.Text = "Test Form"; + this.ResumeLayout(false); + + } + + #endregion + + private SzNPProjects.RichListView richListView1; + + + + } +} + diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Form1.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Form1.cs new file mode 100644 index 0000000..29a8726 --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Form1.cs @@ -0,0 +1,58 @@ +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 SzNPProjects; + +namespace Test_Project +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + /*var tmp = new RichListView(); + tmp.ItemHeight = 50; + tmp.Columns.Add(new RichListViewColumn()); + tmp.Columns[0].Width = 100; + Console.WriteLine("Main call"); + tmp.Items.Add(new RichListViewItem()); + this.Controls.Add(tmp); + tmp.Show();*/ + + //var col = new RichListViewColumn(); + //col.Width = 50; + //richListView1.Columns.Add(col); + var item=new RichListViewItem(); + //item.Control.Text = "Test :P"; + richListView1.Items.Add(item); + richListView1.Items[0].SubItems[0].Text = "Test :P"; + richListView1.Items[0].SubItems[1].Text = "Second col"; + richListView1.Items.Add(new RichListViewItem()); + richListView1.Items[1].SubItems[0].Text = "Only one col of text"; + richListView1.ItemClicked += richListView1_ItemClicked; + richListView1.ItemDoubleClicked += richListView1_ItemDoubleClicked; + + var tmp=new Control[2]; + tmp[0] = new PictureBox(); + ((PictureBox)tmp[0]).SizeMode = PictureBoxSizeMode.StretchImage; + richListView1.Items.Add(new RichListViewItem(tmp)); + ((PictureBox)richListView1.Items[2].SubItems[0]).ImageLocation = "test.jpg"; + } + + void richListView1_ItemDoubleClicked(object sender, int e) + { + MessageBox.Show(e + 1 + ". item double clicked"); + } + + void richListView1_ItemClicked(object sender, int e) + { + //MessageBox.Show(e + 1 + ". item clicked"); + } + } +} diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Form1.resx b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Form1.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Form1.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/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Program.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Program.cs new file mode 100644 index 0000000..bc18a48 --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Test_Project +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/AssemblyInfo.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..bce6b2d --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/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("Test Project")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Test Project")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("5687fade-08c8-4c73-9b0e-e0ea562b787c")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/Resources.Designer.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/Resources.Designer.cs new file mode 100644 index 0000000..6d37e11 --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_Project.Properties +{ + + + /// + /// 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 ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Test_Project.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; + } + } + } +} diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/Resources.resx b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/Resources.resx new file mode 100644 index 0000000..ffecec8 --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/Settings.Designer.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/Settings.Designer.cs new file mode 100644 index 0000000..673388f --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_Project.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/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/Settings.settings b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Test Project.csproj b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Test Project.csproj new file mode 100644 index 0000000..368299a --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/Test Project.csproj @@ -0,0 +1,97 @@ + + + + + Debug + AnyCPU + {A4C26FE5-9705-4E0D-8CAC-29C368663E10} + WinExe + Properties + Test_Project + Test Project + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + RichListView + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll new file mode 100644 index 0000000..1851254 Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb new file mode 100644 index 0000000..1610b6d Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/RichListView.dll b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/RichListView.dll new file mode 100644 index 0000000..46d3224 Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/RichListView.dll differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/RichListView.pdb b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/RichListView.pdb new file mode 100644 index 0000000..74fe735 Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/RichListView.pdb differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.exe b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.exe new file mode 100644 index 0000000..5645718 Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.exe differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.exe.config b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.pdb b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.pdb new file mode 100644 index 0000000..d69392a Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.pdb differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.vshost.exe b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.vshost.exe new file mode 100644 index 0000000..c0dfecc Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.vshost.exe differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.vshost.exe.config b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.vshost.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.vshost.exe.manifest b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.vshost.exe.manifest new file mode 100644 index 0000000..f96b1d6 --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/Test Project.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/test.jpg b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/test.jpg new file mode 100644 index 0000000..d97d796 Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/bin/Debug/test.jpg differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..9f1dc3e Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..8931c86 Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..54c6764 --- /dev/null +++ b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt @@ -0,0 +1,13 @@ +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.exe.config +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.exe +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Khendys.Controls.ExRichTextBox.dll +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\RichListView.dll +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\RichListView.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Khendys.Controls.ExRichTextBox.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.csprojResolveAssemblyReference.cache +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test_Project.Form1.resources +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test_Project.Properties.Resources.resources +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.csproj.GenerateResource.Cache +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.exe +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.pdb diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache new file mode 100644 index 0000000..e01a66b Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..9c49b24 Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.exe b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.exe new file mode 100644 index 0000000..5645718 Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.exe differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.pdb b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.pdb new file mode 100644 index 0000000..d69392a Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test Project.pdb differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test_Project.Form1.resources b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test_Project.Form1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test_Project.Form1.resources differ diff --git a/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test_Project.Properties.Resources.resources b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test_Project.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/RichListView/0 Versions/2014.05.11.-2014.05.13/Test Project/obj/Debug/Test_Project.Properties.Resources.resources differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/2014.05.13.-2014.05.15.zip b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/2014.05.13.-2014.05.15.zip new file mode 100644 index 0000000..1c1676a Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/2014.05.13.-2014.05.15.zip differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView.rar b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView.rar new file mode 100644 index 0000000..7840c4d Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView.rar differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/NoParentException.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/NoParentException.cs new file mode 100644 index 0000000..44ec1a7 --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/NoParentException.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SzNPProjects +{ + class NoParentException : Exception + { + /*public override System.Collections.IDictionary Data + { + get + { + var ret = new Dictionary(); + ret["details"] = "Try to reference ListViewItem which is not assigned to a ListView control."; + return ret; + } + } + public override string Message + { + get + { + return "Try to reference ListViewItem which is not assigned to a ListView control."; + } + }*/ + public NoParentException(string message) : base(message) + { + } + } +} diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/Properties/AssemblyInfo.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2d7e6fa --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/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("RichListView")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RichListView")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("1820b274-58b3-405f-8390-5377cb74fa29")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListView.Designer.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListView.Designer.cs new file mode 100644 index 0000000..0d60986 --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListView.Designer.cs @@ -0,0 +1,48 @@ +namespace SzNPProjects +{ + partial class RichListView + { + /// + /// 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 Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // RichListView + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScroll = true; + this.Name = "RichListView"; + this.Size = new System.Drawing.Size(152, 196); + this.Resize += new System.EventHandler(this.RichListView_Resize); + this.ResumeLayout(false); + + } + + #endregion + + } +} diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListView.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListView.cs new file mode 100644 index 0000000..97a96ea --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListView.cs @@ -0,0 +1,189 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Khendys.Controls; + +namespace SzNPProjects +{ + public partial class RichListView : UserControl + { + /// + /// Create new instance of RichListView. + /// + public RichListView() + { + InitializeComponent(); + Items.ListChanged += Items_ListChanged; + SetStyle(ControlStyles.SupportsTransparentBackColor, true); + //Columns = new BindingList(); + + //var item = new ExRichTextBox(); + //var listitem = new RichListViewItem(item); + //Items.Add(listitem); + } + + #region Events + void Items_ListChanged(object sender, ListChangedEventArgs e) + { + switch(e.ListChangedType) + { + case ListChangedType.ItemAdded: + Items[e.NewIndex].Parent = this; + Items[e.NewIndex]._CreateInstance(); + break; + } + RefreshList(); + } + public event EventHandler ItemClicked; + public event EventHandler ItemDoubleClicked; + #endregion + + #region Properties + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public BindingList items; + /// + /// A list of items shown in the RichListView. + /// + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public BindingList Items + { + get + { + if (items == null) + items = new BindingList(); + return items; + } + } + public RichListViewColumn[] columns; + /// + /// Array of columns. + /// + public RichListViewColumn[] Columns + { + get + { + if (columns == null) + return new RichListViewColumn[0]; + return columns; + } + set + { + columns = value; + RefreshList(); + } + } + /// + /// Get/set the header height. + /// + public int HeaderHeight { get; set; } + /// + /// Get/set items height. + /// + public int ItemHeight { get; set; } + /// + /// Determines whenether to set last column width to fit the remaining space. + /// + public bool ColumnAutoFill { get; set; } + public override Color BackColor + { + get + { + return base.BackColor; + } + set + { + _SetItemsBackground(value); + base.BackColor = value; + } + } + public override Color ForeColor + { + get + { + return base.ForeColor; + } + set + { + _SetItemsForeground(value); + base.ForeColor = value; + } + } + #endregion + + #region Public Methods + public new void Show() + { + RefreshList(); + /*for (int i = 0; i < Items.Count; i++) + Items[i].Show();*/ + base.Show(); + } + public new void Hide() + { + RefreshList(); + /*for (int i = 0; i < Items.Count; i++) + Items[i].Hide();*/ + base.Hide(); + } + /// + /// Provide a list of Control arrays to set the items. + /// + /// The items to set. + public void SetItems(List items) + { + for (int i = 0; i < items.Count; i++) + Items.Add(new RichListViewItem(items[i])); + RefreshList(); + } + public void RefreshList() + { + for (int i = 0; i < Items.Count; i++) + { + Items[i].Hide(); + Items[i].SetBounds(HeaderHeight + ItemHeight * i, ItemHeight); + Items[i].Show(); + } + Refresh(); + } + #endregion + + #region Internal Methods + private void _SetItemsBackground(Color value) + { + for (int i = 0; i < Items.Count; i++) + Items[i].BackColor = value; + } + private void _SetItemsForeground(Color value) + { + for (int i = 0; i < Items.Count; i++) + Items[i].ForeColor = value; + } + internal void _ItemClicked(object sender) + { + ItemClicked(sender, Items.IndexOf((RichListViewItem)sender)); + } + internal void _ItemDoubleClicked(object sender) + { + var index=Items.IndexOf((RichListViewItem)sender); + ItemDoubleClicked(sender, index); + for (int i = 0; i < Items[index].SubItems.Length; i++) + if (Items[index].SubItems[i].GetType().IsSubclassOf(typeof(TextBoxBase))) + ((TextBoxBase)Items[index].SubItems[i]).SelectionLength = 0; + } + private void RichListView_Resize(object sender, EventArgs e) + { + RefreshList(); + } + #endregion + } +} diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListView.csproj b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListView.csproj new file mode 100644 index 0000000..e066664 --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListView.csproj @@ -0,0 +1,72 @@ + + + + + Debug + AnyCPU + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + Library + Properties + SzNPProjects + RichListView + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + Auto + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll + + + + + + + + + + + + + + + + UserControl + + + RichListView.cs + + + + + + + RichListView.cs + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListView.resx b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListView.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListView.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/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListViewColumn.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListViewColumn.cs new file mode 100644 index 0000000..03a2b00 --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListViewColumn.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace SzNPProjects +{ + public class RichListViewColumn + { + public int Width { get; set; } + public string Text { get; set; } + } +} diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListViewItem.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListViewItem.cs new file mode 100644 index 0000000..a900d92 --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/RichListView/RichListViewItem.cs @@ -0,0 +1,175 @@ +using Khendys.Controls; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace SzNPProjects +{ + public class RichListViewItem + { + /*public Control Control { get; set; } + public string[] SubItems { get; internal set; }*/ + public Control[] SubItems { get; internal set; } + public RichListView Parent { get; internal set; } + private Color backcolor; + public Color BackColor + { + get + { + return backcolor; + } + set + { + for (int i = 0; i < SubItems.Length; i++) + SubItems[i].BackColor = value; + backcolor = value; + } + } + private Color forecolor; + public Color ForeColor + { + get + { + return forecolor; + } + set + { + for (int i = 0; i < SubItems.Length; i++) + SubItems[i].ForeColor = value; + forecolor = value; + } + } + public RichListViewItem() + { + //_CreateInstance(); + } + //public RichListViewItem(Control control) + public RichListViewItem(Control[] subitems) + { + //Control = control; + SubItems = subitems; + //_CreateInstance(); + } + internal void _CreateInstance() + { + /*if (Control == null) + Control = new ExRichTextBox(); + ((ExRichTextBox)Control).ReadOnly = true;*/ + if (SubItems == null) + SubItems = new Control[Parent.Columns.Length]; + for (int i = 0; i < Parent.Columns.Length; i++) + { + if (SubItems[i] == null) + { + SubItems[i] = new ExRichTextBox(); + SubItems[i].Cursor = Cursors.Arrow; + } + SubItems[i].Parent = this.Parent; + if (SubItems[i].GetType().IsSubclassOf(typeof(TextBoxBase))) //If it's a TextBox, set it to read-only + { + ((TextBoxBase)SubItems[i]).ReadOnly = true; + ((TextBoxBase)SubItems[i]).BorderStyle = BorderStyle.None; + //((TextBoxBase)SubItems[i]). + } + /*if (SubItems[i].GetType()==typeof(ExExRichTextBox)) + { + ((ExExRichTextBox)SubItems[i]).SetTransparent(true); + //SubItems[i] = ((ExExRichTextBox)SubItems[i]).SetTransparent(true); + }*/ + bool success = true; + Control parent = this.Parent; + do + { + success = true; + try + { + this.SubItems[i].BackColor = parent.BackColor; + } + catch (ArgumentException) + { + Console.WriteLine("RichListView: Transparency is not supported. Using container BackColor."); + this.SubItems[i].BackColor = this.Parent.Parent.BackColor; + success = false; + parent = parent.Parent; + } + } while (!success); + this.SubItems[i].ForeColor = this.Parent.ForeColor; + SubItems[i].Click += _ItemClicked; + SubItems[i].DoubleClick += _ItemDoubleClicked; + } + } + private void _ItemClicked(object sender, EventArgs e) + {/* + for(int i=0; i + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Form1.Designer.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Form1.Designer.cs new file mode 100644 index 0000000..329d2a3 --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Form1.Designer.cs @@ -0,0 +1,113 @@ +namespace Test_Project +{ + partial class Form1 + { + /// + /// 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() + { + SzNPProjects.RichListViewColumn richListViewColumn1 = new SzNPProjects.RichListViewColumn(); + SzNPProjects.RichListViewColumn richListViewColumn2 = new SzNPProjects.RichListViewColumn(); + this.richListView1 = new SzNPProjects.RichListView(); + this.hidebtn = new System.Windows.Forms.Button(); + this.showbtn = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // richListView1 + // + this.richListView1.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.richListView1.AutoScroll = true; + this.richListView1.BackColor = System.Drawing.Color.Black; + this.richListView1.ColumnAutoFill = true; + richListViewColumn1.Text = "Na most már elvileg működik"; + richListViewColumn1.Width = 100; + richListViewColumn2.Text = "Újabb oszlop"; + richListViewColumn2.Width = 100; + this.richListView1.Columns = new SzNPProjects.RichListViewColumn[] { + richListViewColumn1, + richListViewColumn2}; + this.richListView1.ForeColor = System.Drawing.Color.Aqua; + this.richListView1.HeaderHeight = 20; + this.richListView1.ItemHeight = 50; + this.richListView1.Location = new System.Drawing.Point(12, 12); + this.richListView1.Name = "richListView1"; + this.richListView1.Size = new System.Drawing.Size(762, 381); + this.richListView1.TabIndex = 0; + this.richListView1.ItemClicked += new System.EventHandler(this.richListView1_ItemClicked); + this.richListView1.ItemDoubleClicked += new System.EventHandler(this.richListView1_ItemDoubleClicked); + // + // hidebtn + // + this.hidebtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.hidebtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.hidebtn.Location = new System.Drawing.Point(305, 404); + this.hidebtn.Name = "hidebtn"; + this.hidebtn.Size = new System.Drawing.Size(75, 23); + this.hidebtn.TabIndex = 1; + this.hidebtn.Text = "Hide"; + this.hidebtn.UseVisualStyleBackColor = true; + this.hidebtn.Click += new System.EventHandler(this.hidebtn_Click); + // + // showbtn + // + this.showbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.showbtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.showbtn.Location = new System.Drawing.Point(386, 404); + this.showbtn.Name = "showbtn"; + this.showbtn.Size = new System.Drawing.Size(75, 23); + this.showbtn.TabIndex = 2; + this.showbtn.Text = "Show"; + this.showbtn.UseVisualStyleBackColor = true; + this.showbtn.Click += new System.EventHandler(this.showbtn_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Navy; + this.ClientSize = new System.Drawing.Size(786, 439); + this.Controls.Add(this.showbtn); + this.Controls.Add(this.hidebtn); + this.Controls.Add(this.richListView1); + this.ForeColor = System.Drawing.Color.Aqua; + this.Name = "Form1"; + this.Text = "Test Form"; + this.ResumeLayout(false); + + } + + #endregion + + private SzNPProjects.RichListView richListView1; + private System.Windows.Forms.Button hidebtn; + private System.Windows.Forms.Button showbtn; + + + + } +} + diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Form1.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Form1.cs new file mode 100644 index 0000000..6ee2e23 --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Form1.cs @@ -0,0 +1,68 @@ +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 SzNPProjects; + +namespace Test_Project +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + /*var tmp = new RichListView(); + tmp.ItemHeight = 50; + tmp.Columns.Add(new RichListViewColumn()); + tmp.Columns[0].Width = 100; + Console.WriteLine("Main call"); + tmp.Items.Add(new RichListViewItem()); + this.Controls.Add(tmp); + tmp.Show();*/ + + //var col = new RichListViewColumn(); + //col.Width = 50; + //richListView1.Columns.Add(col); + var item=new RichListViewItem(); + //item.Control.Text = "Test :P"; + richListView1.Items.Add(item); + richListView1.Items[0].SubItems[0].Text = "Test :P"; + richListView1.Items[0].SubItems[1].Text = "Second col"; + richListView1.Items.Add(new RichListViewItem()); + richListView1.Items[1].SubItems[0].Text = "Only one col of text"; + //richListView1.ItemClicked += richListView1_ItemClicked; + //richListView1.ItemDoubleClicked += richListView1_ItemDoubleClicked; + + var tmp=new Control[2]; + tmp[0] = new PictureBox(); + ((PictureBox)tmp[0]).SizeMode = PictureBoxSizeMode.StretchImage; + richListView1.Items.Add(new RichListViewItem(tmp)); + ((PictureBox)richListView1.Items[2].SubItems[0]).ImageLocation = "test.jpg"; + } + + void richListView1_ItemDoubleClicked(object sender, int e) + { + MessageBox.Show(e + 1 + ". item double clicked"); + } + + void richListView1_ItemClicked(object sender, int e) + { + //MessageBox.Show(e + 1 + ". item clicked"); + } + + private void hidebtn_Click(object sender, EventArgs e) + { + richListView1.Hide(); + } + + private void showbtn_Click(object sender, EventArgs e) + { + richListView1.Show(); + } + } +} diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Form1.resx b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Form1.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Form1.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/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Program.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Program.cs new file mode 100644 index 0000000..bc18a48 --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Test_Project +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/AssemblyInfo.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..bce6b2d --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/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("Test Project")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Test Project")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("5687fade-08c8-4c73-9b0e-e0ea562b787c")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/Resources.Designer.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/Resources.Designer.cs new file mode 100644 index 0000000..6d37e11 --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_Project.Properties +{ + + + /// + /// 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 ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Test_Project.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; + } + } + } +} diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/Resources.resx b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/Resources.resx new file mode 100644 index 0000000..ffecec8 --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/Settings.Designer.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/Settings.Designer.cs new file mode 100644 index 0000000..673388f --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_Project.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/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/Settings.settings b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Test Project.csproj b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Test Project.csproj new file mode 100644 index 0000000..368299a --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/Test Project.csproj @@ -0,0 +1,97 @@ + + + + + Debug + AnyCPU + {A4C26FE5-9705-4E0D-8CAC-29C368663E10} + WinExe + Properties + Test_Project + Test Project + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + RichListView + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll new file mode 100644 index 0000000..1851254 Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb new file mode 100644 index 0000000..1610b6d Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/RichListView.dll b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/RichListView.dll new file mode 100644 index 0000000..5bd5fbc Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/RichListView.dll differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/RichListView.pdb b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/RichListView.pdb new file mode 100644 index 0000000..be2a3da Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/RichListView.pdb differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.exe b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.exe new file mode 100644 index 0000000..33fe8e8 Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.exe differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.exe.config b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.pdb b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.pdb new file mode 100644 index 0000000..b3533ea Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.pdb differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.vshost.exe b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.vshost.exe new file mode 100644 index 0000000..c0dfecc Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.vshost.exe differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.vshost.exe.config b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.vshost.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.vshost.exe.manifest b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.vshost.exe.manifest new file mode 100644 index 0000000..f96b1d6 --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/Test Project.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/test.jpg b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/test.jpg new file mode 100644 index 0000000..d97d796 Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/bin/Debug/test.jpg differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..05890e9 Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..8931c86 Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..54c6764 --- /dev/null +++ b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt @@ -0,0 +1,13 @@ +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.exe.config +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.exe +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Khendys.Controls.ExRichTextBox.dll +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\RichListView.dll +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\RichListView.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Khendys.Controls.ExRichTextBox.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.csprojResolveAssemblyReference.cache +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test_Project.Form1.resources +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test_Project.Properties.Resources.resources +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.csproj.GenerateResource.Cache +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.exe +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.pdb diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache new file mode 100644 index 0000000..0c96ba9 Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..3313822 Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.exe b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.exe new file mode 100644 index 0000000..33fe8e8 Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.exe differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.pdb b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.pdb new file mode 100644 index 0000000..b3533ea Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test Project.pdb differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test_Project.Form1.resources b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test_Project.Form1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test_Project.Form1.resources differ diff --git a/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test_Project.Properties.Resources.resources b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test_Project.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/RichListView/0 Versions/2014.05.13.-2014.05.15 - v1.0/Test Project/obj/Debug/Test_Project.Properties.Resources.resources differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/NoParentException.cs b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/NoParentException.cs new file mode 100644 index 0000000..44ec1a7 --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/NoParentException.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SzNPProjects +{ + class NoParentException : Exception + { + /*public override System.Collections.IDictionary Data + { + get + { + var ret = new Dictionary(); + ret["details"] = "Try to reference ListViewItem which is not assigned to a ListView control."; + return ret; + } + } + public override string Message + { + get + { + return "Try to reference ListViewItem which is not assigned to a ListView control."; + } + }*/ + public NoParentException(string message) : base(message) + { + } + } +} diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/Properties/AssemblyInfo.cs b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2d7e6fa --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/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("RichListView")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RichListView")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("1820b274-58b3-405f-8390-5377cb74fa29")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListView.Designer.cs b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListView.Designer.cs new file mode 100644 index 0000000..4c7bf4a --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListView.Designer.cs @@ -0,0 +1,49 @@ +namespace SzNPProjects +{ + partial class RichListView + { + /// + /// 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 Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // RichListView + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScroll = true; + this.Name = "RichListView"; + this.Size = new System.Drawing.Size(152, 196); + this.Click += new System.EventHandler(this.RichListView_Click); + this.Resize += new System.EventHandler(this.RichListView_Resize); + this.ResumeLayout(false); + + } + + #endregion + + } +} diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListView.cs b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListView.cs new file mode 100644 index 0000000..170afeb --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListView.cs @@ -0,0 +1,310 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Khendys.Controls; + +namespace SzNPProjects +{ + public partial class RichListView : UserControl + { + /// + /// Create new instance of RichListView. + /// + public RichListView() + { + InitializeComponent(); + Items.ListChanged += Items_ListChanged; + SetStyle(ControlStyles.SupportsTransparentBackColor, true); + ResizeRedraw = false; //Redraw is done using RefreshList() + //Columns = new BindingList(); + + //var item = new ExRichTextBox(); + //var listitem = new RichListViewItem(item); + //Items.Add(listitem); + } + + #region Events + void Items_ListChanged(object sender, ListChangedEventArgs e) + { + switch(e.ListChangedType) + { + case ListChangedType.ItemAdded: + Items[e.NewIndex].Parent = this; + Items[e.NewIndex]._CreateInstance(); + break; + case ListChangedType.ItemDeleted: + items2[e.OldIndex].Remove(); + break; + case ListChangedType.Reset: + for (int i = 0; i < items2.Count; i++) + items2[i].Remove(); + break; + } + RefreshList(); + } + public event EventHandler ItemClicked; + public event EventHandler ItemDoubleClicked; + public event EventHandler ItemRightClicked; + #endregion + + #region Properties + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + internal BindingList items; + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + internal BindingList items2; //Stores the last item list + /// + /// A list of items shown in the RichListView. + /// + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public BindingList Items + { + get + { + if (items == null) + items = new BindingList(); + if (items.Count != 0) + { + if (items2 == null) + items2 = new BindingList(); + items2.Clear(); + for (int i = 0; i < items.Count; i++) + items2.Add(items[i]); + } + //items2 = new BindingList(items); + return items; + } + } + public RichListViewColumn[] columns; + /// + /// Array of columns. + /// + public RichListViewColumn[] Columns + { + get + { + if (columns == null) + return new RichListViewColumn[0]; + return columns; + } + set + { + columns = value; + RefreshList(); + } + } + /// + /// Get/set the header height. + /// + public int HeaderHeight { get; set; } + /// + /// Get/set items height. + /// + public int ItemHeight { get; set; } + /// + /// Determines whenether to set last column width to fit the remaining space. + /// + public bool ColumnAutoFill { get; set; } + private bool autoupdate = true; + /// + /// When false, will disable any update event. + /// + public bool AutoUpdate + { + get + { + return autoupdate; + } + set + { + autoupdate = value; + if (autoupdate) + RefreshList(); + } + } + public override Color BackColor + { + get + { + return base.BackColor; + } + set + { + _SetItemsBackground(value); + base.BackColor = value; + } + } + public override Color ForeColor + { + get + { + return base.ForeColor; + } + set + { + _SetItemsForeground(value); + base.ForeColor = value; + } + } + private Color selectioncolor = Color.Aqua; + public Color SelectionColor + { + get + { + return selectioncolor; + } + set + { + selectioncolor = value; + } + } + private int selectedindex = -1; + public int SelectedIndex + { + get + { + return selectedindex; + } + internal set + { + if (selectedindex != -1) + Items[selectedindex].Selected = false; + if (value != -1) + Items[value].Selected = true; + selectedindex = value; + } + } + #endregion + + #region Public Methods + public new void Show() + { + RefreshList(); + /*for (int i = 0; i < Items.Count; i++) + Items[i].Show();*/ + base.Show(); + } + public new void Hide() + { + RefreshList(); + /*for (int i = 0; i < Items.Count; i++) + Items[i].Hide();*/ + base.Hide(); + } + /// + /// Provide a list of Control arrays to set the items. + /// + /// The items to set. + public void SetItems(List items) + { + Action> func = SetItems2; + func(items); + } + public void SetItems2(List items) + { + for (int i = 0; i < items.Count; i++) + Items.Add(new RichListViewItem(items[i])); + RefreshList(); + } + /// + /// Refresh the list manually, if built-in refresh is not enough. + /// + public void RefreshList() + { + if(!AutoUpdate) + { + AutoValidate = AutoValidate.Disable; + return; + } + AutoValidate = AutoValidate.EnablePreventFocusChange; //- Actually it will raise the update, no need for automation + for (int i = 0; i < Items.Count; i++) + { + Items[i].Hide(); + Items[i].SetBounds(HeaderHeight + ItemHeight * i, ItemHeight); + if (Items[i].Selected) + Items[i].BackColor = SelectionColor; + else + Items[i].BackColor = this.BackColor; + Items[i].Show(); + } + Refresh(); + } + #endregion + + #region Internal Methods + private void _SetItemsBackground(Color value) + { + for (int i = 0; i < Items.Count; i++) + Items[i].BackColor = value; + } + private void _SetItemsForeground(Color value) + { + for (int i = 0; i < Items.Count; i++) + Items[i].ForeColor = value; + } + //internal void _ItemClicked(object sender) + internal void _ItemClicked(RichListViewItem sender) + { + try + { + //ItemClicked(sender, Items.IndexOf((RichListViewItem)sender)); + /*for (int i = 0; i < Items.Count; i++) + { + if (!Items[i].Equals(sender)) + Items[i].Selected = false; + }*/ + sender.Selected = true; + ItemClicked(sender, Items.IndexOf(sender)); + } + catch(NullReferenceException) + { + } + } + //internal void _ItemDoubleClicked(object sender) + internal void _ItemDoubleClicked(RichListViewItem sender) + { + try + { + //var index = Items.IndexOf((RichListViewItem)sender); + var index = Items.IndexOf(sender); + ItemDoubleClicked(sender, index); + for (int i = 0; i < Items[index].SubItems.Length; i++) + if (Items[index].SubItems[i].GetType().IsSubclassOf(typeof(TextBoxBase))) + ((TextBoxBase)Items[index].SubItems[i]).SelectionLength = 0; + } + catch (NullReferenceException) + { + } + } + internal void _ItemRightClicked(RichListViewItem sender) + { + try + { + ItemRightClicked(sender, Items.IndexOf(sender)); + } + catch (NullReferenceException) + { + } + } + private void RichListView_Resize(object sender, EventArgs e) + { + RefreshList(); + } + private void RichListView_Click(object sender, EventArgs e) + { + this.SelectedIndex = -1; + } + #endregion + } +} diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListView.csproj b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListView.csproj new file mode 100644 index 0000000..e066664 --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListView.csproj @@ -0,0 +1,72 @@ + + + + + Debug + AnyCPU + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + Library + Properties + SzNPProjects + RichListView + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + Auto + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll + + + + + + + + + + + + + + + + UserControl + + + RichListView.cs + + + + + + + RichListView.cs + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListView.resx b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListView.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListView.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/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListViewColumn.cs b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListViewColumn.cs new file mode 100644 index 0000000..03a2b00 --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListViewColumn.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace SzNPProjects +{ + public class RichListViewColumn + { + public int Width { get; set; } + public string Text { get; set; } + } +} diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListViewItem.cs b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListViewItem.cs new file mode 100644 index 0000000..3987ad0 --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/RichListView/RichListViewItem.cs @@ -0,0 +1,228 @@ +using Khendys.Controls; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace SzNPProjects +{ + public class RichListViewItem + { + /*public Control Control { get; set; } + public string[] SubItems { get; internal set; }*/ + public Control[] SubItems { get; set; } + public RichListView Parent { get; internal set; } + private Color backcolor; + public Color BackColor + { + get + { + return backcolor; + } + set + { + for (int i = 0; i < SubItems.Length; i++) + SubItems[i].BackColor = value; + backcolor = value; + } + } + private Color forecolor; + public Color ForeColor + { + get + { + return forecolor; + } + set + { + for (int i = 0; i < SubItems.Length; i++) + SubItems[i].ForeColor = value; + forecolor = value; + } + } + private bool selected = false; + public bool Selected + { + get + { + return selected; + } + set + { + if (value) + { + Parent.SelectedIndex = Parent.Items.IndexOf(this); + this.BackColor = Parent.SelectionColor; + } + else + this.BackColor = Parent.BackColor; + selected = value; + } + } + public RichListViewItem() + { + Action func = RichListViewItem2; + func(); + } + public RichListViewItem(Control[] subitems) + { + Action func = RichListViewItem2; + func(subitems); + } + public RichListViewItem(int colnum) + { + Action func = RichListViewItem2; + func(colnum); + SubItems = new Control[colnum]; + } + + public void RichListViewItem2(int colnum) + { + SubItems = new Control[colnum]; + } + public void RichListViewItem2() + { + } + public void RichListViewItem2(Control[] subitems) + { + SubItems = subitems; + } + internal void _CreateInstance() + { + Action func = _CreateInstance2; + func(); + } + internal void _CreateInstance2() + { + if (SubItems == null) + SubItems = new Control[Parent.Columns.Length]; + for (int i = 0; i < Parent.Columns.Length; i++) + { + if (SubItems[i] == null) + { + SubItems[i] = new ExRichTextBox(); + SubItems[i].Cursor = Cursors.Arrow; + } + //Console.WriteLine("this.Parent=" + this.Parent); + //Console.WriteLine("SubItems[i].Parent=" + SubItems[i].Parent); + SubItems[i].Parent = this.Parent; + if (SubItems[i].GetType().IsSubclassOf(typeof(TextBoxBase))) //If it's a TextBox, set it to read-only + { + ((TextBoxBase)SubItems[i]).ReadOnly = true; + ((TextBoxBase)SubItems[i]).BorderStyle = BorderStyle.None; + //((TextBoxBase)SubItems[i]). + } + /*if (SubItems[i].GetType()==typeof(ExExRichTextBox)) + { + ((ExExRichTextBox)SubItems[i]).SetTransparent(true); + //SubItems[i] = ((ExExRichTextBox)SubItems[i]).SetTransparent(true); + }*/ + bool success = true; + Control parent = this.Parent; + do + { + success = true; + try + { + this.SubItems[i].BackColor = parent.BackColor; + } + catch (ArgumentException) + { + Console.WriteLine("RichListView: Transparency is not supported. Using container BackColor."); + this.SubItems[i].BackColor = this.Parent.Parent.BackColor; + success = false; + parent = parent.Parent; + } + } while (!success); + this.SubItems[i].ForeColor = this.Parent.ForeColor; + SubItems[i].Click += _ItemClicked; + SubItems[i].DoubleClick += _ItemDoubleClicked; + SubItems[i].MouseClick += _ItemMouseClicked; + } + } + private void _ItemClicked(object sender, EventArgs e) + {/* + for(int i=0; i + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Form1.Designer.cs b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Form1.Designer.cs new file mode 100644 index 0000000..7d2299f --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Form1.Designer.cs @@ -0,0 +1,145 @@ +namespace Test_Project +{ + partial class Form1 + { + /// + /// 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() + { + SzNPProjects.RichListViewColumn richListViewColumn1 = new SzNPProjects.RichListViewColumn(); + SzNPProjects.RichListViewColumn richListViewColumn2 = new SzNPProjects.RichListViewColumn(); + this.hidebtn = new System.Windows.Forms.Button(); + this.showbtn = new System.Windows.Forms.Button(); + this.richListView1 = new SzNPProjects.RichListView(); + this.redrawoffbtn = new System.Windows.Forms.Button(); + this.redrawonbtn = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // hidebtn + // + this.hidebtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.hidebtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.hidebtn.Location = new System.Drawing.Point(305, 404); + this.hidebtn.Name = "hidebtn"; + this.hidebtn.Size = new System.Drawing.Size(75, 23); + this.hidebtn.TabIndex = 1; + this.hidebtn.Text = "Hide"; + this.hidebtn.UseVisualStyleBackColor = true; + this.hidebtn.Click += new System.EventHandler(this.hidebtn_Click); + // + // showbtn + // + this.showbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.showbtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.showbtn.Location = new System.Drawing.Point(386, 404); + this.showbtn.Name = "showbtn"; + this.showbtn.Size = new System.Drawing.Size(75, 23); + this.showbtn.TabIndex = 2; + this.showbtn.Text = "Show"; + this.showbtn.UseVisualStyleBackColor = true; + this.showbtn.Click += new System.EventHandler(this.showbtn_Click); + // + // richListView1 + // + this.richListView1.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.richListView1.AutoScroll = true; + this.richListView1.AutoUpdate = false; + this.richListView1.AutoValidate = System.Windows.Forms.AutoValidate.Disable; + this.richListView1.BackColor = System.Drawing.Color.Black; + this.richListView1.ColumnAutoFill = true; + richListViewColumn1.Text = "Na most már elvileg működik"; + richListViewColumn1.Width = 100; + richListViewColumn2.Text = "Újabb oszlop"; + richListViewColumn2.Width = 100; + this.richListView1.Columns = new SzNPProjects.RichListViewColumn[] { + richListViewColumn1, + richListViewColumn2}; + this.richListView1.ForeColor = System.Drawing.Color.Aqua; + this.richListView1.HeaderHeight = 20; + this.richListView1.ItemHeight = 50; + this.richListView1.Location = new System.Drawing.Point(12, 12); + this.richListView1.Name = "richListView1"; + this.richListView1.Size = new System.Drawing.Size(762, 381); + this.richListView1.TabIndex = 0; + this.richListView1.ItemClicked += new System.EventHandler(this.richListView1_ItemClicked); + this.richListView1.ItemDoubleClicked += new System.EventHandler(this.richListView1_ItemDoubleClicked); + // + // redrawoffbtn + // + this.redrawoffbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.redrawoffbtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.redrawoffbtn.Location = new System.Drawing.Point(468, 404); + this.redrawoffbtn.Name = "redrawoffbtn"; + this.redrawoffbtn.Size = new System.Drawing.Size(75, 23); + this.redrawoffbtn.TabIndex = 3; + this.redrawoffbtn.Text = "Redraw off"; + this.redrawoffbtn.UseVisualStyleBackColor = true; + this.redrawoffbtn.Click += new System.EventHandler(this.redrawoffbtn_Click); + // + // redrawonbtn + // + this.redrawonbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.redrawonbtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.redrawonbtn.Location = new System.Drawing.Point(550, 404); + this.redrawonbtn.Name = "redrawonbtn"; + this.redrawonbtn.Size = new System.Drawing.Size(75, 23); + this.redrawonbtn.TabIndex = 4; + this.redrawonbtn.Text = "Redraw on"; + this.redrawonbtn.UseVisualStyleBackColor = true; + this.redrawonbtn.Click += new System.EventHandler(this.redrawonbtn_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Navy; + this.ClientSize = new System.Drawing.Size(786, 439); + this.Controls.Add(this.redrawonbtn); + this.Controls.Add(this.redrawoffbtn); + this.Controls.Add(this.showbtn); + this.Controls.Add(this.hidebtn); + this.Controls.Add(this.richListView1); + this.ForeColor = System.Drawing.Color.Aqua; + this.Name = "Form1"; + this.Text = "Test Form"; + this.ResumeLayout(false); + + } + + #endregion + + private SzNPProjects.RichListView richListView1; + private System.Windows.Forms.Button hidebtn; + private System.Windows.Forms.Button showbtn; + private System.Windows.Forms.Button redrawoffbtn; + private System.Windows.Forms.Button redrawonbtn; + + + + } +} + diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Form1.cs b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Form1.cs new file mode 100644 index 0000000..a1998f9 --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Form1.cs @@ -0,0 +1,78 @@ +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 SzNPProjects; + +namespace Test_Project +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + /*var tmp = new RichListView(); + tmp.ItemHeight = 50; + tmp.Columns.Add(new RichListViewColumn()); + tmp.Columns[0].Width = 100; + Console.WriteLine("Main call"); + tmp.Items.Add(new RichListViewItem()); + this.Controls.Add(tmp); + tmp.Show();*/ + + //var col = new RichListViewColumn(); + //col.Width = 50; + //richListView1.Columns.Add(col); + var item=new RichListViewItem(); + //item.Control.Text = "Test :P"; + richListView1.Items.Add(item); + richListView1.Items[0].SubItems[0].Text = "Test :P"; + richListView1.Items[0].SubItems[1].Text = "Second col"; + richListView1.Items.Add(new RichListViewItem()); + richListView1.Items[1].SubItems[0].Text = "Only one col of text"; + //richListView1.ItemClicked += richListView1_ItemClicked; + //richListView1.ItemDoubleClicked += richListView1_ItemDoubleClicked; + + var tmp=new Control[2]; + tmp[0] = new PictureBox(); + ((PictureBox)tmp[0]).SizeMode = PictureBoxSizeMode.StretchImage; + richListView1.Items.Add(new RichListViewItem(tmp)); + ((PictureBox)richListView1.Items[2].SubItems[0]).ImageLocation = "test.jpg"; + } + + void richListView1_ItemDoubleClicked(object sender, int e) + { + MessageBox.Show(e + 1 + ". item double clicked"); + } + + void richListView1_ItemClicked(object sender, int e) + { + //MessageBox.Show(e + 1 + ". item clicked"); + } + + private void hidebtn_Click(object sender, EventArgs e) + { + richListView1.Hide(); + } + + private void showbtn_Click(object sender, EventArgs e) + { + richListView1.Show(); + } + + private void redrawoffbtn_Click(object sender, EventArgs e) + { + richListView1.AutoUpdate = false; + } + + private void redrawonbtn_Click(object sender, EventArgs e) + { + richListView1.AutoUpdate = true; + } + } +} diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Form1.resx b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Form1.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Form1.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/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Program.cs b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Program.cs new file mode 100644 index 0000000..bc18a48 --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Test_Project +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/AssemblyInfo.cs b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..bce6b2d --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/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("Test Project")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Test Project")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("5687fade-08c8-4c73-9b0e-e0ea562b787c")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/Resources.Designer.cs b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/Resources.Designer.cs new file mode 100644 index 0000000..6d37e11 --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_Project.Properties +{ + + + /// + /// 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 ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Test_Project.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; + } + } + } +} diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/Resources.resx b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/Resources.resx new file mode 100644 index 0000000..ffecec8 --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/Settings.Designer.cs b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/Settings.Designer.cs new file mode 100644 index 0000000..673388f --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_Project.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/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/Settings.settings b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Test Project.csproj b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Test Project.csproj new file mode 100644 index 0000000..368299a --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/Test Project.csproj @@ -0,0 +1,97 @@ + + + + + Debug + AnyCPU + {A4C26FE5-9705-4E0D-8CAC-29C368663E10} + WinExe + Properties + Test_Project + Test Project + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + RichListView + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll new file mode 100644 index 0000000..1851254 Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb new file mode 100644 index 0000000..1610b6d Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/RichListView.dll b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/RichListView.dll new file mode 100644 index 0000000..b8b0d3a Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/RichListView.dll differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/RichListView.pdb b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/RichListView.pdb new file mode 100644 index 0000000..e539f33 Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/RichListView.pdb differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.exe b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.exe new file mode 100644 index 0000000..c0b40d8 Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.exe differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.exe.config b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.pdb b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.pdb new file mode 100644 index 0000000..8dd3323 Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.pdb differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.vshost.exe b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.vshost.exe new file mode 100644 index 0000000..c0dfecc Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.vshost.exe differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.vshost.exe.config b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.vshost.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.vshost.exe.manifest b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.vshost.exe.manifest new file mode 100644 index 0000000..f96b1d6 --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/Test Project.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/test.jpg b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/test.jpg new file mode 100644 index 0000000..d97d796 Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/bin/Debug/test.jpg differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..7214e55 Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..8931c86 Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..54c6764 --- /dev/null +++ b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt @@ -0,0 +1,13 @@ +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.exe.config +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.exe +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Khendys.Controls.ExRichTextBox.dll +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\RichListView.dll +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\RichListView.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Khendys.Controls.ExRichTextBox.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.csprojResolveAssemblyReference.cache +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test_Project.Form1.resources +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test_Project.Properties.Resources.resources +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.csproj.GenerateResource.Cache +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.exe +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.pdb diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache new file mode 100644 index 0000000..0bb3c86 Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..46d758c Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.exe b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.exe new file mode 100644 index 0000000..c0b40d8 Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.exe differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.pdb b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.pdb new file mode 100644 index 0000000..8dd3323 Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test Project.pdb differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test_Project.Form1.resources b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test_Project.Form1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test_Project.Form1.resources differ diff --git a/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test_Project.Properties.Resources.resources b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test_Project.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/RichListView/0 Versions/2014.08.16. - v1.2/Test Project/obj/Debug/Test_Project.Properties.Resources.resources differ diff --git a/RichListView/0 Versions/v1.1/RichListView v1.1.rar b/RichListView/0 Versions/v1.1/RichListView v1.1.rar new file mode 100644 index 0000000..92f0005 Binary files /dev/null and b/RichListView/0 Versions/v1.1/RichListView v1.1.rar differ diff --git a/RichListView/0 Versions/v1.1/RichListView/NoParentException.cs b/RichListView/0 Versions/v1.1/RichListView/NoParentException.cs new file mode 100644 index 0000000..44ec1a7 --- /dev/null +++ b/RichListView/0 Versions/v1.1/RichListView/NoParentException.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SzNPProjects +{ + class NoParentException : Exception + { + /*public override System.Collections.IDictionary Data + { + get + { + var ret = new Dictionary(); + ret["details"] = "Try to reference ListViewItem which is not assigned to a ListView control."; + return ret; + } + } + public override string Message + { + get + { + return "Try to reference ListViewItem which is not assigned to a ListView control."; + } + }*/ + public NoParentException(string message) : base(message) + { + } + } +} diff --git a/RichListView/0 Versions/v1.1/RichListView/Properties/AssemblyInfo.cs b/RichListView/0 Versions/v1.1/RichListView/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2d7e6fa --- /dev/null +++ b/RichListView/0 Versions/v1.1/RichListView/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("RichListView")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RichListView")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("1820b274-58b3-405f-8390-5377cb74fa29")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RichListView/0 Versions/v1.1/RichListView/RichListView.Designer.cs b/RichListView/0 Versions/v1.1/RichListView/RichListView.Designer.cs new file mode 100644 index 0000000..0d60986 --- /dev/null +++ b/RichListView/0 Versions/v1.1/RichListView/RichListView.Designer.cs @@ -0,0 +1,48 @@ +namespace SzNPProjects +{ + partial class RichListView + { + /// + /// 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 Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // RichListView + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScroll = true; + this.Name = "RichListView"; + this.Size = new System.Drawing.Size(152, 196); + this.Resize += new System.EventHandler(this.RichListView_Resize); + this.ResumeLayout(false); + + } + + #endregion + + } +} diff --git a/RichListView/0 Versions/v1.1/RichListView/RichListView.cs b/RichListView/0 Versions/v1.1/RichListView/RichListView.cs new file mode 100644 index 0000000..7a40868 --- /dev/null +++ b/RichListView/0 Versions/v1.1/RichListView/RichListView.cs @@ -0,0 +1,214 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Khendys.Controls; + +namespace SzNPProjects +{ + public partial class RichListView : UserControl + { + /// + /// Create new instance of RichListView. + /// + public RichListView() + { + InitializeComponent(); + Items.ListChanged += Items_ListChanged; + SetStyle(ControlStyles.SupportsTransparentBackColor, true); + ResizeRedraw = false; //Redraw is done using RefreshList() + //Columns = new BindingList(); + + //var item = new ExRichTextBox(); + //var listitem = new RichListViewItem(item); + //Items.Add(listitem); + } + + #region Events + void Items_ListChanged(object sender, ListChangedEventArgs e) + { + switch(e.ListChangedType) + { + case ListChangedType.ItemAdded: + Items[e.NewIndex].Parent = this; + Items[e.NewIndex]._CreateInstance(); + break; + } + RefreshList(); + } + public event EventHandler ItemClicked; + public event EventHandler ItemDoubleClicked; + #endregion + + #region Properties + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public BindingList items; + /// + /// A list of items shown in the RichListView. + /// + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public BindingList Items + { + get + { + if (items == null) + items = new BindingList(); + return items; + } + } + public RichListViewColumn[] columns; + /// + /// Array of columns. + /// + public RichListViewColumn[] Columns + { + get + { + if (columns == null) + return new RichListViewColumn[0]; + return columns; + } + set + { + columns = value; + RefreshList(); + } + } + /// + /// Get/set the header height. + /// + public int HeaderHeight { get; set; } + /// + /// Get/set items height. + /// + public int ItemHeight { get; set; } + /// + /// Determines whenether to set last column width to fit the remaining space. + /// + public bool ColumnAutoFill { get; set; } + private bool autoupdate = true; + /// + /// When false, will disable any update event. + /// + public bool AutoUpdate + { + get + { + return autoupdate; + } + set + { + autoupdate = value; + } + } + public override Color BackColor + { + get + { + return base.BackColor; + } + set + { + _SetItemsBackground(value); + base.BackColor = value; + } + } + public override Color ForeColor + { + get + { + return base.ForeColor; + } + set + { + _SetItemsForeground(value); + base.ForeColor = value; + } + } + #endregion + + #region Public Methods + public new void Show() + { + RefreshList(); + /*for (int i = 0; i < Items.Count; i++) + Items[i].Show();*/ + base.Show(); + } + public new void Hide() + { + RefreshList(); + /*for (int i = 0; i < Items.Count; i++) + Items[i].Hide();*/ + base.Hide(); + } + /// + /// Provide a list of Control arrays to set the items. + /// + /// The items to set. + public void SetItems(List items) + { + for (int i = 0; i < items.Count; i++) + Items.Add(new RichListViewItem(items[i])); + RefreshList(); + } + /// + /// Refresh the list manually, if built-in refresh is not enough. + /// + public void RefreshList() + { + if(!AutoUpdate) + { + AutoValidate = AutoValidate.Disable; + return; + } + //AutoValidate = AutoValidate.EnablePreventFocusChange; - Actually it will raise the update, no need for automation + for (int i = 0; i < Items.Count; i++) + { + Items[i].Hide(); + Items[i].SetBounds(HeaderHeight + ItemHeight * i, ItemHeight); + Items[i].Show(); + } + Refresh(); + } + #endregion + + #region Internal Methods + private void _SetItemsBackground(Color value) + { + for (int i = 0; i < Items.Count; i++) + Items[i].BackColor = value; + } + private void _SetItemsForeground(Color value) + { + for (int i = 0; i < Items.Count; i++) + Items[i].ForeColor = value; + } + internal void _ItemClicked(object sender) + { + ItemClicked(sender, Items.IndexOf((RichListViewItem)sender)); + } + internal void _ItemDoubleClicked(object sender) + { + var index=Items.IndexOf((RichListViewItem)sender); + ItemDoubleClicked(sender, index); + for (int i = 0; i < Items[index].SubItems.Length; i++) + if (Items[index].SubItems[i].GetType().IsSubclassOf(typeof(TextBoxBase))) + ((TextBoxBase)Items[index].SubItems[i]).SelectionLength = 0; + } + private void RichListView_Resize(object sender, EventArgs e) + { + RefreshList(); + } + #endregion + } +} diff --git a/RichListView/0 Versions/v1.1/RichListView/RichListView.csproj b/RichListView/0 Versions/v1.1/RichListView/RichListView.csproj new file mode 100644 index 0000000..e066664 --- /dev/null +++ b/RichListView/0 Versions/v1.1/RichListView/RichListView.csproj @@ -0,0 +1,72 @@ + + + + + Debug + AnyCPU + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + Library + Properties + SzNPProjects + RichListView + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + Auto + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll + + + + + + + + + + + + + + + + UserControl + + + RichListView.cs + + + + + + + RichListView.cs + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/v1.1/RichListView/RichListView.resx b/RichListView/0 Versions/v1.1/RichListView/RichListView.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/RichListView/0 Versions/v1.1/RichListView/RichListView.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/RichListView/0 Versions/v1.1/RichListView/RichListViewColumn.cs b/RichListView/0 Versions/v1.1/RichListView/RichListViewColumn.cs new file mode 100644 index 0000000..03a2b00 --- /dev/null +++ b/RichListView/0 Versions/v1.1/RichListView/RichListViewColumn.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace SzNPProjects +{ + public class RichListViewColumn + { + public int Width { get; set; } + public string Text { get; set; } + } +} diff --git a/RichListView/0 Versions/v1.1/RichListView/RichListViewItem.cs b/RichListView/0 Versions/v1.1/RichListView/RichListViewItem.cs new file mode 100644 index 0000000..a900d92 --- /dev/null +++ b/RichListView/0 Versions/v1.1/RichListView/RichListViewItem.cs @@ -0,0 +1,175 @@ +using Khendys.Controls; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace SzNPProjects +{ + public class RichListViewItem + { + /*public Control Control { get; set; } + public string[] SubItems { get; internal set; }*/ + public Control[] SubItems { get; internal set; } + public RichListView Parent { get; internal set; } + private Color backcolor; + public Color BackColor + { + get + { + return backcolor; + } + set + { + for (int i = 0; i < SubItems.Length; i++) + SubItems[i].BackColor = value; + backcolor = value; + } + } + private Color forecolor; + public Color ForeColor + { + get + { + return forecolor; + } + set + { + for (int i = 0; i < SubItems.Length; i++) + SubItems[i].ForeColor = value; + forecolor = value; + } + } + public RichListViewItem() + { + //_CreateInstance(); + } + //public RichListViewItem(Control control) + public RichListViewItem(Control[] subitems) + { + //Control = control; + SubItems = subitems; + //_CreateInstance(); + } + internal void _CreateInstance() + { + /*if (Control == null) + Control = new ExRichTextBox(); + ((ExRichTextBox)Control).ReadOnly = true;*/ + if (SubItems == null) + SubItems = new Control[Parent.Columns.Length]; + for (int i = 0; i < Parent.Columns.Length; i++) + { + if (SubItems[i] == null) + { + SubItems[i] = new ExRichTextBox(); + SubItems[i].Cursor = Cursors.Arrow; + } + SubItems[i].Parent = this.Parent; + if (SubItems[i].GetType().IsSubclassOf(typeof(TextBoxBase))) //If it's a TextBox, set it to read-only + { + ((TextBoxBase)SubItems[i]).ReadOnly = true; + ((TextBoxBase)SubItems[i]).BorderStyle = BorderStyle.None; + //((TextBoxBase)SubItems[i]). + } + /*if (SubItems[i].GetType()==typeof(ExExRichTextBox)) + { + ((ExExRichTextBox)SubItems[i]).SetTransparent(true); + //SubItems[i] = ((ExExRichTextBox)SubItems[i]).SetTransparent(true); + }*/ + bool success = true; + Control parent = this.Parent; + do + { + success = true; + try + { + this.SubItems[i].BackColor = parent.BackColor; + } + catch (ArgumentException) + { + Console.WriteLine("RichListView: Transparency is not supported. Using container BackColor."); + this.SubItems[i].BackColor = this.Parent.Parent.BackColor; + success = false; + parent = parent.Parent; + } + } while (!success); + this.SubItems[i].ForeColor = this.Parent.ForeColor; + SubItems[i].Click += _ItemClicked; + SubItems[i].DoubleClick += _ItemDoubleClicked; + } + } + private void _ItemClicked(object sender, EventArgs e) + {/* + for(int i=0; i + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/v1.1/Test Project/Form1.Designer.cs b/RichListView/0 Versions/v1.1/Test Project/Form1.Designer.cs new file mode 100644 index 0000000..7d2299f --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/Form1.Designer.cs @@ -0,0 +1,145 @@ +namespace Test_Project +{ + partial class Form1 + { + /// + /// 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() + { + SzNPProjects.RichListViewColumn richListViewColumn1 = new SzNPProjects.RichListViewColumn(); + SzNPProjects.RichListViewColumn richListViewColumn2 = new SzNPProjects.RichListViewColumn(); + this.hidebtn = new System.Windows.Forms.Button(); + this.showbtn = new System.Windows.Forms.Button(); + this.richListView1 = new SzNPProjects.RichListView(); + this.redrawoffbtn = new System.Windows.Forms.Button(); + this.redrawonbtn = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // hidebtn + // + this.hidebtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.hidebtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.hidebtn.Location = new System.Drawing.Point(305, 404); + this.hidebtn.Name = "hidebtn"; + this.hidebtn.Size = new System.Drawing.Size(75, 23); + this.hidebtn.TabIndex = 1; + this.hidebtn.Text = "Hide"; + this.hidebtn.UseVisualStyleBackColor = true; + this.hidebtn.Click += new System.EventHandler(this.hidebtn_Click); + // + // showbtn + // + this.showbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.showbtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.showbtn.Location = new System.Drawing.Point(386, 404); + this.showbtn.Name = "showbtn"; + this.showbtn.Size = new System.Drawing.Size(75, 23); + this.showbtn.TabIndex = 2; + this.showbtn.Text = "Show"; + this.showbtn.UseVisualStyleBackColor = true; + this.showbtn.Click += new System.EventHandler(this.showbtn_Click); + // + // richListView1 + // + this.richListView1.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.richListView1.AutoScroll = true; + this.richListView1.AutoUpdate = false; + this.richListView1.AutoValidate = System.Windows.Forms.AutoValidate.Disable; + this.richListView1.BackColor = System.Drawing.Color.Black; + this.richListView1.ColumnAutoFill = true; + richListViewColumn1.Text = "Na most már elvileg működik"; + richListViewColumn1.Width = 100; + richListViewColumn2.Text = "Újabb oszlop"; + richListViewColumn2.Width = 100; + this.richListView1.Columns = new SzNPProjects.RichListViewColumn[] { + richListViewColumn1, + richListViewColumn2}; + this.richListView1.ForeColor = System.Drawing.Color.Aqua; + this.richListView1.HeaderHeight = 20; + this.richListView1.ItemHeight = 50; + this.richListView1.Location = new System.Drawing.Point(12, 12); + this.richListView1.Name = "richListView1"; + this.richListView1.Size = new System.Drawing.Size(762, 381); + this.richListView1.TabIndex = 0; + this.richListView1.ItemClicked += new System.EventHandler(this.richListView1_ItemClicked); + this.richListView1.ItemDoubleClicked += new System.EventHandler(this.richListView1_ItemDoubleClicked); + // + // redrawoffbtn + // + this.redrawoffbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.redrawoffbtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.redrawoffbtn.Location = new System.Drawing.Point(468, 404); + this.redrawoffbtn.Name = "redrawoffbtn"; + this.redrawoffbtn.Size = new System.Drawing.Size(75, 23); + this.redrawoffbtn.TabIndex = 3; + this.redrawoffbtn.Text = "Redraw off"; + this.redrawoffbtn.UseVisualStyleBackColor = true; + this.redrawoffbtn.Click += new System.EventHandler(this.redrawoffbtn_Click); + // + // redrawonbtn + // + this.redrawonbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.redrawonbtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.redrawonbtn.Location = new System.Drawing.Point(550, 404); + this.redrawonbtn.Name = "redrawonbtn"; + this.redrawonbtn.Size = new System.Drawing.Size(75, 23); + this.redrawonbtn.TabIndex = 4; + this.redrawonbtn.Text = "Redraw on"; + this.redrawonbtn.UseVisualStyleBackColor = true; + this.redrawonbtn.Click += new System.EventHandler(this.redrawonbtn_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Navy; + this.ClientSize = new System.Drawing.Size(786, 439); + this.Controls.Add(this.redrawonbtn); + this.Controls.Add(this.redrawoffbtn); + this.Controls.Add(this.showbtn); + this.Controls.Add(this.hidebtn); + this.Controls.Add(this.richListView1); + this.ForeColor = System.Drawing.Color.Aqua; + this.Name = "Form1"; + this.Text = "Test Form"; + this.ResumeLayout(false); + + } + + #endregion + + private SzNPProjects.RichListView richListView1; + private System.Windows.Forms.Button hidebtn; + private System.Windows.Forms.Button showbtn; + private System.Windows.Forms.Button redrawoffbtn; + private System.Windows.Forms.Button redrawonbtn; + + + + } +} + diff --git a/RichListView/0 Versions/v1.1/Test Project/Form1.cs b/RichListView/0 Versions/v1.1/Test Project/Form1.cs new file mode 100644 index 0000000..a1998f9 --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/Form1.cs @@ -0,0 +1,78 @@ +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 SzNPProjects; + +namespace Test_Project +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + /*var tmp = new RichListView(); + tmp.ItemHeight = 50; + tmp.Columns.Add(new RichListViewColumn()); + tmp.Columns[0].Width = 100; + Console.WriteLine("Main call"); + tmp.Items.Add(new RichListViewItem()); + this.Controls.Add(tmp); + tmp.Show();*/ + + //var col = new RichListViewColumn(); + //col.Width = 50; + //richListView1.Columns.Add(col); + var item=new RichListViewItem(); + //item.Control.Text = "Test :P"; + richListView1.Items.Add(item); + richListView1.Items[0].SubItems[0].Text = "Test :P"; + richListView1.Items[0].SubItems[1].Text = "Second col"; + richListView1.Items.Add(new RichListViewItem()); + richListView1.Items[1].SubItems[0].Text = "Only one col of text"; + //richListView1.ItemClicked += richListView1_ItemClicked; + //richListView1.ItemDoubleClicked += richListView1_ItemDoubleClicked; + + var tmp=new Control[2]; + tmp[0] = new PictureBox(); + ((PictureBox)tmp[0]).SizeMode = PictureBoxSizeMode.StretchImage; + richListView1.Items.Add(new RichListViewItem(tmp)); + ((PictureBox)richListView1.Items[2].SubItems[0]).ImageLocation = "test.jpg"; + } + + void richListView1_ItemDoubleClicked(object sender, int e) + { + MessageBox.Show(e + 1 + ". item double clicked"); + } + + void richListView1_ItemClicked(object sender, int e) + { + //MessageBox.Show(e + 1 + ". item clicked"); + } + + private void hidebtn_Click(object sender, EventArgs e) + { + richListView1.Hide(); + } + + private void showbtn_Click(object sender, EventArgs e) + { + richListView1.Show(); + } + + private void redrawoffbtn_Click(object sender, EventArgs e) + { + richListView1.AutoUpdate = false; + } + + private void redrawonbtn_Click(object sender, EventArgs e) + { + richListView1.AutoUpdate = true; + } + } +} diff --git a/RichListView/0 Versions/v1.1/Test Project/Form1.resx b/RichListView/0 Versions/v1.1/Test Project/Form1.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/Form1.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/RichListView/0 Versions/v1.1/Test Project/Program.cs b/RichListView/0 Versions/v1.1/Test Project/Program.cs new file mode 100644 index 0000000..bc18a48 --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Test_Project +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/RichListView/0 Versions/v1.1/Test Project/Properties/AssemblyInfo.cs b/RichListView/0 Versions/v1.1/Test Project/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..bce6b2d --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/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("Test Project")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Test Project")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("5687fade-08c8-4c73-9b0e-e0ea562b787c")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RichListView/0 Versions/v1.1/Test Project/Properties/Resources.Designer.cs b/RichListView/0 Versions/v1.1/Test Project/Properties/Resources.Designer.cs new file mode 100644 index 0000000..6d37e11 --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_Project.Properties +{ + + + /// + /// 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 ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Test_Project.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; + } + } + } +} diff --git a/RichListView/0 Versions/v1.1/Test Project/Properties/Resources.resx b/RichListView/0 Versions/v1.1/Test Project/Properties/Resources.resx new file mode 100644 index 0000000..ffecec8 --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RichListView/0 Versions/v1.1/Test Project/Properties/Settings.Designer.cs b/RichListView/0 Versions/v1.1/Test Project/Properties/Settings.Designer.cs new file mode 100644 index 0000000..673388f --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_Project.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/RichListView/0 Versions/v1.1/Test Project/Properties/Settings.settings b/RichListView/0 Versions/v1.1/Test Project/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/RichListView/0 Versions/v1.1/Test Project/Test Project.csproj b/RichListView/0 Versions/v1.1/Test Project/Test Project.csproj new file mode 100644 index 0000000..368299a --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/Test Project.csproj @@ -0,0 +1,97 @@ + + + + + Debug + AnyCPU + {A4C26FE5-9705-4E0D-8CAC-29C368663E10} + WinExe + Properties + Test_Project + Test Project + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + RichListView + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll new file mode 100644 index 0000000..1851254 Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll differ diff --git a/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb new file mode 100644 index 0000000..1610b6d Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb differ diff --git a/RichListView/0 Versions/v1.1/Test Project/bin/Debug/RichListView.dll b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/RichListView.dll new file mode 100644 index 0000000..9b0720a Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/RichListView.dll differ diff --git a/RichListView/0 Versions/v1.1/Test Project/bin/Debug/RichListView.pdb b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/RichListView.pdb new file mode 100644 index 0000000..4ae8355 Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/RichListView.pdb differ diff --git a/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.exe b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.exe new file mode 100644 index 0000000..fb744ef Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.exe differ diff --git a/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.exe.config b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.pdb b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.pdb new file mode 100644 index 0000000..fec0fd2 Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.pdb differ diff --git a/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.vshost.exe b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.vshost.exe new file mode 100644 index 0000000..c0dfecc Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.vshost.exe differ diff --git a/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.vshost.exe.config b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.vshost.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.vshost.exe.manifest b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.vshost.exe.manifest new file mode 100644 index 0000000..f96b1d6 --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/Test Project.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/RichListView/0 Versions/v1.1/Test Project/bin/Debug/test.jpg b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/test.jpg new file mode 100644 index 0000000..d97d796 Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/bin/Debug/test.jpg differ diff --git a/RichListView/0 Versions/v1.1/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..c533052 Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/RichListView/0 Versions/v1.1/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..8931c86 Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/RichListView/0 Versions/v1.1/Test Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/v1.1/Test Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/v1.1/Test Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..54c6764 --- /dev/null +++ b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt @@ -0,0 +1,13 @@ +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.exe.config +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.exe +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Khendys.Controls.ExRichTextBox.dll +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\RichListView.dll +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\RichListView.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Khendys.Controls.ExRichTextBox.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.csprojResolveAssemblyReference.cache +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test_Project.Form1.resources +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test_Project.Properties.Resources.resources +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.csproj.GenerateResource.Cache +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.exe +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.pdb diff --git a/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache new file mode 100644 index 0000000..7dd3608 Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache differ diff --git a/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..bc21e42 Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache differ diff --git a/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.exe b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.exe new file mode 100644 index 0000000..fb744ef Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.exe differ diff --git a/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.pdb b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.pdb new file mode 100644 index 0000000..fec0fd2 Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test Project.pdb differ diff --git a/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test_Project.Form1.resources b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test_Project.Form1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test_Project.Form1.resources differ diff --git a/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test_Project.Properties.Resources.resources b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test_Project.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/RichListView/0 Versions/v1.1/Test Project/obj/Debug/Test_Project.Properties.Resources.resources differ diff --git a/RichListView/RichListView/NoParentException.cs b/RichListView/RichListView/NoParentException.cs new file mode 100644 index 0000000..44ec1a7 --- /dev/null +++ b/RichListView/RichListView/NoParentException.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SzNPProjects +{ + class NoParentException : Exception + { + /*public override System.Collections.IDictionary Data + { + get + { + var ret = new Dictionary(); + ret["details"] = "Try to reference ListViewItem which is not assigned to a ListView control."; + return ret; + } + } + public override string Message + { + get + { + return "Try to reference ListViewItem which is not assigned to a ListView control."; + } + }*/ + public NoParentException(string message) : base(message) + { + } + } +} diff --git a/RichListView/RichListView/Properties/AssemblyInfo.cs b/RichListView/RichListView/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2d7e6fa --- /dev/null +++ b/RichListView/RichListView/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("RichListView")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RichListView")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("1820b274-58b3-405f-8390-5377cb74fa29")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RichListView/RichListView/RichListView.Designer.cs b/RichListView/RichListView/RichListView.Designer.cs new file mode 100644 index 0000000..4c7bf4a --- /dev/null +++ b/RichListView/RichListView/RichListView.Designer.cs @@ -0,0 +1,49 @@ +namespace SzNPProjects +{ + partial class RichListView + { + /// + /// 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 Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // RichListView + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScroll = true; + this.Name = "RichListView"; + this.Size = new System.Drawing.Size(152, 196); + this.Click += new System.EventHandler(this.RichListView_Click); + this.Resize += new System.EventHandler(this.RichListView_Resize); + this.ResumeLayout(false); + + } + + #endregion + + } +} diff --git a/RichListView/RichListView/RichListView.cs b/RichListView/RichListView/RichListView.cs new file mode 100644 index 0000000..97016b8 --- /dev/null +++ b/RichListView/RichListView/RichListView.cs @@ -0,0 +1,370 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Khendys.Controls; +using System.Xml.Serialization; + +namespace SzNPProjects +{ + public partial class RichListView : UserControl + { + /// + /// Create new instance of RichListView. + /// + public RichListView() + { + InitializeComponent(); + Items.ListChanged += Items_ListChanged; + SetStyle(ControlStyles.SupportsTransparentBackColor, true); + ResizeRedraw = false; //Redraw is done using RefreshList() + //Columns = new BindingList(); + + //var item = new ExRichTextBox(); + //var listitem = new RichListViewItem(item); + //Items.Add(listitem); + + bool scrollbar = AutoScroll; + AutoScroll = false; + HorizontalScroll.Enabled = false; + HorizontalScroll.Visible = false; + AutoScroll = scrollbar; + } + + #region Events + void Items_ListChanged(object sender, ListChangedEventArgs e) + { + switch(e.ListChangedType) + { + case ListChangedType.ItemAdded: + Items[e.NewIndex].Parent = this; + Items[e.NewIndex]._CreateInstance(true); + if (items2 != null) //2014.09.19. + //items2.Add(items[e.NewIndex]); //2014.09.19. + items2.Insert(e.NewIndex, items[e.NewIndex]); //2014.09.26. + else //2014.09.19. + //items2 = new BindingList(items); //2014.09.19. + { + items2 = new BindingList(); + foreach (var item in items) + { + items2.Add(item); + } + } + break; + case ListChangedType.ItemDeleted: + //items2[e.OldIndex].Remove(); + if (items2 != null) //2014.09.19. + { + items2[e.NewIndex].Remove(); + items2.RemoveAt(e.NewIndex); //2014.09.19. + } + else + { + //items2 = new BindingList(items); + items2 = new BindingList(); + foreach (var item in items) + { + items2.Add(item); + } + } + break; + case ListChangedType.Reset: + if (items2 == null) //2014.09.19. + items2 = new BindingList(); //2014.09.19. + else + { + for (int i = 0; i < items2.Count; i++) + items2[i].Remove(); + items2.Clear(); //2014.09.19. + } + break; + } + RefreshList(); + } + public event EventHandler ItemClicked; + public event EventHandler ItemDoubleClicked; + public event EventHandler ItemRightClicked; + #endregion + + #region Properties + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + internal BindingList items; + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + internal BindingList items2; //Stores the last item list + /// + /// A list of items shown in the RichListView. + /// + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public BindingList Items + { + get + { + if (items == null) + items = new BindingList(); + /*if (items.Count != 0) + { + if (items2 == null) + items2 = new BindingList(); + items2.Clear(); + for (int i = 0; i < items.Count; i++) + items2.Add(items[i]); + }*/ + //items2 = new BindingList(items); + return items; + } + } + public RichListViewColumn[] columns; + /// + /// Array of columns. + /// + public RichListViewColumn[] Columns + { + get + { + if (columns == null) + return new RichListViewColumn[0]; + return columns; + } + set + { + columns = value; + RefreshList(); + } + } + /// + /// Get/set the header height. + /// + public int HeaderHeight { get; set; } + /// + /// Get/set items height. + /// + public int ItemHeight { get; set; } + /// + /// Determines whenether to set last column width to fit the remaining space. + /// + public bool ColumnAutoFill { get; set; } + private bool autoupdate = true; + /// + /// When false, will disable any update event. + /// + public bool AutoUpdate + { + get + { + return autoupdate; + } + set + { + autoupdate = value; + if (autoupdate) + RefreshList(); + } + } + public override Color BackColor + { + get + { + return base.BackColor; + } + set + { + _SetItemsBackground(value); + base.BackColor = value; + } + } + public override Color ForeColor + { + get + { + return base.ForeColor; + } + set + { + _SetItemsForeground(value); + base.ForeColor = value; + } + } + private Color selectioncolor = Color.Aqua; + public Color SelectionColor + { + get + { + return selectioncolor; + } + set + { + selectioncolor = value; + } + } + private int selectedindex = -1; + internal int _SelectedIndex //If set internally, do not go in an infinite loop + { + get + { + return selectedindex; + } + set + { + if (selectedindex != -1) + Items[selectedindex].Selected = false; + selectedindex = value; + } + } + public int SelectedIndex + { + get + { + return selectedindex; + } + set + { + if (selectedindex != -1) + Items[selectedindex]._Selected = false; + if (value != -1) + Items[value]._Selected = true; + selectedindex = value; + } + } + #endregion + + #region Public Methods + public new void Show() + { + RefreshList(); + /*for (int i = 0; i < Items.Count; i++) + Items[i].Show();*/ + base.Show(); + } + public new void Hide() + { + RefreshList(); + /*for (int i = 0; i < Items.Count; i++) + Items[i].Hide();*/ + base.Hide(); + } + /// + /// Provide a list of Control arrays to set the items. + /// + /// The items to set. + public void SetItems(List items) + { + Action> func = SetItems2; + func(items); + } + public void SetItems2(List items) + { + for (int i = 0; i < items.Count; i++) + Items.Add(new RichListViewItem(items[i])); + RefreshList(); + } + /// + /// Refresh the list manually, if built-in refresh is not enough. + /// + public void RefreshList() + { + if(!AutoUpdate) + { + AutoValidate = AutoValidate.Disable; + return; + } + AutoValidate = AutoValidate.EnablePreventFocusChange; //- Actually it will raise the update, no need for automation + //this.AutoScrollPosition = new Point(0, 0); + //this.AutoScrollOffset = new Point(0, 0); + for (int i = 0; i < Items.Count; i++) + { + //Items[i].Hide(); + //this.AutoScrollPosition = new Point(0, 0); //2014.09.06. + Items[i].SetBounds(HeaderHeight + ItemHeight * i, ItemHeight); + if (Items[i].Selected) + Items[i].BackColor = SelectionColor; + else + Items[i].BackColor = this.BackColor; + Items[i].Show(); + } + //this.AutoScrollPosition = new Point(0, 0); + //this.AutoScrollOffset = new Point(0, 0); + Refresh(); + } + #endregion + + #region Internal Methods + private void _SetItemsBackground(Color value) + { + for (int i = 0; i < Items.Count; i++) + Items[i].BackColor = value; + } + private void _SetItemsForeground(Color value) + { + for (int i = 0; i < Items.Count; i++) + Items[i].ForeColor = value; + } + //internal void _ItemClicked(object sender) + internal void _ItemClicked(RichListViewItem sender) + { + //try + //{ + //ItemClicked(sender, Items.IndexOf((RichListViewItem)sender)); + /*for (int i = 0; i < Items.Count; i++) + { + if (!Items[i].Equals(sender)) + Items[i].Selected = false; + }*/ + sender.Selected = true; + if (ItemClicked != null) //2014.08.30. + ItemClicked(sender, Items.IndexOf(sender)); + //} + //catch(NullReferenceException) + //{ + //} + } + //internal void _ItemDoubleClicked(object sender) + internal void _ItemDoubleClicked(RichListViewItem sender) + { + //try + //{ + //var index = Items.IndexOf((RichListViewItem)sender); + var index = Items.IndexOf(sender); + if (ItemDoubleClicked != null) //2014.08.30. + ItemDoubleClicked(sender, index); + for (int i = 0; i < Items[index].SubItems.Length; i++) + if (Items[index].SubItems[i].GetType().IsSubclassOf(typeof(TextBoxBase))) + ((TextBoxBase)Items[index].SubItems[i]).SelectionLength = 0; + //} + //catch (NullReferenceException) + //{ + //} + } + internal void _ItemRightClicked(RichListViewItem sender) + { + //try + //{ + if (ItemRightClicked != null) //2014.08.30. - 2014.09.01. (ItemClicked javítva ItemRightClicked-re) + ItemRightClicked(sender, Items.IndexOf(sender)); + //} + //catch (NullReferenceException) + //{ + //} + } + private void RichListView_Resize(object sender, EventArgs e) + { + //RefreshList(); - 2014.10.09. - Anchor... + } + private void RichListView_Click(object sender, EventArgs e) + { + this.SelectedIndex = -1; + } + #endregion + } +} diff --git a/RichListView/RichListView/RichListView.csproj b/RichListView/RichListView/RichListView.csproj new file mode 100644 index 0000000..e066664 --- /dev/null +++ b/RichListView/RichListView/RichListView.csproj @@ -0,0 +1,72 @@ + + + + + Debug + AnyCPU + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + Library + Properties + SzNPProjects + RichListView + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + Auto + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll + + + + + + + + + + + + + + + + UserControl + + + RichListView.cs + + + + + + + RichListView.cs + + + + + \ No newline at end of file diff --git a/RichListView/RichListView/RichListView.resx b/RichListView/RichListView/RichListView.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/RichListView/RichListView/RichListView.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/RichListView/RichListView/RichListViewColumn.cs b/RichListView/RichListView/RichListViewColumn.cs new file mode 100644 index 0000000..03a2b00 --- /dev/null +++ b/RichListView/RichListView/RichListViewColumn.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace SzNPProjects +{ + public class RichListViewColumn + { + public int Width { get; set; } + public string Text { get; set; } + } +} diff --git a/RichListView/RichListView/RichListViewItem.cs b/RichListView/RichListView/RichListViewItem.cs new file mode 100644 index 0000000..71216be --- /dev/null +++ b/RichListView/RichListView/RichListViewItem.cs @@ -0,0 +1,279 @@ +using Khendys.Controls; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace SzNPProjects +{ + public class RichListViewItem + { + /*public Control Control { get; set; } + public string[] SubItems { get; internal set; }*/ + public Control[] SubItems { get; internal set; } + /*private Control[] subitems; + public Control[] SubItems + { + get + { + return subitems; + } + set + { + if (subitems != null) + { + foreach (var item in subitems) + { + item.Dispose(); + } + } + foreach(var entry in value) + { + if (entry != null) + entry.Parent = this.Parent; + } + _CreateInstance(false); + subitems = value; + } + }*/ + public RichListView Parent { get; internal set; } + private Color backcolor; + public Color BackColor + { + get + { + return backcolor; + } + set + { + for (int i = 0; i < SubItems.Length; i++) + SubItems[i].BackColor = value; + backcolor = value; + } + } + private Color forecolor; + public Color ForeColor + { + get + { + return forecolor; + } + set + { + for (int i = 0; i < SubItems.Length; i++) + SubItems[i].ForeColor = value; + forecolor = value; + } + } + private bool selected = false; + internal bool _Selected + { + get + { + return selected; + } + set + { + if (value) + this.BackColor = Parent.SelectionColor; + else + this.BackColor = Parent.BackColor; + selected = value; + } + } + public bool Selected + { + get + { + return selected; + } + set + { + if (value) + { + Parent._SelectedIndex = Parent.Items.IndexOf(this); + this.BackColor = Parent.SelectionColor; + } + else + this.BackColor = Parent.BackColor; + selected = value; + } + } + public RichListViewItem() + { + Action func = RichListViewItem2; + func(); + } + public RichListViewItem(Control[] subitems) + { + Action func = RichListViewItem2; + func(subitems); + } + public RichListViewItem(int colnum) + { + Action func = RichListViewItem2; + func(colnum); + SubItems = new Control[colnum]; + } + + public void RichListViewItem2(int colnum) + { + SubItems = new Control[colnum]; + } + public void RichListViewItem2() + { + } + public void RichListViewItem2(Control[] subitems) + { + SubItems = subitems; + } + /*internal void _CreateInstance() + { + Action func = _CreateInstance2; + func(); + }*/ + internal void _CreateInstance(bool checkfornullsubitems) + { + if (SubItems == null) + { + if (checkfornullsubitems) + SubItems = new Control[Parent.Columns.Length]; + else + return; + } + for (int i = 0; i < Parent.Columns.Length; i++) + { + if (SubItems[i] == null) + { + SubItems[i] = new ExRichTextBox(); + SubItems[i].Cursor = Cursors.Arrow; + //SubItems[i].Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; //2014.10.09. - Egyelőre nem tudtam megoldani + } + //Console.WriteLine("this.Parent=" + this.Parent); + //Console.WriteLine("SubItems[i].Parent=" + SubItems[i].Parent); + SubItems[i].Parent = this.Parent; + if (SubItems[i].GetType().IsSubclassOf(typeof(TextBoxBase))) //If it's a TextBox, set it to read-only + { + ((TextBoxBase)SubItems[i]).ReadOnly = true; + ((TextBoxBase)SubItems[i]).BorderStyle = BorderStyle.None; + //((TextBoxBase)SubItems[i]). + } + /*if (SubItems[i].GetType()==typeof(ExExRichTextBox)) + { + ((ExExRichTextBox)SubItems[i]).SetTransparent(true); + //SubItems[i] = ((ExExRichTextBox)SubItems[i]).SetTransparent(true); + }*/ + bool success = true; + Control parent = this.Parent; + do + { + success = true; + try + { + this.SubItems[i].BackColor = parent.BackColor; + } + catch (ArgumentException) + { + Console.WriteLine("RichListView: Transparency is not supported. Using container BackColor."); + this.SubItems[i].BackColor = this.Parent.Parent.BackColor; + success = false; + parent = parent.Parent; + } + } while (!success); + this.SubItems[i].ForeColor = this.Parent.ForeColor; + SubItems[i].Click += _ItemClicked; + SubItems[i].DoubleClick += _ItemDoubleClicked; + //SubItems[i].MouseClick += _ItemMouseClicked; + SubItems[i].MouseUp += _ItemMouseClicked; + } + } + private void _ItemClicked(object sender, EventArgs e) + {/* + for(int i=0; i + + + + + \ No newline at end of file diff --git a/RichListView/Test Project/Form1.Designer.cs b/RichListView/Test Project/Form1.Designer.cs new file mode 100644 index 0000000..7d2299f --- /dev/null +++ b/RichListView/Test Project/Form1.Designer.cs @@ -0,0 +1,145 @@ +namespace Test_Project +{ + partial class Form1 + { + /// + /// 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() + { + SzNPProjects.RichListViewColumn richListViewColumn1 = new SzNPProjects.RichListViewColumn(); + SzNPProjects.RichListViewColumn richListViewColumn2 = new SzNPProjects.RichListViewColumn(); + this.hidebtn = new System.Windows.Forms.Button(); + this.showbtn = new System.Windows.Forms.Button(); + this.richListView1 = new SzNPProjects.RichListView(); + this.redrawoffbtn = new System.Windows.Forms.Button(); + this.redrawonbtn = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // hidebtn + // + this.hidebtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.hidebtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.hidebtn.Location = new System.Drawing.Point(305, 404); + this.hidebtn.Name = "hidebtn"; + this.hidebtn.Size = new System.Drawing.Size(75, 23); + this.hidebtn.TabIndex = 1; + this.hidebtn.Text = "Hide"; + this.hidebtn.UseVisualStyleBackColor = true; + this.hidebtn.Click += new System.EventHandler(this.hidebtn_Click); + // + // showbtn + // + this.showbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.showbtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.showbtn.Location = new System.Drawing.Point(386, 404); + this.showbtn.Name = "showbtn"; + this.showbtn.Size = new System.Drawing.Size(75, 23); + this.showbtn.TabIndex = 2; + this.showbtn.Text = "Show"; + this.showbtn.UseVisualStyleBackColor = true; + this.showbtn.Click += new System.EventHandler(this.showbtn_Click); + // + // richListView1 + // + this.richListView1.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.richListView1.AutoScroll = true; + this.richListView1.AutoUpdate = false; + this.richListView1.AutoValidate = System.Windows.Forms.AutoValidate.Disable; + this.richListView1.BackColor = System.Drawing.Color.Black; + this.richListView1.ColumnAutoFill = true; + richListViewColumn1.Text = "Na most már elvileg működik"; + richListViewColumn1.Width = 100; + richListViewColumn2.Text = "Újabb oszlop"; + richListViewColumn2.Width = 100; + this.richListView1.Columns = new SzNPProjects.RichListViewColumn[] { + richListViewColumn1, + richListViewColumn2}; + this.richListView1.ForeColor = System.Drawing.Color.Aqua; + this.richListView1.HeaderHeight = 20; + this.richListView1.ItemHeight = 50; + this.richListView1.Location = new System.Drawing.Point(12, 12); + this.richListView1.Name = "richListView1"; + this.richListView1.Size = new System.Drawing.Size(762, 381); + this.richListView1.TabIndex = 0; + this.richListView1.ItemClicked += new System.EventHandler(this.richListView1_ItemClicked); + this.richListView1.ItemDoubleClicked += new System.EventHandler(this.richListView1_ItemDoubleClicked); + // + // redrawoffbtn + // + this.redrawoffbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.redrawoffbtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.redrawoffbtn.Location = new System.Drawing.Point(468, 404); + this.redrawoffbtn.Name = "redrawoffbtn"; + this.redrawoffbtn.Size = new System.Drawing.Size(75, 23); + this.redrawoffbtn.TabIndex = 3; + this.redrawoffbtn.Text = "Redraw off"; + this.redrawoffbtn.UseVisualStyleBackColor = true; + this.redrawoffbtn.Click += new System.EventHandler(this.redrawoffbtn_Click); + // + // redrawonbtn + // + this.redrawonbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.redrawonbtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.redrawonbtn.Location = new System.Drawing.Point(550, 404); + this.redrawonbtn.Name = "redrawonbtn"; + this.redrawonbtn.Size = new System.Drawing.Size(75, 23); + this.redrawonbtn.TabIndex = 4; + this.redrawonbtn.Text = "Redraw on"; + this.redrawonbtn.UseVisualStyleBackColor = true; + this.redrawonbtn.Click += new System.EventHandler(this.redrawonbtn_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Navy; + this.ClientSize = new System.Drawing.Size(786, 439); + this.Controls.Add(this.redrawonbtn); + this.Controls.Add(this.redrawoffbtn); + this.Controls.Add(this.showbtn); + this.Controls.Add(this.hidebtn); + this.Controls.Add(this.richListView1); + this.ForeColor = System.Drawing.Color.Aqua; + this.Name = "Form1"; + this.Text = "Test Form"; + this.ResumeLayout(false); + + } + + #endregion + + private SzNPProjects.RichListView richListView1; + private System.Windows.Forms.Button hidebtn; + private System.Windows.Forms.Button showbtn; + private System.Windows.Forms.Button redrawoffbtn; + private System.Windows.Forms.Button redrawonbtn; + + + + } +} + diff --git a/RichListView/Test Project/Form1.cs b/RichListView/Test Project/Form1.cs new file mode 100644 index 0000000..a1998f9 --- /dev/null +++ b/RichListView/Test Project/Form1.cs @@ -0,0 +1,78 @@ +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 SzNPProjects; + +namespace Test_Project +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + /*var tmp = new RichListView(); + tmp.ItemHeight = 50; + tmp.Columns.Add(new RichListViewColumn()); + tmp.Columns[0].Width = 100; + Console.WriteLine("Main call"); + tmp.Items.Add(new RichListViewItem()); + this.Controls.Add(tmp); + tmp.Show();*/ + + //var col = new RichListViewColumn(); + //col.Width = 50; + //richListView1.Columns.Add(col); + var item=new RichListViewItem(); + //item.Control.Text = "Test :P"; + richListView1.Items.Add(item); + richListView1.Items[0].SubItems[0].Text = "Test :P"; + richListView1.Items[0].SubItems[1].Text = "Second col"; + richListView1.Items.Add(new RichListViewItem()); + richListView1.Items[1].SubItems[0].Text = "Only one col of text"; + //richListView1.ItemClicked += richListView1_ItemClicked; + //richListView1.ItemDoubleClicked += richListView1_ItemDoubleClicked; + + var tmp=new Control[2]; + tmp[0] = new PictureBox(); + ((PictureBox)tmp[0]).SizeMode = PictureBoxSizeMode.StretchImage; + richListView1.Items.Add(new RichListViewItem(tmp)); + ((PictureBox)richListView1.Items[2].SubItems[0]).ImageLocation = "test.jpg"; + } + + void richListView1_ItemDoubleClicked(object sender, int e) + { + MessageBox.Show(e + 1 + ". item double clicked"); + } + + void richListView1_ItemClicked(object sender, int e) + { + //MessageBox.Show(e + 1 + ". item clicked"); + } + + private void hidebtn_Click(object sender, EventArgs e) + { + richListView1.Hide(); + } + + private void showbtn_Click(object sender, EventArgs e) + { + richListView1.Show(); + } + + private void redrawoffbtn_Click(object sender, EventArgs e) + { + richListView1.AutoUpdate = false; + } + + private void redrawonbtn_Click(object sender, EventArgs e) + { + richListView1.AutoUpdate = true; + } + } +} diff --git a/RichListView/Test Project/Form1.resx b/RichListView/Test Project/Form1.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/RichListView/Test Project/Form1.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/RichListView/Test Project/Program.cs b/RichListView/Test Project/Program.cs new file mode 100644 index 0000000..bc18a48 --- /dev/null +++ b/RichListView/Test Project/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Test_Project +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/RichListView/Test Project/Properties/AssemblyInfo.cs b/RichListView/Test Project/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..bce6b2d --- /dev/null +++ b/RichListView/Test Project/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("Test Project")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Test Project")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("5687fade-08c8-4c73-9b0e-e0ea562b787c")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RichListView/Test Project/Properties/Resources.Designer.cs b/RichListView/Test Project/Properties/Resources.Designer.cs new file mode 100644 index 0000000..6d37e11 --- /dev/null +++ b/RichListView/Test Project/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_Project.Properties +{ + + + /// + /// 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 ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Test_Project.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; + } + } + } +} diff --git a/RichListView/Test Project/Properties/Resources.resx b/RichListView/Test Project/Properties/Resources.resx new file mode 100644 index 0000000..ffecec8 --- /dev/null +++ b/RichListView/Test Project/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RichListView/Test Project/Properties/Settings.Designer.cs b/RichListView/Test Project/Properties/Settings.Designer.cs new file mode 100644 index 0000000..673388f --- /dev/null +++ b/RichListView/Test Project/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_Project.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/RichListView/Test Project/Properties/Settings.settings b/RichListView/Test Project/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/RichListView/Test Project/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/RichListView/Test Project/Test Project.csproj b/RichListView/Test Project/Test Project.csproj new file mode 100644 index 0000000..368299a --- /dev/null +++ b/RichListView/Test Project/Test Project.csproj @@ -0,0 +1,97 @@ + + + + + Debug + AnyCPU + {A4C26FE5-9705-4E0D-8CAC-29C368663E10} + WinExe + Properties + Test_Project + Test Project + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Downloads\ExRichTextBox_src\ExRichTextBox\bin\Debug\Khendys.Controls.ExRichTextBox.dll + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + RichListView + + + + + \ No newline at end of file diff --git a/RichListView/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll b/RichListView/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll new file mode 100644 index 0000000..1851254 Binary files /dev/null and b/RichListView/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.dll differ diff --git a/RichListView/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb b/RichListView/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb new file mode 100644 index 0000000..1610b6d Binary files /dev/null and b/RichListView/Test Project/bin/Debug/Khendys.Controls.ExRichTextBox.pdb differ diff --git a/RichListView/Test Project/bin/Debug/RichListView.dll b/RichListView/Test Project/bin/Debug/RichListView.dll new file mode 100644 index 0000000..b8b0d3a Binary files /dev/null and b/RichListView/Test Project/bin/Debug/RichListView.dll differ diff --git a/RichListView/Test Project/bin/Debug/RichListView.pdb b/RichListView/Test Project/bin/Debug/RichListView.pdb new file mode 100644 index 0000000..e539f33 Binary files /dev/null and b/RichListView/Test Project/bin/Debug/RichListView.pdb differ diff --git a/RichListView/Test Project/bin/Debug/Test Project.exe b/RichListView/Test Project/bin/Debug/Test Project.exe new file mode 100644 index 0000000..c0b40d8 Binary files /dev/null and b/RichListView/Test Project/bin/Debug/Test Project.exe differ diff --git a/RichListView/Test Project/bin/Debug/Test Project.exe.config b/RichListView/Test Project/bin/Debug/Test Project.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/RichListView/Test Project/bin/Debug/Test Project.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/RichListView/Test Project/bin/Debug/Test Project.pdb b/RichListView/Test Project/bin/Debug/Test Project.pdb new file mode 100644 index 0000000..8dd3323 Binary files /dev/null and b/RichListView/Test Project/bin/Debug/Test Project.pdb differ diff --git a/RichListView/Test Project/bin/Debug/Test Project.vshost.exe b/RichListView/Test Project/bin/Debug/Test Project.vshost.exe new file mode 100644 index 0000000..666c0af Binary files /dev/null and b/RichListView/Test Project/bin/Debug/Test Project.vshost.exe differ diff --git a/RichListView/Test Project/bin/Debug/Test Project.vshost.exe.config b/RichListView/Test Project/bin/Debug/Test Project.vshost.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/RichListView/Test Project/bin/Debug/Test Project.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/RichListView/Test Project/bin/Debug/Test Project.vshost.exe.manifest b/RichListView/Test Project/bin/Debug/Test Project.vshost.exe.manifest new file mode 100644 index 0000000..f96b1d6 --- /dev/null +++ b/RichListView/Test Project/bin/Debug/Test Project.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/RichListView/Test Project/bin/Debug/test.jpg b/RichListView/Test Project/bin/Debug/test.jpg new file mode 100644 index 0000000..d97d796 Binary files /dev/null and b/RichListView/Test Project/bin/Debug/test.jpg differ diff --git a/RichListView/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/RichListView/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..7214e55 Binary files /dev/null and b/RichListView/Test Project/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/RichListView/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/RichListView/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..a848188 Binary files /dev/null and b/RichListView/Test Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/RichListView/Test Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/RichListView/Test Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/Test Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/RichListView/Test Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/Test Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/RichListView/Test Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/RichListView/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt b/RichListView/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..f2161e5 --- /dev/null +++ b/RichListView/Test Project/obj/Debug/Test Project.csproj.FileListAbsolute.txt @@ -0,0 +1,16 @@ +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.exe.config +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.exe +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Test Project.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Khendys.Controls.ExRichTextBox.dll +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\RichListView.dll +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\RichListView.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\bin\Debug\Khendys.Controls.ExRichTextBox.pdb +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.csprojResolveAssemblyReference.cache +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test_Project.Form1.resources +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test_Project.Properties.Resources.resources +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.csproj.GenerateResource.Cache +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.exe +D:\Z - Norbi cucca\0 Projektek\RichListView\RichListView\Test Project\obj\Debug\Test Project.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\RichListView\Test Project\bin\Debug\Test Project.exe.config +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\RichListView\Test Project\obj\Debug\Test Project.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\RichListView\Test Project\obj\Debug\Test Project.pdb diff --git a/RichListView/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache b/RichListView/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache new file mode 100644 index 0000000..0bb3c86 Binary files /dev/null and b/RichListView/Test Project/obj/Debug/Test Project.csproj.GenerateResource.Cache differ diff --git a/RichListView/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache b/RichListView/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..46d758c Binary files /dev/null and b/RichListView/Test Project/obj/Debug/Test Project.csprojResolveAssemblyReference.cache differ diff --git a/RichListView/Test Project/obj/Debug/Test Project.exe b/RichListView/Test Project/obj/Debug/Test Project.exe new file mode 100644 index 0000000..c0b40d8 Binary files /dev/null and b/RichListView/Test Project/obj/Debug/Test Project.exe differ diff --git a/RichListView/Test Project/obj/Debug/Test Project.pdb b/RichListView/Test Project/obj/Debug/Test Project.pdb new file mode 100644 index 0000000..8dd3323 Binary files /dev/null and b/RichListView/Test Project/obj/Debug/Test Project.pdb differ diff --git a/RichListView/Test Project/obj/Debug/Test_Project.Form1.resources b/RichListView/Test Project/obj/Debug/Test_Project.Form1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/RichListView/Test Project/obj/Debug/Test_Project.Form1.resources differ diff --git a/RichListView/Test Project/obj/Debug/Test_Project.Properties.Resources.resources b/RichListView/Test Project/obj/Debug/Test_Project.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/RichListView/Test Project/obj/Debug/Test_Project.Properties.Resources.resources differ diff --git a/Updater/App.config b/Updater/App.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/Updater/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Updater/Program.cs b/Updater/Program.cs new file mode 100644 index 0000000..515ab5d --- /dev/null +++ b/Updater/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Updater +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main(string[] args) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new UpdateDialog(args)); + } + } +} diff --git a/Updater/Properties/AssemblyInfo.cs b/Updater/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ea2eb24 --- /dev/null +++ b/Updater/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("Updater")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Updater")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[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("fedb7142-d573-4f73-b65a-afbd71b70b66")] + +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Updater/Properties/Resources.Designer.cs b/Updater/Properties/Resources.Designer.cs new file mode 100644 index 0000000..5b6fe22 --- /dev/null +++ b/Updater/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 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 Updater.Properties +{ + + + /// + /// 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 ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Updater.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; + } + } + } +} diff --git a/Updater/Properties/Resources.resx b/Updater/Properties/Resources.resx new file mode 100644 index 0000000..ffecec8 --- /dev/null +++ b/Updater/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Updater/Properties/Settings.Designer.cs b/Updater/Properties/Settings.Designer.cs new file mode 100644 index 0000000..b94f8fa --- /dev/null +++ b/Updater/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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 Updater.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/Updater/Properties/Settings.settings b/Updater/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/Updater/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Updater/SVN/SVN Cheat Sheet.htm b/Updater/SVN/SVN Cheat Sheet.htm new file mode 100644 index 0000000..2134755 --- /dev/null +++ b/Updater/SVN/SVN Cheat Sheet.htm @@ -0,0 +1,101 @@ + + + + + +SVN Cheat Sheet + + + + + + + + +
+
+Todo..
+
+
+ +
+
+Cheat Sheet
+
+
+ + + + diff --git a/Updater/SVN/SVN Readme.htm b/Updater/SVN/SVN Readme.htm new file mode 100644 index 0000000..d45f699 --- /dev/null +++ b/Updater/SVN/SVN Readme.htm @@ -0,0 +1,105 @@ + + + + + +SVN Readme + + + + + + + + +
+
+Windows binaries from http://alagazam.net/
+Subversion build 1.6.15 : Zip file (see website for latest versions)
+
+Also available on authors sourceforge site.
+http://sourceforge.net/projects/win32svn/files/
+
+
+ +
+
+Subversion Portable Readme
+
+
+ + + + diff --git a/Updater/SVN/SVN Reference.htm b/Updater/SVN/SVN Reference.htm new file mode 100644 index 0000000..862f04e --- /dev/null +++ b/Updater/SVN/SVN Reference.htm @@ -0,0 +1,106 @@ + + + + + +SVN reference + + + + + + + + +
+
+Version Control with Subversion
+http://svnbook.red-bean.com/en/1.5/index.html
+
+Article - Dump a SVN repository from a URL
+http://pogopixels.com/blog/dumping-a-svn-repository-from-a-remote-url/
+
+
+
+ +
+
+Subversion References
+
+
+ + + + diff --git a/Updater/SVN/intl3_svn.dll b/Updater/SVN/intl3_svn.dll new file mode 100644 index 0000000..850645a Binary files /dev/null and b/Updater/SVN/intl3_svn.dll differ diff --git a/Updater/SVN/libapr-1.dll b/Updater/SVN/libapr-1.dll new file mode 100644 index 0000000..4942e33 Binary files /dev/null and b/Updater/SVN/libapr-1.dll differ diff --git a/Updater/SVN/libapriconv-1.dll b/Updater/SVN/libapriconv-1.dll new file mode 100644 index 0000000..b14001b Binary files /dev/null and b/Updater/SVN/libapriconv-1.dll differ diff --git a/Updater/SVN/libaprutil-1.dll b/Updater/SVN/libaprutil-1.dll new file mode 100644 index 0000000..e50dbb4 Binary files /dev/null and b/Updater/SVN/libaprutil-1.dll differ diff --git a/Updater/SVN/libdb44.dll b/Updater/SVN/libdb44.dll new file mode 100644 index 0000000..347a942 Binary files /dev/null and b/Updater/SVN/libdb44.dll differ diff --git a/Updater/SVN/libeay32.dll b/Updater/SVN/libeay32.dll new file mode 100644 index 0000000..8cdeaed Binary files /dev/null and b/Updater/SVN/libeay32.dll differ diff --git a/Updater/SVN/libsasl.dll b/Updater/SVN/libsasl.dll new file mode 100644 index 0000000..770c06e Binary files /dev/null and b/Updater/SVN/libsasl.dll differ diff --git a/Updater/SVN/libsvn_client-1.dll b/Updater/SVN/libsvn_client-1.dll new file mode 100644 index 0000000..0dc8be9 Binary files /dev/null and b/Updater/SVN/libsvn_client-1.dll differ diff --git a/Updater/SVN/libsvn_delta-1.dll b/Updater/SVN/libsvn_delta-1.dll new file mode 100644 index 0000000..69e6eac Binary files /dev/null and b/Updater/SVN/libsvn_delta-1.dll differ diff --git a/Updater/SVN/libsvn_diff-1.dll b/Updater/SVN/libsvn_diff-1.dll new file mode 100644 index 0000000..97132ae Binary files /dev/null and b/Updater/SVN/libsvn_diff-1.dll differ diff --git a/Updater/SVN/libsvn_fs-1.dll b/Updater/SVN/libsvn_fs-1.dll new file mode 100644 index 0000000..1b3b2a8 Binary files /dev/null and b/Updater/SVN/libsvn_fs-1.dll differ diff --git a/Updater/SVN/libsvn_ra-1.dll b/Updater/SVN/libsvn_ra-1.dll new file mode 100644 index 0000000..a5484ec Binary files /dev/null and b/Updater/SVN/libsvn_ra-1.dll differ diff --git a/Updater/SVN/libsvn_repos-1.dll b/Updater/SVN/libsvn_repos-1.dll new file mode 100644 index 0000000..c4bd5a7 Binary files /dev/null and b/Updater/SVN/libsvn_repos-1.dll differ diff --git a/Updater/SVN/libsvn_subr-1.dll b/Updater/SVN/libsvn_subr-1.dll new file mode 100644 index 0000000..1d1544f Binary files /dev/null and b/Updater/SVN/libsvn_subr-1.dll differ diff --git a/Updater/SVN/libsvn_wc-1.dll b/Updater/SVN/libsvn_wc-1.dll new file mode 100644 index 0000000..e25391a Binary files /dev/null and b/Updater/SVN/libsvn_wc-1.dll differ diff --git a/Updater/SVN/openssl.exe b/Updater/SVN/openssl.exe new file mode 100644 index 0000000..61f5e53 Binary files /dev/null and b/Updater/SVN/openssl.exe differ diff --git a/Updater/SVN/pluginviewer.exe b/Updater/SVN/pluginviewer.exe new file mode 100644 index 0000000..56f69a1 Binary files /dev/null and b/Updater/SVN/pluginviewer.exe differ diff --git a/Updater/SVN/saslANONYMOUS.dll b/Updater/SVN/saslANONYMOUS.dll new file mode 100644 index 0000000..db01077 Binary files /dev/null and b/Updater/SVN/saslANONYMOUS.dll differ diff --git a/Updater/SVN/saslCRAMMD5.dll b/Updater/SVN/saslCRAMMD5.dll new file mode 100644 index 0000000..86af07b Binary files /dev/null and b/Updater/SVN/saslCRAMMD5.dll differ diff --git a/Updater/SVN/saslDIGESTMD5.dll b/Updater/SVN/saslDIGESTMD5.dll new file mode 100644 index 0000000..fc97449 Binary files /dev/null and b/Updater/SVN/saslDIGESTMD5.dll differ diff --git a/Updater/SVN/saslLOGIN.dll b/Updater/SVN/saslLOGIN.dll new file mode 100644 index 0000000..48e0862 Binary files /dev/null and b/Updater/SVN/saslLOGIN.dll differ diff --git a/Updater/SVN/saslNTLM.dll b/Updater/SVN/saslNTLM.dll new file mode 100644 index 0000000..1c6bd0d Binary files /dev/null and b/Updater/SVN/saslNTLM.dll differ diff --git a/Updater/SVN/saslPLAIN.dll b/Updater/SVN/saslPLAIN.dll new file mode 100644 index 0000000..acf7c2c Binary files /dev/null and b/Updater/SVN/saslPLAIN.dll differ diff --git a/Updater/SVN/saslSASLDB.dll b/Updater/SVN/saslSASLDB.dll new file mode 100644 index 0000000..69b5ac4 Binary files /dev/null and b/Updater/SVN/saslSASLDB.dll differ diff --git a/Updater/SVN/sasldblistusers2.exe b/Updater/SVN/sasldblistusers2.exe new file mode 100644 index 0000000..f997c6c Binary files /dev/null and b/Updater/SVN/sasldblistusers2.exe differ diff --git a/Updater/SVN/saslpasswd2.exe b/Updater/SVN/saslpasswd2.exe new file mode 100644 index 0000000..544e037 Binary files /dev/null and b/Updater/SVN/saslpasswd2.exe differ diff --git a/Updater/SVN/ssleay32.dll b/Updater/SVN/ssleay32.dll new file mode 100644 index 0000000..ee1b39f Binary files /dev/null and b/Updater/SVN/ssleay32.dll differ diff --git a/Updater/SVN/svn-populate-node-origins-index.exe b/Updater/SVN/svn-populate-node-origins-index.exe new file mode 100644 index 0000000..18a846f Binary files /dev/null and b/Updater/SVN/svn-populate-node-origins-index.exe differ diff --git a/Updater/SVN/svn-push.exe b/Updater/SVN/svn-push.exe new file mode 100644 index 0000000..2ce8b87 Binary files /dev/null and b/Updater/SVN/svn-push.exe differ diff --git a/Updater/SVN/svn.exe b/Updater/SVN/svn.exe new file mode 100644 index 0000000..3ea00ea Binary files /dev/null and b/Updater/SVN/svn.exe differ diff --git a/Updater/SVN/svnadmin.exe b/Updater/SVN/svnadmin.exe new file mode 100644 index 0000000..647ccd8 Binary files /dev/null and b/Updater/SVN/svnadmin.exe differ diff --git a/Updater/SVN/svnauthz-validate.exe b/Updater/SVN/svnauthz-validate.exe new file mode 100644 index 0000000..2c75e15 Binary files /dev/null and b/Updater/SVN/svnauthz-validate.exe differ diff --git a/Updater/SVN/svndumpfilter.exe b/Updater/SVN/svndumpfilter.exe new file mode 100644 index 0000000..e309a27 Binary files /dev/null and b/Updater/SVN/svndumpfilter.exe differ diff --git a/Updater/SVN/svnlook.exe b/Updater/SVN/svnlook.exe new file mode 100644 index 0000000..d8c5d7f Binary files /dev/null and b/Updater/SVN/svnlook.exe differ diff --git a/Updater/SVN/svnmucc.exe b/Updater/SVN/svnmucc.exe new file mode 100644 index 0000000..f144b3d Binary files /dev/null and b/Updater/SVN/svnmucc.exe differ diff --git a/Updater/SVN/svnserve.exe b/Updater/SVN/svnserve.exe new file mode 100644 index 0000000..bf75d49 Binary files /dev/null and b/Updater/SVN/svnserve.exe differ diff --git a/Updater/SVN/svnsync.exe b/Updater/SVN/svnsync.exe new file mode 100644 index 0000000..b28b0bc Binary files /dev/null and b/Updater/SVN/svnsync.exe differ diff --git a/Updater/SVN/svnversion.exe b/Updater/SVN/svnversion.exe new file mode 100644 index 0000000..03ec595 Binary files /dev/null and b/Updater/SVN/svnversion.exe differ diff --git a/Updater/UpdateDialog.Designer.cs b/Updater/UpdateDialog.Designer.cs new file mode 100644 index 0000000..1ee32d3 --- /dev/null +++ b/Updater/UpdateDialog.Designer.cs @@ -0,0 +1,89 @@ +namespace Updater +{ + partial class UpdateDialog + { + /// + /// 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.textBox1 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + 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.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(93, 33); + this.label1.TabIndex = 0; + this.label1.Text = "label1"; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(19, 67); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(598, 145); + this.textBox1.TabIndex = 1; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(19, 48); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(35, 13); + this.label2.TabIndex = 2; + this.label2.Text = "label2"; + // + // UpdateDialog + // + 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(641, 224); + this.Controls.Add(this.label2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.MaximizeBox = false; + this.Name = "UpdateDialog"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "UpdateDialog"; + this.Load += new System.EventHandler(this.UpdateDialog_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label2; + } +} + diff --git a/Updater/UpdateDialog.cs b/Updater/UpdateDialog.cs new file mode 100644 index 0000000..6f20cc9 --- /dev/null +++ b/Updater/UpdateDialog.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Updater +{ + public partial class UpdateDialog : Form + { + public UpdateDialog(string[] args) + { //2014.12.13. + InitializeComponent(); + if (args.Length < 2) + Environment.Exit(-1); + //this.Text = Language.Translate("updater"); + this.Text = args[0]; + label1.Text = this.Text; + label2.Text = args[1]; + + //MessageBox.Show(Directory.GetCurrentDirectory()); + Thread t = new Thread(new ThreadStart(UpdateThread)); + t.Start(); + } + + private void UpdateThread() + { + var info = new ProcessStartInfo("SVN\\svn.exe", "export http://msger-tk.googlecode.com/svn/trunk/MSGer.tk/bin/Release/ \"" + Directory.GetCurrentDirectory() + "\" --force"); + info.CreateNoWindow = true; + info.UseShellExecute = false; + info.RedirectStandardError = true; + info.RedirectStandardOutput = true; + var p = Process.Start(info); + this.Invoke(new Action(() => textBox1.AppendText("Using PortableSVN which uses Subversion." + Environment.NewLine + + "http://sourceforge.net/projects/svnportable/" + Environment.NewLine + Environment.NewLine))); + while (!p.StandardOutput.EndOfStream || !p.StandardError.EndOfStream) + { + string s; + if (!p.StandardOutput.EndOfStream) + s = p.StandardOutput.ReadLine(); + else + s = p.StandardError.ReadLine(); + this.Invoke(new Action(() => textBox1.AppendText(s + "\n"))); + } + if (p.ExitCode == 0) //Ha minden rendben, csak akkor folytatja + { + Process.Start("MSGer.tk.exe"); + Environment.Exit(0); + } + } + + private void UpdateDialog_Load(object sender, EventArgs e) + { + this.Select(); + } + } +} diff --git a/Updater/UpdateDialog.resx b/Updater/UpdateDialog.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Updater/UpdateDialog.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/Updater/Updater.csproj b/Updater/Updater.csproj new file mode 100644 index 0000000..15f9de6 --- /dev/null +++ b/Updater/Updater.csproj @@ -0,0 +1,251 @@ + + + + + Debug + AnyCPU + {FCEAE638-329B-4392-8A9E-FEABEACBA077} + WinExe + Properties + Updater + Updater + 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 + ..\MSGer.tk\bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + ..\MSGer.tk\bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + Form + + + UpdateDialog.cs + + + + + UpdateDialog.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + PreserveNewest + + + PreserveNewest + + + + + + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + + 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 + + + + + \ No newline at end of file diff --git a/Updater/Updater.csproj.user b/Updater/Updater.csproj.user new file mode 100644 index 0000000..eb6fa0c --- /dev/null +++ b/Updater/Updater.csproj.user @@ -0,0 +1,16 @@ + + + + "Updating..." "Info" + + + publish\ + + + + + + en-US + false + + \ No newline at end of file diff --git a/Updater/bin/Debug/SVN/SVN Cheat Sheet.htm b/Updater/bin/Debug/SVN/SVN Cheat Sheet.htm new file mode 100644 index 0000000..2134755 --- /dev/null +++ b/Updater/bin/Debug/SVN/SVN Cheat Sheet.htm @@ -0,0 +1,101 @@ + + + + + +SVN Cheat Sheet + + + + + + + + +
+
+Todo..
+
+
+ +
+
+Cheat Sheet
+
+
+ + + + diff --git a/Updater/bin/Debug/SVN/SVN Readme.htm b/Updater/bin/Debug/SVN/SVN Readme.htm new file mode 100644 index 0000000..d45f699 --- /dev/null +++ b/Updater/bin/Debug/SVN/SVN Readme.htm @@ -0,0 +1,105 @@ + + + + + +SVN Readme + + + + + + + + +
+
+Windows binaries from http://alagazam.net/
+Subversion build 1.6.15 : Zip file (see website for latest versions)
+
+Also available on authors sourceforge site.
+http://sourceforge.net/projects/win32svn/files/
+
+
+ +
+
+Subversion Portable Readme
+
+
+ + + + diff --git a/Updater/bin/Debug/SVN/SVN Reference.htm b/Updater/bin/Debug/SVN/SVN Reference.htm new file mode 100644 index 0000000..862f04e --- /dev/null +++ b/Updater/bin/Debug/SVN/SVN Reference.htm @@ -0,0 +1,106 @@ + + + + + +SVN reference + + + + + + + + +
+
+Version Control with Subversion
+http://svnbook.red-bean.com/en/1.5/index.html
+
+Article - Dump a SVN repository from a URL
+http://pogopixels.com/blog/dumping-a-svn-repository-from-a-remote-url/
+
+
+
+ +
+
+Subversion References
+
+
+ + + + diff --git a/Updater/bin/Debug/SVN/intl3_svn.dll b/Updater/bin/Debug/SVN/intl3_svn.dll new file mode 100644 index 0000000..850645a Binary files /dev/null and b/Updater/bin/Debug/SVN/intl3_svn.dll differ diff --git a/Updater/bin/Debug/SVN/libapr-1.dll b/Updater/bin/Debug/SVN/libapr-1.dll new file mode 100644 index 0000000..4942e33 Binary files /dev/null and b/Updater/bin/Debug/SVN/libapr-1.dll differ diff --git a/Updater/bin/Debug/SVN/libapriconv-1.dll b/Updater/bin/Debug/SVN/libapriconv-1.dll new file mode 100644 index 0000000..b14001b Binary files /dev/null and b/Updater/bin/Debug/SVN/libapriconv-1.dll differ diff --git a/Updater/bin/Debug/SVN/libaprutil-1.dll b/Updater/bin/Debug/SVN/libaprutil-1.dll new file mode 100644 index 0000000..e50dbb4 Binary files /dev/null and b/Updater/bin/Debug/SVN/libaprutil-1.dll differ diff --git a/Updater/bin/Debug/SVN/libdb44.dll b/Updater/bin/Debug/SVN/libdb44.dll new file mode 100644 index 0000000..347a942 Binary files /dev/null and b/Updater/bin/Debug/SVN/libdb44.dll differ diff --git a/Updater/bin/Debug/SVN/libeay32.dll b/Updater/bin/Debug/SVN/libeay32.dll new file mode 100644 index 0000000..8cdeaed Binary files /dev/null and b/Updater/bin/Debug/SVN/libeay32.dll differ diff --git a/Updater/bin/Debug/SVN/libsasl.dll b/Updater/bin/Debug/SVN/libsasl.dll new file mode 100644 index 0000000..770c06e Binary files /dev/null and b/Updater/bin/Debug/SVN/libsasl.dll differ diff --git a/Updater/bin/Debug/SVN/libsvn_client-1.dll b/Updater/bin/Debug/SVN/libsvn_client-1.dll new file mode 100644 index 0000000..0dc8be9 Binary files /dev/null and b/Updater/bin/Debug/SVN/libsvn_client-1.dll differ diff --git a/Updater/bin/Debug/SVN/libsvn_delta-1.dll b/Updater/bin/Debug/SVN/libsvn_delta-1.dll new file mode 100644 index 0000000..69e6eac Binary files /dev/null and b/Updater/bin/Debug/SVN/libsvn_delta-1.dll differ diff --git a/Updater/bin/Debug/SVN/libsvn_diff-1.dll b/Updater/bin/Debug/SVN/libsvn_diff-1.dll new file mode 100644 index 0000000..97132ae Binary files /dev/null and b/Updater/bin/Debug/SVN/libsvn_diff-1.dll differ diff --git a/Updater/bin/Debug/SVN/libsvn_fs-1.dll b/Updater/bin/Debug/SVN/libsvn_fs-1.dll new file mode 100644 index 0000000..1b3b2a8 Binary files /dev/null and b/Updater/bin/Debug/SVN/libsvn_fs-1.dll differ diff --git a/Updater/bin/Debug/SVN/libsvn_ra-1.dll b/Updater/bin/Debug/SVN/libsvn_ra-1.dll new file mode 100644 index 0000000..a5484ec Binary files /dev/null and b/Updater/bin/Debug/SVN/libsvn_ra-1.dll differ diff --git a/Updater/bin/Debug/SVN/libsvn_repos-1.dll b/Updater/bin/Debug/SVN/libsvn_repos-1.dll new file mode 100644 index 0000000..c4bd5a7 Binary files /dev/null and b/Updater/bin/Debug/SVN/libsvn_repos-1.dll differ diff --git a/Updater/bin/Debug/SVN/libsvn_subr-1.dll b/Updater/bin/Debug/SVN/libsvn_subr-1.dll new file mode 100644 index 0000000..1d1544f Binary files /dev/null and b/Updater/bin/Debug/SVN/libsvn_subr-1.dll differ diff --git a/Updater/bin/Debug/SVN/libsvn_wc-1.dll b/Updater/bin/Debug/SVN/libsvn_wc-1.dll new file mode 100644 index 0000000..e25391a Binary files /dev/null and b/Updater/bin/Debug/SVN/libsvn_wc-1.dll differ diff --git a/Updater/bin/Debug/SVN/openssl.exe b/Updater/bin/Debug/SVN/openssl.exe new file mode 100644 index 0000000..61f5e53 Binary files /dev/null and b/Updater/bin/Debug/SVN/openssl.exe differ diff --git a/Updater/bin/Debug/SVN/pluginviewer.exe b/Updater/bin/Debug/SVN/pluginviewer.exe new file mode 100644 index 0000000..56f69a1 Binary files /dev/null and b/Updater/bin/Debug/SVN/pluginviewer.exe differ diff --git a/Updater/bin/Debug/SVN/saslANONYMOUS.dll b/Updater/bin/Debug/SVN/saslANONYMOUS.dll new file mode 100644 index 0000000..db01077 Binary files /dev/null and b/Updater/bin/Debug/SVN/saslANONYMOUS.dll differ diff --git a/Updater/bin/Debug/SVN/saslCRAMMD5.dll b/Updater/bin/Debug/SVN/saslCRAMMD5.dll new file mode 100644 index 0000000..86af07b Binary files /dev/null and b/Updater/bin/Debug/SVN/saslCRAMMD5.dll differ diff --git a/Updater/bin/Debug/SVN/saslDIGESTMD5.dll b/Updater/bin/Debug/SVN/saslDIGESTMD5.dll new file mode 100644 index 0000000..fc97449 Binary files /dev/null and b/Updater/bin/Debug/SVN/saslDIGESTMD5.dll differ diff --git a/Updater/bin/Debug/SVN/saslLOGIN.dll b/Updater/bin/Debug/SVN/saslLOGIN.dll new file mode 100644 index 0000000..48e0862 Binary files /dev/null and b/Updater/bin/Debug/SVN/saslLOGIN.dll differ diff --git a/Updater/bin/Debug/SVN/saslNTLM.dll b/Updater/bin/Debug/SVN/saslNTLM.dll new file mode 100644 index 0000000..1c6bd0d Binary files /dev/null and b/Updater/bin/Debug/SVN/saslNTLM.dll differ diff --git a/Updater/bin/Debug/SVN/saslPLAIN.dll b/Updater/bin/Debug/SVN/saslPLAIN.dll new file mode 100644 index 0000000..acf7c2c Binary files /dev/null and b/Updater/bin/Debug/SVN/saslPLAIN.dll differ diff --git a/Updater/bin/Debug/SVN/saslSASLDB.dll b/Updater/bin/Debug/SVN/saslSASLDB.dll new file mode 100644 index 0000000..69b5ac4 Binary files /dev/null and b/Updater/bin/Debug/SVN/saslSASLDB.dll differ diff --git a/Updater/bin/Debug/SVN/sasldblistusers2.exe b/Updater/bin/Debug/SVN/sasldblistusers2.exe new file mode 100644 index 0000000..f997c6c Binary files /dev/null and b/Updater/bin/Debug/SVN/sasldblistusers2.exe differ diff --git a/Updater/bin/Debug/SVN/saslpasswd2.exe b/Updater/bin/Debug/SVN/saslpasswd2.exe new file mode 100644 index 0000000..544e037 Binary files /dev/null and b/Updater/bin/Debug/SVN/saslpasswd2.exe differ diff --git a/Updater/bin/Debug/SVN/ssleay32.dll b/Updater/bin/Debug/SVN/ssleay32.dll new file mode 100644 index 0000000..ee1b39f Binary files /dev/null and b/Updater/bin/Debug/SVN/ssleay32.dll differ diff --git a/Updater/bin/Debug/SVN/svn-populate-node-origins-index.exe b/Updater/bin/Debug/SVN/svn-populate-node-origins-index.exe new file mode 100644 index 0000000..18a846f Binary files /dev/null and b/Updater/bin/Debug/SVN/svn-populate-node-origins-index.exe differ diff --git a/Updater/bin/Debug/SVN/svn-push.exe b/Updater/bin/Debug/SVN/svn-push.exe new file mode 100644 index 0000000..2ce8b87 Binary files /dev/null and b/Updater/bin/Debug/SVN/svn-push.exe differ diff --git a/Updater/bin/Debug/SVN/svn.exe b/Updater/bin/Debug/SVN/svn.exe new file mode 100644 index 0000000..3ea00ea Binary files /dev/null and b/Updater/bin/Debug/SVN/svn.exe differ diff --git a/Updater/bin/Debug/SVN/svnadmin.exe b/Updater/bin/Debug/SVN/svnadmin.exe new file mode 100644 index 0000000..647ccd8 Binary files /dev/null and b/Updater/bin/Debug/SVN/svnadmin.exe differ diff --git a/Updater/bin/Debug/SVN/svnauthz-validate.exe b/Updater/bin/Debug/SVN/svnauthz-validate.exe new file mode 100644 index 0000000..2c75e15 Binary files /dev/null and b/Updater/bin/Debug/SVN/svnauthz-validate.exe differ diff --git a/Updater/bin/Debug/SVN/svndumpfilter.exe b/Updater/bin/Debug/SVN/svndumpfilter.exe new file mode 100644 index 0000000..e309a27 Binary files /dev/null and b/Updater/bin/Debug/SVN/svndumpfilter.exe differ diff --git a/Updater/bin/Debug/SVN/svnlook.exe b/Updater/bin/Debug/SVN/svnlook.exe new file mode 100644 index 0000000..d8c5d7f Binary files /dev/null and b/Updater/bin/Debug/SVN/svnlook.exe differ diff --git a/Updater/bin/Debug/SVN/svnmucc.exe b/Updater/bin/Debug/SVN/svnmucc.exe new file mode 100644 index 0000000..f144b3d Binary files /dev/null and b/Updater/bin/Debug/SVN/svnmucc.exe differ diff --git a/Updater/bin/Debug/SVN/svnserve.exe b/Updater/bin/Debug/SVN/svnserve.exe new file mode 100644 index 0000000..bf75d49 Binary files /dev/null and b/Updater/bin/Debug/SVN/svnserve.exe differ diff --git a/Updater/bin/Debug/SVN/svnsync.exe b/Updater/bin/Debug/SVN/svnsync.exe new file mode 100644 index 0000000..b28b0bc Binary files /dev/null and b/Updater/bin/Debug/SVN/svnsync.exe differ diff --git a/Updater/bin/Debug/SVN/svnversion.exe b/Updater/bin/Debug/SVN/svnversion.exe new file mode 100644 index 0000000..03ec595 Binary files /dev/null and b/Updater/bin/Debug/SVN/svnversion.exe differ diff --git a/Updater/bin/Debug/Updater.exe b/Updater/bin/Debug/Updater.exe new file mode 100644 index 0000000..bd12f71 Binary files /dev/null and b/Updater/bin/Debug/Updater.exe differ diff --git a/Updater/bin/Debug/Updater.exe.config b/Updater/bin/Debug/Updater.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/Updater/bin/Debug/Updater.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Updater/bin/Debug/Updater.pdb b/Updater/bin/Debug/Updater.pdb new file mode 100644 index 0000000..75ff39d Binary files /dev/null and b/Updater/bin/Debug/Updater.pdb differ diff --git a/Updater/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/Updater/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..aa98766 Binary files /dev/null and b/Updater/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/Updater/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Updater/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..8520c07 Binary files /dev/null and b/Updater/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Updater/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Updater/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/Updater/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Updater/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/Updater/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Updater/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/Updater/obj/Debug/Updater.Properties.Resources.resources b/Updater/obj/Debug/Updater.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Updater/obj/Debug/Updater.Properties.Resources.resources differ diff --git a/Updater/obj/Debug/Updater.UpdateDialog.resources b/Updater/obj/Debug/Updater.UpdateDialog.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Updater/obj/Debug/Updater.UpdateDialog.resources differ diff --git a/Updater/obj/Debug/Updater.csproj.FileListAbsolute.txt b/Updater/obj/Debug/Updater.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..0dd1cd0 --- /dev/null +++ b/Updater/obj/Debug/Updater.csproj.FileListAbsolute.txt @@ -0,0 +1,98 @@ +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\intl3_svn.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libapr-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libapriconv-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libaprutil-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libdb44.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libeay32.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libsasl.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libsvn_client-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libsvn_delta-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libsvn_diff-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libsvn_fs-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libsvn_ra-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libsvn_repos-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libsvn_subr-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\libsvn_wc-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\openssl.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\pluginviewer.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\saslANONYMOUS.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\saslCRAMMD5.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\sasldblistusers2.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\saslDIGESTMD5.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\saslLOGIN.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\saslNTLM.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\saslpasswd2.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\saslPLAIN.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\saslSASLDB.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\ssleay32.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\SVN Cheat Sheet.htm +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\SVN Readme.htm +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\SVN Reference.htm +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\svn-populate-node-origins-index.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\svn-push.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\svn.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\svnadmin.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\svnauthz-validate.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\svndumpfilter.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\svnlook.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\svnmucc.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\svnserve.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\svnsync.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\svnversion.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\mod_authz_svn.so +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\SVN\mod_dav_svn.so +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\Updater.exe.config +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\Updater.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\bin\Debug\Updater.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\obj\Debug\Updater.UpdateDialog.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\obj\Debug\Updater.Properties.Resources.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\obj\Debug\Updater.csproj.GenerateResource.Cache +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\obj\Debug\Updater.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\obj\Debug\Updater.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\intl3_svn.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libapr-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libapriconv-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libaprutil-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libdb44.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libeay32.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libsasl.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libsvn_client-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libsvn_delta-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libsvn_diff-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libsvn_fs-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libsvn_ra-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libsvn_repos-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libsvn_subr-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\libsvn_wc-1.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\openssl.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\pluginviewer.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\saslANONYMOUS.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\saslCRAMMD5.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\sasldblistusers2.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\saslDIGESTMD5.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\saslLOGIN.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\saslNTLM.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\saslpasswd2.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\saslPLAIN.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\saslSASLDB.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\ssleay32.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\SVN Cheat Sheet.htm +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\SVN Readme.htm +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\SVN Reference.htm +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\svn-populate-node-origins-index.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\svn-push.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\svn.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\svnadmin.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\svnauthz-validate.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\svndumpfilter.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\svnlook.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\svnmucc.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\svnserve.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\svnsync.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\svnversion.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\mod_authz_svn.so +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\SVN\mod_dav_svn.so +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\Updater.exe.config +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\Updater.exe +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\Updater.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\Updater\obj\Debug\Updater.csprojResolveAssemblyReference.cache diff --git a/Updater/obj/Debug/Updater.csproj.GenerateResource.Cache b/Updater/obj/Debug/Updater.csproj.GenerateResource.Cache new file mode 100644 index 0000000..085641f Binary files /dev/null and b/Updater/obj/Debug/Updater.csproj.GenerateResource.Cache differ diff --git a/Updater/obj/Debug/Updater.csprojResolveAssemblyReference.cache b/Updater/obj/Debug/Updater.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..f0ed9bd Binary files /dev/null and b/Updater/obj/Debug/Updater.csprojResolveAssemblyReference.cache differ diff --git a/Updater/obj/Debug/Updater.exe b/Updater/obj/Debug/Updater.exe new file mode 100644 index 0000000..cbf5225 Binary files /dev/null and b/Updater/obj/Debug/Updater.exe differ diff --git a/Updater/obj/Debug/Updater.pdb b/Updater/obj/Debug/Updater.pdb new file mode 100644 index 0000000..34f5b8e Binary files /dev/null and b/Updater/obj/Debug/Updater.pdb differ diff --git a/Versions/Less Closed Beta/v4.0/Changelog.txt b/Versions/Less Closed Beta/v4.0/Changelog.txt new file mode 100644 index 0000000..f0b1144 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/Changelog.txt @@ -0,0 +1,49 @@ +v4.0 (Design Update) - 2014.10.28., 10.31., 11.07-08., 11.15., 11.21-23., 11.29-30., 12.05., 12.12-14., 12.18-22., 12.24., 12.30-31., 2015.01.07-08., 01.12., 01.31., 02.05., 02.26., 03.15., 03.26. +---- +jdonsgok: +- ChatPanel-ek, belltstl fggen az sszes chatablak lehet a f ablakban +-- Ehhez tbbek kzt FlowLayoutPanel-ek hasznlata +-- Bal klikk tvlt arra az ablakra, kzps klikk bezrja +- Kzrs opci elksztve +- llapotsv +- Ismersk keresse szvegdoboz mkdkpess tve +-- Hangulatjeleket is felismeri annak ellenre, hogy kp formjban ltszanak, mivel a nevknl az eredeti szveggel trolja el +- Automatikus frissts (a Subversion integrlva a programba) +- Jobb klikk men a ChatIcon-oknak +- j rendszer, amiben az ablakok kerett lehet szerkeszteni ankl, hogy platformfgg hvsokra lenne szksg (ThemedForms) +-- Az ablak thelyezhet, tmretezhet, bezrhat, kis mret, stb. gombok is mkdnek +- Nyelvvlts megoldva jraindts nlkl +- Tmakezel rendszer + +Hibajavtsok: +- A Hangulatjelek megjelentse opci most mr rendesen alkalmazkodik az tmretezshez +- Most mr az egsz keressv kattinthat s a megfelel kurzor ltszdik +- A ChatPartners lista UserInfo-bl ll int helyett (UserInfo.Select() helyett x.UserID - Kevesebb ciklus) +- Most mr kihagyja a PicUpdateTime-ot a UserInfo.GetImage() +- A Storage.Settings["ips"] eltvoltva minden kdbl - Felesleges eltrolni, amikor minden alkalommal vltozhat +- Most mr lehet hivatkozni a MainForm pldnyra akkor is, ha mg nem vgzett a ltrehozsval +- Language.GetCuurentLanguage javtva Language.GetCurrentLanguage-re +- A ChatPanel-ekben automatikusan az zenetkld szvegdobozra helyezi a fkuszt +- A SettingsForm-ban a Mgse gomb alkalmazkodik az tmretezshez + +Fejlesztsek: +- Hlzati rendszer feljesztve +-- rzkeli, ha ugyanazon hlzatrl tbben csatlakoznak (kzs publikus IP), ekkor csak egy felhasznl kapja meg az internetrl az adatokat, a tbbieknek kldi el +-- Hole punching +-- Titkosts akkor is mkdik, ha kevs adatrl van sz +-- A Main Thread ltal vgzett adatklds lnyegt is egy msik thread vgzi, hogy ne akadjon meg a program mkdse +- Szerver md bellthat a belltsokban +- Storage.Settings["chatwindow"] --> Storage.LoggedInSettings["chatwindow"] - Felhasznltl fgg bellts, nem gptl +- A beszlgetablakoknak jelzi a cmben, kivel beszlnk, vagy a beszlgets nevt +- A hossz forrsfjlok sztosztva + +v4.1 Tervek: +---- +- Kzrs elkldse +- Tmavlaszts, tmakezels (A v5.0-ban pedig majd csak a ments/betlts...) +- GlacialList-eket lecserlni a sajt RichListView-emre +- Hlzati rendszer javtsa/fejlesztse (IPv6) + +v5.0 Tervek: +---- +- MCT (CAB) fjlkezels (?) diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/AboutBox1.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/AboutBox1.Designer.cs new file mode 100644 index 0000000..f3a0e83 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/AboutBox1.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/AboutBox1.cs new file mode 100644 index 0000000..d217f47 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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 : ThemedForms + { + 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/v4.0/MSGer.tk/AboutBox1.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/AboutBox1.resx new file mode 100644 index 0000000..e3289f3 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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 + + + + + iVBORw0KGgoAAAANSUhEUgAAAHgAAAEGCAIAAAAhWcaAAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAb5JJREFUeF7tvQdY + VHfa/s91/d/fu282sUUFpp2ZoUvvvYuCgl0UUbChqIiiiCiCSpUq0qU3aYqFpmJvYC8xGqOJJYkxpmd3 + s+u+u8m+//t7vjPHwwwYk01RN9/ruXCknvOZ+9zP/ZyZOaMhLBOKykWiCpG4SiyplTD1DNPISFuk8t1y + +T65TpeOTreO7hFd3eO6eif19E6xhRvH9PSO6Ol26+ru19Vt19Xdp6uzW0dnp45Os45Oo45OvY5OnY4s + Q8bMYUSWopSUlMuXL3/77bd/+9vf/v73v//v//7vP/7xj3/+85/ffffd999//y92/d+rvljQZSJxuVhS + IZFUSpgqRlojldZKZTtk8ia5vEUub5Xr7NXR7dTVPaALsuBLKKOOsqwPsZ/HV9vUWNfo6FTryNJlzGxG + ZCFKT0+/efPmX/7yl7/+9a9Pnjz5T8OtAcpQNAXNVDIEdJVUVi2T1crkdXJ5vVyngQXXoqPTqgPlEv12 + 6eoe1CWIuVKy1t2jq7OrD2t5lVxeKZemSiUzJUJjYWFh4YcffvgfiJuAfkq5Ukm5WiavkZOqlcMECLId + OoR4k5L4XpY44MI6AB0F1rgDqI20qrGukMvL5dKNUslkiVBH2NDQ8Kc//ek/CrcGKIsrFKBBWVpNQD+l + XKvztDjiIAiOKsRBGYUbnGXjG1RYl8nlpXJmNSP2EUdERBw5coTD/cp7t4a4TCwplzAVrJwrWTnXKED3 + ocwVcKsQhy/vZl0F1gHKtLj2iIMA38mxLpXLt8vlhXJmESOyF23ZsuXOnTt83GCtgluxpS/50hAXi8Wl + hDWhXCVDyavlpAYCzZWKpYD4Lh14tII4Cjdg2bQ9qrAukcuL5bJkmWS6RKgvbGpq+vrrr4GbSyavnrQ1 + xDliyTYJU8QwJYy0TCqrkMkqCWtw6VMqlLnqV+CwFEocxsK1R9wftTzWxXJ5ESvtKEbsKV6/fv2VK1eA + +89//vNAxq3Y5JdzaYjTxeIMsSRDwuQw0jyprEgmK5ERMy0naQH57LmIq+OGQYMvLAWg4SFcFKnry7pQ + Li+QI3FLZpFMUl9f/+WXX37zzTcUN9+4X3Zpa4hTxZI0CbOFYTIYaZYUJdsqk29jEcBMQRxQgKbq+TSu + glspcFJgzbXHap0+rPPlsjwZs4oRe4k3bNhw48aNr776inOSV0PaGuJksSRFwqQxYC1Nl0ozpLJMmSyb + LRDPYw9wHvHn0jgfN7Vv4KZFdY2vwrL5rPPksm0yaZpUEigRGgj37NnzxRdf9OskL6m0NSSJEiaZYVIY + zBTYT9kWGWY5wprDTYnns0TA5fkFro4biqasuSjCYw1R4w/JcmTMMkbkJMrKyvr444/hJDSTvOzSZkEn + MdJkKakUqSxNRorizmBxZylx58jAQsVSfkDgKt5NcdPiWFcqWcOstylYSzdIxf5igVDQ29v7+eefq0v7 + pQskGqDMgZalyBSVysOtLvBcFjfQ/DTcKMoaNyhrHCIqrNk/xMxmhKOELS0tn3766csubQL6qZw50Hzc + AwkcflLwY/xEHTdETVnT2Ie7Db8NjRGscfRQ1rARR9G2bdseP37Ml7Z61lbs0Iu6NMSLxUw8Ya1KmV/P + xt3Xvn9Y3WDNx90v69ynrKXrpOIxJGjfunXrs88+4wLJy2UjGs7OzgIDgchNJJ4uZpYzqoj5xfeTgdT9 + PGbClzY9NYiP6qyVBkJYp0glUyQCieD06dOQNgIJsraKjbzgrDXq6ury8/NjYmKCgoIcHR1FViKJv4QJ + Y2Qb1UDTeoa6qXdjvAYstDh13BxrFdxc0XGmP9YoYtmGwvb29k8++eSlsxGNnTt3tra27mYX0mt2dvaS + JUvGjBkjMhdJxkmYRYwsUY01Sh03RwTJhEbv5zRuzklQuDGwrlFQgMhChAESyQ8dktoITSMvOGuNjo6O + zs7Orq6u/fv34wYWJNPW1gaZL1++nBC3FkkmS5hINVfhnITiBmsOd84PGbcKaw43rWezXk5O+xUXFz98 + +BA2QtNIv5at2MUXY2kcOXLk6NGjx9iFG4cPHz506NDBgwcpd0CHxhcsWCCUCcUeYiZUzVKeYdzUSSBt + 9rTJD0ubj5tmPsoaQ6OyMdLCsC5yEeXk5Hz44YfPtmzFXr4AS+Msu86dO4ePmA7OnDlz6tSpEydOgDvu + Aw46wuyGDRsmTpxIBD5dIl2jFro53P+mtClufHwma+laKe741NTUDz74gG/ZL2x71HjrrbeuX7+Oj9eu + Xbt69erly5cvXbp0/vx5cAd0dHlAh9JBvLu7G8Rzc3NDQ0OFJkLJBAkTpfSTZyduvrTVXZvPmo+bz7qI + HdD5rLNk0jip2FucmJj44MGDR48eIfmpt8cXh7XGnTt33lOud99995133rl58ybQg/uVK1cuXrwI6FA6 + iJ88eRIyh7eAeEVFBXomMgCJKCtZ3GD9PK4Nas9pI+qsMchwoFFgHS8V+4g3btx4//59rj2qR5EXgbXG + R8oFv8NhiC2+d+8eoN++fZuDDqVD5hcuXIDMOeLQOLp/ZGQkwR0gka6SPmU9kLRpIHkeG+Fw4wY3o6uw + xq/NlEkTyDiTkJCALaftkYsiLxRrDagABx08DjewlfA7SAPcKfS7d+9ySn/77bc54lTjcBX4+I4dOyIi + IoSmQslUiXS98rSUCmtO2pyN9Bv++KC5Yr+kOPdUyA6N6qx9xJs2bYJEsOVcFHmhWGvA19CysVn4iNvY + REAHeg46lA4TpDKnxDmNo4X29PSgeULgVVVVYWFhIlsRM4d1Ej5rFRuhYyTmmuexbFr4fDWPNRf4WNCE + NTzEW5ycnAxl8Fkj9r0grDVwt3MLCQkGpwKdKp3KnE8croIWCh/nBH78+PGCgoIZM2aIvcTMUuZZrJ9t + 2SqUaVHWOA5wNPTLGr3RQ5yRkQHWXOx7cVhr0I3AQirCbcR+JCRAx/Zx0OF62Ggqc0qcugoaKd9SIHDq + J0lJScS4J0ukG9hHEjjWfS2bPHzznO2RgqZmDdY4GjDIcCGEYx0jFTmL8vLy3n///ReNtQb+MF3YCKx+ + oUPpfOKcxqmPQ+C3bt26ceMGggrFjVyIsX7p0qUiJxE5bTIwazS3Pu2RDxr1DNY0XNNfgmJBo5A4RXai + 8vLyZ7D+TWYZDXr30oUtwOoXujpxuAp2AwGWChw7xvkJhxuhW6grlEySwEN/BtbKTxLW8PdiXghRipqw + XsqIzEXNzc0qrLH9vyFrDcW/ykWJY1HiFLoKcc5V4ONU4GibiFZwcPiJCu6uri5EQLEL69o/F2uYNVjT + cM2FEI51hoxZwAgNhAcOHOBYq+eQX5m1Kmj+4ohT6HzicBW+wLEb1MFVcFMzQfrOzs4WjhIyQYwCtDpr + xL7nYa38DAGtHkIoaMo6iBFIBLinXxDWzwLNrX6Jqwic7yd83PButEpMmC0tLZjdxePEJGtzoH8sa95n + CGt8J0JIgbIx8kSNPyGZKImKikK7xpbQzIctpHMjNh67gH351Vg/F2huccT7FTj1E+wMp27q3WiVSCaX + L19GCoyNjUUwYCJYaauz5jxEJYdwiu6XNUII1xg51ukyaaJUPFqckpKizhr6+JVZ/zjQdHG4sYCbEzgf + NzUTeDdtlTQIUuPOyckRmguZuQwBPRBr+C9A82f0/kArzFqlMdJfyIpaukYqsichBHc2JgDc9+go9NwT + ZY2NB2u6R4rd+2XWTwHNLQ4330843NS7sWNIJgiC2E/qJJhx6urqSBoJlDwFzWedJ1Pk6+cQtYI136x5 + okYx4YzQSNjR0YG/jrscqRQKAGs0GGwqthlbjl14oUHTxaqhj59Q3NS7aTLBMYs9hHEjdFNpd3Z2zps3 + TzJBggP8KWsKmptl2BldAZQPui9rArpfs2ZFTVijMQoE8C7KGnc8egl0gC381Vj/DKDpUsfNtUrOuOEk + CACQ9u3btyFtBO0VK1aIx4rJAElBc6KmMzrMl2uMKqBR6qz5Zk1/IQsasRJNOD4+Hq0CJob7G1uiEq5/ + abP+2UDTRVljUdYUN99JVKSN/Ld+/Xqxl1gaq8Z6q/I8H/fsYRXQKI61erLuK2r8fpGDqKysDHcw/jSs + DFvCBb5foTH+zKDpUpE25yTYKzgJDltO2jiWobLExESxq5iJZhSsKWiONfx3IFGjlKwJaC5ZUwOhv00p + amYxI9QXHjp0CAGfC9f8EIKtxTa/TKCxsLkquKmToAVB2tS1af7DsYw9T09PJ7FvNcuaEzUKIYRv1tyj + AWqgFaypgeTzDISKmj3fIpkmwZiKXI+DiR9CfoXG+EuBpovDrS5t6to0kFAbwfRITkKBNUCrmDVYV7AG + ArI/yJqmPb6BKEUt3SwVu4uRL9GNuRDCNcZf1Kx/WdB0UdZ8aVPX5tsIBgpEXcIauoaH8EWtYiAUtApu + jjXMWt1AeKJmlpG019bWdv36dfRklcbImfVLCRqLCLuvtKmNYPdoh6RzDVSWmZkpdhNL10mfgkbxpxhg + fSZrhYGgi/ITiFLUsjTyUrAlS5ZgdKKNsV+z/tlF/SuBpouy5qQNG4GIqI3AK3EUgzVUlpqaSnJIPI81 + DIQmaxgIaIIvfe5Hf6AVrGEgSCB0hAFoypoVtXSTFL1369atGJ1gWTiYYNa/9BTzq4LGUmHNtxHsKk1+ + aI8bN24U+4rJk4k51lzaowbCPaepX9acgWCEoT9ODYQFDVGTcVFPePDgQeRL/hTzyxnIrw0aC1tPcfNt + hLNsrj1GR0dLJkqegobhKg2EdEUq6oFZKwyEOwfCdUUWNDGQCZLVq1dfvHiRTjFcsv6FDOQ3AE0XZQ3V + cKxp8qPtEbsNrYWHh0tm8lhD1MpxkdAEYvoEVL6HKEErWMPWVbqiUtRkhLEWVVZWYjSnyRp94pdLe78Z + aCyONfYHrLnkR1M2WJ8+fVqoK2QWMArQVNQwENoVAZd7sm9/rBWihtvQWK0mamY2M3v27HPnziFZI/Nw + ae+XMJDfEjQWnzX2Sp01cpjQQkiedUZZU1FzXRGU6asFnmEgKl2Ripo+FSJZhliNWQkGgrT3ixrIbwwa + 6wdZV1RUiFxFihDCiZrGavClL85QYa0E/bQr8mdFTtSp7FwuI3M50p6Kgfy8I8xvDxoL+4DFscbuqbBO + Tk4W+4sVoNVFzb3iqD/WCgNBV+xX1KkyxJv169fzDQQNmT/CYKv+fQN5IUBjUdYQTr+ssfNLly6FpRJS + 4MU9WZKKmoKmrAcyEDor9ivqSPLSmNbWVpUEQkeYn6srviigsZ7BGjnk5MmTQmMhs4IhoKl7cPEDiJvY + go08W9T0BEhf0LIUmSRAsnLlyp6eHiQQer6JOwcCUXMG8oqAxlJhzfk1zde1tbVkOscUk8u6BzeUQ8j0 + xc/PNhAa9fiipu6RIpOukgpNyJWezp8/T8830XMgXFf890X9YoHG6pc1zddQWUJCgmSahIDGRE4HxUo2 + 5wEx/2XPaqBJV4SoS5Tzi7qoJ0mWLVt25syZZ3fFVwc0FmXN9UawxgRBZ/QbN26QZB3BKECzp6oJR5gG + KLcoWf+gqGmm5oGWRhNR19fXnz179hld8SeL+kUEjcVnjT3kZnRIrLm5GWkPaBSguZYIxDtZ1vS6CRxo + jjUnanWnZl+Jg4kfosaURLsid2KPzor/pqhfUNBY2B/IR4U1kgD2PD4+npnBENCwabgH1xL5117pz0BU + Rc3lPBY0cWojYWNjY29vLz2xpz4r/mRRv7igsTjWkBJ2EruKHUaDQjYAERzsBDSyB9yjmiULxLuUrPtN + IFTU/ExNWyLrHkTU/uRZZKdOnbpw4QJ/VqSiplHvp4n6hQaNxWeNg5eyhsQwLorHiImoAZo79UFBt7Ks + VQxERdT09ClA9xU1s5wR6gj37t2rHvX+TVG/6KCxKGvsnkpjDA8PZ8IZAho2jewBmtQ9drOsuQtl/aCo + eaBR4tHiuLg4xHYa9X4uUb8EoLH4rDmz7uzsFDmJQIqApjYNu2BBP73Y3kCixo/Qsx9cS1S6BxPGjBs3 + 7ujRo4h6P6OoXw7QWNgrrjFSA0HwgvSYEIZYAUDDpmn2oNfvpBeRfIaoi9jz1GotEYX7LzMz8+cV9csE + mm/WdIpB5hVZijArEnCcTdPLL9OLoz5D1Nv7Di880EwQM2vWrJ9X1C8NaCzKWsWsU1NTJTMlT0GzNk1A + sxdHfSpqClrJmoAuV+Y8NfeQriPDS1VVFRW1evz4CZn6ZQKNxbGGpmDW0BcObaGxUJokJaDBkYKmF1tG + wUAGEnUlO7wM0BIl40nOg6gRP7hMzQ2K/LMfii37ofWSgcYCaxUDgZ9KZkgUoNlZHHwJ5Y4fEjXMnd8S + +e4RTp7p293dTTM1Nyjyz378KPd4KUHzDQQJBIc2jnRgIhDp2IJ+CNBdLOuBRM21RIBGS+zrHiiRA7ma + 5LFjx+igSM9+qJzSe373ePlAY/ENhCYQODUzmyEoOdDwaHqR9jalqDnQStZE1GiJ3KmPvqAl0yRz5849 + dOgQPftx48YNekoPEZ6ep/5RLfGlBI2FfeMbyKVLlxA/5FvZt34AaAQPCpq+ywMVdb85Dy2RmxJV3COK + PJzY2tp6/PhxxBv6VJsHDx6gJfIffHlOUb/EoDkDoSMMydSLGKJcChrBA6Dpuzy0s6LGfaAuarRETImc + e/BAo8Qu5IoJhw8fhqjpeeqBcp5iswZeLytoLBVRHzlyROQsIi2RD7qbffcS3IComwZoiaW8QN3XPZgZ + THBw8MGDB0+cOKE+vPyolvhyg+ZETbtiWFgYE8Oogj7M6hpO3TJwS+QCdd+QR06cyoQ7d+5Uz3k/tiW+ + xKCxONa0KzY0NEgCJMQlKGi48yHyVkiEdRf77jADtUTqHmo2jcI4DvdAS0TO41oiffbpj3KPlxs0FvaQ + GghEjf0X6grhtorTHRT0UfKGU0TayNS0JaqDhnvQyYWe9+CBRvYIDQ09cOAAvyVS90BLfP4p8aUHrSJq + qI8JY8jAQq0DoI/p6Z1g39ark22JfPegrKl7cJOLik0vJ5NLR0cHWiJ96LbfKfHVB42FPeREDd2JXcW6 + Ley5Dg70KcKaODVaYr/ugexBJ5d+3cNKlJubiynx5MmT3JTYb6BWbFB/6xUBzRf1rFmzZMmyp6CP6+md + ZguiRs4byD0wudCzpmqgJeMky5cv379/P50Sr169yg/UnHtgG54h6lcBNBZf1Pn5+UwIQ4bv/QrQ+qf1 + DU8bElHvV7oHB5qyhnuUsReL7M+mmblMQEBAZ2cnF6i5E6fP7x7kUj+Kmy/z4osaR7fIQUSCB0YVgD6h + Z3DawPiMMXDjvwO6h0rI49m0NFYqlJNHx/8d93hFQGNhR7CrUBb0hSkDhz8x5cMENORs1mMG1lD3s9yD + C3l9QaNwz6WlpVH3oM+w+bHuofGMO+HlWlTU2FvsM3oXs4Ahcj5COiEQW/ZaWvRYEFFT9+CDZlkrQt5A + Nh0gCQ8Pp+6hnj2eZ3IhoF8ZUWNfqHvAScVuYvLGrQjRLGirXivbs7YmZ0wU7tHveY9ynk33Bc3MJ4/Y + trW18d2j38llQNA/GABfooUd4Vri+PHjESRo5IBvgLLjOUfgJi0R4/hAIY9v0zzQ0hipgBG0tLTQyeXc + uXNvvfXW7du3+ec9nm3TGs+28JdrATQn6ri4ONChndC8x9zhnIPreVewhl+TcVzFplnWqjbNA41Cms7O + zoZ7HDlyBO6h/lAA7t1n2LTGsy38pVucqKE+TM/wDZCFQTudd/K86OlxwQPQ4R7kWR9qoEnIQ5oeoB+K + R4tXrVrV3t5OHwpQP2v6bJsmoF8x94BusFM4rkWWIr0DxKCte60h59GXRvtc8oG0SfbYy9q0CmiIGml6 + a//9kAlkgoKCYNPcWdPr16/3G/L6B805yyvDmnOPqVOn6pfow6DtztpBy+MujQu4HIAbJHsg5A2UpulL + 9dVBhzOenp579+7lQt61a9dUbJo7Pa3YFN7SoM7ySrbE+Ph4vXV61Dcg54lXJk69OtX3ki/Qk5AHm+aD + ZlkTm6b9UC14SNeTftjU1MSFPPrcmue0aXL96Ge3y5duYSexL9hhQJEHyZE34BvgC8oz35o5+cpkuAex + 6YHS9DP6oTl5e7SfZtMaz3lO5OVa2BdIB8GAcWKAFXYx/vL4wGuBIddDwBr/hU2TJ4z9YD/sCxrZHGGG + b9P8WfzZaVqDux/6/fJLurAjkBUOZIFI4LDHwfuiN3xj9vXZC28snPv2XJg1Mh95HED97BLth5gP+wON + +TAsLGzfvn2cTT9/mtZAu+R/+dVgTUFDPaGhoXaFdiA7/dr0+TfmL3tn2ZJ3lky7Oo2EvE62H/JBs6zR + D0nwAGj0w74Jj5nNTJkyZc+ePTRN00cR1U969A+a7+KvUkuk7rF582brOGvIOfh6cPg74avfXY0KfTuU + 2PSBAfoh5kMED5rwVEAvYdzd3Xfv3t3R0cHZtMrDtQP1Qw31E32vjKixO3V1deZzzSHneW/PW3Frxfo7 + 6+Pei4OovS566R3RI4+LPyN4qCU86VqpmZnZrl27YNPcw7Xoh3fv3v3BfqhBNf/qiRp7gX0BC6OxRpDz + opuLYm7HJL6fmHw3OfrdaARqTOdkPuwXNH1YSy3hyZJlQl1hZWXlQGML1w/7Af3w4cN/5/nVL+zCLmBH + 0Kbk5vK51+Yuf2c5tJx+Lz37fnbCewlIIOiH/QcPsKYJTx00m/BycnJU+uGdO3f4TzSlGFVB9/tkMmyi + 4usv88JeYIcdHR1DDodAxdDytgfbij4oSr+fvuDGAjK2IHiogGZZP0146qCdRBs3bkQ/7Orqos+qoQ8C + cMFjoH6owV2M7JUUNfZl8uTJIS0h8e/FQ8tlH5VVfVxV+EFh5DuRmMvJIK6S8Cjo0oGjtLc4KioK/ZA/ + H3Kn8aheublEsR3s0uDSCb9pvhqssf04OpcsWTKreFbavbTiD4t3PNqx8/HO6o+r4+7EYWwhg3i/CQ9R + egDQNEq3trby50OVR1u44KHYDnZp0KZJRU0zNb1DXoGuSEHjSA9MDcx9kAu+ux/v7vysc9fjXeCOoVy3 + e+AoPdDMEiiZOXMmDR700ZbnDB4a3BX2ft7LU7wgC7tQWFg4ac2k0o9Kmz9pPvD5gaNfHu36rCvvQd6U + q1NIwkOU7hc0nVnUQDMh5KkHO3fu5IIH/2EtLlb0AxrK557L/jNenuIFWQDd1NQ0Pmx87ce17Z+1H//q + +NlvzuJj5cNKTOTkjEe/oKvYJ/L2CzqMGT16NEAjeHAPaz3PiWnynrO/xOUpXpCFjYfuvGd4wy4Of3EY + lGlB3WE3wvROsTOLCmj2PZzJo7T9go5gnJ2dW1pa+CemnyfhaWRnZ9PLU3BPseZHvZedNbYcinMZ5wK7 + 6Pm6hwMNdSN4GJ42JCdL+wNNnvOIKVwNtDRKam1t3dzczCU8+iSxfk8t9QHNMOa4f/ivD32VuiK2HPtl + 62pLTYMrOHXs7ViTMyZkOFQDTU6WDgR6rdTU1JSC5j9Q+4OnljTMzJaEhobiboH+6XfTrki754tmINiM + H1yKb2UX/guhmVmb8SmjoO7N72+26LEgz05XoYwC6ELleSUV0HFSAwMDgO43Sj8LtKtrvZFRYGxsLO2K + MHX+9W1+UQPBoYM2gm1tbGzMz8/ftGnTihUrcK9jxEDDcXJysrCwMDQ0lMlkEolEyC7cwH/xSXwJ3+Dt + 7T1p0iT8SGRkJGLctm3bduzYgXiLKIVdwDZj4a8YjDLo/bqXX2CNcdyq14pM4SqUUeiHA4CWbZTJ5XI0 + 2H7P4ak/pqXYVRb0DkfHPD290RjhcQhwBoKkomIg+LGfzBq/B20AkSgvL2/16tWBgYHAZG48aqyHa8jU + iavD5qatWbk9ZWNLfnZ3dcnZXfU39u++f7zr8dmjf7p8+snb5//xzqXv372Mwg38F5/El/ANN9qaztaV + dBektySv2x69JDUseFVgwBwft7G2luYGuhi+8YeWL1/+5vA3M3Zk1J2pO/LhkZ4ve0h91ZNzL8eux44o + mj2/Qep5QCfKGIYB6IFmlmeBRtnYbJZKrevq6uhDBtRAVBLIjzJr/BT+PPSVkJCAhK+nIx/j7hoePGNL + TFTD1vRTTVXA9I93Lv7r9pV/t270/uvyse97u74/3vr9oYbvOyq/by38viHr7xWb76avOBkTWj9/YpSz + 8Tw3cw9TOSPW8p7sPXfN3I3bN8a0xdgds5PvZK8/geJwo2AdBQOATpaJRCKAVj9ZCoE+YzgE6Aa2dlha + rhKL9eE7fAOhCeQ5RxjcmciV0OyiRYt05fIAH+81i+aXpW4+0VD18ZlDqoB+xrp18V/XTv3rwqHvT7d9 + f7j5+66q73cT1t9VJX1XGvddQfSjdTOebJn3JHn2vTUTu+d7FU6yi3Qb5W0iGqr1h0E+g4YHDxesFTAF + DAkbbOlUsaBpvEtmi8caDgavUx8O+32UVoGGBd3k6tpIcZuahs2bNw/uTg2EzuXPNmvcxp/Zvn17eHi4 + iZHhrIkB0Gx7WcG9Y12qOH7RevfSv673/OvSke97Oom0D9R+v7fk++at39WmfVe+8dGmuU9ywlnWwU82 + Tv/bhkl/i/X/82rv83PNyv1lUY5a3oaDR2r+9yDPQSNCRwgThPTZjtIMqTRVKktSslYWBU2HQ+45j1Bn + v1O4AhNAu7k181mPGhWMjsTN5TgWuLGSb9agj7+RnJyMvzrBx3vzymX7SrY9OHFAdf9/zXrnwr/eOq1k + vYuwbiv9flf+9zsyH6VHPCle/SR32ZOMhU9S5zzZNONv8VP+HDP28UqHR0utHi0ye7TQ+OwM/aIx4sU2 + I+x0Xv+vof/fsPHDtBZoSTaQ90wjlUSKQE8i1gFLRCamU/izQXOiJKB5rBudnMoNDaesX7+eG2G4tAfW + EDh+e1xcnJGB/tzpk4sSN1zY06C6w79+ATHkfPUkKP/r3MHvz3Qo/Lqz6vu27d/tzPskN+ZJZfyT7TFP + 8lY8yV5MpJ0069v4SY+j3R9F2j9awrJeMOrD+Ub35xm9H2rY5C9d66jpoz942PD/HuI+RHO2pmSdRIou + BuIbpWiG9fX1AM1N4fR5B/zTHf2CbuGxJrgdHQsNDPwTExPhO9SswRpRBm3NQF9v3vSpZamb3u7a/d0t + kgRU9/lnLzRMotOjCoIn9xK1Hmn+/lAjqe4d33fXf3+wjugXtb/m+65qlm/59/u2f7+76PtdBf9synm8 + LeZJzeYn5euflEQ/yV9BbCR9/rdJQZ/GjXkE1iucHi21ebTIHLomrOca3QkxfHeO4TvBBnv8Zesdtcbo + DR427L+Heg3VmqeFHI18WVtbi36ImYWbwunpjmecV9Jwd9+txrrJ3n6rnt6Y9PR0TJlJSUlaWlpTfMdk + rY9G8PrrW2f/fgN56+I/lZFLFc1PqKsnSR8DNdBpyv6uOpk0scLo77ZGfpe15Lv0sO9S53+XHPpdUsh3 + ibNJbQ5mb8z5Ljnku5S536XNJ9+Tsfi77GXkR7at/C5/FfnxorXflaz7R1Hs45RFBHHR6icFUU/yIp/k + Ln2StejbtJBPNwV8sh6sPQnrCLtH4ZaPFpo8nD8Kun4vxPBWsMGNWQbXg/SvztRv8GNW2o50kr/xX2/8 + f5qamlu2bGloaEDCo8MhHfe40x30vJIqaE/Pjn5Zm5unaGra6UqlkXNnN2/LfHiq+9OzR7+6eOLPV8/8 + 7fq5//03WJMoBtHVp39XFPNd+qLvNgX9c92kf0aN/Wek9/8u8/h2ifufwt2+XOz6+WLXx4tcH4e5PFro + 8vFCl4cLXT5aQAo38F/UJ2Eu+Opni1y/WOz6dbgbfuqvS93/vsz9nxEe/1zhTX7hGn/85idrJ38a4fNk + U+CTxKAnKXOepIU8SQtFfZsy6/Em/0/ifD+J9XkU7fFopfOj5faE9SLTjxeMehBqdHeOgvVbQfpXZupf + nKF/IVA/31M4R2+4lVgzICAAhzgXpbkpHEc/d7qjD2hv70Ms6z2UtYtLo61ttalpialJkalxgkzikhW7 + 6tbBPUgRYP3ZuWNfXzr5l2s9HGtqIM9mTdS6M4/oK2Uuy9QHOMAFjMDrgwXO9+c5vz/X6U6o07uhTu+E + Ot0McboR4vR2iOP1OY5vzXG81l/h8/gqvgeFb8ZPofDj7811ujvP6f58Z/xa/HLcE5/Mc7gbaPzNEse/ + LnP6W4Tr31Z6/S16zN/Wjv9z7LhP1no8WuNJFL3a/VGUK9E1WBPLNn803/jDuYT1ndmGVNdgDdDnpuqd + 89c/NNEsyVlvvIHQy8srJiYGfYuf8OjMQrMDF9IA+ijLutPFZZeNTbWRUYGFeam9baWrYx3KzipFV+qe + GRP1bvfe+8f3f3yasP7m0qkfYI3PHGr4rnLTd2kLCNnlXn9Z4k6xAgGYUqAAxEd5dfbPUNw9Qe8G3GfX + Zlqfm2j0TqjtnXl2d+fbfbDA/lGYw2eLHL8It3u0yBj6JSqGR8M6aOE20TVh/VHoqPshRmANv1awnqZ3 + YYLB9ZlW12ZYXplhVeRlFGLO6Ak016xZg8YI9/joo49g03AP9EPujAdYA/RxD49ue/s9pqY1NlY1jna1 + bk47lFWPsrNK05d7pa5afrt734MT+x+dOfT5+eOUNaZhPuvvTuwh9po6H8fsP5Z54HDGUc8niz3/ebE+ + T52bZnFiguGlYGvUldk21+bYvB1iczPU9mao5eU5+tfnGLwzx/C9UEP4MhwD/fBRmCmhHGb+aIHpo3nG + H88lrN+fTWzk7VkGV6frX51sdHOm1duEtdXVmdaXZ1jV+ZostdG1lApjY2OPHj2KQQ/zIR0+uKFaw9Fx + v5Vlq4PdXneXDk/XfR4uu9ycGlRYO9hkGuj4JkQsunOoDaw/6TnMZ/33vaV/z13xv+un/GO5J+DCOgEX + h/At1gQ4uCr7/6tVz2SzExNHXZhlTetiMClAPxdsdnym7qlA3Z4Zeudm6l2apX8t2OAmvCLE8N5cI/jG + w7mjQBlFdX13tuG7sJFAgxtTjG/Psn4nyPrtIGscLldmgLX1pZk2O/3Noxz07XTE8G60R27QA2t4iIaj + faen26HRnoe9Pbq93Pd7ubV5uLS6Ozf2xb3D0S7PUG9i9IKQq23NlPVn9dlfpYR9s2rcn8JdCdx5gOtI + 4PKUq7LPv0mdnmhyarIJB5qrM0Gmh2foHJqmc2SaztFpOiem655moV8I0r8UpH99lv7NYAOYBviCMure + HML69gzDO4Gm92dbvxds826wzY0gm+tB1ldn2lyeaXNxpu2FmbatEyyjHA3tdSWpqanIfDBrJBDg1hjt + eYyto6M9j3h7HPJyP+Dl1u7pusfduUmFtbNDmbHBzEXjvU+sCLy3dMwH85zuzHW4GWL/9mz7a7MdrpG9 + crhCyhGlsre/YZ0MGHVmqqkKZdSpmSaHpuscmqqsaTqHWeLHp+menK57ZpreuUA9JA1kOzgGfAPQSQUa + 3p9p9mGIzf05Nu/PtgXrW8E2b8+yuRZkeyXIlrAOsjsXZNcSYLncwcBCLi4oKEDmg7Q50JT1UbD29jjo + 5QYbAesWljWL27HOzabCzXK7KTNdOGh45ehRpwNtzgTa9syw7Z1pezbI7sIs+wuzHC4FO1wm9QKxPjbe + sGe6uQpl1MmZxn1A8+rwVJ2jU3SOTdE9OUX3DGLGdD3kDRBHP7wx1eD+TPOHITYfhdh+EGJ3b47te3Ns + 351tezPY7nqw3ZVZdheD7M4H2Z2dadcbZFczzmKBjYE+I0Lo5oPmcMNGDnq5d7GW3eruUOdmXe5mUexq + XuRiXuRsVmQqmy8aKkt00jk4xfrodJsTgTanCW78AbC2V2dNNc4V+1VS+M6Ls0idn+VwLsj+bJB9z0xS + p1Ez7FCnZtidDLQ7wSv8F4XP02/Ad+L7e9mfxW/APY3fhl+r3AZyeB321Ts7w/L8LGsUH/SJmUb9g56i + 0z2Z1KHJOocnE+LH+cQn6r07w/z+bJsHc2w/DLH7IMT2fojd3RC7O3Psb81mD+5g+0uz7C6QTbKj+5Ln + YzbNXBegj7N86UeONWyk28tpn6dto4dVjatFubN5ibNZsZNZES0LvSjpCKsIC0nnJKvDU22OT7c5NQPq + tjs3k7Cm0r4U7HhZiZUyxeeBg/55wDoeaHck0PbQdNsD02w6p9h0sNU+xZpfbZNVS+Ub6E/hx/dPteme + Rn7b0UBb3CW4G8jdNsOmc4xOz0yr3iCrs0FW59ii0I/OMOyepkZ5qk43BT1JUcDNET8xRffUeJ2r08zR + CW8HW8M67s+xfRBi9yDU/l6o/fuhDu+GONyY4/DWbHvsMjjg7j/Diga7SUH3LY9jo533j7Zv87Zt9bTZ + 6W7V4GpZ42JR4Wy+3dGsxNGsmK0iW6NEPe3RMwy0K3yMu6faHIO0Z9iemWHXC9zEp4jEzgY5QG4U67FA + Oz5TMKLg9ilr7yTrPWztfo6i34kfQXG/gX9PUPr7AsybvHUOTrM4NN3iaKDFiRmWp2Za9gQR7ocD9Q5O + lR+cIu8GXLb6Bc0VxX3EV35+qvmVQMu3ZljdnAXctu/Psb0XYn8/1OH+XIe7cx3vhDjeCnG4PsfhCmHt + QFlj9/uCBmKnA6Pt273t2rxsIee9nra73W12uVk3uVrVuVhWO5mXOfXFPYoJEg4WJTrpwkaOTLMG7mPT + ULb4eHgawdo11bp9sk0bu/MUKwVKebVOtNo10Wonr1omKKpZrbgvofg/gt+Awq/i7gOOfrOvcZ23zu5J + Zqi9k8zbpph3TbXonmZxJNCibapO+2RZ52T5/inyA1N4xKfoHOwPNKkJOod9dc9Oszg/zeJiIBlY3gqy + vjnL9vZs2/dC7O/Ndbg31/HeXEynSF+Ob5PQRY5jsIbUlB6tiphWm4fNPg+bPe7Wu9ytd7pa7XCxrHW2 + qOThJsTNdVdKR9gsMBHV+Zntm2i5e5IlIg7ZbdwmO48bKOtWFitFo+AY8LNW3zuAoq8dbVDjo98y0Wzn + JFK7WOKoXZNM6iYwjf7MzgDp7gnStkmy9kmyrsks8cnyg5NQOrT6gA7QOeKn3zvVAqzPTbe8MN3y0gyr + a0h4s2zfCba7EwL3IKDvzXPCjHabjBEk48I2wZoFTY3Cbh+H2ANlQ0DT4nCz0q6HtJ/iNie4bY3T9YQT + Rr7x5lo7ed04s3p/84bxFg3+Fo3+Fg0Blk0BluSjv1VTAClVQL9QsfdlmbtO9VjDhgmmTaiJZqhmFvqO + CYYV4yWVfpIqP0n1OMmO8UyzPyG+b6KsfaKsa6J8/0T5QVp84v46x8YZENCEteW5aZbnA60uzrC+EmTz + 1iy7G8F2t+Y43Al1fH+u412wRvxl52GMFGCtMdqhbTRBDJcgRRFzRSgry91mr7vNbjci7SYXyzpni2pH + 80pH83IHszJ7s1KUiTxCPNwy0ECQ6WFU7mtW6Wde42deN86ifrzFjvGWDf6Wjf4K3KpQfpnCH8qzF1X7 + jarzN60PMN0RYArijSz0an+97X6S0rGSMl9JuW9f4uOlu/2lewNk7QGyrgnyA3zc43SO+xv1AT3d6nyg + 9UUMLEG210jCs785By3R8Q4xEIWuwfr6HEcNL9vdnrZ7UB6gbEOrD2sl6Ha2CG43m1ZX6xZnq0YnyzpH + 4LaocjCvcABx83Ib42xd4ZSRb2iHmzNlY80qfM2q/cxr/SzqCW7CGvWrSbvez6zQmQFlflHiZePlRb7i + 4jHikrGS7WMVxCtA3FdcOVZS4ytp8GN2jpPu8Ze1Bcg6JygEfsBXfmKCcc9UC9Y9LOEeAH0h0PrCDDIW + Xp5ld3WWHSIHgsc7IY7vhjpC0cBNWWt42Oz0sG2FM7DVh7U7W0rQbe6k2t1sUPtcrfe4WO1ysWpxsmxw + tKh3MK9xMAduRZnprZVquvpIR8Ta60LaVb6QtkW/0v5FcVf7jCpxl6uAplXkKy0YKy70EReNIcURLxsr + Lh8jrmCraoyk3pdp8mN2j5fu9ScC7xwjOznR5MwUc4DunWZ5drrVORb0xRk2l2baXgqyuxJsfzWYzMlI + HTfmOLK4yQk1lIabdaM7MpzNLg+b3Rxr1iUUoEnZtgGumw0+gnKHq6LaXKz3OFvtcia4Gx0tdjha1DmY + 17LQa+zNKo2ki4TDTKfoaSe7GFT6mqtLG7gb/K0KxpineJrEOBuF2xkGW+pNNNUZbSRz0mesdBhjqVhP + IpKKhGKhUCgQoHAD/8Un8SV8A74N34wfwQ/ix/FL8KsKx5g3sqDLPfXLvPRUEKNq/U0KfCX5PuL80aQK + fJ4SL0H5iEt9xGU+4grUGHHlGEmtr6TRj9nlJ93rJT020fTUZPMzUxWszwUS64CiKejLs+yvzLJH2ADr + t2Y70PO0kPMtgEZnQ5xws25BrwNrdzQ9BWhSRLw2e12tSbG321xt2kHZzbYTxeF2sW5lcTexAgfxelq2 + Jvn64lnaQ+RBRsIMdyNIO8vTZK2T0UIbg4mmchd9xogRm5iYODk5+fn5BQYGLliwIDIyct26dUlJSVlZ + WXl5edu3b6+oqKiurq5jV21tbVVVVVlZWWFhYXZ2dkpKSlxcXFRU1KJFi2bOnDl+/HgXFxdTU9NRjNjV + QOohHjbHXLLWRT97tBEfdOV4w/yxYg40V8BNarSoeLSoZLR4+2iCu1yJu3q0pNlLfiDA9MhEsxOTzU9P + seihogZo9owSBxoJ+mowYY3IwZ0W10BycLaoQpZws2pGo3O3aWVZ73FT8N1DKbuw5UpYozjWXWxR4vtc + rHcrBQ7icPAGwt2y0dwogxFMHfRHgXj4UM2RI9zd3adOnbp48eL169fn5ORUVlaCXU1NDSAC5Q52NbCr + sbGxSbma+1st7FL8h7dKSkqio6NHao/0nuxt72U/UnuEhVzbz1iywEae4GawbYxOv6BJeYsLvEVgXegt + Kvbui9tTXOep0zrOuN3f5OAEs6OTzU8S1lZnA63Pz7ABa4C+NMuesGZBQ9dX2QcikDpIM8TQgXzmbFGB + jOxq1Qhpu1rvcrXezSImxQpWAXoA1vvZosSpwHc7WO60tWi2Mm8yN2uysNhpbd1qapojkwWPHGkwbdq0 + zZs3l5aWlpeXAzHUCsT19fUcWZACvp07d+5iV2tr62527VGuvQMsxZf37ME3x8bGOo12Sq1NRaVUp6xM + Wzl7xeyxgWMtnS3Fotft9N6YZjZstYNmnhrofC8RqoAt4C5S4i51F9d56bX4jdrlZ7JnvElngNmhSebH + p1ieJqxtzs8kp+4I6GACmrBmQVPWKAoahTGvzMmiyslyh7NVMxqdq3UreLFFWT/FrWQNG6Gs97vbHUC5 + 2R5wstlvZ9VhZdFmZdVmY9NhZ9fp6Njl7LzfyYmUs/MBa+vt+voLtLRMJ02aFB8fDyFDxVS/4Au4wApS + oLZv3762trZ2dnV0dHSyq0u59qstxRe6uuh3zpo1K3BxYFZzVlZTVmZjZkZDRsaOjPT69C11W2SxsqHT + hr7u/Pr/6P2Pnvg1H8PB4bYjMj2FLGhCmZQnKcpaoW4Xcd1ogybfUZg2d44zbh1vui/A9MAk86NTLE9O + s+6dYXsOrImo0RIJ6CtK0LQ0HEwLHMwKHUyL7FFmJQ7mlU4W9c6WjXAA+MBArJW4CWtX205H60576/3W + VgdsbI44OBx3dj7h5nbS1fU4ysXlqIvLYZSzM/mIcnU9Ym+/w8hopVjs7OPjs2rVKrgHEFPNgi/FeuDA + gYMHD3az69ChQ4cPHz7CrqPsOqa26Ofp9+CbHRwcYnJi8vbmbduzLXd3bm5r7tZdW7N3ZkfVRgnThVqx + WlpRWlortIYHDR/sPfg1k9cY4f94GwwOtx6R7fEU9FPcKEdRnY/RjrGjGnyNm/3A2gSs9/ibdU60ODTF + 6sQ06x7CmpwuhnsQXbOn5nEbQfBkwCgNe9MCO5MCe9NCO0UVs4m4BvY6AOunuJ2s99lZ7rWy2GcN0Pbd + LN8zbm697u5n2ep1c+txczvt5nbKzQ1fIkXp44a7+wkXlwMWFik6OlNGjmTmzp1LL3YGbYIsxQp8J06c + OHny5KlTp06fPn3mzJmenp5e5TrLW4pP9fbiG/Bt6J/WTtYl+0tQxV3FRZ1FqMKOwoK2gmlV0wTpAkGc + QHuNtvZqtqK0CfHg4YM9Br9m8Jq+4LUAw6HR9pp81vnuULS0doxR3RjK2qTZz6RlvGmrv9meAPO2CZYH + p1gdm0ZOF58F6yD7S8H2CCSnJ5l2j9U95j/qzGQLDTuTfJStSQHKDtAJ6yI701LEYeQHtDXgRqjg43a2 + 3mNvucfaYo+52W74g6PjQReXIy4ux1iIoHkaiN3dz3l4XGDrPFuEO8rD44yyetjq9fQ85+BQa2y8imHc + qcDpm1SBF8AB4vnz5y9evHiJXVeuXLl69eq1a9feUlv4JBa+iu9Bbpm+cHr1ierq49VVx6oqj1ZWHK2o + OFJRdqjMudJZlCkSJgiF64WCdQJBrEAQI9COZnEv1dJcoPmm/5tv2LwxaNj/s5e+Mdf8zUx3IUDnuYi2 + u+lU+xjV+IyqGzuq3te40c+keZzpTn+z1gDzvRMs9k207JpidWSaDZzkyEST7nGG3X76JyaY9ExF+HNA + AXSeLSmwJqVkTaRtb4Z5r5YvbSer3baWuy3Nd8OC4b9OTlDxIRT1BNYlgBtqJazB19PzoqfnZS+vK+xH + 1CUUPunl1ae8vS+PHn3Fy+ucnd32UaOWSiROCGroZrBvUAO+69evv/322zdv3nznnXduses2u+7wFv3M + u+yaPHlyfEF80/mmxnONjWcbG8421PfU152pKz9ZblhtKM4Ri5JEoo0iUYJIGE+IC9cJBdEC7WXaWmFa + WvO0tEK1RgaNHOox9DWj1/SFr00ZNSzeWqvMQ69qtFHNmFG1Ywjoel8Twnq82S5/89YJFnCSpjGGO7x0 + mzzlbb5GhyZYnJ5m2xtof26G/fkZ9gS0vni6rck2ttRxP5W2vUWTjXmzuVmLjU2bgwP6GxDTIqApa5gv + W8QZYBdg7el5HmS9va96e7/l7X199Giu3vLxuebjg49Pa8yY62PGvD127DujR19ydKwyNg6Tydw8PT0j + IiKQmo8fP/7ee+/dZde9e/fus+vBgwcfqC0Yuo2zDfjueWvP7mu7W6+1tl5t3XVlV8ullrVH10rrpJKt + EvEWsThFLE4WixPFos2swGOFguUCwTKBdpi29gJtrfkK4m+Of/MN0zeEr//3dCNhspMepk2wrhtLQEPa + NaMNqrz0yt1klW6yOi/95rHGu/2t2idad0+2OTbV9tR0u55A+7Msa41h//OajsDPymhLf7iJtK1Nii1M + ykyMq6ysWhwc2pycSIpwdj7IFgHt4sIpGnXEze2om9sx1oVPwRzgDJT16NFv+/jcHDPm1pgx79IaO5bW + LbZw47av7x0/P9R7fn53fXwuoFxcdlhZbTQwCJJIrPz9/WEsyIWw7w8//PDhw4cfs+vRo0effPIJ/YiV + mZkZEhnSebuz43ZH+7vtpG6177u5b9+NfZO7JzO1jCRfIsmSSDIlkgyJZItEkiYRJ4lFcSLhKqFwuVCw + RCBYLBAsYokv1Naer605RhNTlZeXl67W8Mn6ggRbZrubvNiZKXSUbHeVVXrq1/kYN42zbBlnudPfqtXf + ak+A1b4A6/2TbI9MsT05ze5MoD2krZHiajBeR5MZ6WymF6tkrcBtZZxvNirfyDDfzKzMxqbWzq7ZwaHV + 0RGsYRqEtYtLN0uZyplT9FF392NsHXd3P+npedrLq9fb+wLMAbKFYClQX9/3QRM1btw9tu6z9YCtD8aN + +3Ds2Btjx97087vl53d73Lj3fH2vubvvtLdPNTObr6vrpq0tRICDF2N0RP+EsXzOri+++AIjYkZ9Rve9 + 7u773fh48O5B1P739nfd6bLdbyutkTJFDJPHMLkMs5UhxLMk4jSxaINItEYkihKJIkXALVwmFC4Rai/S + Hjl/5BCrIQYGBhg4X3/99WHDhgsGvT5BRzPJQad6tHHtGNN6X7N6X/NGPwvCerzVLgVr670TbDon2h6e + YnsCrKfbaeR5meR4jpppKBQMHTVKtpiCtjbeZmaUa2SYa2pabGVVbmtbzVaNnV2Dg0OLo+NeJ6cOZ+cu + FxewPuTqiiKU3dyonBWgPTyOozw9Keseb+9z8IQxY66CoK/vu35+77NkPxw//qPx4x+OH//I3/9RQADq + k4CAxyhKf/z4DwICPpgw4YNJkz6aMuWjwMCHQUEPg4M/njatx9+/ydt7i6PjEnNzf11dCzs7u4CAgIkT + J1pjyrqxp+u9rv139x+8d5DgRj3ozrieIeuSAbS0RCotlDL5jCRPIs4VC7OEghSB5jrNkatGDl8+fFj4 + sCFhQ96Y98brIa//cfYfX5/9xv+I/mhp6TRu3MxZs5YtWRIfGhrl6RlgJNCaYyrL84CHmO3wM9/hZ9E4 + zqJ5vBVY7wTuAOs9Ewjr9ok23ZNtYSMaRaNN87wJ68XmjOYggZ5oupnR1lGGW01NCywtt9vYQMvlNjaV + KCXuOnv7ZkfHVienNpb1AVfXbje3w2wBMS0FZQraywt1ysvrjLd3r4/P+TFjLo8d+5av7zuwCNAcP/5D + FvHjCRM+mzDhi4kTv5g06YvJk/Hx48mTH02d+sm0aZ8EBj6eOfPxrFmfzpnz6dy5n86f/2lY2GdLl34W + Gfn56tWfx8Z+Hhf3eM2aa5GRB+3tg+ZGh7Xf7mq73bnvVvved9p239jT+nbrruu7xnSNeaPijdezXn89 + 7fXXk0m9kfTGoKRBgzYNGrxuyOCowYMjhw5d9uawZcPfXD5yRITmyAhtreXCkTMFw4aNiIhIWLZsU0TE + 5sjI5Kio1NWr08PC1np7T7CTiiKs9Wt9CeiGcWBtCdbN/lY7/a3BejeLu22CzYFJthplY02LfQjrrZ7G + s02ZP/zXf2lqjh41KsnauhSlBE1Y29pW2dlV29lB17X29vWOji1OTntcXDpcXQ+4uXW7ux92dz/i4XHU + wwOUj3l6AvEJWizok97ep7y9T3t794wefXbMmAvA7ev7lp/fO7AFf//7/v4PWdYE8dSpXwYGfjljxqcz + Z34aHAy4n4WEfDZv3ucLF36xaNEXS5d+ERHxxYoVX0ZHf7lu3ZcJCV8mJn61ZcvX2dlfZ2Z+KGJ0i/dX + Hnl4+shHp448PHX041NHH506xpb1cTumRS6pkEtK5ZISUuIimbhQJsqVilKlwo2MME4iXCsRxEgEaySC + 1WKU9irxSB9tV1c/wF25Mm3VqrQ1a7LWrs1et27rhg0FmzYVL1683t19vK+BdJPzqIZxlijC2t8axbFu + 8bNqGm2tUeFrBtbpHsbTzeR6Qi0Y3IQJEwQCO0PDldbWZbQA2tYWpWBtb19jb1/r4ADWjc7OrS4ubW5u + Xe7uB8EaoD09KeXjXl5AzKdMavTo02z1+PicVar7mp/fzXHj7owffz8g4OGECZ9OmvQlWM+Y8fns2Z+H + hHw5f/6XYWFfLV78VUTEV1FR30RHfxMb+01c3DebNv0pJeVPGRl/3rr1z4WFfykr+3blysaJcwKPPTpz + 7JMzxx+fOfG45+SnPSfx8XFP0q006SEdpkEJGrWdZV0oE+fKRClS0WZGGM8I1zPCdYwwluGID7fUCgxc + vGZNRkxMVmzs1vXr8+LjCzdtKklOLk9Lq8nIqM/Obpw/P1pfKAyx0CvxMWscb9kEA/G33uFrVettVeNp + Ve1hWethoVHtZ77a0dBNT4LsGRcXl5aWlpycPG/evOHDpTo6My0tt7GiVrC2s6u0s6uytyesWdCoHU5O + za6ue9zcOtzdD3h4HPL0POLldczLi4D29gZiWn1A+/icYYvgHjPm3NixF8eOveLn9/a4ce+OH3/X3//D + CRM+gYFMn/7lrFlfhYZ+HRb2dXj4NytW/Ck6+k/r1v0pPv5PiYl/3rLlzzk5fyko+La09Nuqqr82Nv7N + zy88uTLj5Ke9Jz/rPfX52dNsncLtz3onXpgqbddh6nWYKh2mnK0yOYqIOoeCloo2KCtOQVywWDJcqAU5 + r1u3LS4uPyEBKi5JTKxIS6vOzNyRk9O8bVtrfv7eoqK21NTK6dMXuutKo21HVXlZVriTKne3qHAzr3JH + mWnMttTVEwtXrFiRm5u7detWZKOMjIwtW7agofv6+orFHsbGa21ty1hFA3QFWNvbVzk4VGOcc3Ssc3IC + 6AZn50YXl11ubvvc3Ts9PA56eR328jrq7X3c25uyBl9aVM5PS0kc3g3i58eOveTre5US9/e/GxDwEQQ+ + eTLU/VVICMEdEfHNqlWENeScmkpAFxV9W17+17q6v6amnnQZ473//SOE8mcKyrTaP+kyOWUhbdVhalnQ + FWwR1jqSIrk4UyZOkYoTpaIEtuLZYolrTxR7ePhv2JAPFW/cWLx5c1lqalV6el12dlNeXmthYRsiT1nZ + wZSUA0uXdk6d2mlllTziDe3JOvJMB5MyV7NyN0VVAnRQUFBWVlZRURGGgvz8/Ly8PBDHys7Oxufnz5+v + qamnpzfb2jrPzg6gy+3tAbrSwaHK0bHG0bHWyYmwZkGjmlxdd7m7t3l4dHl6dnt5HfH2PjZ69InRo0+y + NSBuVF+NE+JKjd+CxgMCoPHHsJTAQCLwRYu+Wb78mzVriLSBe+vWvxQXfztlSvzKtNgTj3tP9FU0KvLG + KukhXaZJh6nWYSrZYlkTA8mXi7cAtEycKBNvpPWUuKadcPbsSFbFpcnJEHJNZmZ9Tk5Ldvae+Pj2JUu6 + AgMP+PnBMw/AP52cduH4BiiGmWmnLVptZlDmalruZlrmRj5qlLELUwACKVYJu4rZBfpYSUlJyEwM42Fq + GmNvX+HgAMqkHB2rwdrZudbZuc7ZGawb2BfQgXWzmxvF3enl1c2+okAdtypofimJ98JVlDKHj9/gyfwx + lTmgL15MLGXRosujLO1qe1qPftx77FHvsU96j3PEPzvr0ushbdNhdqiBRkvMlYvTWdCbZeJNvNooEy5l + RooE6Hvx8aXR0RVLl1bNmVM9ZUq9n1+Lh8dupABn573OzriBAIZc0ADKcFT2oC/V148UD9EK1peDMi2N + CnbRhzmqq6vpx5qaGu4jFj65evVqbW0dff0ZNjaZmI9RTk7VbBHWLi51Li71Li4N0LWSdYu7+y4Pj32e + np2ensRMWOLHlaxV4fZbPJk/ha5U+jvjx5O4EhDwMezFzCw1ZNXyAw96Dz7o7f6gt/vD3kMf9R5+2Hvk + YW/SzSzRQT3BDh1BhVxYJheWkhLhY4lMmC8TbJEJUmSCzTJBglQ7npTWBqlmnHTkeunQMSIDg0nu7gXO + zkV2dki6tIiFwjzBFC2K2qaTk6LwGTgqvopD39Q0SSDwG8swaXajCGgKlD6M1NDQQB834j/AgYXbWOXl + 5QsWLGAYexOTJY6O5U5OVc7OoMwVwe3qWs++ip+8NpS+zMvNbae7+x5Pz3YvrwPe3of64n5e4rT43JUO + gy562cPjgFTPtLCzruve6a57Z/aT6lHU/R6PYxPfbJK/WSp7s0D2Zp7szXzZ8DxSb+bIhqXJhiZIh8ZJ + h8ZIh66RDolmeCV5TV9LRyfc3DzV3DyNrQxLyyxr6222tkW2tqWseQI0+LY4O+90dt7FfkQ1QdoODpg2 + ENK2S6WzbbWEMeYGGkC8Y8eOxsbG5uZm+uhGW1tbR0dHF/soBj37jo9Y+G9nZyca5rRp03R1x1paxjo7 + V7NV4+ICyrSItFnWCidR4qYCb4PAvbwOenv/FIGrF0VvZLR65rKwrrsnu+6eUtQ9ReXdqBJ1GA2rYoYW + MkO3MUNzmaFbSQ3JkQxJlwzeJB4cJx68Vjx4NS0RV28ECv7whxHGxhtMTOJNTTeamSVaWKRZWmZaWeXa + 2pbY2ZU5ONQ4OTWBL6zD1XWvq+s+ZAH2BvLuTnyJVTfGjnJ9/WU6Q7U0OMR79+5tb28HzUOHDh09evQE + u86cOXP69Omenh566h2fOX78OL6amJgoEukYGk61sUmiuF1cgHsg4uSFizziu1niXayDk4b57xDHfjK6 + JnltVSxo1fI7Hji0WTJ0u3honnjoNvHQXPHQraSGZImGpIgGxwkHxwoHrxEOXq1af3TQEgrHGxuvV4JO + NjffYmWVbWOTDwtmfWOHi0sLm2vbMUawk0Qnm3E73Nz2IoOx0sa0UYEjYNSo1RrwBKpiaPbw4cPHjh0D + 0LNnz164cOHSpUuXL1++xp5lx8crV67gv+fPn+/t7cUdAMmvXbtWIjEZNSrYzi5dqW4Ougpu6iccbkqc + WAqP+E/RuIHByuDIxXy4XFXe2intNBlaIxlaxIJWUh6aIx6SLhqyiQW9VhUxatAiwR8EI3R1w42N40xM + EkxNN5uZpVhYQM7wjWKIFLnW2bnFxWU3KLu7AzEGiINsHWBBQ93QNSwbVl5iY5NrbZ2hsW/fPhhCd3c3 + dArZAjH4AuuNGzdu3br17rvv3rlz5z124QY+g8+DO6BT4nBwZHCGsTA2nmNnl+HsDOOm9aOIt/JchfNx + BJUf8HHISs/UqvhAvQpiWlNOhgzbyQwtEw/NV5NzqmjwBlbOMaqUUa+P1R4xwtXYeB2sA3I2NU2EnFmD + zoPtotehB/LmhgPIsvjIVqe7OwwEro1RrsLREd8MQ8+zscnRgDDhFfAE+MPFixevXr0KlOD7/vvvP3jw + gJ72xfroo49w+4MPPrh//z4l/vbbb0PgED5+EF102bJlDGM5atQcW9stPNw/TJzvKuicHh57eTJXsXJV + 6Lq6ixeuW6nCl1bNu63yLrOhtZKhxf3JefOAckb9j8FIqTRY6RublL6RY2NTwLozRgdsdisiLE2xLN+9 + 9NXHLi5IutA7vAUhGCaDxALQ2Rqwi5MnT1Ihgx0Q3717F4gB95NPPvnss8/oeV66Hj9+/PHHH4M4cEPj + HG6oG2ZSX1/P4jY1MkIKTOyLm5aKlQ/UOdWhqyidcMdRbO3mXtuzWwUxLSLnXQPIOU00OF44eF3/cn5j + imDoUGsqZxMTyBm+kWphkcG2QVAjeQNzA6YzdkCDTTcrdwEyx+frsZuIZI6OuEtK7O0LAdrOLlcDjgxM + sIKbN29CqiBIEQPrV1999c033/zpT3/6M7tw4+uvv/7yyy9BH98AjVN1v/POOzAT3E+4t/Db0F2joqLE + Yn1Dw4mWlmvVWHM1kMzVoRPurL0glT/lLpFMX521UYUvrbJ3mog79yvnDNGQRKWco1Upo16z0hSJJrFy + jjM1haIBOgmRw8oq08Zmq60tmmERCIIjzIHNtWTjlTuC/8JYKpyc8NVSlJJ1vgaOfTgyYEGhcIZHjx6B + IxAD61/+8pe//vWvf1OuJ0+e4L+UOHB/+umn+Gb8yL1793Ac4H6C7cB8YNzwemSYuLi4cePG6ep6mZkt + cXDI7UtZpVSgqypdnfuoUdFjpk9uv3208+4JrroUhbAxfdhOyZDSHy/nWdp/GDIcgQw5AX9i1KgYY+NY + E5P1ZmbxFhabLC3TbGyyoFAYAssaXbHSyamStyO4TYplja8S3A4O2x0cijUgRjgA7AKGQIUM2YImmP79 + 73+nL6/Fwg26ONz4ti+++IKaCawGnk6dBAcHNW44EhpsZmbmrFmzYN9GRoFWVnG8bRqo+rEXFb1jP0Uy + /bQd2zrvHlevrLeKRO0GQ6tFQ4qFQ7YJh2xV1OBs4eB04eBE4aA4waBYwaBowaDVtLQHrVLUHx1HaGl5 + GBgsMTBYZmi43MhoJXCbmKw1M9tgbr7Z0jIF+cHWNsfeHqwLWdalEC+wsny5XeBYK6QN1uRC3XAA+ACQ + 0Uv6QMjQL5iCL31xPtZ37MJ/KXR8w7fffotvhvZx33BOgsMCB8f169c546a4McTDTwQCoY6Ou4nJfFvb + VN5mPbtUeilBL5MFha5e0nn3WL/ldth3aKNwSKlgSL5gSK5gyFbBkBxSg7MEg1MEgzZoD1qnPWjNU7hc + vRGq9YeRw/DL9fUXg7WhIVivGDUqysRkjZnZenPzjRYWSdbWW9DZ7Oy2saC3s6ApZT5oFP3MU2lrgA4k + CR+gdgG1QrMUMcjSSyD8n/Jalfgvxxp6p9KGj3NOQvskZ9wquBEis7Ky5s6di2FHT8/H1HSxWkT54TIx + iXH08a4729r5/jH1WnNh44h9zNAq4ZBCwZBtfMrag7doD96sPWi91qC1WoNWaw1apVqvuQwfOdJJT2+h + vn4YZW1kFMGCjjE1JaChaBsbKHqr0j0AWl3O/FKwtrFJ1QBlmDLfLtQpc4uy5ku7Xyehxq2Cm46Xx44d + Q5rEIJqcnBwcHAziurre0LiNzWa1reynsIcjBdKE0i0qfLkyO+AwdIdgSIlgSF5fOWdoD07WHhSnNShW + a9AaVcSoN+Zp/kF7KMNM09NboKcH0OFQtJFRpLHxKlNTWAc8OtHKino05FwA22XlXP4M0Ngp7Bq6FHZT + gzNlFbtgFdyHMl3083zcuG84J8Gv4lIgHzfMhHo3WiWSCeZ4xMqDBw9iLgXx0NBQuIpM5ggft7BYZW+f + o7LFXOG4nh21SAUuVzNPzx+2Wzi0gjUNvpwzWTlveqacXYePGOGoqwvKC/T1F7HWATmvhG+Ymq5j5Zxs + bZ0Og2blTH2Dk/NT0Nh47AJ2BLuDnQoMDIyJiSksLCTvlcU35X6FrL5UWFPckDZ+1TNw01aJZEKDIKYk + +AkEjum/o6MjNzd3+fLlAQEBYrEerHzUqFmWlqvt7bO5fYC43Mb5DmQa266XMh1GQ+sEQ4r7yjlbMDhd + e3CSknK/cg5VkfNiVs7LWTnHoBNaWGxm5ZyJRGxnx8lZARobiU3FBmOzsfFjx45dsGDB5s2buXPOtbW1 + GlAiDn9QHsguBlpE2GpO8gzctFXSIR6BErmb8xMqcDg4PUGIJJ6WlhYeHo50KBIxMpkDIrmBwUypnkFq + XY4KX65cDo8Z2iwYUqbWAyHnVO1BCVqD1mkNilFFTOs1J7izM0/O8A3IeYWxcTQr5wRWzltsbRVt0NY2 + 08JirYnJQkPDCdg8bKSPjw+OSyTaoqIi/plnDHH05KjiHTp/LGVu9YubGrcKbq5VIgjS3E3PmVCB04YJ + B+cTb2tra2lpyc7OXrlypbGx8bLEZW2329rudLTf6Wp/70DHe90d7x3qeP9I5/tHF/RGDNsrGlopGFLE + mgZAcz0QcuZ6YLQqYtTrwSP/MGKoTDaDk7OBwVIqZ9oGTU1XjRoVPmpUiJ7eZLncSyKxEAoZV1fXqVOn + LlmyJCkpqby8XIUshct/9QJ5c9+fTJlbz4MbrRLJhAZB5G7OTziBcw7OJw5XAXFM9rMjZx/75BjqyMdH + Dn106OCDg/vv7++829n+XnvetXxZu86gmqGDioYOyn1zUM7wwTkjBmePRA1KHzkoWXPQBs1BsZqDYjT7 + IsZ/Sf2PzdARI+yk0okMM55hxkgk6F0uQqGdQGChrW2gqSnR09OzsbGBZmfOnBkREQFPgGypLQAuR5Z7 + 2ISDy716AYoh7wsOOpSUAttPXfSXPBs3neD5fkIFTh0csyUlzmkcrpKSkuI7zbflYsuJT0+ceEzq+OPj + T+uT42N6xgjaBJq1miO2jxheOPzNvDeH5g4dunXo4MzBg1IHvZHwxuuxr/9xzR//GPXHP67oWyv/+Nqk + 1/7fG/9PIpHo6urioLGysnJ0dPTy8kKrQCiCfa1bty49PR1HVX5+fnFxMX3dDfRLH5CiZ/M5srt27eJe + twC47e3tUAmOTrR9DSpkLAWtf3vR36aCm0smNHfTMYf6ycOHDzkHVycO1di62Ba2F5789CSKsOaKhb74 + 2mLxYbFop0hYIxRWCIVlQmGpULhdKCgWCAoEgmyBdoq2dqK29kZt7XhSWvFaTytOa7jdcD8/v8WLF4Pp + 0qVL0Y1hU9HR0eCbkJCARJSRkYEuXVBQUFZWVllZCcQQL5Ut1SyfLBZ9XQiFiz6P4xJHJ9q+BuWigPTz + Lfpr+bixKG4IHLhVBA7inKVwxLGVeoZ6yRXJpz4/deozUic/O0mKhY7aemer8XFj8R6xqF4kqhKJykVP + QRcJBLkC7TRtAnqzgrJKjZw6Ep4An4U1AfGKFStWrVqFNLZ+/fqNGzeCcmZmJijDKCBk3OUUMfgCLshi + Uc3Sh/0oWSzuRSGwQRyXODrR9gloBZtfYKng5gRO/YQKHMQhcDg4ZymUOLwbCKIzo09/cZrU56cJblos + 9AOfHHDpcZF0SsRNYnG1WFwpBmhRmUhUKhKWCIX5QvI00VSBIEkg2CQQJKiWdqT2cJPhsN3IyEioGIjX + rFkTGxsbHx+fmJiI2MO9ohRChhFDwtAvhQuyaB5oIVSzCKmULH3AD1GKwsVBiWENHQhjhIYCyS+5ONx8 + gXN+wjk4tRSO+IYNG5bELTnz5RlSX5BSEGeho6ZcnCI9JGV2MZI6iaRKIq4Qi8vF4jKxaLtIVCQSbRUJ + 04TCZKFws1C4USjYKFCUErTmGE36khkYBdbatWvxFzdt2oSWAFPmhAwvhoopYvCFbKkboHmghVDNcmTp + a20QpRCoYID0tSC3b9/GMfprgOYWR1xF4OrEoaaQyJCD9w4q3vvgyx4FcSX0iBsROid0pHukTAPDVDNM + FSOpkEjKJZIyibhELM4TizJEojSRKEkk3CQktbFPac/THsGMgF1AwrBj5F84MoLali1bcnJy0PcgZHgF + 2h36G33MmvKFZilW9A+KFZpFRwFZyJaShe9RuLBB9B50IByjvypoujjcfIHziWMnA8MC9729r/erXlTP + V+RNJkgpoae9n2Z6ylTWLpM2SaV1UgqaqSAF0JJCiSRHIk4Xi1MVL1ERbepTwnVCLQetWbNmwSXAFyoG + 4tTUVNy727ZtQ7SoqKiAV8CL0dyAGJ4L8YIvdQOKlRMsRjCQRVQF2bt374IsfI/ChQ0izuLoxDH6G4Dm + FkccuDni2MNJcyYhzD192xQWNwe99mGtw1kHeZdctlMmq2efwV8llVaSYsoYpoRhtjHkxSlpEkmyBKBJ + be5T2pO0fX19ARftDnyhYiCmXoFogWgMO0b4BWKYLyR87tw58AVctA3OCpBKKVaqWcxilCy6OshSuEhW + 6Pbo+ThGf0vQ3OKIww0DggJ2nNlx9uuzqKeslXX4i8OjL4zWOawjb5XLGmWyWpmsRiarIiWtkEpLpdIC + KZPFMOmMJFUiSeynRItEWvpacAwYMUIFjIKmNxxGCMjwCtgxIhqMAioGYhguxAu+0CzgUqxgilRKsVLN + YhbjyKLTAC48EAvdHj0frvhCgKYLOvKf4V93qo5SVikKevKVybrHdHX26sib5PJ6ubxWLq+Ry6vlhHWZ + TFokZXIYJpNhtjBMCsMkqZZkg0TgIggLCwNfLBhFYWFhSUkJvIIKGR0PQoYXwyioiuEM4Mu3Ao4pFlo3 + xconi05D4cIGka/gh3DFFwU0Rixoue50Hfd2VorisZ5zfY7uSV2ddh15Sx/K5F3xKmSyEplsm0yaJZWm + k7f1kCb3KSaZgBZNEk2ZMgWhDYsihldAyAjI1JERKiBk9DoYMYwCFgHDhXipFXBYYQUc1oHIYtHew3b9 + f74QoLGrk0MmE8dQocyrxTcXG5w20O3QJW+Mt0P5ft7sGwGR96bfLpfly2TZ7JunpKlSpiVZKBHoChCQ + 4cUUMRUyTW+YO2AXcGTECQgZRozMABVDv9QQABdMAZQy5WPtlywWGg/b8sns/duDxm7PWDSj5VKLCll+ + rby1ctSZUbpdLOVG5Zt5c5TL5OSNgAZ4O15a0jVSob1w9erVQFxaWgrESG9ovKCMMY+jjMSGlAbKEDL8 + F5ShX6pZipUCxaJM6eKwcmSxaOPBorv5W4LGDqAjha4MbbvZpkKWXzG3Y8h7eO/XJW8gpk65nH1j+hyZ + 4q2tUlUR0xL5iubNmwfE9JQFhAy7aGHfaBNjCAIc5g5QRt9D06NPCIBRQMXQL0XMAaVrIKxYit3ru34z + 0GgvmBSWJSw79OCQCll+rbuzTpUyTINSrpLLK+TkXem3EtPo943paUlmSAQCAXIFfcp9TU0N0gVa3x72 + XTZBGQMeHAOUOS2DMiwY/gBboIgpVgVL5VLszHOs3wY0GrqRqVFsTqwKVpUCZfMec90Dz6S8jaUM0xiA + MrOIERoJEZa5M8iUMhwDMe4Q+/ZtnC+DMtUyKEPIsAggpnwVm/5T128AGrvn5OWUXpuuglWlFI4Byrt1 + dJqUlOmbDVLKJexb8D7bmldJRXaitWvX0teO0JOclDIG6+7u7hMnTiAsI2MgxiEjI8Ch9VEtUyOGkP99 + yli/KmioA71oQvCEsoNlKlhVCt3vqWP0pUzebBCUt8vleT/UABOkYm/x4sWLOcq0++1i3yHvwIEDNC9f + vnwZwzTCMs0Y6H5ofZwp/yxyxvr1QKPJrF+/fmHMwn3X96lgVanwm+EkY6j4MkeZDXPkzXcpZfX3dlSW + JIC8Kz2lDNOoq6tDWkdepufhqDVzDRA9A2EZMQ4t+uc1Dbp+JdAYt2ycbBIKEzDdqWBVqZDrIYanDUmS + +/coMzMYgUSA2ZpvzYgZaIAIc7BmDCbnz5+/1t8bCv68pkHXLw4aW49hF/PI9v3bVZiq1JEvj5C3+T+l + p5hKnk253/cpVRYTyggNFA0Qi4Y5vjUfP34c498V9j127969i9kPg98vZBp0/bKgcXgiXaxMXtl1p0sF + q0rVP6r3ueSjd1xPt70vZTZj9E95gMjMhDMiM1F8fDy/AapYM1Izkg8dspGaYRqYrX8h06BLY3tR4i9R + 6anR06aM9ZrgkVaXcvTjw8+uTTfiLY6ZCdu1BA1a2tWa2mWa2qWa2iWa2sWktApHauWN1No6UmvLSM2k + EZqbR2huHKG5YYRmXD81YsGbw4wH+/g4h8yeFDpn0tzQKfPnTg1bMH3RwhlLw4MiI+ZErZgXs3rhurXh + CRuWJW5ckZa8OnPLmuzM2G05cfnb4gvzEoryNxYXbCop3KyyR/9m/SKKbm1tNbcxX5W66geFjELAsOix + 0D2oq7tHV6dZ7TwGTXLPp2US5pxEy5cv57TMNUBMgNSakZphzUjN1JppnqMTIJ1NuMFEsTM/0+qj6NLi + JFplJcnKSinfjkpFVZSi0irK0irLtqCqytMVVZFRTSqzpjIzPi7C19dtUsiEbbu3Hnt0RLU+6VNdDzsm + nPWXHBYJWwXCem1htbawXFtYpi0s1RZuJyUo1hIUaAlytQQZWtopWtpJWtqbtbQTtLTjtQS0Ep6WdqTm + CPvh4/xGR61cvCoqfPWqpTHREbFrIzfERW1MWJOcuC49LT4nO6kgP720JKe6Mr9hx/adzRV7d9d2tDUe + 6Np5qHv3kcN7jx9tO3G889SJzjOn9p85daDn9MGeMwd7z3T39hw623v4HOrskfNnj144d+zC+WMXzx+/ + eOHEpYsnL188dfnSqSuXT1+9fObqlZ5rV3reutr71rWz16+du/7Wubevn3/7+oWfTdEI/KmpqT6TfFKq + Us58cUZFtupV9EGR10WvfkxZRcuY/bipZODuJ10nFXuJFyxYwIU5bgJEzOAaYG9vL5ea+7Xmnzdp8NfP + oOisjPXBQRPMbE2WJy7beaVZVcX8Ump50ZWFRkcNhG3awiZtQY22oFIpZE7LRVqCfC3BVi3tdE3tFE2F + luOfFl/R2qs0R7gM9/Z2i1qxKGoF5LwkevWytWsi4tatjN8QnbhpbVpqXGbG5rxtKcWFmRVluXU1RU0N + pbt3Ve/bU9fV0XRw/87DnJyPdZw80Xn6ZNeLpegHDx4UFRVZ2lsu37y8+UKzimb7reZPmidemah3Wo8k + ZczWaqZMAga0XMaek6Nniwae/VDS9VLxaHFISEhFRQWnZRrm0CpUYgadTfgnNLjTRr+QNXPrJyo6LTl6 + 1swAQ1P9eatDyw5tV1XuABV5LcLsuImoQyBs1hbUagkqtQRl2oJSbQGrYlIl2oJCLUGeliBLSzuV1XKi + pvYmTb6WaVFFa0cRLXt5Oq+IDFu5YjHcmVjzmmXrYmHNqzYlxKQkr89I35ibk1SYn162PbsK1lxf0kKs + uaZ93479nc3dB3ZBzkcP7z12DHJuhzufOtn1Qij63LlzSUlJ9q72K5JWNPY2qgh2oEJMhpD1T+tjsFak + i4YBTBkBg57FRw185hMljSG+HBoaSrWMxWmZRmb6TAF6CpQfM37p2aTf9byKzs9NWLZktpeno9NohxUp + y+t7a489OqwsVeWq1PzLc4kjt7OOrBCylqBUS7BdSwAJo6gpI2Bs1RKkI2DAlDW1N2tqb4SWaakqWnuZ + 5gi7N3183FcsD6NyXh21ZE300rUxy2HNmxAzkmK3pMbnZCXmbUvdXpxZWb6tvrawqaGsdSex5s72hoP7 + W7oP7DxyiMgZ7nz8WNvJ4x2/paKROjMzM/UN9WcsmpG5I/PoR0dV1PqM2nJvC4kWJ/s6cl8h9zHlXF7A + GCAso5jlDPJyeHg4P2Pwx7+uri760BQ2/urVq3TO/oh9iR8/ZvwK1sytARW9KWE5hisnB0tHL/sl8YtK + DhYdfXSYX89WdOF7+b49Y5hDYuEebWEjooWWoIInZKJlUtpcUlY1ZZV6qmWtuSOHmw7z9/dZHrEQcmZj + xuI1q5fExixfv25FQvzqxM2IGRuyMjdu24qYkVFetrW2pgCpeVdLxZ7Wmo62BjZptBw62Ao5Hzuy99iR + fXDnE8fbf1VFX7x4EUECxufs7Ry+LrxgX8HJxydVdPrs2v149+zrs8kjI4d0dduUGZlGC3Uhl5OkrDiz + jKnvmaaMYkLJeYzo6GgVLXO+zGmZns6HlrnI/CX7clX+o1O/jpbpIopOTV61NDzIf7ynuZmhg4ft3FUh + GQ1bOm63Kc5F9BUyV+qKbvmgKfhCEOyY5IoWbUG9lqBKS1DOd2SlkIs0tQs1tbdpaWf3FfJTU1YpomXN + iSPeZIbOCJywPGJB5PKFsOaolYuiVy1ZG7OMaHnDqqTNManJ6zMzNuZuTS4q2FLGToA76opbmspbd1W3 + 7YU1YwhsRnA+dHDX0cN7UMeP7mPj8y+v6MDAQEsHy8CFgXF5cTUnan7wfHG/te/TfQtvLLQ5a6N3lD3J + 2craMT9XcELmPRClOH1BTXngpIySJkglARKBRLBlyxb+eQw6+9G8jIwxkJbVH2n9NbVMl8a23Vvbbu3l + TqT1U2papkXlXPp+ydRzk42OGAg7tIU7tYiKq/uqWEXIBRCypna2phZfyAkq+u1TWks1Rzi96eJst2hh + MKvlBSsjw1YRLYevXbNsfSy0HJW4iWo5YSsic0FaaUl2VcW2ejIBlsGalamZyBlJ43A3587IG7+WolW0 + +fyVfT978pXJ5JE9eHH7D6i4jyM/t5BRzCJGZCfiHvejWq6vr29sbKQPl9DZ7+jRo8jLXMZQ0TJ3Zo47 + m/EryxlLQ1W/6tVXyLsetIRfXmR/0lbULRDs0RI0aglqNQVVmkTFnIR5KiZChh1DyLma2lkQ8kit5JFa + iZpaPyRk1EiYsmzo5Em+EUvnRSybp9By1KLo1UvWrolYHxtJtLwxJjVFqeX8tO3FWVUVuXU1hY0N23c2 + le9uJdbc1dGwvxNJQyFnFNz5xVV0xv2MaVenWfZa6h0juZgMeC3KRNGviqkdVyozMn0CBqLFcwiZTH2+ + YoHgqSnzwzI9v9zR0dHd3U3PYyAs0Wd+cnmZZowXQct0/bCiM2+lTz8/1fyYqfCgNpFwk5Z2raZ2NSSs + KSjVFGxnqwTVV8U0V+RpaudoamdoEhUnQcgjtTaN1EoYqbVBE6WNUlMxSnP2iOHmw7w9ncMXh0QsnavQ + 8oqFRMuKjBGZEL+K+HLKusz0BPZURmppCbS8tba6oJGcaC7fvauqbU9dR9sOyPlAFw3OJGzAndlp8MVQ + 9ImvTmTdz0IcdjrnRM60dfNcWF3CfVX81I6RKwrYZ8VRO8aw98yMjCLpYopEqC+MjY3lhMw35d27d9OA + QR/G7u3tpefk6HkM+vxazH4qGeO31TJdfRRd9F7BkiuLvU97GB7RFx5Q6rdOU7tKU7tC+VDedvbRPCJh + toqVNyDkYtaO81k7zuTseKTW5pFaG6FifvWjaM15I4bbvunsbBsaMn3pkpBlS0KXEy3PX7kibPXKxWui + MftFbFi/YmP8qqTEtVtS12dlYPZLLMzfUro9q5L4MrSMyFwGLe/bU9u+r66TyBlJo6n7ADmtcbh7F80b + v42iiz8sjroVhfzgcM6BPAH5sC7x333sRDeQfp+h4u1yeaHyPDKd9GDHA5+1oEWEPE0iNBJGRUXx0wWX + lDH17VNeCBGmzAWMmzdv0ueKP2KvuUWfYquel39bLdOlITygJdirJUAEblCKt5wnXqV++xT74DTRMm4U + jVR48VbWi1VUHK8iZK6eKlozZMRwm2GODtazZ01ZEj4HWoYvL4+YtzJyATv4hcesWbo+dvmGuJWbN0Yn + J63dkhaXnbkpL5ed/bZnVpUrtNzcWNq6k0Tmtr21sObO9h0HOpvYObCZuvNvrOh+lKsuXlp8CfMTBY3G + 1IufW8UoRAvMe0I94Sr2nfbUhYx0QR/xQ1I+wr4G7Sx7IcTr16/DlO/du8eF5W/6Xt7lN5n9nr00BpQt + v1gJK4rEiZHa+SO1c0dqZ5PnWhAJoyBhmigGVDGv4jRHThn+5qihbq72c0OmEyGHz2FNee4KmHIkCRhr + VofHrl0WxwaMpM1rUpMRMOK3Zm/O35ZcXJhetp3k5fragsZ6+HLp7l3QcvW+PfSEBhkCUQeJnOHOirzx + WytaRbb8GkjCiBOcEXOJ4oeiMVcY9sTu4oCAgISEBJVooS7kw4cPn1BeN5W7ECJM+ePnuLLZC7U0VMWL + 4uuXPlGoYKRWPvtcoayRWmkjtJLZ+mEjVi3NsBHD3YcN0xri5+uxeFFw+OLZ0PIymPKyuZHL5q1YvmDV + yrDo1YtjY5aui10eD1PeFJ2SuDadmHICGzAw+KVXlGVXV20jWiYZo7SVnGWuZLUMayZypsGZZOcXVNHq + +kVVyOWlZK4jp4w5F+Yk/BxGTEu6irVjQ2FYWFhhYSFnx3TYQ0am0QLznrqQabq4o7xu6rNN+QXUMl0a + ffRbpKkQL32uW+ZIzS0jNJNHkGe8JY7Q2jxCa9MIrYQRWvEjtOJGqKh1oNJcNmLE2DeH6QxxcbGdNWvi + 4jAIOXjJ4tlLl8yJYJMyTDlq5cLoVYvWRi9ZtzYiPm7F5o1Iymu2pK7LzNiwNXsTa8pppSRgYPDL21FX + 0NRQsrMZGQPjXyWsuW1vDbTc0Vbf2V7PntYg2fnFU7SKeBEh4L/0sTtOvzRI/NBcp1JExRMlQhNhcHBw + WloaVTE9ZUHtmJ61oMMeMvLBgwdptFAXMj198Xnf66a+4KassjS0ckdqITxkjNRMY5XLipc8Y5M+aTNh + hGa84omaRMX8UhMvVyMXDB/uNWyYdIiTo3Xg9PGLFgYtDpsVvih4KYQcHrJsKZsuIuevgpBXL167Zsm6 + WAg5clNCVPLmmLSU2Mz0uJzsjXm5SUUFKaXF6eVlWTWVW2tr8hrqCqmWd7WUw5epNbfvxRBYCy2z7kwM + +gVVtEK5KCiXM1+I97n9l19MGCMeLRbqCOfOnZuZmdmviltaWlr7vncDHfZoRn7rrbcQLQYSMtKFyqPX + L76W6dIgsuWUqxRvv/UMRWuuGDFi4pvDLIYYGel6ezrNmTU5bOFMTshw5GVw5KWhK5bPXbliwaqohWsg + 5JilcRDyhhWbElhHTlmbkRa3NWvjttzNhfkpJUVp5TDlipyaKoTl/Mb6oubGkp1N0HIZIjPVMpHzvtqO + fXBnhI0XX9E/SblcMeGMZDwx4okTJ8bExHASpgMelyjgxZyKu9h3FTh69Ci14wsXLtBLNdDrCNCMTKOF + upBf/HQx0NJQke0zii/nkYuHDx83bJjZkCFDBrm62E6fNm7hvBlh82eELQhaFBYUvmgWosXS8NnLls6J + jJi7MnLeqhULV0ctWrsmfN3apRvWRyRsINEiJTF6SyrnyJsL8pJLiraUbc+oLM+urtxaD1OuL2zaQbW8 + nWh5J7Hmvbtpaq5BvVSKVhPpMwpBgpnBiF3EQhm5jmxcXBx/tKMS5owYuZg+ptfR0UG9mKr4zJkz58+f + v3z5Mt+OP/zwQ/oid+46AjRavOxC5tZzKXrkgjeJfi2GDNUcbG1l4jvGbU7wpAXzAhfMD1w4P5DYcdhM + qHhpOFFxxLKQyIjQFZHzolYsWB0VFhO9KDZmyYZ1bEBOiEravDo1OSY9dV1WxobcnIS8XMx7EHJa2fYt + FaVZ1RU5dTXbGuryG3cUQMstTVTLpdDy7l3le4mcq/btQb1CipbGSpm5jGScRGQlEggE9DrIRew1OSFe + ql8ECc6FOQnvU14Zjl657Pjx40gUvb291IuvX79OVXzv3r0PPviA2jHNFfQhPgx76hn55RUyt/ooemTE + 8BEzhw33HgrzHao12NhYz8XZZkKA97zQqfPnTlswb9qC+dMXLghcpJTwksVExTDi5UuhYtaLVy6IXrUw + JnrxurVL4mKXsel4RdLmVSlJmPRis9LX52TF5+ZsLNiWWFSQXFoMIadXlmVVV+bUVrOmzGq5uQG+XLyz + qQRaboWcd5XvIUmj4uVWNGIDE0jCL1EuI/jB6yDDf2mK4PRL5zq4cHd3N5XwKfbicDBi5OJryneDeu+9 + 9+DF6ir+C/smJHw7fpWEzC0NfV2plaWxh7vdhACvkOBJ89gX5inESwr6nQH9Lg6buWRx0BI2S0RAwstC + EIqjVkDC81kJk0SxPpZNFPHLN29cCRWnEhWvzUpfl50Zx9rx5qL8pJLClO3FqeUkWmSyQs6tr0FSzmus + R1guhJZbmoiWdzaXQMutO5E0EJxfCUVDsHzNYtHYQJUL56URGOJFCoZ44b/Q7wH2ypzQL4Y6BAnOhTkJ + c0aMXIwBj15ci0ZjTsX8dPxKqpi/NBbMnwblhi1AEfEuXkjEG74I4mX9dwn0O5vVb+jKyLmrVs6LXrVg + zSqaJcLjYpfEr18GCcOIEzdFpSStTktZk562NjN9fXZWXG52Qn7upsJ82HHS9qLU0hLkioyqcjhydm0V + MeUdtdt2wJTr85saoGUiZ6rlXc1IGttfNUVTt4Vmdz/fdZAhXgThc+fOUf1evXoVQx30++6773Iu/PDh + Q4RiasRfsW+4hVzMJYr/HBXzl8bS8FnLlqCCly+bHRmBQS5kZWRo1Iq5q6j/kvMSYWvXQL+L49Yt2bB+ + afyGiE3xkYkbVyaTLLEqLSV6CyS8JTY7AxLesG1rQv62jQV5m4sKoeKUUmLHWyrLyOtqqyuyIOS66q11 + NbnQckM968skYxQ2Nxa1kFK486upaAgWbks1+zzXQb558yYixO3bt99nrx9JLZgGCe4SfHBhKmEVI/5P + UzF/aayOQmyYv2b1gpjohbFrwtatXbR+rVK8ccs2xkdu3hiZuGlF8uaoVOg3GfqNydhCskQOceG4bTnx + ebnIxZsK8xKLqYpLiIoryKtr4cgZNZVZNZXZddU5SBc7aomWd9RtY7Wc34Txj7rzf4KiYbUXf8x1kCFe + RAi+fmHBXJBQceH/ZAmrLI2NG5ZtSojYnLA8cWNk0iZMcTBfVrww39Q16akxmelrszJiczLXbc1az7rw + hvzchIJtG4vyNxcXIBcnbS9OKStBpZHX1ZamV5anV8GRKzNrq5AuiJZRVMsNdag8pTv/hykaVvujroPM + 91++fqmEod/fJdzv0khPjc5Ii87YsiZzy5qs9LXZGcgPsax44b/Egql+C/I2FRdAwokl5BWJSaXF5EW1 + ZcSOU1k73gI7plftUGi5WqHl+pqtqN8VTd79DYu6LTRLJzcqW9gup1yEBxXxcv77u36fZ2nkEtnG5W3d + gMrPjS/YllDAXleILaLikkIU4gR9gXhK2fYU1osVV+0gWuZdgYZkjCrk5d8VraZovmCpZlVki6WiXCzF + 3fT7eu6lUZi3EUUlzIqXFO914YprHKCe55pKvyt6QEWzMUEhWCyFYtmluC9+Xz/H0uAkrHJ1A2X1fwWa + 3xX9oxWtAP77+oXXz3CVsN8V/buiX6D1u6J/V/SrtX5X9O+KfrXW74r+XdGv0vq///v/AT08VKulG+4s + AAAAAElFTkSuQmCC + + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/AddPartner.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/AddPartner.Designer.cs new file mode 100644 index 0000000..dd0f39c --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/AddPartner.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/AddPartner.cs new file mode 100644 index 0000000..80561f1 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/AddPartner.cs @@ -0,0 +1,66 @@ +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 : ThemedForms + { + 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("username"); + gobtn.Text = Language.Translate("addcontact_add"); + } + + List FoundUsers = new List(); + + private void searchbtn_Click(object sender, EventArgs e) + { + glacialList1.Items.Clear(); + 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 + 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 (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/v4.0/MSGer.tk/AddPartner.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/AddPartner.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/App.config b/Versions/Less Closed Beta/v4.0/MSGer.tk/App.config new file mode 100644 index 0000000..b8bf97a --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/BeforeLogin.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/BeforeLogin.Designer.cs new file mode 100644 index 0000000..cbd9cc2 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/BeforeLogin.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/BeforeLogin.cs new file mode 100644 index 0000000..4b648d6 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/BeforeLogin.cs @@ -0,0 +1,64 @@ +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 : ThemedForms + { + 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(); + } + + 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 (!done) + Program.Exit(false); + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/BeforeLogin.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/BeforeLogin.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/ChatForm.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatForm.Designer.cs new file mode 100644 index 0000000..80c8738 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatForm.Designer.cs @@ -0,0 +1,49 @@ +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.SuspendLayout(); + // + // 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.Name = "ChatForm"; + this.Text = "Beszélgetés"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ChatForm_FormClosing); + this.ResumeLayout(false); + + } + + #endregion + + } +} \ No newline at end of file diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatForm.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatForm.cs new file mode 100644 index 0000000..0fcc68d --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatForm.cs @@ -0,0 +1,39 @@ +//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 : ThemedForms + { + public ChatForm() + { + InitializeComponent(); + //Amint létrehozom, ez a kód lefut - Nem számit, hogy megjelenik-e + + this.Text = Language.Translate("chat_title", this); + } + + private void ChatForm_FormClosing(object sender, FormClosingEventArgs e) + { + //chatPanel.Close(); + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatForm.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatForm.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatForm.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/v4.0/MSGer.tk/ChatPanel.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatPanel.Designer.cs new file mode 100644 index 0000000..fa13603 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatPanel.Designer.cs @@ -0,0 +1,296 @@ +namespace MSGer.tk +{ + partial class ChatPanel + { + /// + /// 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 Component 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.partnerName = new Khendys.Controls.ExRichTextBox(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.showicons = new System.Windows.Forms.CheckBox(); + this.button1 = new System.Windows.Forms.Button(); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.splitContainer2 = new System.Windows.Forms.SplitContainer(); + this.splitContainer3 = new System.Windows.Forms.SplitContainer(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.masterPanel = new System.Windows.Forms.Panel(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.panel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); + this.splitContainer2.Panel1.SuspendLayout(); + this.splitContainer2.Panel2.SuspendLayout(); + this.splitContainer2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit(); + this.splitContainer3.Panel1.SuspendLayout(); + this.splitContainer3.Panel2.SuspendLayout(); + this.splitContainer3.SuspendLayout(); + this.menuStrip1.SuspendLayout(); + this.masterPanel.SuspendLayout(); + this.SuspendLayout(); + // + // messageTextBox + // + this.messageTextBox.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.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(0, 3); + this.messageTextBox.Name = "messageTextBox"; + this.messageTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; + this.messageTextBox.Size = new System.Drawing.Size(391, 113); + 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.BackColor = System.Drawing.Color.White; + this.recentMsgTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.recentMsgTextBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.recentMsgTextBox.ForeColor = System.Drawing.Color.Black; + this.recentMsgTextBox.HiglightColor = Khendys.Controls.RtfColor.White; + this.recentMsgTextBox.Location = new System.Drawing.Point(0, 0); + this.recentMsgTextBox.Name = "recentMsgTextBox"; + this.recentMsgTextBox.ReadOnly = true; + this.recentMsgTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; + this.recentMsgTextBox.Size = new System.Drawing.Size(391, 160); + this.recentMsgTextBox.TabIndex = 4; + 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.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(169, 363); + this.panel1.TabIndex = 0; + // + // panel2 + // + this.panel2.Controls.Add(this.partnerName); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(391, 39); + this.panel2.TabIndex = 0; + // + // 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(337, 25); + this.partnerName.TabIndex = 3; + this.partnerName.Text = "partnerName"; + this.partnerName.TextColor = Khendys.Controls.RtfColor.Black; + // + // openFileDialog1 + // + this.openFileDialog1.FileName = "openFileDialog1"; + // + // showicons + // + this.showicons.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.showicons.AutoSize = true; + this.showicons.Location = new System.Drawing.Point(2, 126); + this.showicons.Name = "showicons"; + this.showicons.Size = new System.Drawing.Size(76, 17); + this.showicons.TabIndex = 1; + this.showicons.Text = "showicons"; + this.showicons.UseVisualStyleBackColor = true; + this.showicons.CheckedChanged += new System.EventHandler(this.showicons_CheckedChanged); + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.button1.Location = new System.Drawing.Point(313, 122); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 2; + this.button1.Text = "handwriting"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // splitContainer1 + // + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer1.Location = new System.Drawing.Point(0, 0); + this.splitContainer1.Name = "splitContainer1"; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.panel1); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.splitContainer2); + this.splitContainer1.Size = new System.Drawing.Size(564, 363); + this.splitContainer1.SplitterDistance = 169; + this.splitContainer1.TabIndex = 7; + this.splitContainer1.TabStop = false; + // + // splitContainer2 + // + this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer2.Location = new System.Drawing.Point(0, 0); + this.splitContainer2.Name = "splitContainer2"; + this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer2.Panel1 + // + this.splitContainer2.Panel1.Controls.Add(this.splitContainer3); + // + // splitContainer2.Panel2 + // + this.splitContainer2.Panel2.Controls.Add(this.showicons); + this.splitContainer2.Panel2.Controls.Add(this.button1); + this.splitContainer2.Panel2.Controls.Add(this.messageTextBox); + this.splitContainer2.Size = new System.Drawing.Size(391, 363); + this.splitContainer2.SplitterDistance = 203; + this.splitContainer2.TabIndex = 2; + this.splitContainer2.TabStop = false; + // + // splitContainer3 + // + this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer3.Location = new System.Drawing.Point(0, 0); + this.splitContainer3.Name = "splitContainer3"; + this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer3.Panel1 + // + this.splitContainer3.Panel1.Controls.Add(this.panel2); + // + // splitContainer3.Panel2 + // + this.splitContainer3.Panel2.Controls.Add(this.recentMsgTextBox); + this.splitContainer3.Size = new System.Drawing.Size(391, 203); + this.splitContainer3.SplitterDistance = 39; + this.splitContainer3.TabIndex = 2; + this.splitContainer3.TabStop = false; + // + // menuStrip1 + // + this.menuStrip1.BackgroundImage = global::MSGer.tk.Properties.Resources.Menü_2; + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileToolStripMenuItem}); + 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(564, 24); + this.menuStrip1.TabIndex = 0; + this.menuStrip1.Text = "menuStrip1"; + // + // masterPanel + // + this.masterPanel.Controls.Add(this.splitContainer1); + this.masterPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.masterPanel.Location = new System.Drawing.Point(0, 24); + this.masterPanel.Name = "masterPanel"; + this.masterPanel.Size = new System.Drawing.Size(564, 363); + this.masterPanel.TabIndex = 0; + // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.fileToolStripMenuItem.Text = "File"; + // + // ChatPanel + // + 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.Controls.Add(this.masterPanel); + this.Controls.Add(this.menuStrip1); + this.Name = "ChatPanel"; + this.Size = new System.Drawing.Size(564, 387); + this.Load += new System.EventHandler(this.ChatForm_Load); + this.panel2.ResumeLayout(false); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); + this.splitContainer1.ResumeLayout(false); + this.splitContainer2.Panel1.ResumeLayout(false); + this.splitContainer2.Panel2.ResumeLayout(false); + this.splitContainer2.Panel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); + this.splitContainer2.ResumeLayout(false); + this.splitContainer3.Panel1.ResumeLayout(false); + this.splitContainer3.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit(); + this.splitContainer3.ResumeLayout(false); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.masterPanel.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; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + private System.Windows.Forms.CheckBox showicons; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.SplitContainer splitContainer2; + private System.Windows.Forms.SplitContainer splitContainer3; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.Panel masterPanel; + private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatPanel.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatPanel.cs new file mode 100644 index 0000000..cce50eb --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatPanel.cs @@ -0,0 +1,370 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.IO; +using System.Net; +using System.Net.Sockets; +using HdSystemLibrary.IO; +using System.Diagnostics; +using Handwriting_program; + +namespace MSGer.tk +{ + public partial class ChatPanel : UserControl + { + //public static List ChatWindows = new List(); + public static List ChatWindows = new List(); + public List ChatPartners = new List(); + private string chatname = ""; + public string ChatName //2014.12.13. - A beszélgetés neve + { + get + { + return chatname; + } + set + { + chatname = value; + this.Text = chatname; + } + } + public ChatPanel() + { + InitializeComponent(); + //Amint létrehozom, ez a kód lefut - Nem számit, hogy megjelenik-e + + this.Text = Language.Translate("chat_title", this); + showicons.Text = Language.Translate("chat_showicons", 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) - A partnerinformációkat bal oldalt jelezze, akárhányan vannak, hogy egységes legyen + { - Felül a csoportnév látszódjon + partnerName.Text = ChatPartners[0].Name; + TextFormat.Parse(partnerName); + partnerMsg.Text = ChatPartners[0].Message; + TextFormat.Parse(partnerMsg); + switch (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; + } + } + }*/ + if (ChatName.Length == 0) + { + this.Text = ""; + foreach (var item in ChatPartners) + this.Text += item.Name + ", "; + this.Text = this.Text.Remove(this.Text.Length - 2); + partnerName.Text = this.Text; + this.Text += " - " + Language.Translate("chat_title"); + Language.ReloadEvent += delegate + { + if (ChatName.Length != 0) + return; + this.Text = ""; + foreach (var item in ChatPartners) + this.Text += item.Name + ", "; + this.Text = this.Text.Remove(this.Text.Length - 2); + partnerName.Text = this.Text; + this.Text += " - " + Language.Translate("chat_title"); + }; + } + else + { + this.Text = ChatName; + } + Parent.Parent.Text = this.Text; //2014.12.22. + messageTextBox.Select(); + } + + 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 || !messageTextBox.Visible) //Visible: 2014.11.07. + return; + messageTextBox.ReadOnly = true; + if (!Networking.SendChatMessage(this, messageTextBox.Text)) + MessageBox.Show(Language.Translate("networking_alone")); + else //else: 2014.10.31. + messageTextBox.Text = ""; + //messageTextBox.Focus(); + messageTextBox.Select(); //2014.12.13. + 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); + } + + /*private void ChatForm_FormClosing(object sender, FormClosingEventArgs e) + { + ChatWindows.Remove(this); + }*/ + + public static ChatPanel 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; + } + + 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 (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; + } + } + + public void Close() + { + ChatWindows.Remove(this); + if (Storage.Settings["chatwindow"] == "0" ^ SettingsForm.ApplyingSettings) //Ha az új beállítás szerint(!) külön ablakokban kell megjeleníteni, akkor hajtsa végre + { //2014.10.31. + this.Dispose(); + if (ChatIcon != null) //Most már nem feltétlenül változik a beállítás + ChatIcon.Dispose(); + } + /*else + ((Form)this.Parent).Close();*/ + } + + public void Init() + { //2014.10.28. + if (!Storage.LoggedInSettings.ContainsKey("chatwindow")) //2014.12.05. + Storage.LoggedInSettings.Add("chatwindow", "0"); //2014.12.05. + if (Storage.Settings["chatwindow"] == "1") + { + //ChatForm a ChatPanel-lel + var cf = new ChatForm(); + cf.Controls.Add(this); + cf.FormClosing += cf_FormClosing; + this.Dock = DockStyle.Fill; + cf.Show(); + //cf.Focus(); + cf.Select(); //2014.12.13. + } + else + { + Program.MainF.Controls.Add(this); + Program.MainF.PlaceChatIcon(this); + this.BringToFront(); + this.Show(); + } + } + + void cf_FormClosing(object sender, FormClosingEventArgs e) + { + this.Close(); + } + + internal static void ReopenChatWindows(bool settingchanged) + { + for (int i = 0; i < ChatWindows.Count; i++) + { + var tmp = ChatWindows[i].ChatPartners; + if (settingchanged) + { + if (Storage.Settings["chatwindow"] == "0") //Ha az új beállítás szerint(!) külön ablakokban kell megjeleníteni, akkor hajtsa végre + ((Form)ChatWindows[i].Parent.Parent).Close(); //Ezzel meghívja a saját Close()-ját is + else + ChatWindows[i].Close(); + } + else + { + if (Storage.Settings["chatwindow"] == "1") //Ha a régi beállítás szerint(!) külön ablakokban kell megjeleníteni, akkor hajtsa végre + ((Form)ChatWindows[i].Parent.Parent).Close(); //Ezzel meghívja a saját Close()-ját is + else + ChatWindows[i].Close(); + } + var tmp2 = new ChatPanel(); + tmp2.ChatPartners = tmp; + tmp2.Init(); + ChatWindows.Add(tmp2); + } + } + + public new void Show() + { + if (Storage.Settings["chatwindow"] == "0") + { + foreach (var item in ChatWindows) + { + item.Hide(); + } + //this.Location = new Point(this.ChatIcon.Location.X + 150, this.ChatIcon.Location.Y); + //A ChatIcon-hoz a legközelebbi helyre rakja - Vagy fedje be kb. a partnerlistát, úgyis elég nagy + this.Location = new Point(150, Program.MainF.contactList.Location.Y); + } + base.Show(); + } + + public PictureBox ChatIcon { get; set; } + + public Handwriting handw; + private void button1_Click(object sender, EventArgs e) + { + if (messageTextBox.Visible) + { + if (handw == null) + { + handw = new Handwriting(); + handw.Parent = this.splitContainer2.Panel2; + handw.Bounds = messageTextBox.Bounds; + handw.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + handw.sendbtn.Text = Language.Translate("sendbtn_send", handw.sendbtn); + handw.sendbtn.Click += Handw_sendbtn_Click; + } + else + handw.Show(); + messageTextBox.Hide(); + } + else + { + handw.Hide(); + messageTextBox.Show(); + } + } + + void Handw_sendbtn_Click(object sender, EventArgs e) + { + handw.GetBitmap().Save("test.bmp"); + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatPanel.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatPanel.resx new file mode 100644 index 0000000..cbf9d91 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/ChatPanel.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 157, 17 + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/CurrentUser.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/CurrentUser.cs new file mode 100644 index 0000000..1ce0617 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/CurrentUser.cs @@ -0,0 +1,227 @@ +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 + { + 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 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 + { + get + { + return Language.FromString(Storage.Settings["lang"]); + } + set + { + Storage.Settings["lang"] = value.ToString(); + } + } + 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 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 + { + 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 + { + 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(); + } + } + //public static IPAddress IP; + public static List IPs; + 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 = ""; + 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 int PicUpdateTime + { + get + { + if (!Storage.LoggedInSettings.ContainsKey("currentuser_picupdatetime")) + Storage.LoggedInSettings.Add("currentuser_picupdatetime", "0"); + return Int32.Parse(Storage.LoggedInSettings["currentuser_picupdatetime"]); + } + set + { + if (!Storage.LoggedInSettings.ContainsKey("currentuser_picupdatetime")) + Storage.LoggedInSettings.Add("currentuser_picupdatetime", "0"); + Storage.LoggedInSettings["currentuser_picupdatetime"] = value.ToString(); + } + } + public static bool SendChanges = false; + + 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); + retstr += UserID + "_picupdatetime=" + PicUpdateTime; + //while (true) + //{ + //byte[][] resp = Networking.SendUpdate(Networking.UpdateType.ListUpdate, Encoding.Unicode.GetBytes(retstr), false); + //bool fine = false; //Elvileg így az event működésekor is tudja használni, és utána ha minden rendben, akkor törli az objectet + Networking.SendUpdateInThread(Networking.UpdateType.ListUpdate, Encoding.Unicode.GetBytes(retstr), null); + /*(e, resp) => + { + if (resp == null || resp.Length == 0) + fine = true; + foreach (var item in resp) //Ha sehonnan nem kapott választ (egy perc után), újrapróbálkozik + { + if (Networking.ParsePacket(item).Data[0] == 0x01) //2014.09.19. + fine = true; + }*/ + /*if (fine) + break;*/ + //} + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/ErrorHandling.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/ErrorHandling.cs new file mode 100644 index 0000000..72e47a4 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/ICMPPacket.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/ICMPPacket.cs new file mode 100644 index 0000000..bc0378e --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/ICMPPacket.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; + +namespace MSGer.tk +{ + public static class ICMPPacket + { + public const byte Type = ICMP_ECHO; + public const byte SubCode = 0; + public const byte RespType = ICMP_TIME_EXCEEDED; + public const byte RespCode = 1; + public const UInt16 CheckSum = 0; + public const UInt16 Identifier = 52; + public const UInt16 SequenceNumber = 84; + public static readonly byte[] Data = Encoding.Unicode.GetBytes("MSGer.tk connection"); + + public const byte ICMP_ECHO = 8; + public const byte ICMP_REPLY = 0; + public const byte ICMP_TIME_EXCEEDED = 11; + + public static byte[] CreateRequest() //2015.02.05. + { + var data = new List(); + data.Add(Type); + data.Add(SubCode); + data.AddRange(BitConverter.GetBytes(CheckSum)); + data.AddRange(BitConverter.GetBytes(Identifier)); + data.AddRange(BitConverter.GetBytes(SequenceNumber)); + data.AddRange(Data); + return data.ToArray(); + } + + public static byte[] CreateReply() + { + //ICMPPacket packet = new ICMPPacket(); + var data = new List(); + data.Add(RespType); + data.Add(RespCode); + data.AddRange(BitConverter.GetBytes(CheckSum)); + data.AddRange(BitConverter.GetBytes((int)0)); //4 bytes unused + data.AddRange(CreateRequest()); //Original packet + return data.ToArray(); + } + + public static bool IsPacketGood(byte[] bytes) + { + return (bytes[0] == ICMP_TIME_EXCEEDED); + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/InvitePartner.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/InvitePartner.Designer.cs new file mode 100644 index 0000000..71499a7 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/InvitePartner.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/InvitePartner.cs new file mode 100644 index 0000000..f058542 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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 : ThemedForms + { + 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/v4.0/MSGer.tk/InvitePartner.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/InvitePartner.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Language.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Language.cs new file mode 100644 index 0000000..ca28fd2 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/Language.cs @@ -0,0 +1,108 @@ +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 static Dictionary Controls = 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]); + var finaldict = new Dictionary(); + foreach(var item in dict) + { + var spl = item.Key.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + foreach(var key in spl) + { + finaldict.Add(key, item.Value); //Hozzáadja az összes felsorolt keyt külön, ugyanazzal az értékkel + } + } + new Language(new FileInfo(files[x]).Name.Split('.')[0]).Strings = finaldict; //(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) + { + 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; + UsedLangs.TryGetValue(value, out tmp); + return tmp; + } + public static Language GetCurrentLanguage() //Javítva Cuurent-ről Current-re: 2014.12.13. - Már régóta ki akartam javítani + { + return Language.FromString(Storage.Settings["lang"]); + } + public static string Translate(string id, Control defaultevent = null) //Csak akkor kell az event, ha látszódik az adott ablak, amikor átállítódik - Tehát csak MainForm és ChatForm + { //2014.08.19. + Language lang = GetCurrentLanguage(); + if (lang.Strings.ContainsKey(id)) + { + if (defaultevent != null) //2014.12.22. + ReloadEvent += delegate { defaultevent.Text = lang.Strings[id]; }; //2014.12.22. + return lang.Strings[id]; + } + else + { + MessageBox.Show("Translation string not found: " + id + "\nIn file: " + lang + ".txt"); + return "Str not found"; + } + } + public static event EventHandler ReloadEvent; + public static void ReloadLangs() + { + ChatPanel.ReopenChatWindows(false); + ReloadEvent(null, null); + Program.MainF.contactList.Items.Clear(); + Program.MainF.LoadPartnerList(); + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Logging.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Logging.cs new file mode 100644 index 0000000..982b180 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/Logging.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace MSGer.tk +{ + public class Logging + { + public enum LogType + { + Network + } + public static void Log(string message, LogType logtype) //2014.12.31. + { + if (!Directory.Exists("logs")) + Directory.CreateDirectory("logs"); + string path; + switch (logtype) + { + case LogType.Network: + path = "network"; + break; + default: + throw new NotImplementedException("Log type not implemented."); + } + string finaltext = "[" + Process.GetCurrentProcess().Id + ": " + Thread.CurrentThread.Name + " | " + DateTime.Now.ToString("yyyy.MM.dd. HH:mm:ss") + "] " + message + Environment.NewLine; + Console.WriteLine(logtype.ToString() + " - " + finaltext); + while(true) + { + bool retry = false; + try + { + File.AppendAllText("logs\\" + path + ".txt", finaltext); + } + catch(IOException) + { + retry = true; + } + if (!retry) + break; + } + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/LoginForm.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/LoginForm.Designer.cs new file mode 100644 index 0000000..9318efa --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/LoginForm.Designer.cs @@ -0,0 +1,202 @@ +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.Controls.SetChildIndex(this.label1, 0); + this.Controls.SetChildIndex(this.label2, 0); + this.Controls.SetChildIndex(this.textBox1, 0); + this.Controls.SetChildIndex(this.label3, 0); + this.Controls.SetChildIndex(this.textBox2, 0); + this.Controls.SetChildIndex(this.button1, 0); + this.Controls.SetChildIndex(this.textBox3, 0); + this.Controls.SetChildIndex(this.linkLabel1, 0); + this.Controls.SetChildIndex(this.linkLabel2, 0); + 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/v4.0/MSGer.tk/LoginForm.LoginUser.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/LoginForm.LoginUser.cs new file mode 100644 index 0000000..a1e92e3 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/LoginForm.LoginUser.cs @@ -0,0 +1,206 @@ +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 +{ + partial class LoginForm + { + 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. + /*postData += "&myip=" + Dns.GetHostEntry(Dns.GetHostName()).AddressList.Single(entry => + entry.AddressFamily == AddressFamily.InterNetwork + && (entry.ToString().Contains("192.168.0.") || entry.ToString().Contains("192.168.1.") || entry.ToString().Contains("10.0.0.") || entry.ToString().Contains("172.16.0.")) //Helyi IP-k + ); //2014.11.15. - Pontok téve az IP-prefixek után, hogy pontos legyen az egyezés: 2014.12.22. + */ //Nincs már szükség rá; IPv6 + 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; + } + } + + 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(); + + /* + * respstr: + * 0: uid + * 1: username + * 2: myip + * 3: server ips + * 4: non-server ips + * 5: server same ips + * 6: non-server same ips + * 7: password + */ + string[] respstr = responseString.Split('ͦ'); + + //if (respstr[3].Contains("Fail")) + if(respstr.Any(entry=>entry.Contains("Fail"))) //2014.12.05. + { + this.Invoke(new MyDelegate(ResetAfterLogin)); + //MessageBox.Show(respstr[3]); + try + { + MessageBox.Show(respstr.Single(entry => entry.Contains("Fail"))); //2014.12.05. + } + catch { } + return; + } + //string[] entries = respstr[(int)LoginInfo.ServerIPs].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); + string[] entries = respstr[(int)LoginInfo.IPs].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 = new HashSet(ips); //2014.08.30. + //UserInfo.IPs = new HashSet(ips.Select(entry => new IPEndPoint(entry, true))); //2014.11.23. + //CurrentUser.IP = IPAddress.Parse(respstr[(int)LoginInfo.MyIP]); //2014.10.24. - Most már csak ott lehet rá hivatkozni, felesleges eltárolni + CurrentUser.IPs = new List(respstr[(int)LoginInfo.MyIP].Split(new char[] { ';' }).Select(entry => IPAddress.Parse(entry))); + + /*entries = respstr[(int)LoginInfo.NonServerIPs].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); + ips = entries.Select(entry => ((entry != ":") ? new IPEndPoint(IPAddress.Parse(entry.Split(':')[0]), Int32.Parse(entry.Split(':')[1])) : new IPEndPoint(IPAddress.Loopback, 0))); + foreach (var item in ips) + UserInfo.IPs.Add(new IPEndPoint(item, false)); //2014.11.23.*/ + + /*entries = respstr[(int)LoginInfo.ServerIPsOnNAT].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); //2014.12.18. + ips = entries.Select(entry => ((entry != ":") ? new IPEndPoint(IPAddress.Parse(entry.Split(':')[0]), Int32.Parse(entry.Split(':')[1])) : new IPEndPoint(IPAddress.Loopback, 0))); //2014.12.18. + foreach (var item in ips) //2014.12.18. + UserInfo.IPs.Add(new IPEndPoint(item, true)); //2014.12.18.*/ + + /*entries = respstr[(int)LoginInfo.NonServerIPsOnNat].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); //2014.12.18. + ips = entries.Select(entry => ((entry != ":") ? new IPEndPoint(IPAddress.Parse(entry.Split(':')[0]), Int32.Parse(entry.Split(':')[1])) : new IPEndPoint(IPAddress.Loopback, 0))); //2014.12.18. + foreach (var item in ips) //2014.12.18. + UserInfo.IPs.Add(new IPEndPoint(item, false)); //2014.12.18.*/ + + /*entries = respstr[(int)LoginInfo.IPs].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); + ips = entries.Select(entry => ((entry != ":") ? new IPEndPoint(IPAddress.Parse(entry.Split(':')[0]), Int32.Parse(entry.Split(':')[1])) : new IPEndPoint(IPAddress.Loopback, 0))); + f*oreach (var item in ips) + UserInfo.IPs.Add(item);*/ + + //2014.09.19. - Bejelentkezés elküldése áthelyezve a MainForm-ba + + CurrentUser.UserID = Int32.Parse(respstr[(int)LoginInfo.UserID]); //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 = respstr[(int)LoginInfo.UserID] + ".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[(int)LoginInfo.Password]; //2014.10.24. 1:39 + LoginForm.UserCode = CalculateMD5Hash(ReceivedPass + " Some text because why not " + CurrentUser.UserID).ToLower(); + + Closeable = true; + this.Invoke(new MyDelegate(SetLoginValues)); + } + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/LoginForm.RegistrationForm.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/LoginForm.RegistrationForm.Designer.cs new file mode 100644 index 0000000..6bfb4b3 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/LoginForm.RegistrationForm.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/LoginForm.RegistrationForm.cs new file mode 100644 index 0000000..b784d44 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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 : ThemedForms + { + 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/v4.0/MSGer.tk/LoginForm.RegistrationForm.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/LoginForm.RegistrationForm.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/LoginForm.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/LoginForm.cs new file mode 100644 index 0000000..83fd0ca --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/LoginForm.cs @@ -0,0 +1,200 @@ +//#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; +using System.Net.Sockets; + +namespace MSGer.tk +{ + public partial class LoginForm : ThemedForms + { + 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(); + 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. + 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 enum LoginInfo + { + UserID, + UserName, + MyIP, + //ServerIPs, + //NonServerIPs, + //ServerIPsOnNAT, + //NonServerIPsOnNat, + IPs, + Password + } + + 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/v4.0/MSGer.tk/LoginForm.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/LoginForm.resx new file mode 100644 index 0000000..7938e5e --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/MSGer.tk.csproj b/Versions/Less Closed Beta/v4.0/MSGer.tk/MSGer.tk.csproj new file mode 100644 index 0000000..96fdef3 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/MSGer.tk.csproj @@ -0,0 +1,319 @@ + + + + + Debug + AnyCPU + {F60940C0-05FC-46C0-948E-6DBECBBE38DD} + WinExe + Properties + MSGer.tk + MSGer.tk + v4.5 + 512 + false + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + true + + + 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 + + + UserControl + + + ChatPanel.cs + + + + + + Form + + + InvitePartner.cs + + + + + Form + + + LoginForm.RegistrationForm.cs + + + Form + + + MainForm.cs + + + Form + + + LoginForm.cs + + + Form + + + + + + Form + + + Notifier.cs + + + Form + + + PartnerInformation.cs + + + + Form + + + SettingsForm.cs + + + + + + + Form + + + ThemedForms.cs + + + + + + + True + True + Resources.resx + + + Form + + + SelectPartnerForm.cs + + + + AboutBox1.cs + + + AddPartner.cs + + + BeforeLogin.cs + + + ChatForm.cs + + + ChatPanel.cs + + + InvitePartner.cs + + + LoginForm.RegistrationForm.cs + + + MainForm.cs + + + LoginForm.cs + + + Notifier.cs + + + PartnerInformation.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + SelectPartnerForm.cs + + + SettingsForm.cs + + + ThemedForms.cs + + + Form + + + + + 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 + + + + + {9ded0c68-3f97-4b14-88d8-f76a749f8943} + Handwriting program + + + {ae5ca7f1-d19e-479b-b06b-39c1280c5005} + RichListView + + + + + {1C565858-F302-471E-B409-F180AA4ABEC6} + 1 + 0 + 0 + tlbimp + False + True + + + + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/MSGer.tk.csproj.user b/Versions/Less Closed Beta/v4.0/MSGer.tk/MSGer.tk.csproj.user new file mode 100644 index 0000000..be7881f --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/MSGer.tk.sln b/Versions/Less Closed Beta/v4.0/MSGer.tk/MSGer.tk.sln new file mode 100644 index 0000000..7e30d2e --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/MSGer.tk.sln @@ -0,0 +1,45 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Express 2013 for Windows Desktop +VisualStudioVersion = 12.0.30723.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSGer.tk", "MSGer.tk.csproj", "{F60940C0-05FC-46C0-948E-6DBECBBE38DD}" + ProjectSection(ProjectDependencies) = postProject + {FCEAE638-329B-4392-8A9E-FEABEACBA077} = {FCEAE638-329B-4392-8A9E-FEABEACBA077} + {9DED0C68-3F97-4B14-88D8-F76A749F8943} = {9DED0C68-3F97-4B14-88D8-F76A749F8943} + {AE5CA7F1-D19E-479B-B06B-39C1280C5005} = {AE5CA7F1-D19E-479B-B06B-39C1280C5005} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Handwriting program", "..\Handwriting program\Handwriting program\Handwriting program.csproj", "{9DED0C68-3F97-4B14-88D8-F76A749F8943}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RichListView", "..\RichListView\RichListView\RichListView.csproj", "{AE5CA7F1-D19E-479B-B06B-39C1280C5005}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Updater", "..\Updater\Updater.csproj", "{FCEAE638-329B-4392-8A9E-FEABEACBA077}" +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 + {9DED0C68-3F97-4B14-88D8-F76A749F8943}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9DED0C68-3F97-4B14-88D8-F76A749F8943}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9DED0C68-3F97-4B14-88D8-F76A749F8943}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9DED0C68-3F97-4B14-88D8-F76A749F8943}.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 + {FCEAE638-329B-4392-8A9E-FEABEACBA077}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FCEAE638-329B-4392-8A9E-FEABEACBA077}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FCEAE638-329B-4392-8A9E-FEABEACBA077}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FCEAE638-329B-4392-8A9E-FEABEACBA077}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/MSGer.tk.v11.suo b/Versions/Less Closed Beta/v4.0/MSGer.tk/MSGer.tk.v11.suo new file mode 100644 index 0000000..88974bf Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/MSGer.tk.v11.suo differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/MSGer.tk.v12.suo b/Versions/Less Closed Beta/v4.0/MSGer.tk/MSGer.tk.v12.suo new file mode 100644 index 0000000..e56b454 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/MSGer.tk.v12.suo differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/MainForm.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/MainForm.Designer.cs new file mode 100644 index 0000000..b4ad18d --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/MainForm.Designer.cs @@ -0,0 +1,897 @@ +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(); + SzNPProjects.RichListViewColumn richListViewColumn3 = new SzNPProjects.RichListViewColumn(); + SzNPProjects.RichListViewColumn richListViewColumn4 = 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.panel2 = new System.Windows.Forms.Panel(); + this.textBox1 = new System.Windows.Forms.TextBox(); + 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.contactList = new SzNPProjects.RichListView(); + this.MainPanel = new System.Windows.Forms.Panel(); + this.searchListView = new SzNPProjects.RichListView(); + this.statusStrip2 = new System.Windows.Forms.StatusStrip(); + this.servers = new System.Windows.Forms.ToolStripStatusLabel(); + this.onlineservers = new System.Windows.Forms.ToolStripStatusLabel(); + this.mainserver = new System.Windows.Forms.ToolStripStatusLabel(); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel(); + this.chatIconMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.listPartnerMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.iconMenu.SuspendLayout(); + this.panel2.SuspendLayout(); + this.menuStrip1.SuspendLayout(); + this.MainPanel.SuspendLayout(); + this.statusStrip2.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); + // + // 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.Cursor = System.Windows.Forms.Cursors.IBeam; + this.panel2.Location = new System.Drawing.Point(3, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(494, 31); + this.panel2.TabIndex = 5; + this.panel2.Click += new System.EventHandler(this.panel2_Click); + // + // 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(485, 13); + this.textBox1.TabIndex = 3; + this.textBox1.Text = "Ismerősök keresése..."; + this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); + this.textBox1.Enter += new System.EventHandler(this.ClearSearchBar); + this.textBox1.Leave += new System.EventHandler(this.PutTextInSearchBar); + // + // 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(799, 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; + // + // 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(3, 40); + this.contactList.Name = "contactList"; + this.contactList.SelectedIndex = -1; + this.contactList.SelectionColor = System.Drawing.Color.Aqua; + this.contactList.Size = new System.Drawing.Size(494, 468); + this.contactList.TabIndex = 0; + this.contactList.ItemDoubleClicked += new System.EventHandler(this.contactList_ItemDoubleClicked); + this.contactList.ItemRightClicked += new System.EventHandler(this.contactList_ItemRightClicked); + // + // MainPanel + // + this.MainPanel.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.MainPanel.Controls.Add(this.searchListView); + this.MainPanel.Controls.Add(this.contactList); + this.MainPanel.Controls.Add(this.statusStrip2); + this.MainPanel.Controls.Add(this.panel2); + this.MainPanel.Location = new System.Drawing.Point(150, 27); + this.MainPanel.Name = "MainPanel"; + this.MainPanel.Size = new System.Drawing.Size(500, 533); + this.MainPanel.TabIndex = 9; + // + // searchListView + // + this.searchListView.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.searchListView.AutoScroll = true; + this.searchListView.AutoUpdate = true; + this.searchListView.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange; + this.searchListView.ColumnAutoFill = true; + richListViewColumn3.Text = null; + richListViewColumn3.Width = 50; + richListViewColumn4.Text = null; + richListViewColumn4.Width = 100; + this.searchListView.Columns = new SzNPProjects.RichListViewColumn[] { + richListViewColumn3, + richListViewColumn4}; + this.searchListView.HeaderHeight = 0; + this.searchListView.ItemHeight = 50; + this.searchListView.Location = new System.Drawing.Point(3, 32); + this.searchListView.Name = "searchListView"; + this.searchListView.SelectedIndex = -1; + this.searchListView.SelectionColor = System.Drawing.Color.Aqua; + this.searchListView.Size = new System.Drawing.Size(494, 363); + this.searchListView.TabIndex = 7; + this.searchListView.Visible = false; + // + // statusStrip2 + // + this.statusStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.servers, + this.onlineservers, + this.mainserver}); + this.statusStrip2.Location = new System.Drawing.Point(0, 511); + this.statusStrip2.Name = "statusStrip2"; + this.statusStrip2.Size = new System.Drawing.Size(500, 22); + this.statusStrip2.SizingGrip = false; + this.statusStrip2.TabIndex = 6; + // + // servers + // + this.servers.Name = "servers"; + this.servers.Size = new System.Drawing.Size(43, 17); + this.servers.Text = "servers"; + // + // onlineservers + // + this.onlineservers.Name = "onlineservers"; + this.onlineservers.Size = new System.Drawing.Size(76, 17); + this.onlineservers.Text = "onlineservers"; + // + // mainserver + // + this.mainserver.Name = "mainserver"; + this.mainserver.Size = new System.Drawing.Size(366, 17); + this.mainserver.Spring = true; + this.mainserver.Text = "mainserver"; + this.mainserver.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.flowLayoutPanel1.AutoScroll = true; + this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 27); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(150, 533); + this.flowLayoutPanel1.TabIndex = 10; + this.flowLayoutPanel1.WrapContents = false; + this.flowLayoutPanel1.Click += new System.EventHandler(this.flowLayoutPanel1_Click); + // + // flowLayoutPanel2 + // + this.flowLayoutPanel2.AutoScroll = true; + this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Right; + this.flowLayoutPanel2.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flowLayoutPanel2.Location = new System.Drawing.Point(649, 24); + this.flowLayoutPanel2.Name = "flowLayoutPanel2"; + this.flowLayoutPanel2.Size = new System.Drawing.Size(150, 538); + this.flowLayoutPanel2.TabIndex = 11; + this.flowLayoutPanel2.WrapContents = false; + this.flowLayoutPanel2.Click += new System.EventHandler(this.flowLayoutPanel1_Click); + // + // chatIconMenu + // + this.chatIconMenu.Name = "contextMenuStrip1"; + this.chatIconMenu.Size = new System.Drawing.Size(61, 4); + // + // listPartnerMenu + // + this.listPartnerMenu.Name = "listPartnerMenu"; + this.listPartnerMenu.Size = new System.Drawing.Size(61, 4); + // + // 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(799, 562); + this.Controls.Add(this.MainPanel); + this.Controls.Add(this.flowLayoutPanel2); + this.Controls.Add(this.flowLayoutPanel1); + 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.MainPanel.ResumeLayout(false); + this.MainPanel.PerformLayout(); + this.statusStrip2.ResumeLayout(false); + this.statusStrip2.PerformLayout(); + 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.Panel panel2; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1; + private System.Windows.Forms.ImageList partnerImages; + 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; + private System.Windows.Forms.Panel MainPanel; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2; + private System.Windows.Forms.StatusStrip statusStrip2; + private System.Windows.Forms.ToolStripStatusLabel servers; + private System.Windows.Forms.ToolStripStatusLabel onlineservers; + private System.Windows.Forms.ToolStripStatusLabel mainserver; + private System.Windows.Forms.ContextMenuStrip chatIconMenu; + private System.Windows.Forms.ContextMenuStrip listPartnerMenu; + internal SzNPProjects.RichListView searchListView; + } +} + diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/MainForm.Events.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/MainForm.Events.cs new file mode 100644 index 0000000..0952458 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/MainForm.Events.cs @@ -0,0 +1,316 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + partial class MainForm + { + private void PopupCloseClick(object sender, EventArgs e) + { + MessageBox.Show("Close"); + } + + private void PopupClick(object sender, EventArgs e) + { + MessageBox.Show("Click"); + } + + private void LoginNewUser(object sender, EventArgs e) + { + Storage.Save(true); //2014.09.19. + 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 == null) //2014.08.30. - Erre nagyon sokáig nem volt felkészítve, és ezt kihasználtam a kijelentkezéshez + { + if (Networking.SendRequest("setstate", 0 + "", 0, true).Contains("Fail")) //Kijelentkezés - if: 2014.11.15. + MessageBox.Show(Language.Translate("error")); + //byte[] tmpb = Encoding.Unicode.GetBytes(CurrentUser.IP.ToString()); + string str = ""; + foreach (var ip in CurrentUser.IPs) + str += ip + ";"; + byte[] tmpb = Encoding.Unicode.GetBytes(str); + 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); + Networking.SendUpdateInThread(Networking.UpdateType.LogoutUser, sendb, null); + CurrentUser.SendChanges = false; //2014.12.31. + } + CurrentUser.State = state; //2014.08.28. + } + + private void SelectPartner(object sender, EventArgs e) + { + var form = new SelectPartnerForm((ToolStripMenuItem)sender); + DialogResult dr = form.ShowDialog(); + if (dr == DialogResult.OK) + { + //2014.04.25. + string[] partners = form.Partners; + ChatPanel tmpchat = new ChatPanel(); + 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(UserInfo.KnownUsers[j]); //2014.08.28. + } + } + } + } + if (tmpchat.ChatPartners.Count != 0) + { + ChatPanel.ChatWindows.Add(tmpchat); + if (sender == fájlKüldéseToolStripMenuItem) + { + //tmpchat.Show(); + tmpchat.Init(); + tmpchat.OpenSendFile(form); + } + if (sender == azonnaliÜzenetKüldéseToolStripMenuItem) + { + //tmpchat.Show(); + tmpchat.Init(); + } + } + } + } + + private void ClearSearchBar(object sender, EventArgs e) + { + if (textBox1.Text == Language.Translate("searchbar")) + textBox1.Clear(); + } + + private void PutTextInSearchBar(object sender, EventArgs e) + { + if (textBox1.Text == "") + textBox1.Text = Language.Translate("searchbar"); + } + //public static int RightClickedPartner = -1; + + public static void OpenSendMessage(int uid) + { + var uinfo = UserInfo.Select(uid); + //Üzenetküldő form + int ChatNum = -1; + for (int i = 0; i < ChatPanel.ChatWindows.Count; i++) + { + if (ChatPanel.ChatWindows[i].ChatPartners.Count == 1 && ChatPanel.ChatWindows[i].ChatPartners.Contains(uinfo)) + { //Vele, és csak vele beszél + ChatNum = i; + break; + } + } + if (ChatNum == -1) + { //Nincs még chatablaka + ChatPanel.ChatWindows.Add(new ChatPanel()); + //ChatPanel.ChatWindows[ChatPanel.ChatWindows.Count - 1].ChatPartners.Add(uid); + //ChatPanel.ChatWindows[ChatPanel.ChatWindows.Count - 1].Show(); + //ChatPanel.ChatWindows[ChatPanel.ChatWindows.Count - 1].Focus(); //2014.08.08. + var cf = ChatPanel.ChatWindows[ChatPanel.ChatWindows.Count - 1]; + cf.ChatPartners.Add(uinfo); + cf.Init(); + + } + else + { + ChatPanel.ChatWindows[ChatNum].Show(); + ChatPanel.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(); + if (Program.SettingsF == null) + { + Program.SettingsF = new SettingsForm(); + Program.SettingsF.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;*/ + for (int i = 0; i < UserInfo.KnownUsers.Count; i++) + { + if (UserInfo.KnownUsers[i].TMPListID != (int)((ToolStripMenuItem)sender).GetCurrentParent().Tag) + continue; + (new PartnerInformation(UserInfo.KnownUsers[i])).ShowDialog(); + break; + } + } + + private void contactList_ItemRightClicked(object sender, int e) + { + contactList.Items[e].Selected = true; + //RightClickedPartner = e; + //partnerMenu.Show(Cursor.Position); + listPartnerMenu.Tag = e; + listPartnerMenu.Show(Cursor.Position); + } + + private void PartnerMenu_SendMessage(object sender, EventArgs e) + { + /*if (RightClickedPartner == -1) + return; + int uid = UserInfo.GetUserIDFromListID(RightClickedPartner); + OpenSendMessage(uid); + RightClickedPartner = -1;*/ + int uid = UserInfo.GetUserIDFromListID((int)((ToolStripMenuItem)sender).GetCurrentParent().Tag); //Erre kattintott jobb gombbal + OpenSendMessage(uid); + } + + private void panel2_Click(object sender, EventArgs e) + { //2014.10.31. + textBox1.Focus(); + } + + private System.Windows.Forms.Timer searchbartimer = new System.Windows.Forms.Timer(); + //private RichListView searchlist = new RichListView(); + private void textBox1_TextChanged(object sender, EventArgs e) + { //2014.11.30. 1:33 + var searchlist = searchListView; //2014.12.14. 1:46 + /*if (textBox1.Text.Length == 0 || textBox1.Text == Language.Translate("searchbar")) //text==translate...: 2014.12.05. + { + searchlist.Items.Clear(); + searchlist.Visible = false; + contactList.Visible = true; + return; + }*/ + if (searchbartimer.Enabled) + return; + searchbartimer.Interval = 1000; + searchbartimer.Tick += delegate + { + searchbartimer.Stop(); + if (textBox1.Text.Length == 0 || textBox1.Text == Language.Translate("searchbar")) //text==translate...: 2014.12.05. + { + //searchlist.Items.Clear(); + searchlist.Visible = false; + contactList.Visible = true; + return; + } + contactList.Visible = false; + searchlist.Parent = contactList.Parent; //2014.12.05. + searchlist.Bounds = contactList.Bounds; + //var tmpcol = new RichListViewColumn[contactList.Columns.Length]; //2014.12.05. + //contactList.Columns.CopyTo(tmpcol, 0); //2014.12.05. + //searchlist.Columns = tmpcol; //2014.12.05. + searchlist.Items.Clear(); //2014.12.05. + //searchlist.Visible = true; + searchlist.AutoUpdate = false; + foreach (var item in UserInfo.KnownUsers) + { + if (!item.IsPartner) + continue; + if (item.Name.ToLower().Contains(textBox1.Text.ToLower()) || item.Email.ToLower().Contains(textBox1.Text.ToLower()) || item.UserName.ToLower().Contains(textBox1.Text.ToLower())) //ToLower: 2014.12.14. 1:53 + { + /*searchlist.Items.Add(new RichListViewItem(contactList.Columns.Length)); + searchlist.Items.Last().SubItems[0] = new PictureBox(); + (searchlist.Items.Last().SubItems[0] as PictureBox).ImageLocation = item.GetImage(); + searchlist.Items.Last().SubItems[1].Text = "";*/ + item.CreateListItem(searchlist, searchlist.Items.Count); + } + } + searchlist.AutoUpdate = true; + searchlist.Visible = true; + }; + searchbartimer.Start(); + } + + private void flowLayoutPanel1_Click(object sender, EventArgs e) + { + foreach (var item in ChatPanel.ChatWindows) + { + item.Hide(); + } + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/MainForm.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/MainForm.cs new file mode 100644 index 0000000..f76d3e9 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/MainForm.cs @@ -0,0 +1,588 @@ +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 System.Reflection; +using SzNPProjects; +using System.Net.Sockets; +using System.Diagnostics; +using System.Net.NetworkInformation; + +namespace MSGer.tk +{ + public partial class MainForm : ThemedForms + { + public static LoginForm LoginDialog; + public static Thread LThread; + public static Thread MainThread = null; + public static Notifier taskbarNotifier; + public MainForm() + { + BeforeLogin.SetText("Starting..."); + Program.MainF = this; + InitializeComponent(); + Thread.CurrentThread.Name = "Main Thread"; + 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) + { + 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..."); + new Language(); + + BeforeLogin.SetText(Language.Translate("beforelogin_translatemainf")); + #region Helyi beállitás + //try + //{ + fájlToolStripMenuItem.Text = Language.Translate("menu_file"); + Language.ReloadEvent += delegate { fájlToolStripMenuItem.Text = Language.Translate("menu_file"); }; + kijelentkezésToolStripMenuItem.Text = Language.Translate("menu_file_logout"); + Language.ReloadEvent += delegate { kijelentkezésToolStripMenuItem.Text = Language.Translate("menu_file_logout"); }; + toolStripMenuItem1.Text = Language.Translate("menu_file_loginnewuser"); + Language.ReloadEvent += delegate { toolStripMenuItem1.Text = Language.Translate("menu_file_loginnewuser"); }; + állapotToolStripMenuItem.Text = Language.Translate("menu_file_status"); + Language.ReloadEvent += delegate { állapotToolStripMenuItem.Text = Language.Translate("menu_file_status"); }; + elérhetőToolStripMenuItem.Text = Language.Translate("menu_file_status_online"); + Language.ReloadEvent += delegate { elérhetőToolStripMenuItem.Text = Language.Translate("menu_file_status_online"); }; + elfoglaltToolStripMenuItem.Text = Language.Translate("menu_file_status_busy"); + Language.ReloadEvent += delegate { elfoglaltToolStripMenuItem.Text = Language.Translate("menu_file_status_busy"); }; + nincsAGépnélToolStripMenuItem.Text = Language.Translate("menu_file_status_away"); + Language.ReloadEvent += delegate { nincsAGépnélToolStripMenuItem.Text = Language.Translate("menu_file_status_away"); }; + rejtveKapcsolódikToolStripMenuItem.Text = Language.Translate("menu_file_status_hidden"); + Language.ReloadEvent += delegate { rejtveKapcsolódikToolStripMenuItem.Text = Language.Translate("menu_file_status_hidden"); }; + fájlKüldéseToolStripMenuItem.Text = Language.Translate("menu_file_sendfile"); + Language.ReloadEvent += delegate { fájlKüldéseToolStripMenuItem.Text = Language.Translate("menu_file_sendfile"); }; + beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Text = Language.Translate("menu_file_openreceivedfiles"); + Language.ReloadEvent += delegate { beérkezettFájlokMappájánakMegnyitásaToolStripMenuItem.Text = Language.Translate("menu_file_openreceivedfiles"); }; + üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Text = Language.Translate("menu_file_openrecentmsgs"); + Language.ReloadEvent += delegate { üzenetekElőzményeinekMegtekintéseToolStripMenuItem.Text = Language.Translate("menu_file_openrecentmsgs"); }; + bezárásToolStripMenuItem.Text = Language.Translate("menu_file_close"); + Language.ReloadEvent += delegate { bezárásToolStripMenuItem.Text = Language.Translate("menu_file_close"); }; + kilépésToolStripMenuItem.Text = Language.Translate("menu_file_exit"); + Language.ReloadEvent += delegate { kilépésToolStripMenuItem.Text = Language.Translate("menu_file_exit"); }; + + ismerősökToolStripMenuItem.Text = Language.Translate("menu_contacts"); + Language.ReloadEvent += delegate { ismerősökToolStripMenuItem.Text = Language.Translate("menu_contacts"); }; + ismerősFelvételeToolStripMenuItem.Text = Language.Translate("menu_contacts_add"); + Language.ReloadEvent += delegate { ismerősFelvételeToolStripMenuItem.Text = Language.Translate("menu_contacts_add"); }; + ismerősSzerkesztéseToolStripMenuItem.Text = Language.Translate("menu_contacts_edit"); + Language.ReloadEvent += delegate { ismerősSzerkesztéseToolStripMenuItem.Text = Language.Translate("menu_contacts_edit"); }; + ismerősTörléseToolStripMenuItem.Text = Language.Translate("menu_contacts_remove"); + Language.ReloadEvent += delegate { ismerősTörléseToolStripMenuItem.Text = Language.Translate("menu_contacts_remove"); }; + toolStripMenuItem3.Text = Language.Translate("menu_contacts_invite"); + Language.ReloadEvent += delegate { toolStripMenuItem3.Text = Language.Translate("menu_contacts_invite"); }; + csoportLétrehozásaToolStripMenuItem.Text = Language.Translate("menu_contacts_makegroup"); + Language.ReloadEvent += delegate { csoportLétrehozásaToolStripMenuItem.Text = Language.Translate("menu_contacts_makegroup"); }; + kategóriaLétrehozásaToolStripMenuItem.Text = Language.Translate("menu_contacts_makecategory"); + Language.ReloadEvent += delegate { kategóriaLétrehozásaToolStripMenuItem.Text = Language.Translate("menu_contacts_makecategory"); }; + kategóriaSzerkesztéseToolStripMenuItem.Text = Language.Translate("menu_contacts_editcategory"); + Language.ReloadEvent += delegate { kategóriaSzerkesztéseToolStripMenuItem.Text = Language.Translate("menu_contacts_editcategory"); }; + kategóriaTörléseToolStripMenuItem.Text = Language.Translate("menu_contacts_removecategory"); + Language.ReloadEvent += delegate { kategóriaTörléseToolStripMenuItem.Text = Language.Translate("menu_contacts_removecategory"); }; + + műveletekToolStripMenuItem.Text = Language.Translate("menu_operations"); + Language.ReloadEvent += delegate { műveletekToolStripMenuItem.Text = Language.Translate("menu_operations"); }; + azonnaliÜzenetKüldéseToolStripMenuItem.Text = Language.Translate("menu_operations_sendmsg"); + Language.ReloadEvent += delegate { azonnaliÜzenetKüldéseToolStripMenuItem.Text = Language.Translate("menu_operations_sendmsg"); }; + egyébKüldéseToolStripMenuItem.Text = Language.Translate("menu_operations_sendother"); + Language.ReloadEvent += delegate { egyébKüldéseToolStripMenuItem.Text = Language.Translate("menu_operations_sendother"); }; + emailKüldéseToolStripMenuItem.Text = Language.Translate("menu_operations_sendother_sendmail"); + Language.ReloadEvent += delegate { emailKüldéseToolStripMenuItem.Text = Language.Translate("menu_operations_sendother_sendmail"); }; + fájlKüldéseToolStripMenuItem1.Text = Language.Translate("menu_file_sendfile"); //Ugyanaz a szöveg + Language.ReloadEvent += delegate { fájlKüldéseToolStripMenuItem1.Text = Language.Translate("menu_file_sendfile"); }; + ismerősSzámitógépénekFelhivásaToolStripMenuItem.Text = Language.Translate("menu_operations_callcontact"); + Language.ReloadEvent += delegate { ismerősSzámitógépénekFelhivásaToolStripMenuItem.Text = Language.Translate("menu_operations_callcontact"); }; + videóhivásInditásaToolStripMenuItem.Text = Language.Translate("menu_operations_videocall"); + Language.ReloadEvent += delegate { videóhivásInditásaToolStripMenuItem.Text = Language.Translate("menu_operations_videocall"); }; + onlineFájlokMegtekintéseToolStripMenuItem.Text = Language.Translate("menu_operations_showonlinefiles"); + Language.ReloadEvent += delegate { onlineFájlokMegtekintéseToolStripMenuItem.Text = Language.Translate("menu_operations_showonlinefiles"); }; + közösJátékToolStripMenuItem.Text = Language.Translate("menu_operations_playgame"); + Language.ReloadEvent += delegate { közösJátékToolStripMenuItem.Text = Language.Translate("menu_operations_playgame"); }; + távsegitségKéréseToolStripMenuItem.Text = Language.Translate("menu_operations_askforhelp"); + Language.ReloadEvent += delegate { távsegitségKéréseToolStripMenuItem.Text = Language.Translate("menu_operations_askforhelp"); }; + + eszközökToolStripMenuItem.Text = Language.Translate("menu_tools"); + Language.ReloadEvent += delegate { eszközökToolStripMenuItem.Text = Language.Translate("menu_tools"); }; + mindigLegfelülToolStripMenuItem.Text = Language.Translate("menu_tools_alwaysontop"); + Language.ReloadEvent += delegate { mindigLegfelülToolStripMenuItem.Text = Language.Translate("menu_tools_alwaysontop"); }; + hangulatjelekToolStripMenuItem.Text = Language.Translate("menu_tools_emoticons"); + Language.ReloadEvent += delegate { hangulatjelekToolStripMenuItem.Text = Language.Translate("menu_tools_emoticons"); }; + megjelenitendőKépVáltásaToolStripMenuItem.Text = Language.Translate("menu_tools_changeimage"); + Language.ReloadEvent += delegate { megjelenitendőKépVáltásaToolStripMenuItem.Text = Language.Translate("menu_tools_changeimage"); }; + háttérMódositásaToolStripMenuItem.Text = Language.Translate("menu_tools_changebackground"); + Language.ReloadEvent += delegate { háttérMódositásaToolStripMenuItem.Text = Language.Translate("menu_tools_changebackground"); }; + hangokÉsVideóBeállitásaToolStripMenuItem.Text = Language.Translate("menu_tools_voicevideosettings"); + Language.ReloadEvent += delegate { hangokÉsVideóBeállitásaToolStripMenuItem.Text = Language.Translate("menu_tools_voicevideosettings"); }; + beállitásokToolStripMenuItem.Text = Language.Translate("menu_tools_settings"); + Language.ReloadEvent += delegate { beállitásokToolStripMenuItem.Text = Language.Translate("menu_tools_settings"); }; + + súgóToolStripMenuItem.Text = Language.Translate("menu_help"); + Language.ReloadEvent += delegate { súgóToolStripMenuItem.Text = Language.Translate("menu_help"); }; + témakörökToolStripMenuItem.Text = Language.Translate("menu_help_contents"); + Language.ReloadEvent += delegate { témakörökToolStripMenuItem.Text = Language.Translate("menu_help_contents"); }; + aSzolgáltatásÁllapotsaToolStripMenuItem.Text = Language.Translate("menu_help_status"); + Language.ReloadEvent += delegate { aSzolgáltatásÁllapotsaToolStripMenuItem.Text = Language.Translate("menu_help_status"); }; + adatvédelmiNyilatkozatToolStripMenuItem.Text = Language.Translate("menu_help_privacypolicy"); + Language.ReloadEvent += delegate { adatvédelmiNyilatkozatToolStripMenuItem.Text = Language.Translate("menu_help_privacypolicy"); }; + használatiFeltételekToolStripMenuItem.Text = Language.Translate("menu_help_termsofuse"); + Language.ReloadEvent += delegate { használatiFeltételekToolStripMenuItem.Text = Language.Translate("menu_help_termsofuse"); }; + visszaélésBejelentéseToolStripMenuItem.Text = Language.Translate("menu_help_report"); + Language.ReloadEvent += delegate { visszaélésBejelentéseToolStripMenuItem.Text = Language.Translate("menu_help_report"); }; + segitsenAProgramTökéletesitésébenToolStripMenuItem.Text = Language.Translate("menu_help_improveprogram"); + Language.ReloadEvent += delegate { segitsenAProgramTökéletesitésébenToolStripMenuItem.Text = Language.Translate("menu_help_improveprogram"); }; + névjegyToolStripMenuItem.Text = Language.Translate("menu_help_about"); + Language.ReloadEvent += delegate { névjegyToolStripMenuItem.Text = Language.Translate("menu_help_about"); }; + + textBox1.Text = Language.Translate("searchbar", textBox1); + //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"); - Kétszer benne volt, ugyanilyen névvel, csak 1-re végződve lett volna a megfelelő + //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"); + Language.ReloadEvent += delegate { toolStripMenuItem4.Text = Language.Translate("iconmenu_show"); }; + toolStripMenuItem8.Text = Language.Translate("menu_file_logout"); + Language.ReloadEvent += delegate { toolStripMenuItem8.Text = Language.Translate("menu_file_logout"); }; + toolStripMenuItem9.Text = Language.Translate("menu_file_exit"); + Language.ReloadEvent += delegate { toolStripMenuItem9.Text = Language.Translate("menu_file_exit"); }; + //} + //catch + //{ + //MessageBox.Show("Error while loading translations."); + //} + + LoadMenu(MenuType.ChatIconMenu); //2014.12.12. + LoadMenu(MenuType.PartnerMenu); //2014.12.13. + #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", + Assembly.GetExecutingAssembly().GetName().Version.ToString().Replace(".", ""), + 0, false); + if (response == "outofdate") + { + 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"); + //(new UpdateDialog()).Show(); //2014.12.13. - Elvileg át lehet nevezni a programot, miközben fut (ami érdekes) - De inkább csinálok külön programot + { //2014.12.13. + Process.Start("Updater.exe", "\"" + Language.Translate("updater") + "\" \"" + Language.Translate("updater_info") + "\""); + Program.Exit(false); + } + } + else if (response != "fine") + MessageBox.Show(Language.Translate("error") + ": " + response); + + //BeforeLogin.SetText(Language.Translate("beforelogin_server")); //2015.01.07. + + //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"; + }*/ + + /*if(Storage.Settings["isserver"]=="1") //2015.01.07. + { + NATUPNPLib.UPnPNAT upnpnat = new NATUPNPLib.UPnPNAT(); + NATUPNPLib.IStaticPortMappingCollection mappings = upnpnat.StaticPortMappingCollection; + if (mappings == null) + { + //MessageBox.Show(Language.Translate("portforward_noaccess")); + } + //else + //{ + foreach (NATUPNPLib.IStaticPortMapping mapping in mappings) + { + if (mapping.Protocol == "UDP" && mapping.InternalPort.ToString() == Storage.Settings["port"]) + { + if (MessageBox.Show(Language.Translate("portforward_existsremove"), "", MessageBoxButtons.YesNo) == DialogResult.Yes) + mappings.Remove(mapping.ExternalPort, "UDP"); + else + Storage.Settings["port"] = (Int32.Parse(Storage.Settings["port"]) + 1).ToString(); + } + + } + int port = int.Parse(Storage.Settings["port"]); + mappings.Add(port, "UDP", port, Dns.GetHostEntry(Dns.GetHostName()).AddressList.Single(entry => + entry.AddressFamily == AddressFamily.InterNetwork + && (entry.ToString().Contains("192.168.0.") || entry.ToString().Contains("192.168.1.") || entry.ToString().Contains("10.0.0.") || entry.ToString().Contains("172.16.0.")) //Helyi IP-k + ).ToString(), true, "MSGer.tk chat program"); + Networking.ReceiverConnection = new UdpClient(Int32.Parse(Storage.Settings["port"])); + //} + }*/ + + //TO!DO: Nem kell az "isserver" beállítás, először kliensként próbáljon meg csatlakozni, majd szerverként fogadja az új klienseket + // a pwnat segítségével + //2015.03.15. - Nem kell az sem: IPv6 - A legtöbb eszköz már támogatja + + 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 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";*/ + + Thread networkthread = new Thread(new ThreadStart(Networking.NetworkThread)); //2014.12.31. + networkthread.Name = "Network Thread"; + + Storage.Load(true); //2014.08.07. + + 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; + + taskbarNotifier = new Notifier("popup-bg.bmp", Color.FromArgb(255, 0, 255), "close.bmp", 5000); + + 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(); + + networkthread.Start(); + + //2014.08.19. - Küldje el a bejelentkezés hírét, hogy frissítéseket kapjon + /*byte[] strb = Encoding.Unicode.GetBytes(CurrentUser.IP.ToString()); + byte[] tmpfinal = new byte[8 * UserInfo.KnownUsers.Count + strb.Length + 4 + 1]; //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) + for (int i = 0; i < UserInfo.KnownUsers.Count; i++) //Ha a count 0, nem fogja végrehajtani + { + 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); + } + tmpfinal[tmpfinal.Length - 1] = (Storage.Settings["isserver"] == "1") ? (byte)0x01 : (byte)0x00; //Mivel bejelentkezéstől függetlenül menti el, gépfüggő, hogy itt mit küld el + Networking.ParseUpdateInfo(Networking.SendUpdate(Networking.UpdateType.LoginUser, tmpfinal, false));*/ + + while (!networkthread.IsAlive) ; + SendLoginToUsers(); //2014.12.18. + + notifyIcon1.Visible = true; //2014.09.22. + taskbarNotifier.Show("Teszt cím", "Teszt tartalom\nMásodik sor"); + + Language.ReloadEvent += delegate { textBox1.Text = Language.Translate("searchbar"); }; //2014.12.22. - Nyelvváltáskor törölni fogja a beírt szöveget + } + + private void SendLoginToUsers() + { //2014.12.18. + var bytes = new List(); + //var tmpb = Encoding.Unicode.GetBytes(CurrentUser.IP.ToString()); + //bytes.AddRange(BitConverter.GetBytes(tmpb.Length)); + //bytes.AddRange(tmpb); + for (int i = 0; i < UserInfo.KnownUsers.Count; i++) //Ha a count 0, nem fogja végrehajtani + { + bytes.AddRange(BitConverter.GetBytes(UserInfo.KnownUsers[i].UserID)); + bytes.AddRange(BitConverter.GetBytes(UserInfo.KnownUsers[i].LastUpdate)); + } + //bytes.Add((Storage.Settings["isserver"] == "1") ? (byte)0x01 : (byte)0x00); //Mivel bejelentkezéstől függetlenül menti el, gépfüggő, hogy itt mit küld el + //Networking.ParseUpdateInfo(Networking.SendUpdate(Networking.UpdateType.LoginUser, bytes.ToArray(), false)); + Networking.SendUpdateInThread(Networking.UpdateType.LoginUser, bytes.ToArray(), new EventHandler( + (e, resp) => Networking.ParseUpdateInfo(resp))); + } + + enum MenuType + { + ChatIconMenu, + PartnerMenu + } + private void LoadMenu(MenuType mt) + { + switch(mt) //2014.12.13. + { + case MenuType.ChatIconMenu: + chatIconMenu.Items.Add(Language.Translate("close"), null, + new EventHandler((sender, e) => ((ChatPanel)chatIconMenu.Tag).Close())); //Tag: A chatikon + chatIconMenu.Items[chatIconMenu.Items.Count-1].Name="close"; //2014.12.22. + Language.ReloadEvent += delegate { chatIconMenu.Items["close"].Text = Language.Translate("close"); }; //2014.12.22. + chatIconMenu.Items.Add(new ToolStripSeparator()); + /*chatIconMenu.Items.AddRange( + partnerMenu.Items.Cast().Select(entry=>{ + return new ToolStripMenuItem((ToolStripItem)entry.Clone(); + }).ToArray()); //Alapvetően eltávolítaná az eredeti menüből, és hibát jelezne*/ + LoadMenuPrep(chatIconMenu); + break; + case MenuType.PartnerMenu: + listPartnerMenu.Items.Add(Language.Translate("menu_operations_sendmsg"), null, PartnerMenu_SendMessage); + listPartnerMenu.Items[listPartnerMenu.Items.Count-1].Name="menu_operations_sendmsg"; //2014.12.22. + Language.ReloadEvent += delegate { listPartnerMenu.Items["menu_operations_sendmsg"].Text = Language.Translate("menu_operations_sendmsg"); }; //2014.12.22. + listPartnerMenu.Items.Add(new ToolStripSeparator()); + //listPartnerMenu.Items.AddRange(partnerMenu.Items.Cast().ToArray()); + LoadMenuPrep(listPartnerMenu); + break; + default: + throw new NotImplementedException("Menu type not implemented."); + } + } + private void LoadMenuPrep(ContextMenuStrip menu) //Csak a menüelemeket készíti elő + { //2014.12.13. + menu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { //A dizájnerből, átalakítva, hogy rögtön le is fordítsa + new ToolStripMenuItem(Language.Translate("contact_sendemail")), //Ide jönnek majd az event handlerek is + new ToolStripMenuItem(Language.Translate("contact_copyemail")), + new ToolStripMenuItem(Language.Translate("contact_info")), + new ToolStripSeparator(), + new ToolStripMenuItem(Language.Translate("contact_block")), + new ToolStripMenuItem(Language.Translate("contact_remove")), + new ToolStripSeparator(), + new ToolStripMenuItem(Language.Translate("contact_editname")), + new ToolStripSeparator(), + new ToolStripMenuItem(Language.Translate("contact_eventnotifications")), + new ToolStripSeparator(), + new ToolStripMenuItem(Language.Translate("contact_openchatlog"))}); + Language.ReloadEvent += delegate + { + int i = menu.Items.Count - 1; + menu.Items[i].Text = Language.Translate("contact_openchatlog"); + i--; + menu.Items[i].Text = Language.Translate("contact_eventnotifications"); + i--; + menu.Items[i].Text = Language.Translate("contact_editname"); + i--; + menu.Items[i].Text = Language.Translate("contact_remove"); + i--; + menu.Items[i].Text = Language.Translate("contact_block"); + i--; + menu.Items[i].Text = Language.Translate("contact_info"); + i--; + menu.Items[i].Text = Language.Translate("contact_copyemail"); + i--; + menu.Items[i].Text = Language.Translate("contact_sendemail"); + }; + } + + public 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) + { + entry.Update(); //Áthelyeztem, mert az értékek frissítésekor is szükség van rá + } + contactList.AutoUpdate = true; + contactList.Enabled = true; + contactList.Refresh(); + } + + 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 + contactList.Items.Clear(); //2014.09.19. + UserInfo.KnownUsers.Clear(); //2014.09.19. + Storage.Dispose(); + LThread = null; + CurrentUser.SendChanges = false; //2014.08.30. + while (ChatPanel.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 + ChatPanel.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. + 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(); + // 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(); + + SendLoginToUsers(); //2014.12.18. + + LoadPartnerList(); + this.Show(); + } + + public void PlaceChatIcon(ChatPanel cp) + { + var newicon = new PictureBox(); + //newicon.ImageLocation = cp.ChatPartners[0].GetImage(); + newicon.ImageLocation = cp.ChatPartners[0].ImagePath; //2014.12.31. + newicon.Size = new Size(100, 100); + newicon.SizeMode = PictureBoxSizeMode.Zoom; + newicon.Click += new EventHandler((a, b) => cp.Show()); + newicon.MouseClick += new MouseEventHandler((s, e) => { + if (e.Button == MouseButtons.Middle) + cp.Close(); + else if (e.Button == MouseButtons.Right) //Chat menü + { //2014.12.13. + chatIconMenu.Tag = cp; + chatIconMenu.Show(Cursor.Position); + } + }); + cp.ChatIcon = newicon; + //--------------------------------------------------------------------- + int size = 0; + bool putright = false; + foreach (Control item in flowLayoutPanel1.Controls) + { + size += item.Size.Height; + } + size += newicon.Size.Height; + if (size > flowLayoutPanel1.Size.Height) + putright = true; //Ha nem fér el bal oldalt, rakja jobbra + //--------------------------------------------------------------------- + size = 0; + foreach (Control item in flowLayoutPanel2.Controls) + { + size += item.Size.Height; + } + size += newicon.Size.Height; + if (size > flowLayoutPanel2.Size.Height) + putright = false; //Ha jobbra sem fér el, csak rakja balra + //--------------------------------------------------------------------- + if (!putright) + flowLayoutPanel1.Controls.Add(newicon); + else + flowLayoutPanel2.Controls.Add(newicon); + } + + public enum StatType + { + MainServer, + Servers, + OnlineServers + } + public void UpdateStats(StatType type, int value) + { //Elvileg ha van forgalom, gyorsan frissíti a nyelvet is + switch (type) + { + case StatType.MainServer: + if (value == 0) + { + mainserver.Text = Language.Translate("stats_mainserver") + ": " + Language.Translate("stats_nonetwork"); + mainserver.ForeColor = Color.Red; + } + else if (value == 1) + { + mainserver.Text = Language.Translate("stats_mainserver") + ": " + Language.Translate("stats_retrying"); + mainserver.ForeColor = Color.Orange; + } + else if (value == 2) + { + mainserver.Text = Language.Translate("stats_mainserver") + ": " + Language.Translate("stats_connected"); + mainserver.ForeColor = Color.Green; + } + break; + case StatType.Servers: + servers.Text = Language.Translate("stats_servers") + ": " + value; + break; + case StatType.OnlineServers: + onlineservers.Text = Language.Translate("stats_onlineservers") + ": " + value; + break; + } + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/MainForm.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/MainForm.resx new file mode 100644 index 0000000..03d879b --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/MainForm.resx @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 791, 17 + + + 636, 17 + + + 907, 17 + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.CreateParse.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.CreateParse.cs new file mode 100644 index 0000000..d339351 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.CreateParse.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + partial class Networking + { + public static string[] GetStrings(byte[] bytes, int startIndex) + { + List strs = new List(); + int pos = startIndex; + while (pos < bytes.Length) + { + int len = BitConverter.ToInt32(bytes, pos); + pos += 4; + strs.Add(Encoding.Unicode.GetString(bytes, pos, len)); + } + return strs.ToArray(); + } + + public static void ParsePacket(byte[] bytes, out byte response, out UpdateType updatetype, out int keyversion, out int port, out int userid, out byte[] data) + { //2014.09.15. + /*if (CurrentUser.Keys[CurrentUser.KeyIndex] != null) + bytes = Storage.Decrypt(bytes, true, CurrentUser.Keys[CurrentUser.KeyIndex]); + else + bytes = Storage.Decrypt(bytes, true, "ihavenokeys");*/ + response = bytes[0]; + updatetype = (UpdateType)bytes[1]; + int pos = 2; + //keyversion = BitConverter.ToInt32(bytes, 1 + 1); + keyversion = BitConverter.ToInt32(bytes, pos); + pos += sizeof(int); + port = BitConverter.ToInt32(bytes, pos); //2014.12.19. + pos += sizeof(int); + var encryptedBytes = new byte[bytes.Length - pos]; + //Array.Copy(bytes, 6, encryptedBytes, 0, encryptedBytes.Length); + Array.Copy(bytes, pos, encryptedBytes, 0, encryptedBytes.Length); + if (CurrentUser.Keys[CurrentUser.KeyIndex] != null) + bytes = Storage.Decrypt(encryptedBytes, true, CurrentUser.Keys[CurrentUser.KeyIndex]); + else + bytes = Storage.Decrypt(encryptedBytes, true, "ihavenokeys"); + /*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);*/ + userid = BitConverter.ToInt32(bytes, 0); //2014.12.18. + data = new byte[bytes.Length - 4]; + Array.Copy(bytes, 4, data, 0, data.Length); + } + + public static void ParseUpdateInfo(byte[][] bytes) + { + if (bytes == null) + return; + for (int i = 0; i < bytes.Length; i++) + { + byte[] data = ParsePacket(bytes[i]).Data; + 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. + UserInfo user = UserInfo.Select(uid); //2014.12.31. + 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 if (keyvalue[0] == "picupdatetime") + { //2014.12.31. + user.GetImage(Int32.Parse(keyvalue[1])); //Megvizsgálja, hogy kell-e frissítés és ha kell, letölti + } + else + str += "userinfo_" + strs[j]; + if (j + 1 != strs.Length) + str += "\n"; + user.Update(); //2014.12.31. + } + Storage.Parse(str); + } + } + + 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]; + int pos = 2; //2014.12.19. + //ret.KeyVersion = BitConverter.ToInt32(bytes, 1 + 1); + ret.KeyVersion = BitConverter.ToInt32(bytes, pos); + pos += sizeof(int); + ret.Port = BitConverter.ToInt32(bytes, pos); //2014.12.19. + pos += sizeof(int); + byte[] encryptedBytes = new byte[bytes.Length - pos]; //2014.12.22. - A hátralévő rész titkosított + Array.Copy(bytes, pos, encryptedBytes, 0, encryptedBytes.Length); //2014.12.22. + if (CurrentUser.Keys[CurrentUser.KeyIndex] != null) + bytes = Storage.Decrypt(encryptedBytes, true, CurrentUser.Keys[CurrentUser.KeyIndex]); + else + bytes = Storage.Decrypt(encryptedBytes, true, "ihavenokeys"); + //ret.UserID = BitConverter.ToInt32(bytes, 1 + 1 + 4); + pos = 0; //2014.12.22. - Új tömb lett a visszafejtés után + ret.UserID = BitConverter.ToInt32(bytes, pos); + pos += sizeof(int); + //ret.Data = new byte[bytes.Length - 1 - 1 - 4 - 4]; + ret.Data = new byte[bytes.Length - pos]; + //Array.Copy(bytes, 2 + 4 + 4, ret.Data, 0, ret.Data.Length); + Array.Copy(bytes, pos, 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)); + senddata.AddRange(BitConverter.GetBytes(Int32.Parse(Storage.Settings["port"]))); //2014.12.19. + 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(); + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.SendRequest.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.SendRequest.cs new file mode 100644 index 0000000..9ccb1b4 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.SendRequest.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.NetworkInformation; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + partial class Networking + { + + private static int Tries = 0; + public static string SendRequest(string action, string data, int remnum, bool loggedin) //2014.02.18. + { + if (!IsNetworkAvailable()) //2014.11.15. + { + if (Program.MainF != null) + { //2014.11.21. + if (Program.MainF.InvokeRequired) //2014.11.21. + { //2014.11.21. + Program.MainF.Invoke(new Action(Program.MainF.UpdateStats), //2014.11.21. + MainForm.StatType.MainServer, 0); //2014.11.21. + } + else //2014.11.21. + { //2014.11.21. + Program.MainF.UpdateStats(MainForm.StatType.MainServer, 0); //2014.11.21. + } + } + return "Fail: " + Language.Translate("error_no_network"); + } + +#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); + } + + 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; + } + if (Program.MainF != null) + { //2014.11.21. + if (Program.MainF.InvokeRequired) //2014.11.21. + { //2014.11.21. + Program.MainF.Invoke(new Action(Program.MainF.UpdateStats), //2014.11.21. + MainForm.StatType.MainServer, 1); //2014.11.21. + } + else //2014.11.21. + { //2014.11.21. + Program.MainF.UpdateStats(MainForm.StatType.MainServer, 1); //2014.11.21. + } + } + Tries++; + return SendRequest(action, data, remnum, loggedin); //Újrapróbálkozik + } + string responseString; + responseString = Uri.UnescapeDataString(new StreamReader(response.GetResponseStream()).ReadToEnd()); + if (Program.MainF != null) + { //2014.11.21. + if (Program.MainF.InvokeRequired) //2014.11.21. + { //2014.11.21. + Program.MainF.Invoke(new Action(Program.MainF.UpdateStats), //2014.11.21. + MainForm.StatType.MainServer, 2); //2014.11.21. + } + else //2014.11.21. + { //2014.11.21. + Program.MainF.UpdateStats(MainForm.StatType.MainServer, 2); //2014.11.21. + } + } + return responseString; + } + + private static bool IsNetworkAvailable() + { + NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); + + foreach (NetworkInterface nic in nics) + { + if ( + (nic.NetworkInterfaceType != NetworkInterfaceType.Loopback && nic.NetworkInterfaceType != NetworkInterfaceType.Tunnel) && + nic.OperationalStatus == OperationalStatus.Up) + { + return true; + } + } + return false; + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.SendUpdate.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.SendUpdate.cs new file mode 100644 index 0000000..431e55d --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.SendUpdate.cs @@ -0,0 +1,193 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + partial class Networking + { + 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, IPEndPoint onlythisep = null) + { + if (Program.MainF != null && Program.MainF.IsHandleCreated) //IsHandleCreated: 2014.12.31. + { //2014.11.21. + if (Program.MainF.InvokeRequired) //2014.11.21. + { //2014.11.21. + Program.MainF.Invoke(new Action(Program.MainF.UpdateStats), //2014.11.21. + MainForm.StatType.Servers, UserInfo.IPs.Count); //2014.11.21. + Program.MainF.Invoke(new Action(Program.MainF.UpdateStats), //2014.11.21. + MainForm.StatType.OnlineServers, UserInfo.IPs.Count - UserInfo.BannedIPs.Count); //2014.11.21. + } + else //2014.11.21. + { //2014.11.21. + /*Program.MainF.UpdateStats(MainForm.StatType.Servers, UserInfo.IPs.Count); //2014.11.21. + Program.MainF.UpdateStats(MainForm.StatType.OnlineServers, UserInfo.IPs.Count - UserInfo.BannedIPs.Count); //2014.11.21. - 2014.12.05. - Servers --> OnlineServers*/ + //2014.12.31. + MessageBox.Show("Internal error: Network call was made in the same thread as the UI. This could lead to freezes.\nNetwork update canceled."); + return null; + } + } + + if (UserInfo.IPs.Count == 0 + && !UserInfo.IPs.Any(entry => entry.Address.Equals(RemoteEP.Address)) + && ut != Networking.UpdateType.LoginUser + /*&& ut != Networking.UpdateType.CheckConn + && ut != Networking.UpdateType.RequestConn + && ut != Networking.UpdateType.MakeConn + && ut != Networking.UpdateType.MakeConn2*/) //2014.12.19. + return null; + //Log("Packet sending begins: there are users online and/or it is an update type that does not require that."); + byte[] senddata = CreatePacket(response, (byte)ut, data); + //Log("Packet created successfully (" + ((response) ? "" : "not ") + "response) with update type " + ut.ToString()); + if (UserInfo.BanTime < Environment.TickCount - 1000 * 10) //2014.08.30. - 2014.10.09. - 10 percről 1-re csökkentve - 2014.11.22. - 1 percről 10 mp-re csökkentve + //UserInfo.BannedIPs = new List(); //2014.08.30. + UserInfo.BannedIPs = new List(); //2014.11.23. + 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. + } + //Log("Hole punching begins."); + /*if (ut != UpdateType.CheckConn && ut != UpdateType.RequestConn) + CheckNPunchHole(); //2014.11.22.*/ + //Log("Hole punching done."); + if (onlythisep == null) //2014.11.22. - != helyett ==: 2014.12.18. + { + //Log("Sending to every known user..."); + foreach (var item in UserInfo.IPs) + { //Elküldi az összes ismert címre + 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; + } + } + } + else + { //2014.11.22. + //Log("Sending to single ip: " + onlythisep.Address + ":" + onlythisep.Port); + try + { + //if (UserInfo.IPs.Any(entry=>entry.IP==onlythisep) && !UserInfo.BannedIPs.Any(entry=>entry.IP==onlythisep)) + //if (UserInfo.IPs.Any(entry => entry.IP == onlythisep) && !UserInfo.BannedIPs.Any(entry => entry.IP == onlythisep)) + SenderConnection.Send(senddata, senddata.Length, onlythisep); + } + catch (ObjectDisposedException) + { + return null; + } + } + + if (!response) + { + int lasttick = Environment.TickCount; + List Ret = new List(); + List ResponsedIPs = new List(); + int count = 1; + //Log("Starting to wait on response..."); + while (Environment.TickCount - 1000 * 10 < lasttick && ( + (onlythisep == null) ? //2014.11.22. + ResponsedIPs.Count < UserInfo.IPs.Count - UserInfo.BannedIPs.Count : + ResponsedIPs.Count == 0 //2014.11.22. + )) //2014.09.09. - 2014.10.09. - 60 mp --> 10 mp + { //2014.08.19. - Ret.Count == tmp.Length + if (MainForm.LThread != null) //2014.09.06. + { + //Log("Waiting to get response... Wait time: " + count * 2 + "seconds"); + 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 + { + SenderConnection.Send(senddata, senddata.Length, item.IP); + } + catch (ObjectDisposedException) + { + return null; + } + } + count++;*/ + } + if (DataBuffer == null) //2014.08.30. - Az idő telt le + { + //Log("No response received. Retrying..."); + //UserInfo.BannedIPs = UserInfo.IPs.Except(ResponsedIPs).ToList(); //2014.08.30. - Ideiglenesen kitilt minden IP-t, ahonnan nem érkezett válasz + //UserInfo.BanTime = Environment.TickCount; + + foreach (var item in UserInfo.IPs.Except(UserInfo.BannedIPs).Except(ResponsedIPs)) //2014.09.22. + { //Elküldi az összes ismert címre + try + { + SenderConnection.Send(senddata, senddata.Length, item); + } + catch (ObjectDisposedException) + { + return null; + } + } + count++; + //break; + continue; + } + //Log("A response received."); + //if (UserInfo.IPs.Any(entry=>entry.IP==RemoteEP) && !UserInfo.BannedIPs.Any(entry=>entry.IP==RemoteEP)) + if (!(!UserInfo.IPs.Any(entry => entry.Address.Equals(RemoteEP.Address)) + && ut != Networking.UpdateType.LoginUser + /*&& ut != Networking.UpdateType.CheckConn + && ut != Networking.UpdateType.RequestConn + && ut != Networking.UpdateType.MakeConn + && ut != Networking.UpdateType.MakeConn2*/)) //2014.12.22. - Ha az egész feltétel nem teljesül, akkor sikerült + { + //Log("Response is from known ip or it's not required to be that."); + //ResponsedIPs.Add(RemoteEP); + foreach (var item in UserInfo.IPs.Where(entry => entry == RemoteEP)) + ResponsedIPs.Add(item); + var pparts = ParsePacket(DataBuffer); + //Log("Packet parsed."); + if (pparts.KeyVersion != CurrentUser.KeyIndex && pparts.UpdateType != UpdateType.SetKey) + { + //Log("Key version mismatch."); + DataBuffer = null; //2014.09.22. - Mindig adja meg a lehetőséget, hogy újra beállítsa + continue; + } + //Log("Complete success!"); + + int i; + for (i = 0; i < Ret.Count; i++) + { + if (DataBuffer.SequenceEqual(Ret[i])) + break; + } + if (i == Ret.Count) + Ret.Add(DataBuffer); + } //(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 + } + //Log("Resetting everything."); + DataBuffer = null; + RemoteEP = null; + WaitingOnResponse = false; + WaitingOnPacket = 0x00; + //Log("Returning response if there was any."); + return Ret.ToArray(); + } + return null; + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.Threads.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.Threads.cs new file mode 100644 index 0000000..c45ca10 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.Threads.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.NetworkInformation; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace MSGer.tk +{ + partial class Networking + { + //private const string ConnID = "MSGer.tk connection"; + /*public static void WaitForNewConnections() + { + while (true) + { + Ping pingSender = new Ping(); + //byte[] id = Encoding.Unicode.GetBytes(ConnID); + //PingReply reply = pingSender.Send("3.3.3.3", 30000, id, new PingOptions(512, true)); + Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp); + socket.SendTo(ICMPPacket.CreateRequest(), new IPEndPoint(IPAddress.Parse("3.3.3.3"), 8988)); + byte[] buffer = new byte[128]; + //IPEndPoint ep = new IPEndPoint(IPAddress.Any, 8988); + EndPoint ep = (EndPoint)new IPEndPoint(IPAddress.Any, 8988); + socket.ReceiveFrom(buffer, ref ep); + //if (reply.Status == IPStatus.TimeExceeded) + if(ICMPPacket.IsPacketGood(buffer)) + { + Log("A client is trying to connect..."); + //MakeConnection(reply.Address); + MakeConnection(((IPEndPoint)ep).Address); + } + else + { + //Log("An error occured during ICMP... - Status: " + reply.Status); + Log("An error occured during ICMP..."); + } + Thread.Sleep(28 * 1000); + } + } + public static void ConnectToServer(IPEndPoint server) + { + Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp); + socket.SendTo(ICMPPacket.CreateReply(),server); + } + + private static void MakeConnection(IPAddress addr) + { + + }*/ + + public static void KeepUpThread() + { //2014.08.28. + while (true) //while: 2014.12.19. + { + 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 + { + while (true) //while: 2014.12.19. + { + Thread.Sleep(20 * 1000); + Networking.SendUpdate(UpdateType.KeepAlive, new byte[] { 0x01 }, false); + } + } + + public static void SendUpdateInThread(UpdateType ut, byte[] data, EventHandler doneevent, IPEndPoint onlythisep = null) + { //2014.12.31. 0:24 - Válaszadásra van külön thread, itt csak eredeti küldést használhat + threadobject.Clear(); + threadobject.Add(ut); + threadobject.Add(data); + threadobject.Add(doneevent); + threadobject.Add(onlythisep); + while (networkthread == null) ; + networkthread.Interrupt(); + } + private static List threadobject = new List(); + private static Thread networkthread; + public static void NetworkThread() //A MainThread ezen keresztül hívja meg, hogy ne fagyjon le + { //2014.12.30. + networkthread = Thread.CurrentThread; + while (true) + { + try + { + Thread.Sleep(Timeout.Infinite); + } + catch (ThreadInterruptedException) + { + var resp = SendUpdate((UpdateType)threadobject[0], (byte[])threadobject[1], false, (IPEndPoint)threadobject[3]); + if (threadobject[2] != null) + ((EventHandler)threadobject[2])(null, resp); + } + } + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.cs new file mode 100644 index 0000000..ab302b4 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/Networking.cs @@ -0,0 +1,140 @@ +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 partial class Networking + { + public enum UpdateType : byte + { + ListUpdate = 0x01, //0x01: OK + UpdateMessages, //0x01: OK + GetImage, //(int)0: Hiba, egyébként a kép hossza, majd a kép + LoginUser, //0x00: Hiba - Egyébként minden fontos információ, amiről "lemaradt" + LogoutUser, //0x01: OK + SetKey, //0x01: OK + KeepAlive, + /*CheckConn, //0x01: Csatlakozva + RequestConn, // + MakeConn, + MakeConn2*/ + }; + + private static void Log(string message) //2014.12.31. + { + Logging.Log(message, Logging.LogType.Network); + } + + /*public static byte[][] SendUpdate(UpdateType ut, byte[] data, bool response) - Opcionális paraméterre változtatva: 2014.12.22. + { //2014.11.22. + return SendUpdate(ut, data, response, null); + }*/ + /*private static void CheckNPunchHole() //Még előtte tudja meg a belső portot + { //2014.11.22. + try + { + foreach (var item in UserInfo.IPs.Except(UserInfo.BannedIPs)) + { + if (Thread.CurrentThread == MainForm.MainThread) + { + SendUpdateInThread(UpdateType.CheckConn, new byte[] { }, new EventHandler( + (e, resp) => + { + if (resp != null && resp.Length != 0 && ParsePacket(resp[0]).Data[0] == 0x01) + return; //Minden rendben, válaszolt + UserInfo.BannedIPs.Remove(item); //2014.12.19. + //if (Storage.Settings["isserver"] == "1") - Ha szerver, ha nem, kérje a többi szervert, hogy csatlakoztassa össze + resp = SendUpdate(UpdateType.RequestConn, Encoding.Unicode.GetBytes(item.ToString()), false); //Mindenkitől kéri, akivel van kapcsolata + if (resp != null && resp.Length != 0 && ParsePacket(resp[0]).Data[0] == 0x01) //2014.11.23. - Ilyenkor már tudnia kellene a portot, és hasonlókat + { + Networking.SendUpdate(UpdateType.MakeConn2, new byte[] { 0x01 }, false); //Elvileg akkor végez ez az utasítás, ha létrejött a kapcsolat, vagy letelt a határidő + } + } + ), item); + } + else + { + var resp = SendUpdate(UpdateType.CheckConn, new byte[] { }, false, item); + if (resp != null && resp.Length != 0 && ParsePacket(resp[0]).Data[0] == 0x01) + continue; //Minden rendben, válaszolt + UserInfo.BannedIPs.Remove(item); //2014.12.19. + //if (Storage.Settings["isserver"] == "1") - Ha szerver, ha nem, kérje a többi szervert, hogy csatlakoztassa össze + resp = SendUpdate(UpdateType.RequestConn, Encoding.Unicode.GetBytes(item.ToString()), false); //Mindenkitől kéri, akivel van kapcsolata + if (resp != null && resp.Length != 0 && ParsePacket(resp[0]).Data[0] == 0x01) //2014.11.23. - Ilyenkor már tudnia kellene a portot, és hasonlókat + { + Networking.SendUpdate(UpdateType.MakeConn2, new byte[] { 0x01 }, false); //Elvileg akkor végez ez az utasítás, ha létrejött a kapcsolat, vagy letelt a határidő + } + } + } + } + catch (InvalidOperationException) { } + }*/ + + public static bool SendChatMessage(ChatPanel chat, string message) + { //2014.09.22. + List bytes = new List(); + string sendstr = ""; + foreach (var pID in chat.ChatPartners) + { + sendstr += pID + ","; + } + 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 + { + IPEndPoint remoteEP; + remoteEP = new IPEndPoint(IPAddress.Any, Int32.Parse(Storage.Settings["port"])); //2014.09.04. - A port beállítása már megtörtént + 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; //2014.09.19. - Küldön el mindenhova mindent, és egységesen egy funkcióval dolgozza fel + RemoteEP = remoteEP; + return null; + } + else + return new object[] { buf, remoteEP }; + } + + public struct PacketParts + { + public bool Response; + public UpdateType UpdateType; + public int KeyVersion; + public int Port; //2014.12.19. + public int UserID; + public byte[] Data; + }; + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Notifier.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Notifier.Designer.cs new file mode 100644 index 0000000..cff2ac5 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Notifier.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Notifier.cs new file mode 100644 index 0000000..8c24d59 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/Notifier.cs @@ -0,0 +1,68 @@ +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. + 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; + } + 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/v4.0/MSGer.tk/Notifier.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/Notifier.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/ObjectListView.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/ObjectListView.dll new file mode 100644 index 0000000..d4a658e Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/ObjectListView.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/ObjectListView2012.csproj b/Versions/Less Closed Beta/v4.0/MSGer.tk/ObjectListView2012.csproj new file mode 100644 index 0000000..87f1f0f --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/PartnerInformation.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/PartnerInformation.Designer.cs new file mode 100644 index 0000000..bca1828 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/PartnerInformation.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/PartnerInformation.cs new file mode 100644 index 0000000..52e6351 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/PartnerInformation.cs @@ -0,0 +1,47 @@ +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 : ThemedForms + { + 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; + 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/v4.0/MSGer.tk/PartnerInformation.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/PartnerInformation.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Program.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Program.cs new file mode 100644 index 0000000..4aba586 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/Program.cs @@ -0,0 +1,189 @@ +//#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 SettingsForm SettingsF; + public static string ProcessName = Process.GetCurrentProcess().ProcessName; + /// + /// 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")) + 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(); + Console.WriteLine("Starting MSGer.tk..."); + AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException; + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + try + { + //MainF = new MainForm(); - 2014.11.21. - A létrehozáskor hozzárendeli, így már akkor hozzáférhető ezen a néven + //Application.Run(MainF); + Application.Run(new MainForm()); //2014.11.21. + } + 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); + + } + } + + 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) + 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"; + 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); + 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(this 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; + } + } + public static IEnumerable GetAll(this Control control, Type type = null) + { //2015.02.26. + var controls = control.Controls.Cast(); + + /*return controls.SelectMany(ctrl => GetAll(ctrl, type)) + .Concat(controls) + .Where(c => c.GetType() == type);*/ + var ret = controls.SelectMany(ctrl => GetAll(ctrl, type)) + .Concat(controls); + return (type == null) ? ret : ret.Where(c => c.GetType() == type); + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/ProgressStatistic.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/ProgressStatistic.cs new file mode 100644 index 0000000..75e7776 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Properties/AssemblyInfo.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0d583f3 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Properties/Resources.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Properties/Resources.Designer.cs new file mode 100644 index 0000000..fa972d7 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Properties/Resources.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/Properties/Resources.resx new file mode 100644 index 0000000..23a4950 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Properties/Settings.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Properties/Settings.Designer.cs new file mode 100644 index 0000000..c795cd2 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Properties/Settings.settings b/Versions/Less Closed Beta/v4.0/MSGer.tk/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Blue-Wallpaper-HD 2.jpg b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Resources/Blue-Wallpaper-HD 2.jpg differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Blue-Wallpaper-HD 21.jpg b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Resources/Blue-Wallpaper-HD 21.jpg differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Blue-Wallpaper-HD.jpg b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Resources/Blue-Wallpaper-HD.jpg differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Blue-Wallpaper-HD1.jpg b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Resources/Blue-Wallpaper-HD1.jpg differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Keresősáv.jpg b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Resources/Keresősáv.jpg differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Menü 2.jpg b/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Menü 2.jpg new file mode 100644 index 0000000..d4b1794 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Menü 2.jpg differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Menü 21.jpg b/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Menü 21.jpg new file mode 100644 index 0000000..d4b1794 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Menü 21.jpg differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Menü 22.jpg b/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Menü 22.jpg new file mode 100644 index 0000000..d4b1794 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Menü 22.jpg differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Menü 3.jpg b/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Menü 3.jpg new file mode 100644 index 0000000..a021f2f Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/Menü 3.jpg differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/tmp/colorpicker.jpg b/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/tmp/colorpicker.jpg new file mode 100644 index 0000000..04f687d Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/tmp/colorpicker.jpg differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/tmp/erase.png b/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/tmp/erase.png new file mode 100644 index 0000000..aa71a51 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/Resources/tmp/erase.png differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/SelectPartnerForm.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/SelectPartnerForm.Designer.cs new file mode 100644 index 0000000..578fd72 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/SelectPartnerForm.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/SelectPartnerForm.cs new file mode 100644 index 0000000..6a83b34 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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 : ThemedForms + { + 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/v4.0/MSGer.tk/SelectPartnerForm.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/SelectPartnerForm.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/SettingsForm.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/SettingsForm.Designer.cs new file mode 100644 index 0000000..4332dca --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/SettingsForm.Designer.cs @@ -0,0 +1,361 @@ +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 glColumn1 = new GlacialComponents.Controls.GLColumn(); + GlacialComponents.Controls.GLItem glItem1 = new GlacialComponents.Controls.GLItem(); + GlacialComponents.Controls.GLSubItem glSubItem1 = new GlacialComponents.Controls.GLSubItem(); + GlacialComponents.Controls.GLItem glItem2 = new GlacialComponents.Controls.GLItem(); + GlacialComponents.Controls.GLSubItem glSubItem2 = new GlacialComponents.Controls.GLSubItem(); + GlacialComponents.Controls.GLItem glItem3 = new GlacialComponents.Controls.GLItem(); + GlacialComponents.Controls.GLSubItem glSubItem3 = new GlacialComponents.Controls.GLSubItem(); + this.glacialList1 = new GlacialComponents.Controls.GlacialList(); + this.panel1 = new System.Windows.Forms.Panel(); + this.isserver = new System.Windows.Forms.CheckBox(); + this.technical = new System.Windows.Forms.Label(); + this.chatwindowTabs = new System.Windows.Forms.CheckBox(); + this.chatwindow = new System.Windows.Forms.CheckBox(); + this.layout = new System.Windows.Forms.Label(); + this.listView1 = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.label3 = new System.Windows.Forms.Label(); + 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.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; + glColumn1.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None; + glColumn1.CheckBoxes = false; + glColumn1.ImageIndex = -1; + glColumn1.Name = "Column1"; + glColumn1.NumericSort = false; + glColumn1.Text = "Column"; + glColumn1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft; + glColumn1.Width = 115; + this.glacialList1.Columns.AddRange(new GlacialComponents.Controls.GLColumn[] { + glColumn1}); + 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; + 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 = "Személyes"; + glItem1.SubItems.AddRange(new GlacialComponents.Controls.GLSubItem[] { + glSubItem1}); + glItem1.Text = "Személyes"; + 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 = "Kinézet"; + glItem2.SubItems.AddRange(new GlacialComponents.Controls.GLSubItem[] { + glSubItem2}); + glItem2.Text = "Kinézet"; + glItem3.BackColor = System.Drawing.Color.White; + glItem3.ForeColor = System.Drawing.Color.Black; + glItem3.RowBorderColor = System.Drawing.Color.Black; + glItem3.RowBorderSize = 0; + glSubItem3.BackColor = System.Drawing.Color.Empty; + glSubItem3.Checked = false; + glSubItem3.ForceText = false; + glSubItem3.ForeColor = System.Drawing.Color.Black; + glSubItem3.ImageAlignment = System.Windows.Forms.HorizontalAlignment.Left; + glSubItem3.ImageIndex = -1; + glSubItem3.Text = "Technikai"; + glItem3.SubItems.AddRange(new GlacialComponents.Controls.GLSubItem[] { + glSubItem3}); + glItem3.Text = "Technikai"; + this.glacialList1.Items.AddRange(new GlacialComponents.Controls.GLItem[] { + glItem1, + glItem2, + glItem3}); + 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.isserver); + this.panel1.Controls.Add(this.technical); + this.panel1.Controls.Add(this.chatwindowTabs); + this.panel1.Controls.Add(this.chatwindow); + this.panel1.Controls.Add(this.layout); + 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; + // + // isserver + // + this.isserver.AutoSize = true; + this.isserver.Location = new System.Drawing.Point(12, 405); + this.isserver.Name = "isserver"; + this.isserver.Size = new System.Drawing.Size(217, 17); + this.isserver.TabIndex = 11; + this.isserver.Text = "Szerver mód (port forwarding szükséges)"; + this.isserver.UseVisualStyleBackColor = true; + // + // technical + // + this.technical.AutoSize = true; + this.technical.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.technical.Location = new System.Drawing.Point(6, 371); + this.technical.Name = "technical"; + this.technical.Size = new System.Drawing.Size(131, 31); + this.technical.TabIndex = 10; + this.technical.Text = "Technikai"; + // + // chatwindowTabs + // + this.chatwindowTabs.AutoSize = true; + this.chatwindowTabs.Enabled = false; + this.chatwindowTabs.Location = new System.Drawing.Point(50, 329); + this.chatwindowTabs.Name = "chatwindowTabs"; + this.chatwindowTabs.Size = new System.Drawing.Size(194, 17); + this.chatwindowTabs.TabIndex = 9; + this.chatwindowTabs.Text = "A beszélgetések fülekbe rendezése"; + this.chatwindowTabs.UseVisualStyleBackColor = true; + // + // chatwindow + // + this.chatwindow.AutoSize = true; + this.chatwindow.Location = new System.Drawing.Point(12, 305); + this.chatwindow.Name = "chatwindow"; + this.chatwindow.Size = new System.Drawing.Size(272, 17); + this.chatwindow.TabIndex = 8; + this.chatwindow.Text = "A beszélgetések jelenjenek meg külön ablak(ok)ban"; + this.chatwindow.UseVisualStyleBackColor = true; + // + // layout + // + this.layout.AutoSize = true; + this.layout.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.layout.Location = new System.Drawing.Point(6, 270); + this.layout.Name = "layout"; + this.layout.Size = new System.Drawing.Size(105, 31); + this.layout.TabIndex = 7; + this.layout.Text = "Kinézet"; + // + // 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; + // + // 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"; + // + // 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(337, 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(337, 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.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(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); + // + // 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.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.SettingsForm_FormClosed); + 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; + private System.Windows.Forms.Label layout; + private System.Windows.Forms.CheckBox chatwindowTabs; + private System.Windows.Forms.CheckBox chatwindow; + private System.Windows.Forms.Label technical; + private System.Windows.Forms.CheckBox isserver; + } +} \ No newline at end of file diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/SettingsForm.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/SettingsForm.cs new file mode 100644 index 0000000..f1c3153 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/SettingsForm.cs @@ -0,0 +1,119 @@ +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 : ThemedForms + { + public static bool ApplyingSettings = false; + public SettingsForm() + { + InitializeComponent(); + listView1.Columns[0].Width = listView1.Width; + this.Text = Language.Translate("settings"); + //Language.Translate(this, "settings"); + + glacialList1.Items[0].Text = Language.Translate("settings_personal"); + personal.Text = Language.Translate("settings_personal"); + glacialList1.Items[1].Text = Language.Translate("settings_layout"); + + layout.Text = Language.Translate("settings_layout"); //2014.10.28. + label1.Text = Language.Translate("name"); + label2.Text = Language.Translate("message"); + label3.Text = Language.Translate("language"); + chatwindow.Text = Language.Translate("settings_chatwindow"); //2014.10.28. + chatwindowTabs.Text = Language.Translate("settings_chatwindowTabs"); //2014.10.28. + //isserver.Text = Language.Translate("settings_isserver"); //2014.11.15. + + nameText.Text = CurrentUser.Name; + messageText.Text = CurrentUser.Message; + chatwindow.Checked = (Storage.Settings["chatwindow"] == "1"); //2014.10.28. + //isserver.Checked = (Storage.Settings["isserver"] == "1"); //2014.11.15. + isserver.Enabled = false; //2015.01.12. + + 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.GetCurrentLanguage())) + 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; + case 1: + //Kinézet + panel1.ScrollControlIntoView(layout); + break; + } + } + + private void okbtn_Click(object sender, EventArgs e) + { + ApplyingSettings = true; + CurrentUser.Name = nameText.Text; + CurrentUser.Message = messageText.Text; + bool reopen = false; + if (chatwindow.Checked && Storage.Settings["chatwindow"] == "0") + { + reopen = true; + Storage.Settings["chatwindow"] = "1"; + } + else if (!chatwindow.Checked && Storage.Settings["chatwindow"] == "1") + { + reopen = true; + Storage.Settings["chatwindow"] = "0"; + } + //Storage.Settings["isserver"] = isserver.Checked ? "1" : "0"; //2014.11.15. + string lang = "en"; + if(listView1.SelectedItems.Count!=0) //2014.10.28. - Eddig valószínűleg hiba történt a SelectedItems[0]-nál + { + foreach (var lng in Language.UsedLangs) + { + if (lng.Value.Strings.ContainsKey("currentlang") && listView1.SelectedItems[0].Text == lng.Value.Strings["currentlang"]) + { + lang = lng.Key; + break; + } + } + if (Storage.Settings["lang"] != lang) + { + Storage.Settings["lang"] = lang; + //MessageBox.Show(Language.Translate("restart_needed")); + //Program.Restart(true); + Language.ReloadLangs(); + } + } + if (reopen) + ChatPanel.ReopenChatWindows(true); + ApplyingSettings = false; + this.Close(); + } + + private void cancelbtn_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void SettingsForm_FormClosed(object sender, FormClosedEventArgs e) + { + Program.SettingsF = null; + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/SettingsForm.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/SettingsForm.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/Storage.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Storage.cs new file mode 100644 index 0000000..764dac1 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/Storage.cs @@ -0,0 +1,222 @@ +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("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("lastusedemail", "0"); + Settings.Add("filelen", "-1"); //(long) Maximum fájlméret, ameddig bemásolhatja a memóriába + //Settings.Add("isserver", ""); + Settings.Add("chatwindow", "0"); + } + } + 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 = 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.None }; + var encryptor = symmetricKey.CreateEncryptor(keyBytes, Encoding.ASCII.GetBytes(VIKey)); + + byte[] plainTextBytes; + //if (content.Length + 4 > keyBytes.Length) + /*plainTextBytes = new byte[content.Length + 4]; + else + plainTextBytes = new byte[content.Length + 4];*/ + int targetsize = content.Length + 16 - content.Length % 16; //Hozzáadja a hosszához a hossz 16-tal való osztásának maradékát - Tehát 16-tal osztható lesz + plainTextBytes = new byte[targetsize]; + /*Array.Copy(BitConverter.GetBytes(content.Length), plainTextBytes, 4); + Array.Copy(content, 0, plainTextBytes, 4, content.Length);*/ + Array.Copy(content, plainTextBytes, content.Length); + + 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(); + } + byte[] final = new byte[cipherTextBytes.Length + 4]; + Array.Copy(BitConverter.GetBytes(cipherTextBytes.Length), final, 4); + Array.Copy(cipherTextBytes, 0, final, 4, cipherTextBytes.Length); + return final; + } + 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; + int len = BitConverter.ToInt32(b, 0); + byte[] cipherTextBytes = new byte[len]; + Array.Copy(b, 4, cipherTextBytes, 0, b.Length - 4); //Itt még az eredeti, feltöltött hosszal számol + 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]; + //List plainTextBytes = new List(); //2014.12.18. + + int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length); + /*int r=0; //2014.12.18. + while ((r = cryptoStream.ReadByte()) != -1) + { //2014.12.18. + plainTextBytes.Add((byte)r); + }*/ + memoryStream.Close(); + cryptoStream.Close(); + byte[] ret = new byte[len]; + Array.Copy(plainTextBytes, ret, len); + return ret; + } + 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/v4.0/MSGer.tk/StreamHelper.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/StreamHelper.cs new file mode 100644 index 0000000..e6ae2d7 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/TextFormat.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/TextFormat.cs new file mode 100644 index 0000000..70404f4 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/TextFormat.cs @@ -0,0 +1,76 @@ +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) + { + 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; + } + } + class ImgReplaceStrs + { + public string Text; + public Image Image; + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/Theme.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/Theme.cs new file mode 100644 index 0000000..f4a22b4 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/Theme.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace MSGer.tk +{ + public class Theme + { + public void Save(string themepath) + { + List bytes = new List(); + foreach (var item in Images) + { + bytes.AddRange(BitConverter.GetBytes((int)item.Key)); + var ms = new MemoryStream(); + item.Value.Save(ms, ImageFormat.Tiff); + byte[] img = ms.ToArray(); + ms.Dispose(); + bytes.AddRange(BitConverter.GetBytes(img.Length)); + bytes.AddRange(img); + } + File.WriteAllBytes(themepath, bytes.ToArray()); + } + + public enum ThemePart + { + MainBackgorund, + MinimizeButton, + MaximizeButton, + CloseButton, + Border + } + + public Theme(string themepath) + { + //FileStream fs = new FileStream(themepath, FileMode.Open); + Images.Clear(); + byte[] bytes = File.ReadAllBytes(themepath); + int i = 0; + while (i < bytes.Length) + { + int part = BitConverter.ToInt32(bytes, i); //4 byte ThemePart + i += sizeof(int); + int len = BitConverter.ToInt32(bytes, i); //4 byte imglen + i += sizeof(int); + Image img = Image.FromStream(new MemoryStream(bytes, i, len)); //len byte image + new Theme((ThemePart)part, img); + } + ReloadEvent(null, null); + } + private Theme(ThemePart themepart, Image image) + { + Images.Add(themepart, image); + //Frissítse az összes helyen a képeket (lásd Language osztály) - Csak ne itt + } + public static event EventHandler ReloadEvent; //2014.12.24. + + public static void SkinControl(ThemePart themepart, Control control) + { + if (control != null && !control.IsDisposed && Images.ContainsKey(themepart)) + { + control.BackgroundImage = Images[themepart]; + if (themepart == ThemePart.MainBackgorund) + { + foreach(Control c in control.GetAll()) + { + Bitmap bmp = new Bitmap(Images[themepart]).Clone(new Rectangle(c.Location.X, c.Location.Y, c.Width, c.Height), PixelFormat.Format32bppRgb); + c.BackgroundImage = bmp; + } + } + } + ReloadEvent += delegate + { //Ugyanazt az indexű képet fogja használni, csak a kép változik meg + if (control != null && !control.IsDisposed && Images.ContainsKey(themepart)) + { + control.BackgroundImage = Images[themepart]; + } + }; + } + + private static Dictionary Images = new Dictionary(); + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/ThemedForms.Designer.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/ThemedForms.Designer.cs new file mode 100644 index 0000000..074a872 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/ThemedForms.Designer.cs @@ -0,0 +1,120 @@ +namespace MSGer.tk +{ + partial class ThemedForms + { + /// + /// 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.containerPanel = new System.Windows.Forms.Panel(); + this.titleLabel = new System.Windows.Forms.Label(); + this.CloseButton = new System.Windows.Forms.PictureBox(); + this.MaximizeButton = new System.Windows.Forms.PictureBox(); + this.MinimizeButton = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.CloseButton)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.MaximizeButton)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.MinimizeButton)).BeginInit(); + this.SuspendLayout(); + // + // containerPanel + // + this.containerPanel.Location = new System.Drawing.Point(12, 30); + this.containerPanel.Name = "containerPanel"; + this.containerPanel.Size = new System.Drawing.Size(123, 51); + this.containerPanel.TabIndex = 0; + // + // titleLabel + // + this.titleLabel.AutoSize = true; + this.titleLabel.Location = new System.Drawing.Point(13, 11); + this.titleLabel.Name = "titleLabel"; + this.titleLabel.Size = new System.Drawing.Size(27, 13); + this.titleLabel.TabIndex = 1; + this.titleLabel.Text = "Title"; + // + // CloseButton + // + this.CloseButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.CloseButton.Location = new System.Drawing.Point(122, 1); + this.CloseButton.Name = "CloseButton"; + this.CloseButton.Size = new System.Drawing.Size(24, 23); + this.CloseButton.TabIndex = 2; + this.CloseButton.TabStop = false; + this.CloseButton.Click += new System.EventHandler(this.CloseButton_Click); + // + // MaximizeButton + // + this.MaximizeButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.MaximizeButton.Location = new System.Drawing.Point(92, 1); + this.MaximizeButton.Name = "MaximizeButton"; + this.MaximizeButton.Size = new System.Drawing.Size(24, 23); + this.MaximizeButton.TabIndex = 3; + this.MaximizeButton.TabStop = false; + this.MaximizeButton.Click += new System.EventHandler(this.MaximizeButton_Click); + // + // MinimizeButton + // + this.MinimizeButton.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.MinimizeButton.Location = new System.Drawing.Point(62, 1); + this.MinimizeButton.Name = "MinimizeButton"; + this.MinimizeButton.Size = new System.Drawing.Size(24, 23); + this.MinimizeButton.TabIndex = 4; + this.MinimizeButton.TabStop = false; + this.MinimizeButton.Click += new System.EventHandler(this.MinimizeButton_Click); + // + // ThemedForms + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(147, 93); + this.Controls.Add(this.MinimizeButton); + this.Controls.Add(this.MaximizeButton); + this.Controls.Add(this.CloseButton); + this.Controls.Add(this.titleLabel); + this.Controls.Add(this.containerPanel); + this.Name = "ThemedForms"; + this.Text = "ThemedForms"; + this.DoubleClick += new System.EventHandler(this.ThemedForms_DoubleClick); + this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.ThemedForms_MouseDown); + this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.ThemedForms_MouseUp); + this.Resize += new System.EventHandler(this.ThemedForms_Resize); + ((System.ComponentModel.ISupportInitialize)(this.CloseButton)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.MaximizeButton)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.MinimizeButton)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + + private System.Windows.Forms.Panel containerPanel; + private System.Windows.Forms.Label titleLabel; + private System.Windows.Forms.PictureBox CloseButton; + private System.Windows.Forms.PictureBox MaximizeButton; + private System.Windows.Forms.PictureBox MinimizeButton; + } +} \ No newline at end of file diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/ThemedForms.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/ThemedForms.cs new file mode 100644 index 0000000..c56e327 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/ThemedForms.cs @@ -0,0 +1,242 @@ +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 ThemedForms : Form + { //2014.12.21. + public const int BorderSize = 3; + + private bool overridecontrols = false; + public ThemedForms() + { + InitializeComponent(); + this.Load += ThemedForms_Load; + overridecontrols = true; + } + + protected void ThemedForms_Load(object sender, EventArgs e) + { + List anchors = new List(); + foreach (Control control in containerPanel.Controls) + { + anchors.Add(control.Anchor); + control.Anchor = AnchorStyles.Top | AnchorStyles.Left; + } + this.SuspendLayout(); + base.FormBorderStyle = FormBorderStyle.None; + this.Size = base.Size; + CloseButton.Location = new Point(this.Size.Width - CloseButton.Size.Width, 0); + MaximizeButton.Location = new Point(this.Size.Width - CloseButton.Size.Width - MaximizeButton.Size.Width, 0); + MinimizeButton.Location = new Point(this.Size.Width - CloseButton.Size.Width - MaximizeButton.Size.Width - MinimizeButton.Size.Width, 0); + titleLabel.Location = new Point(BorderSize, titleLabel.Location.Y); + containerPanel.Location = new Point(BorderSize, titleLabel.Location.Y + titleLabel.Size.Height); + int i = 0; + this.ResumeLayout(true); + foreach (var anchor in anchors) + { + containerPanel.Controls[i].Anchor = anchor; + i++; + } + titleLabel.Anchor = AnchorStyles.Top | AnchorStyles.Left; + CloseButton.Anchor = AnchorStyles.Top | AnchorStyles.Right; + MaximizeButton.Anchor = AnchorStyles.Top | AnchorStyles.Right; + MinimizeButton.Anchor = AnchorStyles.Top | AnchorStyles.Right; + containerPanel.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom; + Theme.SkinControl(Theme.ThemePart.Border, this); //2014.12.24. + Theme.SkinControl(Theme.ThemePart.MinimizeButton, MinimizeButton); //2014.12.24. + Theme.SkinControl(Theme.ThemePart.MaximizeButton, MaximizeButton); //2014.12.24. + Theme.SkinControl(Theme.ThemePart.CloseButton, CloseButton); //2014.12.24. + } + public new Control.ControlCollection Controls + { + get + { + if (overridecontrols) + return containerPanel.Controls; + else + return base.Controls; + } + } + private FormBorderStyle borderstyle = FormBorderStyle.Sizable; + public new FormBorderStyle FormBorderStyle + { + get + { + return borderstyle; + } + set + { + borderstyle = value; + base.FormBorderStyle = FormBorderStyle.None; + } + } + public override string Text + { + get + { + return base.Text; + } + set + { + titleLabel.Text = value; + base.Text = value; + } + } + public new Size Size + { + get + { + return base.Size; + } + set + { + base.Size = new Size(value.Width + containerPanel.Location.X + BorderSize, value.Height + containerPanel.Location.Y + BorderSize); + containerPanel.Size = value; + } + } + + private void CloseButton_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void MaximizeButton_Click(object sender, EventArgs e) + { + if (!MaximizeBox) + return; + FormWindowState ws; //Anti-virus program miatt + if (WindowState == FormWindowState.Normal) + ws = FormWindowState.Maximized; + else + ws = FormWindowState.Normal; + + Timer t = new Timer(); + t.Interval = 10; + t.Tick += delegate + { + t.Stop(); + base.FormBorderStyle = FormBorderStyle.Sizable; //Látszik egy kis időre, de tán így a legkönnyebb + WindowState = ws; + base.FormBorderStyle = FormBorderStyle.None; + }; + t.Start(); + } + + private void MinimizeButton_Click(object sender, EventArgs e) + { + if (!MinimizeBox) + return; + //base.FormBorderStyle = FormBorderStyle.Sizable; + WindowState = FormWindowState.Minimized; + } + + private FormWindowState wstate; + private void ThemedForms_Resize(object sender, EventArgs e) + { + if (this.WindowState == wstate) + return; + if (this.WindowState == FormWindowState.Maximized && wstate == FormWindowState.Minimized) //minimized-ről váltott maximized-re + { + this.WindowState = FormWindowState.Normal; + base.FormBorderStyle = FormBorderStyle.Sizable; + this.WindowState = FormWindowState.Maximized; + base.FormBorderStyle = FormBorderStyle.None; + } + wstate = this.WindowState; + } + + private bool moving = false; + private int resizing = 0; + private Timer moveresizetimer = new Timer(); + //private Point diffcursorpos; + private Point moveresizecursor; + private void ThemedForms_MouseDown(object sender, MouseEventArgs e) + { + Point cursorpos = this.PointToClient(Cursor.Position); + //diffcursorpos = this.PointToClient(Cursor.Position); + moveresizecursor = this.PointToClient(Cursor.Position); //Mindig ehhez igazítsa + if (cursorpos.X > containerPanel.Location.X + containerPanel.Size.Width) + resizing = 1; //right + else if (cursorpos.X < containerPanel.Location.X) + resizing = 2; //left + else if (cursorpos.Y > containerPanel.Location.Y + containerPanel.Size.Height) + resizing = 3; //bottom + else if (cursorpos.Y < containerPanel.Location.Y) + moving = true; //top + if(!moveresizetimer.Enabled) + { + moveresizetimer.Interval = 10; + moveresizetimer.Tick += moveresizetimer_Tick; + moveresizetimer.Start(); + } + } + + void moveresizetimer_Tick(object sender, EventArgs e) + { + if (moving) + { + //this.Location -= cursorpos - this.PointToClient(Cursor.Position); + /*int diffx = diffcursorpos.X - this.PointToClient(Cursor.Position).X; + int diffy = diffcursorpos.Y - this.PointToClient(Cursor.Position).Y; + this.Location = new Point(this.Location.X - diffx, this.Location.Y - diffy); + diffcursorpos = this.PointToClient(Cursor.Position);*/ + int diffx = this.PointToClient(Cursor.Position).X - moveresizecursor.X; + int diffy = this.PointToClient(Cursor.Position).Y - moveresizecursor.Y; + this.Location = new Point(this.Location.X + diffx, this.Location.Y + diffy); + } + if (resizing > 0 && borderstyle == FormBorderStyle.Sizable) + { + /*int diffx = diffcursorpos.X - this.PointToClient(Cursor.Position).X; + int diffy = diffcursorpos.Y - this.PointToClient(Cursor.Position).Y; + switch(resizing) + { + case 1: //right + base.Size = new Size(this.Size.Width - diffx, this.Size.Height); + break; + } + diffcursorpos = this.PointToClient(Cursor.Position);*/ + if (resizing == 1) + base.Size = new Size(Cursor.Position.X - base.Location.X, base.Size.Height); + else if (resizing == 2) + { + int diff = base.Location.X - Cursor.Position.X; + base.Location = new Point(Cursor.Position.X, base.Location.Y); + base.Size = new Size(base.Size.Width + diff, base.Size.Height); + } + else if (resizing == 3) + base.Size = new Size(base.Size.Width, Cursor.Position.Y - base.Location.Y); + } + } + + private void ThemedForms_MouseUp(object sender, MouseEventArgs e) + { + moving = false; + resizing = 0; + moveresizetimer.Stop(); + } + + private void ThemedForms_DoubleClick(object sender, EventArgs e) + { + if (this.PointToClient(Cursor.Position).Y < containerPanel.Location.Y) + { + if (this.WindowState == FormWindowState.Normal) + { + this.WindowState = FormWindowState.Normal; + base.FormBorderStyle = FormBorderStyle.Sizable; + this.WindowState = FormWindowState.Maximized; + base.FormBorderStyle = FormBorderStyle.None; + } + else + this.WindowState = FormWindowState.Normal; + } + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/ThemedForms.resx b/Versions/Less Closed Beta/v4.0/MSGer.tk/ThemedForms.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/ThemedForms.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/v4.0/MSGer.tk/UpdateListAndChat.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/UpdateListAndChat.cs new file mode 100644 index 0000000..2dee4fc --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/UpdateListAndChat.cs @@ -0,0 +1,199 @@ +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.LThread != null && MainForm.MainThread.IsAlive) + { + do + { + object[] retobj = Networking.ReceiveUpdates(); + if (retobj == null) //2014.12.05. + return; //2014.12.05. - Leállt a program + 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 port; //2014.12.19. + int userid; //2014.09.15. + byte[] data; //2014.09.15. + Networking.ParsePacket(resp, out isresponse, out updatetype, out keyversion, out port, out userid, out data); //2014.09.15. + //if (!UserInfo.IPs.Any(entry=>entry.IP==remoteEP) && updatetype != Networking.UpdateType.LoginUser) //2014.10.24. + //if (!UserInfo.IPs.Any(entry => entry.IP == remoteEP) && updatetype != Networking.UpdateType.LoginUser) //2014.11.23 + if (!UserInfo.IPs.Any(entry => entry.Address.Equals(remoteEP.Address)) //2014.12.19. - A port nem ugyanaz, ráadásul a == nem hívja meg a .Equals metódust + && updatetype != Networking.UpdateType.LoginUser + /*&& updatetype != Networking.UpdateType.CheckConn + && updatetype != Networking.UpdateType.RequestConn + && updatetype != Networking.UpdateType.MakeConn + && updatetype != Networking.UpdateType.MakeConn2*/) + break; + //bool x = UserInfo.IPs.Single().IP.Address.Equals(remoteEP.Address); + if (updatetype == Networking.UpdateType.ListUpdate) + { + //Networking.ParseUpdateInfo(new byte[][] { data }); //2014.09.15. + Networking.ParseUpdateInfo(new byte[][] { resp }); //2014.12.22. - A funkció az egész packet-re számít, nem csak a data-ra + } + else if (updatetype == Networking.UpdateType.UpdateMessages) + { + string[] response = Networking.GetStrings(data, 0); + string[] tmp = response[0].Split(','); + List tmp2 = new List(); + tmp2.Add(UserInfo.Select(userid)); //Adja hozzá a küldőt is + tmp2.AddRange(tmp.Select(entry => UserInfo.Select(Int32.Parse(entry)))); //2014.10.24. + //if (tmp2.All(entry => !UserInfo.Select(entry).IsPartner)) //2014.10.24. + if (tmp2.All(entry => !entry.IsPartner)) //2014.10.31. + break; //Ha a beszélgetésben nincs ismerőse, akkor nem foglalkozik vele + var cf = ChatPanel.GetChatFormByUsers(tmp2); + if (cf == null) + { + Program.MainF.Invoke((MethodInvoker)delegate + { + ChatPanel.ChatWindows.Add(new ChatPanel()); + cf = ChatPanel.ChatWindows[ChatPanel.ChatWindows.Count - 1]; + cf.ChatPartners.AddRange(tmp2); + cf.Init(); + }); + } + //0 - Résztvevők; 1 - Üzenet; 2 - Üzenetküldés időpontja + 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 (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; + } + + //int iplen = BitConverter.ToInt32(data, 0); + //string ip = Encoding.Unicode.GetString(data, 4, iplen); + //IPAddress ip = IPAddress.Parse(Encoding.Unicode.GetString(data, 4, iplen)); + /*if (!Storage.Settings["ips"].Contains(ip)) + Storage.Settings["ips"] += ";" + ip;*/ + //var ep = new IPEndPoint(ip, UserInfo.GetPortForIP(ip)); //2014.11.15. + //var ep = new IPEndPoint(ip, port); //2014.12.19. + var ep = new IPEndPoint(remoteEP.Address, port); + //if (!UserInfo.IPs.Any(entry=>entry.IP==ep)) + if (!UserInfo.IPs.Any(entry=>entry==ep)) + UserInfo.IPs.Add(ep); + string retstr = ""; + //for (int i = 4 + iplen; i + 8 < resp.Length; i += 8) + for (int i = 0; i + 8 < data.Length; i += 8) + { + int uid = BitConverter.ToInt32(data, i); + int utime = BitConverter.ToInt32(data, i + 4); + if (Storage.LoggedInSettings.ContainsKey("userinfo_" + uid + "_updatetime") && 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 (uid != CurrentUser.UserID) //2014.11.29. + retstr += uid + "_lastupdate=" + Storage.LoggedInSettings["userinfo_" + uid + "_lastupdate"]; //2014.11.29. - Arra az időpontra állítsa, amikor ő kapta a frissítést, így ez elvileg az eredeti frissítés időpontját mutatja kb. - Ezért a sajátját biztosan frissen kell tartani + else + retstr += uid + "_lastupdate=" + Program.DateTimeToUnixTime(DateTime.Now); + //if (i + 1 != (resp.Length - 9) / 8) + if (i + 16 < data.Length) + retstr += "\n"; + } + } + UserInfo.Select(userid).State = 1; + Networking.SendUpdate(Networking.UpdateType.LoginUser, Encoding.Unicode.GetBytes(retstr), true); + } + else if (updatetype == Networking.UpdateType.LogoutUser) + { //2014.08.31. 0:32 + int len = BitConverter.ToInt32(data, 0); + string ipstr = Encoding.Unicode.GetString(data, 4, len); + //Storage.Settings["ips"] = Storage.Settings["ips"].Remove(Storage.Settings["ips"].IndexOf(ipstr), ipstr.Length); //2014.09.22. + //var ip = IPAddress.Parse(ipstr); + string[] ips = ipstr.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); + var ip = ips.Select(entry => IPAddress.Parse(entry)); + //UserInfo.IPs.RemoveWhere(entry => entry.IP.Address == ip && entry.IP.Port == UserInfo.GetPortForIP(entry.IP.Address)); //2014.11.15. + UserInfo.IPs.RemoveWhere(entry => entry.Address == ip && entry.Port == port); //2014.11.15. - Port: 2014.12.19. + } + else if (updatetype == Networking.UpdateType.SetKey) //2014.09.09. + { //2014.09.22. + CurrentUser.KeyIndex = BitConverter.ToInt32(data, 0); + } + else if (updatetype == Networking.UpdateType.GetImage) //2014.11.01. 0:53 + { + string tmp = Path.GetTempPath(); + List sendb = new List(); + int user = BitConverter.ToInt32(data, 0); + int picupdatetime = BitConverter.ToInt32(data, 4); + //int thispicupdatetime = UserInfo.Select(user).PicUpdateTime; + int thispicupdatetime = 0; + UserInfo userinfo = UserInfo.Select(user); + if (userinfo != null) + thispicupdatetime = UserInfo.Select(user).PicUpdateTime; + if (thispicupdatetime > picupdatetime) + { + sendb.AddRange(BitConverter.GetBytes(thispicupdatetime)); + sendb.AddRange(File.ReadAllBytes(tmp + "\\MSGer.tk\\pictures\\" + user + ".png")); + } + Networking.SendUpdate(Networking.UpdateType.GetImage, sendb.ToArray(), true); //2014.11.23. + } + /*else if (updatetype == Networking.UpdateType.CheckConn) + { //2014.11.23. + Networking.SendUpdate(Networking.UpdateType.CheckConn, new byte[] { 0x01 }, true, new IPEndPoint(remoteEP.Address, port)); + } + else if (updatetype == Networking.UpdateType.RequestConn) + { //2014.11.23. + string[] s = Encoding.Unicode.GetString(data).Split(':'); + var secondEP = new IPEndPoint(IPAddress.Parse(s[0]), Int32.Parse(s[1])); + Networking.SendUpdate(Networking.UpdateType.MakeConn, Encoding.Unicode.GetBytes(secondEP.ToString()), false, remoteEP); //Elküldi, hogy próbálkozzon kapcsolódni + Networking.SendUpdate(Networking.UpdateType.RequestConn, new byte[] { 0x01 }, true); //Majd válaszol, hogy ő is próbálkozhat + } + else if (updatetype == Networking.UpdateType.MakeConn) + { //2014.11.23. + string[] s = Encoding.Unicode.GetString(data).Split(':'); + var secondEP = new IPEndPoint(IPAddress.Parse(s[0]), Int32.Parse(s[1])); + Networking.SendUpdate(Networking.UpdateType.MakeConn2, new byte[] { 0x01 }, false, secondEP); //Próbálkoziks + Networking.SendUpdate(Networking.UpdateType.MakeConn, new byte[] { 0x01 }, true); //Válaszol, hogy ne várjon rá a szerver + } + else if (updatetype == Networking.UpdateType.MakeConn2) + { //2014.11.23. + Networking.SendUpdate(Networking.UpdateType.MakeConn2, new byte[] { 0x01 }, true); //Végzett + }*/ + } while (false); + } + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/UserInfo.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/UserInfo.cs new file mode 100644 index 0000000..f5a9e11 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/UserInfo.cs @@ -0,0 +1,452 @@ +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 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(); + } + } + public int TMPListID { get; set; } //2014.12.05. + 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; + Update(); + } + } + 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; + Update(); + } + } + 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(); + Update(); + } + } + 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(); + } + } + public int PicUpdateTime + { + get + { + if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_picupdatetime")) + Storage.LoggedInSettings.Add("userinfo_" + UserID + "_picupdatetime", "0"); + return Int32.Parse(Storage.LoggedInSettings["userinfo_" + UserID + "_picupdatetime"]); + } + set + { + if (!Storage.LoggedInSettings.ContainsKey("userinfo_" + UserID + "_picupdatetime")) + Storage.LoggedInSettings.Add("userinfo_" + UserID + "_picupdatetime", "0"); + Storage.LoggedInSettings["userinfo_" + UserID + "_picupdatetime"] = value.ToString(); + Update(); + } + } + public string ImagePath = "noimage.png"; + /*public struct IPEndPoint - Nincs már szükség az IsServer beállításra + { + public IPEndPoint IP; + public bool IsServer;*/ + /*public IPEndPoint(IPEndPoint ip) + { + IP = ip; + IsServer = false; + }*/ + /*public IPEndPoint(IPEndPoint ip, bool isserver) + { + IP = ip; + IsServer = isserver; + } + }*/ + + 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() + { + } + ~UserInfo() //2014.10.09. + { + } + //public int PicUpdateTime = 0; + //public string GetImage() + public void GetImage(int receivedupdate) + { //Most már elvileg csak akkor hívja meg, amikor feldolgozza a kapott adatokat, tehát nem a Main Thread-ban + 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"); + + if (this.PicUpdateTime > receivedupdate) + { + if (File.Exists(tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png")) + this.ImagePath = tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; + else + this.ImagePath = "noimage.png"; + } + + //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")) + this.ImagePath = tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; + else + this.ImagePath = "noimage.png"; + } + bytesb = bytesb.Select(entry => Networking.ParsePacket(entry).Data).ToArray(); + 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 + byte[] bytes = new byte[bytesb[maxIndex].Length]; + Array.Copy(bytesb[maxIndex], 4, bytes, 0, bytes.Length); //Hagyja ki a PicUpdateTime-ot + + if (bytes[0] == 0x00) //Nincs kép, vagy hiba történt + { + this.ImagePath = "noimage.png"; + } + else if (bytes[0] == 0x01) + { + this.ImagePath = tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; + } + else + { //Mentse el a képet + File.WriteAllBytes(tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png", bytes); + this.ImagePath = tmp + "\\MSGer.tk\\pictures\\" + UserID + ".png"; //2014.08.16. + } + } + public List GetChatWindows() + { + List retlist = new List(); + for (int x = 0; x < ChatPanel.ChatWindows.Count; x++) + { + if (ChatPanel.ChatWindows[x].ChatPartners.Any(entry => entry.UserID == UserID)) + { + retlist.Add(x); + } + } + return retlist; + } + 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) + { + return (list.Count(entry => entry.UserID == userid) > 0); //2014.09.19. + } + public static UserInfo Select(int userid) + { + 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].TMPListID == ListID) //Ahol szükség van rá, ott az aktuális ListID szükséges, nem a beállított + 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(); + } + } + + private void UpdateTimerTick(object sender, EventArgs e) + { + UpdateTimer.Stop(); + //Partnerlista frissítése + //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 + state = " (" + Language.Translate("offline") + ")"; + string text = this.Name + state + "\n" + this.Message; + */ + if (ListID == -1) + { + int i; + for (i = 0; i < Program.MainF.contactList.Items.Count; i++) + { + if (Program.MainF.contactList.Items[i].SubItems[1].Text == "") + { + break; + } + } + ListID = i; + } + //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 })); + } + ((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;*/ + + CreateListItem(Program.MainF.contactList, ListID); + } + + /*internal static int GetPortForIP(IPAddress iPAddress) - Elküldi + { + throw new NotImplementedException(); //TODO + }*/ + + public void CreateListItem(RichListView listView, int pos) + { + //TO!DO: A fenti kódot átrakni ide, hogy itt létrehozza az item-et + //string imgpath = this.GetImage(); + string imgpath = this.ImagePath; //2014.12.31. + 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 + state = " (" + Language.Translate("offline") + ")"; + string text = this.Name + state + "\n" + this.Message; + + TMPListID = pos; + + bool tmp = listView.AutoUpdate; + listView.AutoUpdate = false; + listView.SuspendLayout(); //2014.12.21. + while (listView.Items.Count <= TMPListID) //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); + listView.Items.Add(new RichListViewItem(new Control[] { pictb, listtext })); + } + ((PictureBox)listView.Items[TMPListID].SubItems[0]).ImageLocation = imgpath; + listView.Items[TMPListID].SubItems[1].Text = text; + listView.Items[TMPListID].SubItems[1] = TextFormat.Parse((ExRichTextBox)listView.Items[TMPListID].SubItems[1]); + listView.AutoUpdate = tmp; + listView.ResumeLayout(true); //2014.12.21. + } + } +} diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/_MyNotifier.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/_MyNotifier.cs new file mode 100644 index 0000000..50bd026 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Debug/1.db b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/1.db new file mode 100644 index 0000000..4257df2 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/1.db differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/2.db b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/2.db new file mode 100644 index 0000000..7d2254c Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/2.db differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/GlacialList.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/GlacialList.dll new file mode 100644 index 0000000..6652693 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/GlacialList.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/GlacialList.pdb b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/GlacialList.pdb new file mode 100644 index 0000000..ee239c7 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/GlacialList.pdb differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Handwriting program.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Handwriting program.dll new file mode 100644 index 0000000..d949d4e Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Handwriting program.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Handwriting program.pdb b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Handwriting program.pdb new file mode 100644 index 0000000..b9cda3d Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Handwriting program.pdb differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.dll b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.pdb b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Debug/Khendys.Controls.ExRichTextBox.pdb differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/MSGer.tk.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/MSGer.tk.exe new file mode 100644 index 0000000..0037761 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/MSGer.tk.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/MSGer.tk.exe.CodeAnalysisLog.xml b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/MSGer.tk.exe.CodeAnalysisLog.xml new file mode 100644 index 0000000..84a5816 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Debug/MSGer.tk.exe.config b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/MSGer.tk.exe.config new file mode 100644 index 0000000..b8bf97a --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Debug/MSGer.tk.pdb b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/MSGer.tk.pdb new file mode 100644 index 0000000..d83a0a7 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/MSGer.tk.pdb differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe new file mode 100644 index 0000000..666c0af Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe.config b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/MSGer.tk.vshost.exe.config new file mode 100644 index 0000000..b8bf97a --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Debug/RichListView.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/RichListView.dll new file mode 100644 index 0000000..d3b744b Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/RichListView.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/RichListView.pdb b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/RichListView.pdb new file mode 100644 index 0000000..6e89f91 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/RichListView.pdb differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/LICENSE b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/LICENSE new file mode 100644 index 0000000..b6cae27 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/LICENSE @@ -0,0 +1,270 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +SUBVERSION SUBCOMPONENTS: + +Subversion includes a number of subcomponents with separate copyright +notices and license terms. Your use of the source code for the these +subcomponents is subject to the terms and conditions of the following +licenses. + +For portions of the Python bindings test suite at +subversion/bindings/swig/python/tests/trac/: + + I. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + + II. Copyright (C) 2003, 2004, 2005 Edgewall Software + Copyright (C) 2003, 2004, 2005 Jonas Borgström + Copyright (C) 2005 Christopher Lenz + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + the documentation and/or other materials provided with the + distribution. + 3. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +For the file subversion/libsvn_subr/utf_width.c + + * Markus Kuhn -- 2007-05-26 (Unicode 5.0) + * + * Permission to use, copy, modify, and distribute this software + * for any purpose and without fee is hereby granted. The author + * disclaims all warranties with regard to this software. diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/SVN Cheat Sheet.htm b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/SVN Cheat Sheet.htm new file mode 100644 index 0000000..2134755 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/SVN Cheat Sheet.htm @@ -0,0 +1,101 @@ + + + + + +SVN Cheat Sheet + + + + + + + + +
+
+Todo..
+
+
+ +
+
+Cheat Sheet
+
+
+ + + + diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/SVN Readme.htm b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/SVN Readme.htm new file mode 100644 index 0000000..d45f699 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/SVN Readme.htm @@ -0,0 +1,105 @@ + + + + + +SVN Readme + + + + + + + + +
+
+Windows binaries from http://alagazam.net/
+Subversion build 1.6.15 : Zip file (see website for latest versions)
+
+Also available on authors sourceforge site.
+http://sourceforge.net/projects/win32svn/files/
+
+
+ +
+
+Subversion Portable Readme
+
+
+ + + + diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/SVN Reference.htm b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/SVN Reference.htm new file mode 100644 index 0000000..862f04e --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/SVN Reference.htm @@ -0,0 +1,106 @@ + + + + + +SVN reference + + + + + + + + +
+
+Version Control with Subversion
+http://svnbook.red-bean.com/en/1.5/index.html
+
+Article - Dump a SVN repository from a URL
+http://pogopixels.com/blog/dumping-a-svn-repository-from-a-remote-url/
+
+
+
+ +
+
+Subversion References
+
+
+ + + + diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/intl3_svn.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/intl3_svn.dll new file mode 100644 index 0000000..850645a Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/intl3_svn.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libapr-1.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libapr-1.dll new file mode 100644 index 0000000..4942e33 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libapr-1.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libapriconv-1.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libapriconv-1.dll new file mode 100644 index 0000000..b14001b Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libapriconv-1.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libaprutil-1.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libaprutil-1.dll new file mode 100644 index 0000000..e50dbb4 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libaprutil-1.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libdb44.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libdb44.dll new file mode 100644 index 0000000..347a942 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libdb44.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libeay32.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libeay32.dll new file mode 100644 index 0000000..8cdeaed Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libeay32.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsasl.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsasl.dll new file mode 100644 index 0000000..770c06e Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsasl.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_client-1.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_client-1.dll new file mode 100644 index 0000000..0dc8be9 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_client-1.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_delta-1.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_delta-1.dll new file mode 100644 index 0000000..69e6eac Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_delta-1.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_diff-1.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_diff-1.dll new file mode 100644 index 0000000..97132ae Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_diff-1.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_fs-1.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_fs-1.dll new file mode 100644 index 0000000..1b3b2a8 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_fs-1.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_ra-1.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_ra-1.dll new file mode 100644 index 0000000..a5484ec Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_ra-1.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_repos-1.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_repos-1.dll new file mode 100644 index 0000000..c4bd5a7 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_repos-1.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_subr-1.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_subr-1.dll new file mode 100644 index 0000000..1d1544f Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_subr-1.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_wc-1.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_wc-1.dll new file mode 100644 index 0000000..e25391a Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/libsvn_wc-1.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/openssl.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/openssl.exe new file mode 100644 index 0000000..61f5e53 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/openssl.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/pluginviewer.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/pluginviewer.exe new file mode 100644 index 0000000..56f69a1 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/pluginviewer.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslANONYMOUS.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslANONYMOUS.dll new file mode 100644 index 0000000..db01077 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslANONYMOUS.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslCRAMMD5.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslCRAMMD5.dll new file mode 100644 index 0000000..86af07b Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslCRAMMD5.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslDIGESTMD5.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslDIGESTMD5.dll new file mode 100644 index 0000000..fc97449 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslDIGESTMD5.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslLOGIN.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslLOGIN.dll new file mode 100644 index 0000000..48e0862 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslLOGIN.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslNTLM.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslNTLM.dll new file mode 100644 index 0000000..1c6bd0d Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslNTLM.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslPLAIN.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslPLAIN.dll new file mode 100644 index 0000000..acf7c2c Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslPLAIN.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslSASLDB.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslSASLDB.dll new file mode 100644 index 0000000..69b5ac4 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslSASLDB.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/sasldblistusers2.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/sasldblistusers2.exe new file mode 100644 index 0000000..f997c6c Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/sasldblistusers2.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslpasswd2.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslpasswd2.exe new file mode 100644 index 0000000..544e037 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/saslpasswd2.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/ssleay32.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/ssleay32.dll new file mode 100644 index 0000000..ee1b39f Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/ssleay32.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svn-populate-node-origins-index.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svn-populate-node-origins-index.exe new file mode 100644 index 0000000..18a846f Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svn-populate-node-origins-index.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svn-push.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svn-push.exe new file mode 100644 index 0000000..2ce8b87 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svn-push.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svn.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svn.exe new file mode 100644 index 0000000..3ea00ea Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svn.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnadmin.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnadmin.exe new file mode 100644 index 0000000..647ccd8 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnadmin.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnauthz-validate.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnauthz-validate.exe new file mode 100644 index 0000000..2c75e15 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnauthz-validate.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svndumpfilter.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svndumpfilter.exe new file mode 100644 index 0000000..e309a27 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svndumpfilter.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnlook.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnlook.exe new file mode 100644 index 0000000..d8c5d7f Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnlook.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnmucc.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnmucc.exe new file mode 100644 index 0000000..f144b3d Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnmucc.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnserve.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnserve.exe new file mode 100644 index 0000000..bf75d49 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnserve.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnsync.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnsync.exe new file mode 100644 index 0000000..b28b0bc Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnsync.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnversion.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnversion.exe new file mode 100644 index 0000000..03ec595 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/SVN/svnversion.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.exe new file mode 100644 index 0000000..cbf5225 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.exe.config b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.pdb b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.pdb new file mode 100644 index 0000000..34f5b8e Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.pdb differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.vshost.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.vshost.exe new file mode 100644 index 0000000..666c0af Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.vshost.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.vshost.exe.config b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.vshost.exe.config new file mode 100644 index 0000000..fad249e --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/Updater.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/close.bmp b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/close.bmp new file mode 100644 index 0000000..8677d1e Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/close.bmp differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/languages/en.txt b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/languages/en.txt new file mode 100644 index 0000000..ca959f6 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/languages/en.txt @@ -0,0 +1,127 @@ +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=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=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 +settings_layout=Layout +settings_chatwindow=Show conversations in different window(s) +settings_chatwindowTabs=Organise conversations with tabs +settings_isserver=Server mode (port forwarding needed) +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. +error_no_network=No internet connection! +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... +stats_servers=Available servers +stats_onlineservers=Connected servers +stats_mainserver=Main server +stats_nonetwork=No network +stats_retrying=Reconnecting... +stats_connected=Connected +updater=Downloading updates... +updater_infO=If the system requests, allow running svn.exe +currentlang=English diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/languages/hu.txt b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/languages/hu.txt new file mode 100644 index 0000000..a553a0d --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/languages/hu.txt @@ -0,0 +1,127 @@ +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,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,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 +settings_layout=Kinézet +settings_chatwindow=A beszélgetések jelenjenek meg külön ablak(ok)ban +settings_chatwindowTabs=A beszélgetések fülekbe rendezése +settings_isserver=Szerver mód (port forwarding szükséges) +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. +error_no_network=Nincs internetkapcsolat! +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... +stats_servers=Elérhető szerverek +stats_onlineservers=Csatlakozott szerverek +stats_mainserver=Fő szerver +stats_nonetwork=Nincs hálózat +stats_retrying=Újracsatlakozás... +stats_connected=Csatlakozva +updater=Frissítések letöltése... +updater_info=Ha a rendszer kéri, engedélyezd az svn.exe futtatását +currentlang=Magyar diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/logs/network.txt b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/logs/network.txt new file mode 100644 index 0000000..dc87214 --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/logs/network.txt @@ -0,0 +1,486 @@ +[8924 | 2014.12.31. 18:27:17] Packet sending begins: there are users online and/or it is an update type that does not require that. +[8924 | 2014.12.31. 18:27:17] Packet created successfully (not response) with update type ListUpdate and data: System.Byte[] +[8924 | 2014.12.31. 18:27:17] Hole punching begins. +[8924 | 2014.12.31. 18:27:17] Packet sending begins: there are users online and/or it is an update type that does not require that. +[8924 | 2014.12.31. 18:27:17] Packet created successfully (not response) with update type CheckConn and data: System.Byte[] +[8924 | 2014.12.31. 18:27:17] Hole punching begins. +[8924 | 2014.12.31. 18:27:17] Hole punching done. +[8924 | 2014.12.31. 18:27:17] Sending to single ip: 192.168.1.6:4542 +[8924 | 2014.12.31. 18:27:17] Starting to wait on response... +[8924 | 2014.12.31. 18:27:17] Waiting to get response... Wait time: 2seconds +[2488 | 2014.12.31. 18:27:17] Packet sending begins: there are users online and/or it is an update type that does not require that. +[2488 | 2014.12.31. 18:27:17] Packet created successfully (response) with update type CheckConn and data: System.Byte[] +[2488 | 2014.12.31. 18:27:17] Hole punching begins. +[2488 | 2014.12.31. 18:27:17] Hole punching done. +[2488 | 2014.12.31. 18:27:17] Sending to single ip: 192.168.1.6:4543 +[8924 | 2014.12.31. 18:27:17] A response received. +[8924 | 2014.12.31. 18:27:17] Response is from known ip or it's not required to be that. +[8924 | 2014.12.31. 18:27:17] Packet parsed. +[8924 | 2014.12.31. 18:27:17] Complete success! +[8924 | 2014.12.31. 18:27:17] Waiting to get response... Wait time: 2seconds +[8924 | 2014.12.31. 18:27:19] No response received. Retrying... +[8924 | 2014.12.31. 18:27:19] Waiting to get response... Wait time: 4seconds +[2488 | 2014.12.31. 18:27:19] Packet sending begins: there are users online and/or it is an update type that does not require that. +[2488 | 2014.12.31. 18:27:19] Packet created successfully (response) with update type CheckConn and data: System.Byte[] +[2488 | 2014.12.31. 18:27:19] Hole punching begins. +[2488 | 2014.12.31. 18:27:19] Hole punching done. +[2488 | 2014.12.31. 18:27:19] Sending to single ip: 192.168.1.6:4543 +[8924 | 2014.12.31. 18:27:21] No response received. Retrying... +[8924 | 2014.12.31. 18:27:21] Waiting to get response... Wait time: 6seconds +[2488 | 2014.12.31. 18:27:21] Packet sending begins: there are users online and/or it is an update type that does not require that. +[2488 | 2014.12.31. 18:27:21] Packet created successfully (response) with update type CheckConn and data: System.Byte[] +[2488 | 2014.12.31. 18:27:21] Hole punching begins. +[2488 | 2014.12.31. 18:27:21] Hole punching done. +[2488 | 2014.12.31. 18:27:21] Sending to single ip: 192.168.1.6:4543 +[8924 | 2014.12.31. 18:27:23] No response received. Retrying... +[8924 | 2014.12.31. 18:27:23] Waiting to get response... Wait time: 8seconds +[2488 | 2014.12.31. 18:27:23] Packet sending begins: there are users online and/or it is an update type that does not require that. +[2488 | 2014.12.31. 18:27:23] Packet created successfully (response) with update type CheckConn and data: System.Byte[] +[2488 | 2014.12.31. 18:27:23] Hole punching begins. +[2488 | 2014.12.31. 18:27:23] Hole punching done. +[2488 | 2014.12.31. 18:27:23] Sending to single ip: 192.168.1.6:4543 +[8924 | 2014.12.31. 18:27:25] No response received. Retrying... +[8924 | 2014.12.31. 18:27:25] Waiting to get response... Wait time: 10seconds +[2488 | 2014.12.31. 18:27:25] Packet sending begins: there are users online and/or it is an update type that does not require that. +[2488 | 2014.12.31. 18:27:25] Packet created successfully (response) with update type CheckConn and data: System.Byte[] +[2488 | 2014.12.31. 18:27:25] Hole punching begins. +[2488 | 2014.12.31. 18:27:25] Hole punching done. +[2488 | 2014.12.31. 18:27:25] Sending to single ip: 192.168.1.6:4543 +[8924 | 2014.12.31. 18:27:27] No response received. Retrying... +[8924 | 2014.12.31. 18:27:27] Resetting everything. +[8924 | 2014.12.31. 18:27:27] Returning response if there was any. +[2488 | 2014.12.31. 18:27:27] Packet sending begins: there are users online and/or it is an update type that does not require that. +[8924 | 2014.12.31. 18:27:27] Hole punching done. +[8924 | 2014.12.31. 18:27:27] Sending to every known user... +[8924 | 2014.12.31. 18:27:27] Starting to wait on response... +[8924 | 2014.12.31. 18:27:27] Waiting to get response... Wait time: 2seconds +[2488 | 2014.12.31. 18:27:27] Packet created successfully (response) with update type CheckConn and data: System.Byte[] +[2488 | 2014.12.31. 18:27:27] Hole punching begins. +[2488 | 2014.12.31. 18:27:27] Hole punching done. +[2488 | 2014.12.31. 18:27:27] Sending to single ip: 192.168.1.6:4543 +[8924 | 2014.12.31. 18:27:29] No response received. Retrying... +[8924 | 2014.12.31. 18:27:29] Waiting to get response... Wait time: 4seconds +[8924 | 2014.12.31. 18:27:31] No response received. Retrying... +[8924 | 2014.12.31. 18:27:31] Waiting to get response... Wait time: 6seconds +[8924 | 2014.12.31. 18:27:33] No response received. Retrying... +[8924 | 2014.12.31. 18:27:33] Waiting to get response... Wait time: 8seconds +[8924 | 2014.12.31. 18:27:35] No response received. Retrying... +[8924 | 2014.12.31. 18:27:35] Waiting to get response... Wait time: 10seconds +[8924 | 2014.12.31. 18:27:37] No response received. Retrying... +[8924 | 2014.12.31. 18:27:37] Resetting everything. +[8924 | 2014.12.31. 18:27:37] Returning response if there was any. +[5220: Network Thread | 2014.12.31. 18:30:35] Packet sending begins: there are users online and/or it is an update type that does not require that. +[5220: Network Thread | 2014.12.31. 18:30:35] Packet created successfully (not response) with update type LoginUser +[5220: Network Thread | 2014.12.31. 18:30:35] Hole punching begins. +[5220: Network Thread | 2014.12.31. 18:30:35] Hole punching done. +[5220: Network Thread | 2014.12.31. 18:30:35] Sending to every known user... +[5220: Network Thread | 2014.12.31. 18:30:35] Starting to wait on response... +[5220: Network Thread | 2014.12.31. 18:30:35] Resetting everything. +[5220: Network Thread | 2014.12.31. 18:30:35] Returning response if there was any. +[3272: Network Thread | 2014.12.31. 18:34:42] Packet sending begins: there are users online and/or it is an update type that does not require that. +[3272: Network Thread | 2014.12.31. 18:34:42] Packet created successfully (not response) with update type LoginUser +[3272: Network Thread | 2014.12.31. 18:34:42] Hole punching begins. +[3272: Network Thread | 2014.12.31. 18:34:42] Hole punching done. +[3272: Network Thread | 2014.12.31. 18:34:42] Sending to every known user... +[3272: Network Thread | 2014.12.31. 18:34:42] Starting to wait on response... +[3272: Network Thread | 2014.12.31. 18:34:42] Resetting everything. +[3272: Network Thread | 2014.12.31. 18:34:42] Returning response if there was any. +[7572: Network Thread | 2014.12.31. 18:34:49] Packet sending begins: there are users online and/or it is an update type that does not require that. +[7572: Network Thread | 2014.12.31. 18:34:49] Packet created successfully (not response) with update type LoginUser +[7572: Network Thread | 2014.12.31. 18:34:49] Hole punching begins. +[7572: Network Thread | 2014.12.31. 18:34:49] Packet sending begins: there are users online and/or it is an update type that does not require that. +[7572: Network Thread | 2014.12.31. 18:34:49] Packet created successfully (not response) with update type CheckConn +[7572: Network Thread | 2014.12.31. 18:34:49] Hole punching begins. +[7572: Network Thread | 2014.12.31. 18:34:49] Hole punching done. +[7572: Network Thread | 2014.12.31. 18:34:49] Sending to single ip: 192.168.1.6:4542 +[7572: Network Thread | 2014.12.31. 18:34:49] Starting to wait on response... +[7572: Network Thread | 2014.12.31. 18:34:49] Waiting to get response... Wait time: 2seconds +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:49] Packet sending begins: there are users online and/or it is an update type that does not require that. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:49] Packet created successfully (response) with update type CheckConn +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:49] Hole punching begins. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:49] Hole punching done. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:49] Sending to single ip: 192.168.1.6:4543 +[7572: Network Thread | 2014.12.31. 18:34:49] A response received. +[7572: Network Thread | 2014.12.31. 18:34:49] Response is from known ip or it's not required to be that. +[7572: Network Thread | 2014.12.31. 18:34:49] Packet parsed. +[7572: Network Thread | 2014.12.31. 18:34:49] Complete success! +[7572: Network Thread | 2014.12.31. 18:34:49] Waiting to get response... Wait time: 2seconds +[7572: Network Thread | 2014.12.31. 18:34:51] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:34:51] Waiting to get response... Wait time: 4seconds +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:51] Packet sending begins: there are users online and/or it is an update type that does not require that. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:51] Packet created successfully (response) with update type CheckConn +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:51] Hole punching begins. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:51] Hole punching done. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:51] Sending to single ip: 192.168.1.6:4543 +[7572: Network Thread | 2014.12.31. 18:34:53] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:34:53] Waiting to get response... Wait time: 6seconds +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:53] Packet sending begins: there are users online and/or it is an update type that does not require that. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:53] Packet created successfully (response) with update type CheckConn +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:53] Hole punching begins. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:53] Hole punching done. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:53] Sending to single ip: 192.168.1.6:4543 +[7572: Network Thread | 2014.12.31. 18:34:55] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:34:55] Waiting to get response... Wait time: 8seconds +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:55] Packet sending begins: there are users online and/or it is an update type that does not require that. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:55] Packet created successfully (response) with update type CheckConn +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:55] Hole punching begins. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:55] Hole punching done. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:55] Sending to single ip: 192.168.1.6:4543 +[7572: Network Thread | 2014.12.31. 18:34:57] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:34:57] Waiting to get response... Wait time: 10seconds +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:57] Packet sending begins: there are users online and/or it is an update type that does not require that. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:57] Packet created successfully (response) with update type CheckConn +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:57] Hole punching begins. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:57] Hole punching done. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:57] Sending to single ip: 192.168.1.6:4543 +[7572: Network Thread | 2014.12.31. 18:34:59] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:34:59] Resetting everything. +[7572: Network Thread | 2014.12.31. 18:34:59] Returning response if there was any. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:59] Packet sending begins: there are users online and/or it is an update type that does not require that. +[7572: Network Thread | 2014.12.31. 18:34:59] Hole punching done. +[7572: Network Thread | 2014.12.31. 18:34:59] Sending to every known user... +[7572: Network Thread | 2014.12.31. 18:34:59] Starting to wait on response... +[7572: Network Thread | 2014.12.31. 18:34:59] Waiting to get response... Wait time: 2seconds +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:59] Packet created successfully (response) with update type CheckConn +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:59] Hole punching begins. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:59] Hole punching done. +[3272: Update Partnerlist and Chat | 2014.12.31. 18:34:59] Sending to single ip: 192.168.1.6:4543 +[7572: Network Thread | 2014.12.31. 18:35:01] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:35:01] Waiting to get response... Wait time: 4seconds +[7572: Network Thread | 2014.12.31. 18:35:03] No response received. Retrying... +[7572: Network Thread | 2014.12.31. 18:35:03] Waiting to get response... Wait time: 6seconds +[6284: Network Thread | 2014.12.31. 18:36:30] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6284: Network Thread | 2014.12.31. 18:36:30] Packet created successfully (not response) with update type LoginUser +[6284: Network Thread | 2014.12.31. 18:36:30] Hole punching begins. +[6284: Network Thread | 2014.12.31. 18:36:30] Hole punching done. +[6284: Network Thread | 2014.12.31. 18:36:30] Sending to every known user... +[6284: Network Thread | 2014.12.31. 18:36:30] Starting to wait on response... +[6284: Network Thread | 2014.12.31. 18:36:30] Resetting everything. +[6284: Network Thread | 2014.12.31. 18:36:30] Returning response if there was any. +[4984: Network Thread | 2015.01.07. 20:16:43] Packet sending begins: there are users online and/or it is an update type that does not require that. +[4984: Network Thread | 2015.01.07. 20:16:43] Packet created successfully (not response) with update type LoginUser +[4984: Network Thread | 2015.01.07. 20:16:43] Hole punching begins. +[4984: Network Thread | 2015.01.07. 20:16:43] Hole punching done. +[4984: Network Thread | 2015.01.07. 20:16:43] Sending to every known user... +[4984: Network Thread | 2015.01.07. 20:16:43] Starting to wait on response... +[4984: Network Thread | 2015.01.07. 20:16:43] Resetting everything. +[4984: Network Thread | 2015.01.07. 20:16:43] Returning response if there was any. +[6584: Network Thread | 2015.01.12. 20:00:23] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Network Thread | 2015.01.12. 20:00:23] Packet created successfully (not response) with update type LoginUser +[6584: Network Thread | 2015.01.12. 20:00:23] Hole punching begins. +[6584: Network Thread | 2015.01.12. 20:00:23] Hole punching done. +[6584: Network Thread | 2015.01.12. 20:00:23] Sending to every known user... +[6584: Network Thread | 2015.01.12. 20:00:23] Starting to wait on response... +[6584: Network Thread | 2015.01.12. 20:00:23] Resetting everything. +[6584: Network Thread | 2015.01.12. 20:00:23] Returning response if there was any. +[6440: Network Thread | 2015.01.12. 20:01:14] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6440: Network Thread | 2015.01.12. 20:01:14] Packet created successfully (not response) with update type LoginUser +[6440: Network Thread | 2015.01.12. 20:01:15] Hole punching begins. +[6440: Network Thread | 2015.01.12. 20:01:15] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6440: Network Thread | 2015.01.12. 20:01:15] Packet created successfully (not response) with update type CheckConn +[6440: Network Thread | 2015.01.12. 20:01:15] Hole punching begins. +[6440: Network Thread | 2015.01.12. 20:01:15] Hole punching done. +[6440: Network Thread | 2015.01.12. 20:01:15] Sending to single ip: 192.168.1.6:4542 +[6440: Network Thread | 2015.01.12. 20:01:15] Starting to wait on response... +[6440: Network Thread | 2015.01.12. 20:01:15] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:15] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:15] Packet created successfully (response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:15] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:15] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:15] Sending to single ip: 192.168.1.6:4543 +[6440: Network Thread | 2015.01.12. 20:01:15] A response received. +[6440: Network Thread | 2015.01.12. 20:01:15] Response is from known ip or it's not required to be that. +[6440: Network Thread | 2015.01.12. 20:01:15] Packet parsed. +[6440: Network Thread | 2015.01.12. 20:01:15] Complete success! +[6440: Network Thread | 2015.01.12. 20:01:15] Waiting to get response... Wait time: 2seconds +[6440: Network Thread | 2015.01.12. 20:01:17] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:17] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:17] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:17] Packet created successfully (response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:17] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:17] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:17] Sending to single ip: 192.168.1.6:4543 +[6440: Network Thread | 2015.01.12. 20:01:19] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:19] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:19] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:19] Packet created successfully (response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:19] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:19] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:19] Sending to single ip: 192.168.1.6:4543 +[6440: Network Thread | 2015.01.12. 20:01:21] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:21] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:21] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:21] Packet created successfully (response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:21] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:21] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:21] Sending to single ip: 192.168.1.6:4543 +[6440: Network Thread | 2015.01.12. 20:01:23] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:23] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:23] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:23] Packet created successfully (response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:23] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:23] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:01:23] Sending to single ip: 192.168.1.6:4543 +[6440: Network Thread | 2015.01.12. 20:01:25] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:25] Resetting everything. +[6440: Network Thread | 2015.01.12. 20:01:25] Returning response if there was any. +[6440: Network Thread | 2015.01.12. 20:01:25] Hole punching done. +[6440: Network Thread | 2015.01.12. 20:01:25] Sending to every known user... +[6440: Network Thread | 2015.01.12. 20:01:25] Starting to wait on response... +[6440: Network Thread | 2015.01.12. 20:01:25] Waiting to get response... Wait time: 2seconds +[6440: Network Thread | 2015.01.12. 20:01:27] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:27] Waiting to get response... Wait time: 4seconds +[6440: Network Thread | 2015.01.12. 20:01:29] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:29] Waiting to get response... Wait time: 6seconds +[6440: Network Thread | 2015.01.12. 20:01:31] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:31] Waiting to get response... Wait time: 8seconds +[6440: Network Thread | 2015.01.12. 20:01:33] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:33] Waiting to get response... Wait time: 10seconds +[6440: Network Thread | 2015.01.12. 20:01:35] No response received. Retrying... +[6440: Network Thread | 2015.01.12. 20:01:35] Resetting everything. +[6440: Network Thread | 2015.01.12. 20:01:35] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:06] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:06] Packet created successfully (response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:06] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:06] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:06] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Packet created successfully (response) with update type LoginUser +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Packet created successfully (not response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:07] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:09] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:09] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:11] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:11] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:13] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:13] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:15] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:15] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Packet created successfully (not response) with update type RequestConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:17] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:19] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:19] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:21] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:21] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:23] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:23] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:25] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:25] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Packet created successfully (response) with update type LoginUser +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Packet created successfully (not response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:27] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:29] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:29] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:31] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:31] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:33] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:33] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:35] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:35] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Packet created successfully (not response) with update type RequestConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:37] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:39] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:39] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:41] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:41] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:43] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:43] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:45] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:45] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Packet created successfully (response) with update type LoginUser +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Packet created successfully (not response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:47] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:49] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:49] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:51] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:51] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:53] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:53] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:55] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:55] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Packet created successfully (not response) with update type RequestConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:57] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:59] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:02:59] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:01] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:01] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:03] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:03] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:05] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:05] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:07] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:07] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:07] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:07] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:07] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Packet created successfully (response) with update type LoginUser +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Packet created successfully (not response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:08] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:10] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:10] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:12] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:12] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:14] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:14] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:16] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:16] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Packet created successfully (not response) with update type RequestConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:18] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:20] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:20] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:22] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:22] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:24] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:24] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:26] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:26] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Packet created successfully (response) with update type LoginUser +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Packet created successfully (not response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:28] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:30] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:30] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:32] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:32] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:34] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:34] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:36] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:36] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Packet created successfully (not response) with update type RequestConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:38] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:40] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:40] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:58] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:59] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:59] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:59] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:03:59] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Packet created successfully (response) with update type LoginUser +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Packet created successfully (not response) with update type CheckConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Sending to single ip: 192.168.1.6:4543 +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:00] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:02] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:02] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:04] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:04] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:06] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:06] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:08] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:08] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Packet sending begins: there are users online and/or it is an update type that does not require that. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Packet created successfully (not response) with update type RequestConn +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Hole punching begins. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Sending to every known user... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Starting to wait on response... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:10] Waiting to get response... Wait time: 2seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:12] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:12] Waiting to get response... Wait time: 4seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:14] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:14] Waiting to get response... Wait time: 6seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:16] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:16] Waiting to get response... Wait time: 8seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:18] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:18] Waiting to get response... Wait time: 10seconds +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:20] No response received. Retrying... +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:20] Resetting everything. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:20] Returning response if there was any. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:20] Hole punching done. +[6584: Update Partnerlist and Chat | 2015.01.12. 20:04:20] Sending to every known user... diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/noimage.png b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/noimage.png new file mode 100644 index 0000000..7519e19 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/noimage.png differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/popup-bg.bmp b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Debug/popup-bg.bmp differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/program.db b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/program.db new file mode 100644 index 0000000..d9a06f4 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Debug/program.db differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/GlacialList.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/GlacialList.dll new file mode 100644 index 0000000..6652693 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/GlacialList.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/GlacialList.pdb b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/GlacialList.pdb new file mode 100644 index 0000000..ee239c7 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/GlacialList.pdb differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.dll b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.pdb b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Release/Khendys.Controls.ExRichTextBox.pdb differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/MSGer.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/MSGer.exe new file mode 100644 index 0000000..6f44cc0 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/MSGer.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/MSGer.tk.exe b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Release/MSGer.tk.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/MSGer.tk.exe.config b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/MSGer.tk.exe.config new file mode 100644 index 0000000..b8bf97a --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Release/MSGer.tk.pdb b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Release/MSGer.tk.pdb differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe.config b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/MSGer.tk.vshost.exe.config new file mode 100644 index 0000000..b8bf97a --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Release/RichListView.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/RichListView.dll new file mode 100644 index 0000000..d80b490 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/RichListView.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/RichListView.pdb b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/RichListView.pdb new file mode 100644 index 0000000..08d5ff2 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/RichListView.pdb differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/close.bmp b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/close.bmp new file mode 100644 index 0000000..8677d1e Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/close.bmp differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/languages/en.txt b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/languages/en.txt new file mode 100644 index 0000000..b44ffff --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Release/languages/hu.txt b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/languages/hu.txt new file mode 100644 index 0000000..f9b50c2 --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Release/noimage.png b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/noimage.png new file mode 100644 index 0000000..7519e19 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/noimage.png differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/bin/Release/popup-bg.bmp b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/bin/Release/popup-bg.bmp differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..61ddb21 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..8caedef Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/Interop.NATUPNPLib.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/Interop.NATUPNPLib.dll new file mode 100644 index 0000000..4626e36 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/Interop.NATUPNPLib.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/Interop.UPNPLib.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/Interop.UPNPLib.dll new file mode 100644 index 0000000..9db5884 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/Interop.UPNPLib.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.AboutBox1.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/MSGer.tk.AboutBox1.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.AddPartner.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/MSGer.tk.AddPartner.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.BeforeLogin.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/MSGer.tk.BeforeLogin.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.ChatForm.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/MSGer.tk.ChatForm.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.ChatPanel.resources b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.ChatPanel.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.ChatPanel.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.InvitePartner.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/MSGer.tk.InvitePartner.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm_RegistrationForm.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/MSGer.tk.LoginForm_RegistrationForm.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.MainForm.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/MSGer.tk.MainForm.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.Notifier.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/MSGer.tk.Notifier.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.PartnerInformation.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/MSGer.tk.PartnerInformation.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.Properties.Resources.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/MSGer.tk.Properties.Resources.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.SelectPartnerForm.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/MSGer.tk.SelectPartnerForm.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsForm.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/MSGer.tk.SettingsForm.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.ThemedForms.resources b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.ThemedForms.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.ThemedForms.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..f52c08d --- /dev/null +++ b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.FileListAbsolute.txt @@ -0,0 +1,78 @@ +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\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.BeforeLogin.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.PartnerInformation.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.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\obj\Debug\MSGer.tk.ChatPanel.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\Handwriting program.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\bin\Debug\Handwriting program.pdb +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.ThemedForms.resources +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\Interop.NATUPNPLib.dll +D:\Z - Norbi cucca\0 Projektek\MSGer.tk\0 Repository\MSGer.tk\obj\Debug\MSGer.tk.csproj.ResolveComReference.cache diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache new file mode 100644 index 0000000..3764689 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.GenerateResource.Cache differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.ResolveComReference.cache b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.ResolveComReference.cache new file mode 100644 index 0000000..149a1d3 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.csproj.ResolveComReference.cache differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..17eb322 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.csprojResolveAssemblyReference.cache differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.exe b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.exe new file mode 100644 index 0000000..0037761 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.pdb b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.pdb new file mode 100644 index 0000000..d83a0a7 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/MSGer.tk.pdb differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..61bf257 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferences.cache b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..1f92c39 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferences.cache differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..ee38181 Binary files /dev/null and b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.AboutBox1.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.AboutBox1.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.AddPartner.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.AddPartner.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.ChatForm.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.ChatForm.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.InvitePartner.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.InvitePartner.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm_RegistrationForm.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.LoginForm_RegistrationForm.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.MainForm.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.MainForm.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.Notifier.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.Notifier.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.Properties.Resources.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.Properties.Resources.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.SelectPartnerForm.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.SelectPartnerForm.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.SettingsForm.resources b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.SettingsForm.resources differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.csproj.FileListAbsolute.txt b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..a9cd58a --- /dev/null +++ b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.csproj.GenerateResource.Cache b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.csproj.GenerateResource.Cache differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.csprojResolveAssemblyReference.cache b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.csprojResolveAssemblyReference.cache differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.exe b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.exe differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/MSGer.tk.pdb b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/MSGer.tk.pdb differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/TempPE/Properties.Resources.Designer.cs.dll b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Versions/Less Closed Beta/v4.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/v4.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Versions/Less Closed Beta/v4.0/MSGer.tk/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29