Winify

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 20  →  ?path2? @ 21
/trunk/Winify/SettingsForm.cs
@@ -12,10 +12,18 @@
{
#region Private Delegates, Events, Enums, Properties, Indexers and Fields
 
private readonly Announcements.Announcements _notifications;
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
@@ -25,19 +33,48 @@
InitializeComponent();
}
 
public SettingsForm(global::Servers.Servers servers, Announcements.Announcements notifications) : this()
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));
 
_notifications = notifications;
listBox2.DataSource = _notifications.Announcement;
_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));
speakTextBox.DataBindings.Add(new Binding("Text", _announcementBindingSource, nameof(_announcement.Speak),
true, DataSourceUpdateMode.OnPropertyChanged));
 
listBox2.DataSource = _announcements.Announcement;
listBox2.DisplayMember = "Id";
listBox2.DataBindings.Add(new Binding("Text", _notifications.Announcement, "Id", true,
listBox2.DataBindings.Add(new Binding("Text", _announcements.Announcement, "Id", true,
DataSourceUpdateMode.OnPropertyChanged));
}
 
@@ -54,45 +91,17 @@
 
private void Button1_Click(object sender, EventArgs e)
{
var name = serverNameTextBox.Text;
var url = serverUrlTextBox.Text;
var username = serverUsernameTextBox.Text;
var password = serverPasswordTextBox.Text;
var server = new Server();
 
if (string.IsNullOrEmpty(name) ||
string.IsNullOrEmpty(url) ||
string.IsNullOrEmpty(username) ||
string.IsNullOrEmpty(password))
{
return;
}
 
var server = new Server(name, url, username, password);
 
var update = _servers.Server.FirstOrDefault(select => select.Name == server.Name);
switch (update)
{
default:
_servers.Server.Remove(update);
update.Url = server.Url;
update.Username = server.Username;
update.Password = server.Password;
_servers.Server.Add(update);
break;
case null:
_servers.Server.Add(server);
break;
}
_servers.Server.Add(server);
}
 
private void Button2_Click(object sender, EventArgs e)
{
listBox1.InvokeIfRequired(listBox =>
if (listBox1.SelectedItem is Server server)
{
var item = listBox.SelectedItem;
 
_servers.Server.Remove((Server) item);
});
_servers.Server.Remove(server);
}
}
 
private void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
@@ -99,65 +108,27 @@
{
var listBox = (ListBox) sender;
 
if (listBox.SelectedIndex == -1)
if (listBox.SelectedItem is Server server)
{
serverNameTextBox.Text = string.Empty;
serverUrlTextBox.Text = string.Empty;
serverUsernameTextBox.Text = string.Empty;
serverPasswordTextBox.Text = string.Empty;
_server = server;
 
return;
_serverBindingSource.DataSource = _server;
}
 
var server = (Server) listBox.SelectedItem;
 
serverNameTextBox.Text = server.Name;
serverUrlTextBox.Text = server.Url;
serverUsernameTextBox.Text = server.Username;
serverPasswordTextBox.Text = server.Password;
}
 
private void Button3_Click(object sender, EventArgs e)
{
listBox2.InvokeIfRequired(listbox =>
if (listBox2.SelectedItem is Announcement announcement)
{
var item = listbox.SelectedItem;
 
_notifications.Announcement.Remove((Announcement) item);
});
_announcements.Announcement.Remove(announcement);
}
}
 
private void Button4_Click(object sender, EventArgs e)
{
var appId = appIdTextBox.Text;
var lingerTime = lingerTimeTextBox.Text;
var speak = speakTextBox.Text;
var announcement = new Announcement();
 
if (string.IsNullOrEmpty(appId) ||
!int.TryParse(appId, out var numAppId) ||
string.IsNullOrEmpty(lingerTime) ||
!int.TryParse(lingerTime, out var numLingerTime) ||
string.IsNullOrEmpty(speak))
{
return;
}
 
var notification = new Announcement(numAppId, numLingerTime, speak);
 
var update = _notifications.Announcement.FirstOrDefault(select => select.Id == notification.Id);
switch (update)
{
default:
_notifications.Announcement.Remove(update);
update.AppId = numAppId;
update.LingerTime = numLingerTime;
update.Speak = speak;
_notifications.Announcement.Add(update);
break;
case null:
_notifications.Announcement.Add(notification);
break;
}
_announcements.Announcement.Add(announcement);
}
 
private void ListBox2_SelectedIndexChanged(object sender, EventArgs e)
@@ -164,20 +135,12 @@
{
var listBox = (ListBox) sender;
 
if (listBox.SelectedIndex == -1)
if (listBox.SelectedItem is Announcement announcement)
{
appIdTextBox.Text = string.Empty;
lingerTimeTextBox.Text = string.Empty;
speakTextBox.Text = string.Empty;
_announcement = announcement;
 
return;
_announcementBindingSource.DataSource = _announcement;
}
 
var notification = (Announcement) listBox.SelectedItem;
 
appIdTextBox.Text = notification.AppId.ToString();
lingerTimeTextBox.Text = notification.LingerTime.ToString();
speakTextBox.Text = notification.Speak;
}
 
#endregion