public void ShowDialog(IWin32Window owner, NewsgroupSettingsView view) { NewsgroupsConfiguration cfg = new NewsgroupsConfiguration(this, view); cfg.DefinitionsModified += OnCfgDefinitionsModified; try { if (DialogResult.OK == cfg.ShowDialog(owner)) { //TODO: we should differ between the two kinds of general modifications RaiseNewsServerDefinitionsModified(); RaiseIdentityDefinitionsModified(); // notify backend about NNTP server defs changes: app.SubscriptionModified(app.BanditFeedSourceEntry, NewsFeedProperty.General); } } catch (Exception ex) { Trace.WriteLine("Exception in NewsGroupsConfiguration dialog: " + ex.Message); } }
private void OnCfgDefinitionsModified(object sender, EventArgs e) { NewsgroupsConfiguration cfg = (NewsgroupsConfiguration)sender; // take over the copies from local userIdentities and nntpServers // to app.FeedHandler.Identity and app.FeedHandler.NntpServers Identities.Clear(); if (cfg.ConfiguredIdentities != null) { foreach (UserIdentity ui in cfg.ConfiguredIdentities.Values) { Identities.Add(ui.Name, (UserIdentity)ui.Clone()); } } Save(); IBanditFeedSource extension = app.BanditFeedSourceExtension; if (extension != null) { lock (extension.NntpServers) { extension.NntpServers.Clear(); if (cfg.ConfiguredNntpServers != null) { foreach (NntpServerDefinition sd in cfg.ConfiguredNntpServers.Values) { extension.NntpServers.Add(sd.Name, (NntpServerDefinition)sd.Clone()); } } extension.SaveNntpServers(); } } RaiseNewsServerDefinitionsModified(); RaiseIdentityDefinitionsModified(); }