Winify – Rev 58
?pathlinks?
using System;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
using Announcements;
using Servers;
using Winify.Utilities;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace Winify.Settings
{
public partial class SettingsForm : Form
{
#region Public Events & Delegates
public event EventHandler<SettingsSavedEventArgs> Save;
#endregion
#region Private Delegates, Events, Enums, Properties, Indexers and Fields
private readonly BindingSource _announcementBindingSource;
private Announcements.Announcements _announcements;
private readonly BindingSource _serverBindingSource;
private Servers.Servers _servers;
private Announcement _announcement;
private Server _server;
private readonly MainForm _mainForm;
private readonly CancellationToken _cancellationToken;
private readonly BindingSource _configurationBindingSource;
private readonly BindingSource _configurationProxyBindingSource;
#endregion
#region Constructors, Destructors and Finalizers
public SettingsForm()
{
InitializeComponent();
Utilities.WindowState.FormTracker.Track(this);
}
public SettingsForm(MainForm mainForm, Servers.Servers servers, Announcements.Announcements announcements,
CancellationToken cancellationToken) : this()
{
_mainForm = mainForm;
_servers = servers;
_announcements = announcements;
_cancellationToken = cancellationToken;
_configurationBindingSource = new BindingSource();
_configurationBindingSource.DataSource = _mainForm.Configuration;
_configurationProxyBindingSource = new BindingSource();
_configurationProxyBindingSource.DataSource = _mainForm.Configuration.Proxy;
switch (_servers?.Server == null)
{
case true:
_servers = new Servers.Servers();
_server = new Server();
_servers.Server.Add(_server);
break;
default:
_server = _servers.Server.FirstOrDefault();
if (_server == null)
{
_server = new Server();
_servers.Server.Add(_server);
}
break;
}
_serverBindingSource = new BindingSource();
_serverBindingSource.DataSource = _server;
switch (_announcements?.Announcement == null)
{
case true:
_announcements = new Announcements.Announcements();
_announcement = new Announcement();
_announcements.Announcement.Add(_announcement);
break;
default:
_announcement = _announcements.Announcement.FirstOrDefault();
if (_announcement == null)
{
_announcement = new Announcement();
_announcements.Announcement.Add(_announcement);
}
break;
}
_announcementBindingSource = new BindingSource();
_announcementBindingSource.DataSource = _announcement;
}
#endregion
#region Event Handlers
private void Button1_Click(object sender, EventArgs e)
{
var server = new Server();
server.Name = "New Server";
_servers.Server.Add(server);
_serverBindingSource.DataSource = server;
Save?.Invoke(this, new SettingsSavedEventArgs(_servers, _announcements));
listBox1.SelectedItem = server;
}
private void Button2_Click(object sender, EventArgs e)
{
var index = -1;
if (listBox1.SelectedItem is Server server)
{
index = listBox1.Items.IndexOf(server);
_servers.Server.Remove(server);
}
if (index >= listBox1.Items.Count)
{
--index;
}
listBox1.SelectedIndex = index;
}
private void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
var listBox = (ListBox)sender;
if (listBox.SelectedIndex == -1)
{
_serverBindingSource.DataSource = new
{ Name = string.Empty, Url = string.Empty, Username = string.Empty, Password = string.Empty };
return;
}
if (listBox.SelectedItem is Server server)
{
_server = server;
_serverBindingSource.DataSource = _server;
}
}
private void Button3_Click(object sender, EventArgs e)
{
if (listBox2.SelectedItem is Announcement announcement) _announcements.Announcement.Remove(announcement);
}
private void Button4_Click(object sender, EventArgs e)
{
var announcement = new Announcement();
if (int.TryParse(appIdTextBox.Text, out var appId)) announcement.AppId = appId;
if (int.TryParse(lingerTimeTextBox.Text, out var lingerTime)) announcement.LingerTime = lingerTime;
_announcements.Announcement.Add(announcement);
Save?.Invoke(this, new SettingsSavedEventArgs(_servers, _announcements));
listBox2.SelectedItem = announcement;
}
private void ListBox2_SelectedIndexChanged(object sender, EventArgs e)
{
var listBox = (ListBox)sender;
if (listBox.SelectedItem is Announcement announcement)
{
_announcement = announcement;
_announcementBindingSource.DataSource = _announcement;
}
}
private void Button6_Click(object sender, EventArgs e)
{
Close();
}
private void Button5_Click(object sender, EventArgs e)
{
Save?.Invoke(this, new SettingsSavedEventArgs(_servers, _announcements));
Close();
}
#endregion
private void checkBox4_CheckedStateChanged(object sender, EventArgs e)
{
var checkBox = (CheckBox)sender;
var state = checkBox.Checked;
if (state)
{
ToggleTableRow(tableLayoutPanel13, 0, false);
return;
}
ToggleTableRow(tableLayoutPanel13, 0, true);
}
private static void ToggleTableRow(TableLayoutPanel tableLayoutPanel, int row, bool enable)
{
var count = tableLayoutPanel.RowCount;
foreach (var i in Enumerable.Range(0, count))
{
var control = tableLayoutPanel.GetControlFromPosition(i, row);
control.Enabled = enable;
}
}
private void SettingsForm_Load(object sender, EventArgs e)
{
// Databindings.
numericUpDown1.DataBindings.Add(new Binding("Value", _configurationBindingSource,
nameof(_mainForm.Configuration.ToastDuration), true,
DataSourceUpdateMode.OnPropertyChanged));
checkBox4.DataBindings.Add(
new Binding("Checked", _configurationBindingSource, nameof(_mainForm.Configuration.InfiniteToastDuration), true,
DataSourceUpdateMode.OnPropertyChanged));
checkBox1.DataBindings.Add(new Binding("Checked", _configurationBindingSource,
nameof(_mainForm.Configuration.LaunchOnBoot), true, DataSourceUpdateMode.OnPropertyChanged));
checkBox2.DataBindings.Add(new Binding("Checked", _configurationBindingSource,
nameof(_mainForm.Configuration.IgnoreSelfSignedCertificates), true,
DataSourceUpdateMode.OnPropertyChanged));
checkBox3.DataBindings.Add(
new Binding("Checked", _configurationProxyBindingSource, nameof(_mainForm.Configuration.Proxy.Enable), true,
DataSourceUpdateMode.OnPropertyChanged));
textBox1.DataBindings.Add(
new Binding("Text", _configurationProxyBindingSource, nameof(_mainForm.Configuration.Proxy.Url), true,
DataSourceUpdateMode.OnPropertyChanged));
textBox2.DataBindings.Add(
new Binding("Text", _configurationProxyBindingSource, nameof(_mainForm.Configuration.Proxy.Username), true,
DataSourceUpdateMode.OnPropertyChanged));
textBox3.DataBindings.Add(
new Binding("Text", _configurationProxyBindingSource, nameof(_mainForm.Configuration.Proxy.Password), true,
DataSourceUpdateMode.OnPropertyChanged));
serverNameTextBox.DataBindings.Add(new Binding("Text", _serverBindingSource, nameof(_server.Name), true,
DataSourceUpdateMode.OnPropertyChanged));
serverUrlTextBox.DataBindings.Add(new Binding("Text", _serverBindingSource, nameof(_server.Url), true,
DataSourceUpdateMode.OnPropertyChanged));
serverUsernameTextBox.DataBindings.Add(new Binding("Text", _serverBindingSource, nameof(_server.Username),
true,
DataSourceUpdateMode.OnPropertyChanged));
serverPasswordTextBox.DataBindings.Add(new Binding("Text", _serverBindingSource, nameof(_server.Password),
true,
DataSourceUpdateMode.OnPropertyChanged));
listBox1.DataSource = _servers.Server;
listBox1.DisplayMember = "Name";
listBox1.DataBindings.Add(new Binding("Text", _servers.Server, "Name", true,
DataSourceUpdateMode.OnPropertyChanged));
appIdTextBox.DataBindings.Add(new Binding("Text", _announcementBindingSource, nameof(_announcement.AppId),
true,
DataSourceUpdateMode.OnPropertyChanged));
lingerTimeTextBox.DataBindings.Add(new Binding("Text", _announcementBindingSource,
nameof(_announcement.LingerTime), true,
DataSourceUpdateMode.OnPropertyChanged));
listBox2.DataSource = _announcements.Announcement;
listBox2.DisplayMember = "Id";
listBox2.DataBindings.Add(new Binding("Text", _announcements.Announcement, "Id", true,
DataSourceUpdateMode.OnPropertyChanged));
// Miscellaneous.
ToggleTableRow(tableLayoutPanel13, 0, !_mainForm.Configuration.InfiniteToastDuration);
}
}
}
Generated by GNU Enscript 1.6.5.90.