tidstagning/MainUI.cs

221 lines
7.0 KiB
C#
Raw Normal View History

2020-04-21 15:47:38 +00:00
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace Tidstagning
{
2021-07-03 22:04:53 +00:00
public partial class MainUI : Form
2020-04-21 15:47:38 +00:00
{
delegate void SetTextCallback(string text);
2022-10-07 20:33:54 +00:00
readonly BindingList<Entry> entries = new() {};
ResultList? liste;
2022-10-07 20:33:54 +00:00
readonly Relay horn = new();
readonly Procedure startprocedure = new ();
2020-04-21 15:47:38 +00:00
public MainUI(bool ShowConfig = false)
2020-04-21 15:47:38 +00:00
{
InitializeComponent();
2022-10-07 20:33:54 +00:00
System.IO.StreamReader deltager_handle = new(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "/Tidstagning/" + "Deltager.txt");
string? deltager;
2020-04-21 15:47:38 +00:00
while ((deltager = deltager_handle.ReadLine()) != null)
{
string[] dele = deltager.Split(',');
entries.Add(new Entry(dele[0], dele[1]));
2020-04-21 15:47:38 +00:00
}
2020-08-06 15:31:10 +00:00
deltager_handle.Dispose();
foreach (string port in Relay.GetPorts())
{
2020-04-21 15:47:38 +00:00
comboComport.Items.Add(port);
}
checkStartProcedure.Checked = Properties.Settings.Default.AutoStartProcedure;
numericSignalLength.Value = (decimal)Properties.Settings.Default.SignalLength;
2021-07-03 21:01:07 +00:00
string comport = Properties.Settings.Default.ComPort;
int index = comboComport.Items.IndexOf(comport);
if (index == -1)
{
comboComport.SelectedIndex = 0;
}
else
{
comboComport.SelectedIndex = index;
}
buttonConfig.Visible = ShowConfig;
2020-04-21 15:47:38 +00:00
}
2020-04-21 15:47:38 +00:00
private void Form1_Load(object sender, EventArgs e)
{
grid.DataSource = entries;
}
public void LogAppend(string text)
{
if (this.txtDebug.InvokeRequired)
{
2022-10-07 20:33:54 +00:00
SetTextCallback d = new (LogAppend);
this.Invoke(d, new object[] { text });
}
else
{
this.txtDebug.AppendText(text);
}
}
2020-04-21 15:47:38 +00:00
private void grid_Click(object sender, DataGridViewCellEventArgs e)
{
2020-08-06 19:39:34 +00:00
if (!btnStop.Enabled)
2020-04-21 15:47:38 +00:00
return;
if (e.RowIndex >= 0 && e.ColumnIndex == grid.Columns["DNF"].Index)
{
entries[e.RowIndex].DNF();
2022-06-19 18:08:22 +00:00
if (liste is not null)
2022-05-01 20:29:00 +00:00
liste.WriteDNF(entries[e.RowIndex]);
2020-04-21 15:47:38 +00:00
grid.ClearSelection();
grid.CurrentCell = null;
entries.RemoveAt(e.RowIndex);
}
if (e.RowIndex >= 0 && e.ColumnIndex == grid.Columns["Complete"].Index)
{
2020-04-21 15:47:38 +00:00
entries[e.RowIndex].Complete();
2022-06-19 18:08:22 +00:00
if (liste is not null)
2022-05-01 20:29:00 +00:00
liste.WriteComplete(entries[e.RowIndex]);
2020-04-21 15:47:38 +00:00
grid.ClearSelection();
grid.CurrentCell = null;
entries.RemoveAt(e.RowIndex);
2022-05-02 14:41:16 +00:00
horn.Sound((uint)numericSignalLength.Value);
2020-04-21 15:47:38 +00:00
}
grid.Refresh();
}
private void btnStart_Click(object sender, EventArgs e)
2020-04-21 15:47:38 +00:00
{
if (txtHeader.Text == "")
{
MessageBox.Show("Udfyld løbs titel");
2020-04-21 15:47:38 +00:00
return;
}
liste = new ResultList(txtHeader.Text, this);
2020-04-21 15:47:38 +00:00
liste.WriteHeader(txtHeader.Text);
btnStart.Enabled = false;
2020-04-21 15:47:38 +00:00
btnStop.Enabled = true;
checkStartProcedure.Enabled = false;
flowLayoutPanelConfiguration.Enabled = false;
if (checkStartProcedure.Checked)
{
liste.Write("Automatisk Start Procedure er aktiv.");
2022-05-02 14:41:16 +00:00
startprocedure.setObjects(horn, liste);
}
else
{
liste.Write("Manuel start procedure");
}
2020-04-21 15:47:38 +00:00
}
private void btnStop_Click(object sender, EventArgs e)
{
btnStop.Enabled = false;
btnStart.Enabled = true;
2022-05-01 20:29:00 +00:00
if (liste is not null)
{
liste.WriteFooter();
liste.Close();
}
checkStartProcedure.Enabled = true;
flowLayoutPanelConfiguration.Enabled = true;
2020-04-21 15:47:38 +00:00
}
private void btnTest_Click(object sender, EventArgs e)
{
2022-05-02 14:41:16 +00:00
horn.Sound((uint)Properties.Settings.Default.SignalLength);
2020-04-21 15:47:38 +00:00
}
private void Clock_Tick(object sender, EventArgs e)
2020-04-21 15:47:38 +00:00
{
lblClock.Text = DateTime.Now.ToString("HH:mm:ss");
if (checkStartProcedure.Checked)
{
textStartProcedure.Text = startprocedure.TextualRepresentation();
}
}
2020-04-21 15:47:38 +00:00
private void comboComport_SelectedIndexChanged(object sender, EventArgs e)
{
2022-05-01 20:29:00 +00:00
if (comboComport is not null && comboComport.Items.Count != 0 && comboComport.SelectedItem is not null)
{
2022-10-07 17:12:38 +00:00
horn.Open(comboComport.SelectedItem.ToString() ?? "N/A");
Properties.Settings.Default.ComPort = comboComport.SelectedItem.ToString();
Properties.Settings.Default.Save();
}
2020-04-21 15:47:38 +00:00
}
private void checkStartProcedure_CheckedChanged(object sender, EventArgs e)
{
startprocedure.Clear();
textStartProcedure.Visible = checkStartProcedure.Checked;
if (checkStartProcedure.Checked)
{
startprocedure.ReadFile(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "/Tidstagning/" + "Startprocedure.txt");
}
Properties.Settings.Default.AutoStartProcedure = checkStartProcedure.Checked;
Properties.Settings.Default.Save();
}
2021-06-12 17:01:41 +00:00
private void grid_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex > -1)
2021-06-12 17:01:41 +00:00
{
try
{
grid.Rows[e.RowIndex].Selected = true;
grid.Rows[e.RowIndex].Height = 60;
grid.CurrentCell = grid.Rows[e.RowIndex].Cells[e.ColumnIndex];
if (btnStop.Enabled)
{
grid.Focus();
}
}
catch { }
2021-06-12 17:01:41 +00:00
}
}
private void grid_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex > -1)
2021-06-12 17:01:41 +00:00
{
try
{
grid.Rows[e.RowIndex].Selected = false;
grid.Rows[e.RowIndex].Height = 30;
}
catch
{ }
2021-06-12 17:01:41 +00:00
}
2021-06-12 17:01:41 +00:00
}
2021-07-03 22:04:53 +00:00
private void buttonConfig_Click(object sender, EventArgs e)
{
2022-10-07 20:33:54 +00:00
ConfigUI configui = new();
2021-07-03 22:04:53 +00:00
configui.ShowDialog();
}
private void numericSignalLength_ValueChanged(object sender, EventArgs e)
{
startprocedure.adjustSignalLength((uint)numericSignalLength.Value);
Properties.Settings.Default.SignalLength = (uint)numericSignalLength.Value;
Properties.Settings.Default.Save();
2021-07-03 22:04:53 +00:00
}
2020-04-21 15:47:38 +00:00
}
}