Winify

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 24  →  ?path2? @ 25
/trunk/Winify/Settings/SettingsForm.cs
@@ -0,0 +1,166 @@
using System;
using System.Linq;
using System.Windows.Forms;
using Announcements;
using Servers;
using Winify.Utilities;
 
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 readonly Announcements.Announcements _announcements;
 
private readonly BindingSource _serverBindingSource;
 
private readonly global::Servers.Servers _servers;
 
private Announcement _announcement;
 
private Server _server;
 
#endregion
 
#region Constructors, Destructors and Finalizers
 
private SettingsForm()
{
InitializeComponent();
}
 
public SettingsForm(global::Servers.Servers servers, Announcements.Announcements announcements) : this()
{
_servers = servers;
_server = _servers.Server.FirstOrDefault() ?? new Server();
 
_serverBindingSource = new BindingSource();
_serverBindingSource.DataSource = _server;
 
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));
 
_announcements = announcements;
_announcement = _announcements.Announcement.FirstOrDefault() ?? new Announcement();
 
_announcementBindingSource = new BindingSource();
_announcementBindingSource.DataSource = _announcement;
 
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));
}
 
#endregion
 
#region Event Handlers
 
private void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
Properties.Settings.Default.LaunchOnBoot = ((CheckBox) sender).Checked;
 
Miscellaneous.LaunchOnBootSet(Properties.Settings.Default.LaunchOnBoot);
}
 
private void Button1_Click(object sender, EventArgs e)
{
var server = new Server();
 
_servers.Server.Add(server);
 
listBox1.SelectedItem = server;
}
 
private void Button2_Click(object sender, EventArgs e)
{
if (listBox1.SelectedItem is Server server)
{
_servers.Server.Remove(server);
}
}
 
private void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
var listBox = (ListBox) sender;
 
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();
 
_announcements.Announcement.Add(announcement);
 
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
}
}