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); } }
/// <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(); }