diff --git a/SparkleLib/SparkleConfig.cs b/SparkleLib/SparkleConfig.cs index b8122364..14ae9d09 100644 --- a/SparkleLib/SparkleConfig.cs +++ b/SparkleLib/SparkleConfig.cs @@ -188,6 +188,20 @@ namespace SparkleLib { } + public string GetAnnouncementsForFolder (string name) + { + foreach (XmlNode node_folder in SelectNodes ("/sparkleshare/folder")) { + if (node_folder ["name"].InnerText.Equals (name) && + node_folder ["announcements"] != null) { + + return node_folder ["announcements"].InnerText; + } + } + + return null; + } + + public string GetConfigOption (string name) { XmlNode node = SelectSingleNode ("/sparkleshare/" + name); diff --git a/SparkleLib/SparkleListenerBase.cs b/SparkleLib/SparkleListenerBase.cs index 2c02eb2a..5e666141 100644 --- a/SparkleLib/SparkleListenerBase.cs +++ b/SparkleLib/SparkleListenerBase.cs @@ -21,13 +21,6 @@ using System.Timers; namespace SparkleLib { - public enum NotificationServerType - { - Own, - Central - } - - public class SparkleAnnouncement { public readonly string FolderIdentifier; @@ -47,7 +40,7 @@ namespace SparkleLib { private static List listeners; public static SparkleListenerIrc CreateIrcListener (string server, string folder_identifier, - NotificationServerType type) + string announcements) { if (listeners == null) listeners = new List (); @@ -56,8 +49,10 @@ namespace SparkleLib { // Don't worry, we only use this server as a backup if you // don't have your own. All data needed to connect is hashed and // we don't store any personal information ever - if (type == NotificationServerType.Central) + if (announcements == null) server = "204.62.14.135"; + else + server = announcements; foreach (SparkleListenerBase listener in listeners) { if (listener.Server.Equals (server)) { @@ -68,7 +63,7 @@ namespace SparkleLib { } SparkleHelpers.DebugInfo ("ListenerFactory", "Issued new listener for " + server); - listeners.Add (new SparkleListenerIrc (server, folder_identifier, type)); + listeners.Add (new SparkleListenerIrc (server, folder_identifier, announcements)); return (SparkleListenerIrc) listeners [listeners.Count - 1]; } } @@ -105,7 +100,7 @@ namespace SparkleLib { protected string server; protected Timer reconnect_timer = new Timer { Interval = 60 * 1000, Enabled = true }; - public SparkleListenerBase (string server, string folder_identifier, NotificationServerType type) { + public SparkleListenerBase (string server, string folder_identifier, string announcements) { this.reconnect_timer.Elapsed += delegate { if (!IsConnected && !this.is_connecting) Reconnect (); diff --git a/SparkleLib/SparkleListenerIrc.cs b/SparkleLib/SparkleListenerIrc.cs index 4be5b7ec..a93b32f2 100644 --- a/SparkleLib/SparkleListenerIrc.cs +++ b/SparkleLib/SparkleListenerIrc.cs @@ -31,8 +31,8 @@ namespace SparkleLib { private string nick; - public SparkleListenerIrc (string server, string folder_identifier, NotificationServerType type) : - base (server, folder_identifier, type) + public SparkleListenerIrc (string server, string folder_identifier, string announcements) : + base (server, folder_identifier, announcements) { base.server = server; @@ -129,7 +129,7 @@ namespace SparkleLib { this.client.SendMessage (SendType.Message, channel, announcement.Message); // Also announce to ourselves for debugging purposes - //OnRemoteChange (announcement); + base.OnAnnouncement (announcement); } diff --git a/SparkleLib/SparkleRepoBase.cs b/SparkleLib/SparkleRepoBase.cs index 3b9a2050..5539ed58 100644 --- a/SparkleLib/SparkleRepoBase.cs +++ b/SparkleLib/SparkleRepoBase.cs @@ -223,13 +223,8 @@ namespace SparkleLib { private void CreateListener () { - NotificationServerType server_type; - if (UsesNotificationCenter) - server_type = NotificationServerType.Central; - else - server_type = NotificationServerType.Own; - - this.listener = SparkleListenerFactory.CreateIrcListener (Domain, Identifier, server_type); + this.listener = SparkleListenerFactory.CreateIrcListener (Domain, Identifier, + SparkleConfig.DefaultConfig.GetAnnouncementsForFolder (Name)); // Stop polling when the connection to the irc channel is succesful this.listener.Connected += delegate {