-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmainForm.cs
125 lines (115 loc) · 4.11 KB
/
mainForm.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace KeyTimer
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
List<TimerData> timers = LoadTimers();
if (timers == null || timers.Count == 0)
{
loadDefaultTimers();
}
else
{
foreach(TimerData timer in timers)
{
switch (timer.type)
{
case TimerData.TimerType.Timer:
flPanel.Controls.Add(new Timer(timer.timerName, timer.secondDuration, timer.key));
break;
case TimerData.TimerType.Stopwatch:
flPanel.Controls.Add(new Stopwatch(timer.timerName, timer.secondDuration, timer.key));
break;
default:
break;
}
}
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
Timer timer = new Timer("New Timer", 60, Keys.F1);
flPanel.Controls.Add(timer);
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
List<TimerData> timers = new List<TimerData>();
foreach (var control in flPanel.Controls)
{
if(control is Timer t)
{
timers.Add(new TimerData(t.timerName, t.interval, t.registeredKey, TimerData.TimerType.Timer));
}
else if(control is Stopwatch s)
{
timers.Add(new TimerData(s.timerName, s.interval, s.registeredKey, TimerData.TimerType.Stopwatch));
}
}
SaveTimers(timers);
}
void SaveTimers(List<TimerData> timers)
{
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, timers);
ms.Position = 0;
byte[] buffer = new byte[(int)ms.Length];
ms.Read(buffer, 0, buffer.Length);
Properties.Settings.Default.Timers = Convert.ToBase64String(buffer);
Properties.Settings.Default.Save();
}
}
List<TimerData> LoadTimers()
{
string timers = Properties.Settings.Default.Timers;
if (timers != "")
{
using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(Properties.Settings.Default.Timers)))
{
BinaryFormatter bf = new BinaryFormatter();
return (List<TimerData>)bf.Deserialize(ms);
}
}
return null;
}
private void loadDefaultTimers()
{
flPanel.Controls.Add(new Stopwatch("Stopwatch", 0, Keys.F9));
flPanel.Controls.Add(new Timer("PA 1", 150, Keys.F1));
flPanel.Controls.Add(new Timer("PA 2", 150, Keys.F2));
flPanel.Controls.Add(new Timer("Draught", 900, Keys.D7));
}
private void loadDefaultTimersToolStripMenuItem_Click(object sender, EventArgs e)
{
flPanel.Controls.Clear();
loadDefaultTimers();
}
private void addTimerToolStripMenuItem_Click(object sender, EventArgs e)
{
Timer timer = new Timer("New Timer", 60, Keys.F1);
flPanel.Controls.Add(timer);
}
private void addStopwatchToolStripMenuItem_Click(object sender, EventArgs e)
{
Stopwatch s = new Stopwatch("Stopwatch", 0, Keys.F1);
flPanel.Controls.Add(s);
}
}
}