Winify – Blame information for rev 50

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