private void saveButton_Click(object sender, EventArgs e)
 {
     try
     {
         if (saveButtonClickedEvent != null)
         {
             if (addOrUpdateAccountConfiguration() || accountConfigsDict.Count > 0)
             {
                 ConfigurationFormEventArgs args = new ConfigurationFormEventArgs();
                 args.emailAccountConfigs = this.accountConfigsDict;
                 saveButtonClickedEvent(this, args);
             }
         }
     }
     catch (ArgumentException exc)
     {
         MyMessageBox.display(exc.Message + "\r\n" + exc.InnerException, MyMessageBoxType.Error);
     }
 }
Beispiel #2
0
        /// <summary>
        /// ujednolica zawartość słowników kont: przechowywanego w tym oknie ze słownikiem konfiguracji kont otrzymanym z okna wczytywania konfiguracji
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void configurationFormSaveButtonClicked(object sender, ConfigurationFormEventArgs args)
        {
            Form configForm = sender as Form;

            // aktualizaję konfigurację konta, jeżeli to konto jest w obu słownikach;
            //dodaję nowe konto jeżeli go nie ma w słowniku kont a jest w słowniku otrzymanym z okna konfiguracji
            foreach (string accountName in args.emailAccountConfigs.Keys)
            {
                IEmailAccountConfiguration accountConfig;
                args.emailAccountConfigs.TryGetValue(accountName, out accountConfig);
                EmailAccount account;
                if (emailAccountDict.ContainsKey(accountName))
                {
                    emailAccountDict.TryGetValue(accountName, out account);
                    account.configuration = accountConfig;
                }
                else
                {
                    EmailAccount newAccount = new EmailAccount();
                    newAccount.configuration = accountConfig;
                    newAccount.name          = accountName;
                    emailAccountDict.Add(accountName, newAccount);
                }
            }

            // usuwam konto które jest w słowniku kont a nie ma go w słowniku otrzymanym z okna konfiguracji
            string[] oldAccountNames = new string[emailAccountDict.Keys.Count];
            emailAccountDict.Keys.CopyTo(oldAccountNames, 0);
            foreach (string accountName in oldAccountNames)
            {
                if (!args.emailAccountConfigs.ContainsKey(accountName))
                {
                    emailAccountDict.Remove(accountName);
                }
            }
            setDefaultStatusLabel();
            configForm.Close();
        }