Winify – Blame information for rev 44

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