예제 #1
0
        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);
            }
        }
예제 #2
0
        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();
        }