Winify – Blame information for rev 43

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 using System;
4 office 2 using System.Linq;
30 office 3 using System.Threading;
1 office 4 using System.Windows.Forms;
15 office 5 using Announcements;
6 office 6 using Servers;
1 office 7 using Winify.Utilities;
8  
25 office 9 namespace Winify.Settings
1 office 10 {
11 public partial class SettingsForm : Form
12 {
25 office 13 #region Public Events & Delegates
14  
15 public event EventHandler<SettingsSavedEventArgs> Save;
16  
17 #endregion
18  
4 office 19 #region Private Delegates, Events, Enums, Properties, Indexers and Fields
20  
21 office 21 private readonly BindingSource _announcementBindingSource;
15 office 22  
21 office 23 private readonly Announcements.Announcements _announcements;
24  
25 private readonly BindingSource _serverBindingSource;
26  
30 office 27 private readonly Servers.Servers _servers;
4 office 28  
21 office 29 private Announcement _announcement;
30  
31 private Server _server;
30 office 32 private readonly MainForm _mainForm;
33 private readonly CancellationToken _cancellationToken;
21 office 34  
4 office 35 #endregion
36  
1 office 37 #region Constructors, Destructors and Finalizers
38  
30 office 39 public SettingsForm()
1 office 40 {
41 InitializeComponent();
42 }
43  
30 office 44 public SettingsForm(MainForm mainForm) : this()
4 office 45 {
30 office 46 _mainForm = mainForm;
47 }
48  
49 public SettingsForm(MainForm mainForm, Servers.Servers servers, Announcements.Announcements announcements,
50 CancellationToken cancellationToken) : this(mainForm)
51 {
4 office 52 _servers = servers;
21 office 53 _server = _servers.Server.FirstOrDefault() ?? new Server();
30 office 54 _cancellationToken = cancellationToken;
7 office 55  
21 office 56 _serverBindingSource = new BindingSource();
57 _serverBindingSource.DataSource = _server;
58  
59 serverNameTextBox.DataBindings.Add(new Binding("Text", _serverBindingSource, nameof(_server.Name), true,
60 DataSourceUpdateMode.OnPropertyChanged));
61 serverUrlTextBox.DataBindings.Add(new Binding("Text", _serverBindingSource, nameof(_server.Url), true,
62 DataSourceUpdateMode.OnPropertyChanged));
63 serverUsernameTextBox.DataBindings.Add(new Binding("Text", _serverBindingSource, nameof(_server.Username),
64 true,
65 DataSourceUpdateMode.OnPropertyChanged));
66 serverPasswordTextBox.DataBindings.Add(new Binding("Text", _serverBindingSource, nameof(_server.Password),
67 true,
68 DataSourceUpdateMode.OnPropertyChanged));
69  
7 office 70 listBox1.DataSource = _servers.Server;
71 listBox1.DisplayMember = "Name";
72 listBox1.DataBindings.Add(new Binding("Text", _servers.Server, "Name", true,
73 DataSourceUpdateMode.OnPropertyChanged));
15 office 74  
21 office 75 _announcements = announcements;
76 _announcement = _announcements.Announcement.FirstOrDefault() ?? new Announcement();
77  
78 _announcementBindingSource = new BindingSource();
79 _announcementBindingSource.DataSource = _announcement;
80  
81 appIdTextBox.DataBindings.Add(new Binding("Text", _announcementBindingSource, nameof(_announcement.AppId),
82 true,
83 DataSourceUpdateMode.OnPropertyChanged));
84 lingerTimeTextBox.DataBindings.Add(new Binding("Text", _announcementBindingSource,
85 nameof(_announcement.LingerTime), true,
86 DataSourceUpdateMode.OnPropertyChanged));
87  
88 listBox2.DataSource = _announcements.Announcement;
15 office 89 listBox2.DisplayMember = "Id";
21 office 90 listBox2.DataBindings.Add(new Binding("Text", _announcements.Announcement, "Id", true,
15 office 91 DataSourceUpdateMode.OnPropertyChanged));
4 office 92 }
93  
1 office 94 #endregion
95  
96 #region Event Handlers
97  
98 private void CheckBox1_CheckedChanged(object sender, EventArgs e)
99 {
30 office 100 _mainForm.Configuration.LaunchOnBoot = ((CheckBox)sender).Checked;
1 office 101  
30 office 102 _mainForm.ChangedConfigurationContinuation.Schedule(TimeSpan.FromSeconds(1),
103 async () => { await _mainForm.SaveConfiguration(); }, _cancellationToken);
104  
105 Miscellaneous.LaunchOnBootSet(_mainForm.Configuration.LaunchOnBoot);
1 office 106 }
107  
4 office 108 private void Button1_Click(object sender, EventArgs e)
109 {
21 office 110 var server = new Server();
43 office 111 server.Name = serverNameTextBox.Text;
112 server.Url = serverUrlTextBox.Text;
113 server.Username = serverUsernameTextBox.Text;
114 server.Password = serverPasswordTextBox.Text;
4 office 115  
21 office 116 _servers.Server.Add(server);
25 office 117  
43 office 118 Save?.Invoke(this, new SettingsSavedEventArgs(_servers, _announcements));
119  
25 office 120 listBox1.SelectedItem = server;
4 office 121 }
122  
123 private void Button2_Click(object sender, EventArgs e)
124 {
43 office 125 if (listBox1.SelectedItem is Server server)
126 {
127 _servers.Server.Remove(server);
128 }
4 office 129 }
130  
131 private void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
132 {
28 office 133 var listBox = (ListBox)sender;
4 office 134  
21 office 135 if (listBox.SelectedItem is Server server)
4 office 136 {
21 office 137 _server = server;
4 office 138  
21 office 139 _serverBindingSource.DataSource = _server;
4 office 140 }
141 }
142  
15 office 143 private void Button3_Click(object sender, EventArgs e)
144 {
43 office 145 if (listBox2.SelectedItem is Announcement announcement)
146 {
147 _announcements.Announcement.Remove(announcement);
148 }
15 office 149 }
150  
151 private void Button4_Click(object sender, EventArgs e)
152 {
21 office 153 var announcement = new Announcement();
43 office 154 if (int.TryParse(appIdTextBox.Text, out var appId))
155 {
156 announcement.AppId = appId;
157 }
15 office 158  
43 office 159 if (int.TryParse(lingerTimeTextBox.Text, out var lingerTime))
160 {
161 announcement.LingerTime = lingerTime;
162 }
163  
21 office 164 _announcements.Announcement.Add(announcement);
25 office 165  
43 office 166 Save?.Invoke(this, new SettingsSavedEventArgs(_servers, _announcements));
167  
25 office 168 listBox2.SelectedItem = announcement;
15 office 169 }
170  
171 private void ListBox2_SelectedIndexChanged(object sender, EventArgs e)
172 {
28 office 173 var listBox = (ListBox)sender;
15 office 174  
21 office 175 if (listBox.SelectedItem is Announcement announcement)
15 office 176 {
21 office 177 _announcement = announcement;
15 office 178  
21 office 179 _announcementBindingSource.DataSource = _announcement;
15 office 180 }
181 }
182  
25 office 183 private void Button6_Click(object sender, EventArgs e)
184 {
185 Close();
186 }
187  
188 private void Button5_Click(object sender, EventArgs e)
189 {
190 Save?.Invoke(this, new SettingsSavedEventArgs(_servers, _announcements));
30 office 191  
25 office 192 Close();
193 }
194  
30 office 195 private void SettingsForm_Load(object sender, EventArgs e)
196 {
197 checkBox1.Checked = _mainForm.Configuration.LaunchOnBoot;
198 }
199  
1 office 200 #endregion
201 }
202 }