/trunk/Winify/Form1.cs |
@@ -22,7 +22,7 @@ |
{ |
#region Private Delegates, Events, Enums, Properties, Indexers and Fields |
|
private readonly Announcements.Announcements _notifications; |
private readonly Announcements.Announcements _announcements; |
|
private readonly global::Servers.Servers _servers; |
|
@@ -74,8 +74,10 @@ |
|
_servers = new global::Servers.Servers(); |
_servers.Server.CollectionChanged += Server_CollectionChanged; |
_notifications = new Announcements.Announcements(); |
_notifications.Announcement.CollectionChanged += Announcements_CollectionChanged; |
_servers.Server.ListChanged += Server_ListChanged; |
_announcements = new Announcements.Announcements(); |
_announcements.Announcement.CollectionChanged += Announcements_CollectionChanged; |
_announcements.Announcement.ListChanged += Announcement_ListChanged; |
|
_taskScheduler = TaskScheduler.FromCurrentSynchronizationContext(); |
|
@@ -100,7 +102,7 @@ |
|
foreach (var announcement in restoreAnnouncements.Announcement) |
{ |
_notifications.Announcement.Add(announcement); |
_announcements.Announcement.Add(announcement); |
} |
}); |
|
@@ -117,7 +119,7 @@ |
if (disposing && components != null) |
{ |
_servers.Server.CollectionChanged -= Server_CollectionChanged; |
_notifications.Announcement.CollectionChanged -= Announcements_CollectionChanged; |
_announcements.Announcement.CollectionChanged -= Announcements_CollectionChanged; |
|
Settings.Default.SettingsLoaded -= Default_SettingsLoaded; |
Settings.Default.SettingsSaving -= Default_SettingsSaving; |
@@ -140,47 +142,31 @@ |
|
#region Event Handlers |
|
private async void Announcements_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) |
private async void Announcement_ListChanged(object sender, ListChangedEventArgs e) |
{ |
switch (await ServersSerialization.Serialize(_notifications, Constants.NotificationsFile, "Announcements", |
"<!ATTLIST Announcements xmlns:xsi CDATA #IMPLIED xsi:noNamespaceSchemaLocation CDATA #IMPLIED>")) |
await SaveAnnouncements(); |
} |
|
private async void Server_ListChanged(object sender, ListChangedEventArgs e) |
{ |
case SerializationFailure serializationFailure: |
Log.Warning(serializationFailure.Exception, "Unable to serialize announcements."); |
break; |
await SaveServers(); |
} |
|
private async void Announcements_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) |
{ |
await SaveAnnouncements(); |
} |
|
private void GotifyConnectionManager_GotifyNotification(object sender, GotifyNotificationEventArgs e) |
{ |
_notificationManager.ShowNotification(e, _notifications); |
_notificationManager.ShowNotification(e, _announcements); |
} |
|
private async void Server_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) |
{ |
// Encrypt password for all servers. |
var deviceId = Miscellaneous.GetMachineGuid(); |
var @protected = new global::Servers.Servers |
{ |
Server = new BindingListWithCollectionChanged<Server>() |
}; |
foreach (var server in _servers.Server) |
{ |
var encrypted = AES.Encrypt(Encoding.UTF8.GetBytes(server.Password), deviceId); |
var armored = Convert.ToBase64String(encrypted); |
|
@protected.Server.Add(new Server(server.Name, server.Url, server.Username, armored)); |
await SaveServers(); |
} |
|
switch (await ServersSerialization.Serialize(@protected, Constants.ServersFile, "Servers", |
"<!ATTLIST Servers xmlns:xsi CDATA #IMPLIED xsi:noNamespaceSchemaLocation CDATA #IMPLIED>")) |
{ |
case SerializationFailure serializationFailure: |
Log.Warning(serializationFailure.Exception, "Unable to serialize servers."); |
break; |
} |
} |
|
private static void Default_PropertyChanged(object sender, PropertyChangedEventArgs e) |
{ |
Settings.Default.Save(); |
@@ -201,7 +187,7 @@ |
return; |
} |
|
_settingsForm = new SettingsForm(_servers, _notifications); |
_settingsForm = new SettingsForm(_servers, _announcements); |
_settingsForm.Closing += SettingsForm_Closing; |
_settingsForm.Show(); |
} |
@@ -258,6 +244,42 @@ |
|
#region Private Methods |
|
private async Task SaveAnnouncements() |
{ |
switch (await ServersSerialization.Serialize(_announcements, Constants.NotificationsFile, "Announcements", |
"<!ATTLIST Announcements xmlns:xsi CDATA #IMPLIED xsi:noNamespaceSchemaLocation CDATA #IMPLIED>")) |
{ |
case SerializationFailure serializationFailure: |
Log.Warning(serializationFailure.Exception, "Unable to serialize announcements."); |
break; |
} |
} |
|
private async Task SaveServers() |
{ |
// Encrypt password for all servers. |
var deviceId = Miscellaneous.GetMachineGuid(); |
var @protected = new global::Servers.Servers |
{ |
Server = new BindingListWithCollectionChanged<Server>() |
}; |
foreach (var server in _servers.Server) |
{ |
var encrypted = AES.Encrypt(Encoding.UTF8.GetBytes(server.Password), deviceId); |
var armored = Convert.ToBase64String(encrypted); |
|
@protected.Server.Add(new Server(server.Name, server.Url, server.Username, armored)); |
} |
|
switch (await ServersSerialization.Serialize(@protected, Constants.ServersFile, "Servers", |
"<!ATTLIST Servers xmlns:xsi CDATA #IMPLIED xsi:noNamespaceSchemaLocation CDATA #IMPLIED>")) |
{ |
case SerializationFailure serializationFailure: |
Log.Warning(serializationFailure.Exception, "Unable to serialize servers."); |
break; |
} |
} |
|
private static async Task<Announcements.Announcements> LoadAnnouncements() |
{ |
if (!Directory.Exists(Constants.UserApplicationDirectory)) |
@@ -273,6 +295,9 @@ |
{ |
case SerializationSuccess<Announcements.Announcements> serializationSuccess: |
return serializationSuccess.Result; |
case SerializationFailure serializationFailure: |
Log.Warning(serializationFailure.Exception, "Unable to load announcements."); |
return new Announcements.Announcements(); |
default: |
return new Announcements.Announcements(); |
} |
@@ -308,6 +333,10 @@ |
|
return @protected; |
|
case SerializationFailure serializationFailure: |
Log.Warning(serializationFailure.Exception, "Unable to load servers."); |
return new global::Servers.Servers(); |
|
default: |
return new global::Servers.Servers(); |
} |