Implemented user viewing/adding.

Tried to add old sessions (broken).
This commit is contained in:
2015-10-20 00:26:56 +02:00
parent 90c4072bb1
commit af684d2986
9 changed files with 186 additions and 82 deletions
@@ -13,17 +13,20 @@ namespace ErgometerDoctorApplication
public int Session { get; }
public string Name { get; }
public bool IsOldData { get; }
private SessionWindow window;
public List<Meting> Metingen { get; }
public List<Meting> Metingen { get; set; }
public List<ChatMessage> Chat { get; }
public ClientThread(string name, int session)
public ClientThread(string name, int session, bool old)
{
Name = name;
Session = session;
IsOldData = old;
window = new SessionWindow(Name, true, Session, this);
window = new SessionWindow(Name, old, Session, this);
window.FormClosed += Window_FormClosed;
Metingen = new List<Meting>();
@@ -40,11 +43,14 @@ namespace ErgometerDoctorApplication
switch (command.Type)
{
case NetCommand.CommandType.DATA:
lock(Metingen)
if (!IsOldData)
{
Metingen.Add(command.Meting);
lock (Metingen)
{
Metingen.Add(command.Meting);
}
window.Invoke(window.updateMetingen, new Object[] { command.Meting });
}
window.Invoke(window.updateMetingen, new Object[] { command.Meting });
break;
case NetCommand.CommandType.CHAT:
ChatMessage chat = new ChatMessage(command.DisplayName, command.ChatMessage, false);
@@ -67,7 +73,14 @@ namespace ErgometerDoctorApplication
private void sendCommand(NetCommand command)
{
MainClient.SendNetCommand(command);
if(! IsOldData)
MainClient.SendNetCommand(command);
}
public void HandMetingen(List<Meting> metingen)
{
Metingen = metingen;
window.Invoke(window.updateMetingen, new Object[] { new Meting(0,0,0,0,0,0,0,0,0) });
}
}
@@ -25,9 +25,9 @@ namespace ErgometerDoctorApplication
public delegate void UpdateMetingen(Meting m);
public UpdateMetingen updateMetingen;
public SessionWindow(string ClientName, bool ActiveSessionm, int session, ClientThread parentthread)
public SessionWindow(string ClientName, bool old, int session, ClientThread parentthread)
{
this.ActiveSession = ActiveSession;
this.ActiveSession = !old;
this.ClientName = ClientName;
this.client = parentthread;
Session = session;
@@ -38,7 +38,8 @@ namespace ErgometerDoctorApplication
InitializeComponent();
Form.CheckForIllegalCrossThreadCalls = false;
if (!ActiveSession)
panelClientChat.Visible = false;
}
public void ClientApplicatie_Resize(object sender, EventArgs e)
@@ -83,6 +83,8 @@ namespace ErgometerDoctorApplication
this.Controls.Add(flowlayout);
//this.Controls.Add(data);
updateActiveSessions(MainClient.activesessions);
}
+74 -1
View File
@@ -1,4 +1,5 @@
using System;
using ErgometerLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -9,8 +10,62 @@ namespace ErgometerDoctorApplication
{
public class ConClientData : Panel
{
public System.Windows.Forms.TextBox textBoxPassword;
public System.Windows.Forms.TextBox textBoxUsername;
public System.Windows.Forms.Button buttonCreate;
public System.Windows.Forms.ListBox listUsers;
public ConClientData() : base()
{
this.buttonCreate = new System.Windows.Forms.Button();
this.textBoxPassword = new System.Windows.Forms.TextBox();
this.textBoxUsername = new System.Windows.Forms.TextBox();
this.listUsers = new System.Windows.Forms.ListBox();
//
// buttonLogin
//
this.buttonCreate.Anchor = System.Windows.Forms.AnchorStyles.None;
this.buttonCreate.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonCreate.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonCreate.Location = new System.Drawing.Point(0, -40);
this.buttonCreate.Name = "buttonCreate";
this.buttonCreate.Size = new System.Drawing.Size(168, 31);
this.buttonCreate.TabIndex = 3;
this.buttonCreate.Text = "Aanmaken";
this.buttonCreate.UseVisualStyleBackColor = true;
this.buttonCreate.Click += new System.EventHandler(this.buttonCreate_Click);
//
// textBoxPassword
//
this.textBoxPassword.Anchor = System.Windows.Forms.AnchorStyles.None;
this.textBoxPassword.Location = new System.Drawing.Point(0, 0);
this.textBoxPassword.MaxLength = 16;
this.textBoxPassword.Name = "textBoxPassword";
this.textBoxPassword.Size = new System.Drawing.Size(167, 20);
this.textBoxPassword.TabIndex = 2;
//
// textBoxUsername
//
this.textBoxUsername.Anchor = System.Windows.Forms.AnchorStyles.None;
this.textBoxUsername.Location = new System.Drawing.Point(0, 40);
this.textBoxUsername.MaxLength = 16;
this.textBoxUsername.Name = "textBoxUsername";
this.textBoxUsername.Size = new System.Drawing.Size(167, 20);
this.textBoxUsername.TabIndex = 2;
//
// listUsers
//
this.listUsers.Anchor = System.Windows.Forms.AnchorStyles.None;
this.listUsers.Location = new System.Drawing.Point(0, 80);
this.listUsers.Name = "listUsers";
this.listUsers.Size = new System.Drawing.Size(200, 400);
this.listUsers.Items.Add("No Users");
this.Controls.Add(this.listUsers);
this.Controls.Add(this.buttonCreate);
this.Controls.Add(this.textBoxUsername);
this.Controls.Add(this.textBoxPassword);
//
// ConClientData
//
@@ -20,7 +75,25 @@ namespace ErgometerDoctorApplication
this.Size = new System.Drawing.Size(584, 459);
this.TabIndex = 0;
this.BackColor = System.Drawing.Color.Red;
}
internal void updateUsers(Dictionary<string, string> users)
{
this.listUsers.Items.Clear();
foreach(KeyValuePair<string, string> user in users)
{
this.listUsers.Items.Add(user.Key + ": " + user.Value);
}
}
private void buttonCreate_Click(object sender, EventArgs e)
{
MainClient.SendNetCommand(new NetCommand(textBoxUsername.Text, textBoxPassword.Text, MainClient.Session));
MainClient.SendNetCommand(new NetCommand(NetCommand.RequestType.USERS, MainClient.Session));
}
}
}
@@ -1,26 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ErgometerDoctorApplication
{
public class ConSessionLibrary : Panel
{
public ConSessionLibrary() : base()
{
//
// ConSessionLibrary
//
this.Dock = System.Windows.Forms.DockStyle.Fill;
this.Location = new System.Drawing.Point(0, 0);
this.Name = "ConSessionLibrary";
this.Size = new System.Drawing.Size(584, 459);
this.TabIndex = 0;
this.BackColor = System.Drawing.Color.Blue;
}
}
}
@@ -83,9 +83,6 @@
<Compile Include="ConActiveSessions.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="ConSessionLibrary.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="MainClient.cs" />
<Compile Include="MainWindow.cs">
<SubType>Form</SubType>
+68 -13
View File
@@ -62,7 +62,7 @@ namespace ErgometerDoctorApplication
{
Server.Connect(HOST, PORT);
}
catch(Exception e)
catch (Exception e)
{
error = "Server is niet online.";
return false;
@@ -121,19 +121,31 @@ namespace ErgometerDoctorApplication
if (Server.Connected && Server.Available > 0)
{
NetCommand command = NetHelper.ReadNetCommand(Server);
switch(command.Type)
Console.WriteLine(command.Type.ToString());
switch (command.Type)
{
case NetCommand.CommandType.LENGTH:
switch(command.Length)
Console.WriteLine(command.Length.ToString() + " : " + command.LengthValue);
switch (command.Length)
{
case NetCommand.LengthType.USERS:
users.Clear();
for(int i=0; i<command.LengthValue; i++)
lock (users)
{
NetCommand c = NetHelper.ReadNetCommand(Server);
if(c.Type == NetCommand.CommandType.USER)
users.Clear();
for (int i = 0; i < command.LengthValue; i++)
{
users.Add(c.DisplayName, c.Password);
NetCommand c = NetHelper.ReadNetCommand(Server);
if (c.Type == NetCommand.CommandType.USER)
{
try
{
users.Add(c.DisplayName, c.Password);
}
catch (ArgumentException e)
{
// ignore double username
}
}
}
}
break;
@@ -159,6 +171,21 @@ namespace ErgometerDoctorApplication
}
}
break;
case NetCommand.LengthType.DATA:
Console.WriteLine(command);
List<Meting> metingen = new List<Meting>();
for (int i = 0; i < command.LengthValue; i++)
{
NetCommand c = NetHelper.ReadNetCommand(Server);
Console.WriteLine(c);
if (c.Type == NetCommand.CommandType.DATA)
{
metingen.Add(c.Meting);
}
}
HandMetingenToClient(metingen, command.Session);
break;
default:
throw new FormatException("Error in NetCommand: Length type is not recognised");
}
@@ -170,7 +197,7 @@ namespace ErgometerDoctorApplication
HandToClient(command);
break;
}
}
}
@@ -179,15 +206,26 @@ namespace ErgometerDoctorApplication
private static void HandToClient(NetCommand command)
{
foreach(ClientThread cl in clients)
foreach (ClientThread cl in clients)
{
if(cl.Session == command.Session)
if (cl.Session == command.Session)
{
cl.HandleCommand(command);
}
}
}
private static void HandMetingenToClient(List<Meting> metingen, int session)
{
foreach (ClientThread cl in clients)
{
if (cl.Session == session)
{
cl.HandMetingen(metingen);
}
}
}
public static void SendNetCommand(NetCommand command)
{
NetHelper.SendNetCommand(Server, command);
@@ -195,7 +233,7 @@ namespace ErgometerDoctorApplication
private static bool IsSessionRunning(int session)
{
foreach(ClientThread cl in clients)
foreach (ClientThread cl in clients)
{
if (cl.Session == session)
return true;
@@ -210,7 +248,24 @@ namespace ErgometerDoctorApplication
return;
//Start new client
ClientThread cl = new ClientThread(name, session);
ClientThread cl = new ClientThread(name, session, false);
clients.Add(cl);
//Run client on new thread
Thread thread = new Thread(new ThreadStart(cl.run));
thread.IsBackground = true;
thread.Start();
}
public static void StartOldCLient(string name, int session)
{
if (IsSessionRunning(session))
return;
SendNetCommand(new NetCommand(NetCommand.RequestType.OLDDATA, session));
//Start new client
ClientThread cl = new ClientThread(name, session, true);
clients.Add(cl);
//Run client on new thread
-21
View File
@@ -33,7 +33,6 @@ namespace ErgometerDoctorApplication
{
this.MenuPanel = new System.Windows.Forms.Panel();
this.BtnLogout = new System.Windows.Forms.Button();
this.BtnSessionLibrary = new System.Windows.Forms.Button();
this.BtnSessionHistory = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
@@ -51,7 +50,6 @@ namespace ErgometerDoctorApplication
this.conActiveSessions = new ErgometerDoctorApplication.ConActiveSessions();
this.conClientData = new ErgometerDoctorApplication.ConClientData();
this.conSessionHistory = new ErgometerDoctorApplication.ConSessionHistory();
this.conSessionLibrary = new ErgometerDoctorApplication.ConSessionLibrary();
this.conPanelLogin = new ErgometerDoctorApplication.ConPanelLogin(this);
this.updateTimer = new Timer();
MainContainer.Visible = false;
@@ -63,7 +61,6 @@ namespace ErgometerDoctorApplication
//
this.MenuPanel.BackColor = System.Drawing.SystemColors.ControlLight;
this.MenuPanel.Controls.Add(this.BtnLogout);
this.MenuPanel.Controls.Add(this.BtnSessionLibrary);
this.MenuPanel.Controls.Add(this.BtnSessionHistory);
this.MenuPanel.Controls.Add(this.label2);
this.MenuPanel.Controls.Add(this.label1);
@@ -92,21 +89,6 @@ namespace ErgometerDoctorApplication
this.BtnLogout.UseVisualStyleBackColor = false;
this.BtnLogout.Click += new System.EventHandler(this.buttonLogout_Click);
//
// BtnSessionLibrary
//
this.BtnSessionLibrary.BackColor = System.Drawing.Color.DarkGray;
this.BtnSessionLibrary.Dock = System.Windows.Forms.DockStyle.Top;
this.BtnSessionLibrary.FlatAppearance.BorderSize = 0;
this.BtnSessionLibrary.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.BtnSessionLibrary.ForeColor = System.Drawing.Color.White;
this.BtnSessionLibrary.Location = new System.Drawing.Point(0, 205);
this.BtnSessionLibrary.Name = "BtnSessionLibrary";
this.BtnSessionLibrary.Size = new System.Drawing.Size(200, 35);
this.BtnSessionLibrary.TabIndex = 8;
this.BtnSessionLibrary.Text = "Sessie Bibliotheek";
this.BtnSessionLibrary.UseVisualStyleBackColor = false;
this.BtnSessionLibrary.Click += new System.EventHandler(this.BtnSessionLibrary_Click);
//
// BtnSessionHistory
//
this.BtnSessionHistory.BackColor = System.Drawing.Color.DarkGray;
@@ -262,7 +244,6 @@ namespace ErgometerDoctorApplication
this.MainContainer.Controls.Add(this.conActiveSessions);
this.MainContainer.Controls.Add(this.conClientData);
this.MainContainer.Controls.Add(this.conSessionHistory);
this.MainContainer.Controls.Add(this.conSessionLibrary);
this.MainContainer.Dock = System.Windows.Forms.DockStyle.Fill;
this.MainContainer.Location = new System.Drawing.Point(200, 102);
this.MainContainer.Name = "MainContainer";
@@ -297,7 +278,6 @@ namespace ErgometerDoctorApplication
private ToolStripMenuItem editToolStripMenuItem;
private ToolStripMenuItem viewToolStripMenuItem;
private Button BtnActiveSessions;
private Button BtnSessionLibrary;
private Button BtnLogout;
private Button BtnSessionHistory;
private Button BtnClientData;
@@ -311,7 +291,6 @@ namespace ErgometerDoctorApplication
public ConActiveSessions conActiveSessions;
public ConSessionHistory conSessionHistory;
public ConClientData conClientData;
public ConSessionLibrary conSessionLibrary;
public ConPanelLogin conPanelLogin;
}
+18 -8
View File
@@ -13,11 +13,15 @@ namespace ErgometerDoctorApplication
{
public partial class MainWindow : Form
{
private bool request;
public MainWindow()
{
InitializeComponent();
conPanelLogin.BringToFront();
updateTimer.Start();
request = false;
//updateTimer.Start();
}
private void BtnActiveSessions_Click(object sender, EventArgs e)
@@ -46,22 +50,23 @@ namespace ErgometerDoctorApplication
*/
}
private void BtnSessionLibrary_Click(object sender, EventArgs e)
{
this.HeaderLabel.Text = "Bibliotheek";
conSessionLibrary.BringToFront();
}
private void BtnClientData_Click(object sender, EventArgs e)
{
this.HeaderLabel.Text = "Clientenbestand";
conClientData.BringToFront();
if (MainClient.users.Count > 0)
{
conClientData.updateUsers(MainClient.users);
}
}
private void BtnSessionHistory_Click(object sender, EventArgs e)
{
this.HeaderLabel.Text = "Sessie geschiedenis";
conSessionHistory.BringToFront();
MainClient.StartOldCLient("Test", 2001739555);
}
public void validateLogin()
{
@@ -108,7 +113,12 @@ namespace ErgometerDoctorApplication
private void updateTimer_tick(object sender, EventArgs e)
{
MainClient.SendNetCommand(new NetCommand(NetCommand.RequestType.SESSIONDATA, MainClient.Session));
if (request)
MainClient.SendNetCommand(new NetCommand(NetCommand.RequestType.USERS, MainClient.Session));
else
MainClient.SendNetCommand(new NetCommand(NetCommand.RequestType.SESSIONDATA, MainClient.Session));
request = !request;
}
}
}