public Account(AccountInfo info) { Info = info; ActiveLabel = null; GmailImap = new GmailImapClient(Info.Address, Info.Password); MailStorage = new MailStorage(Info.Address); }
// Выбор вложения для сохранения private void ListBoxAttach_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (((ListBox)sender).SelectedIndex >= 0) { // Выбор имени файла для сохранения string filename = ((MyViewControl)DataContext).Message.MyAttachments[((ListBox)sender).SelectedIndex].Name; SaveFileDialog saveFileDialog = new SaveFileDialog() { FileName = filename }; if (saveFileDialog.ShowDialog() == true) { FileStream stream = new FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write); byte[] content = MailStorage.LoadAttach(Client.CurrentMailBox, filename); if (content.Length > 0) { stream.Write(content, 0, content.Length); } // Очистка памяти после скачивания content = null; stream.Dispose(); } // Снятие выделения элемента списка ((ListBox)sender).SelectedIndex = -1; } }
// Обработка выбора почтового ящика private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (((ListBox)sender).SelectedIndex >= 0) { // Сворачивание расширителя MailBoxExp.IsExpanded = false; try { // Отключить соединение Client.Disconnect(); MailBox mb = Client.MailBoxList[((ListBox)sender).SelectedIndex]; if (mb != null) { // Загрузка настроек почтового ящика из файла mb.Settings = MailStorage.LoadSettingBox(mb.MyAddress.Address); // Визуализация выбранного ящика ((MyViewControl)DataContext).Title = mb.Name; ((MyViewControl)DataContext).CurrentBoxNum = mb; Client.CurrentMailBox = mb; // Очистка списка писем ((MyViewControl)DataContext).SelFolder = null; // Очистка окна просмотра письма ((MyViewControl)DataContext).Message = null; ((MyViewControl)DataContext).OpMessBox = 0; // Загрузить список папок Client.LoadFolderList(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
// Обработка удаления почтового ящика private void RemoveButton_Click(object sender, RoutedEventArgs e) { if (Client.CurrentMailBox != null) { if (MessageBox.Show("Удалить учетную запись " + Client.CurrentMailBox.Name + "?", "Внимание!!!", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { // Удаление ящика из файла MailStorage.RemoveMailBox(Client.CurrentMailBox.MyAddress.Address); // Удаление ящика из списка в оперативной памяти Client.MailBoxList.Remove(Client.CurrentMailBox); // Обнуление текущего ящика Client.CurrentMailBox = null; // Визуализация удаления ((MyViewControl)DataContext).CurrentBoxNum = null; ((MyViewControl)DataContext).Title = "E-mail клиент"; listMailBox.Items.Refresh(); // Очистка списка писем ((MyViewControl)DataContext).SelFolder = null; // Очистка окна просмотра письма ((MyViewControl)DataContext).Message = null; ((MyViewControl)DataContext).OpMessBox = 0; } } else { MessageBox.Show("Выберите учетную запись"); } }
// Обработка создания почтового ящика private void CreatBoxButton_Click(object sender, RoutedEventArgs e) { // Запуск диалогового окна для ввода настроек почтового ящика CreatBoxWindow NewWindow = new CreatBoxWindow("Новая учетная запись", new MailBox()) { Owner = this }; if (NewWindow.ShowDialog() == true) { // Проверка, что ящик с таким адресом ещё не существует string newAddress = NewWindow.MyBox.MyAddress.Address; if (!Client.ConsistAddress(newAddress)) { try { Client.MailBoxList.Add(NewWindow.MyBox); // Добавление нового почтового ящика в список MailBox mb = Client.MailBoxList.Last(); // Визуализация добавленного ящика if (mb != null) { ((MyViewControl)DataContext).Title = mb.Name; } ((MyViewControl)DataContext).CurrentBoxNum = mb; // Изменение текущего почтового ящика Client.CurrentMailBox = mb; // Добавление нового ящика в файл MailStorage.SaveNewMailBox(mb); listMailBox.Items.Refresh(); // Очистка списка писем ((MyViewControl)DataContext).SelFolder = null; // Очистка окна просмотра письма ((MyViewControl)DataContext).Message = null; ((MyViewControl)DataContext).OpMessBox = 0; // Загрузить список папок Client.LoadFolderList(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { MessageBox.Show("Учетная запись с адресом " + newAddress + " уже существует"); } } }
// Burn it all private void ClearAllDataClick(object sender, RoutedEventArgs e) { // TODO: Prompt for confirmation // TODO: Error handling/reporting? // Clear usernames and passwords. // AppSettings.ClearAll(); foreach (Account account in App.AccountManager.Accounts) { // TODO: Clear in-memory caches for accounts, labels, etc. account.DeleteAccountData(); } // Clear any leftover garbage. MailStorage.ClearAll(); // TODO: Prompt for success }
// Обработка вызова окна настроек почтового ящика private void SettingButton_Click(object sender, RoutedEventArgs e) { if (Client.CurrentMailBox != null) { // Запуск диалогового окна для ввода настроек почтового ящика CreatBoxWindow NewWindow = new CreatBoxWindow("Настройки учетной записи", Client.CurrentMailBox) { Owner = this }; if (NewWindow.ShowDialog() == true) { try { // Замена текущего ящика на ящик с новыми настройками MailBox newMb = new MailBox(NewWindow.MyBox); Client.MailBoxList[Client.MailBoxList.IndexOf(Client.CurrentMailBox)] = newMb; // Визуализация ящика ((MyViewControl)DataContext).CurrentBoxNum = newMb; Client.CurrentMailBox = newMb; // Сохранение настроек почтового ящика в файл MailStorage.SaveSettings(newMb); listMailBox.Items.Refresh(); // Очистка списка писем ((MyViewControl)DataContext).SelFolder = null; // Очистка окна просмотра письма ((MyViewControl)DataContext).Message = null; ((MyViewControl)DataContext).OpMessBox = 0; // Загрузить список папок Client.LoadFolderList(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } else { MessageBox.Show("Выберите учетную запись"); } }
// Обработка загрузки окна private void EmailWindow_Loaded(object sender, RoutedEventArgs e) { // Загрузка списка почтовых ящиков из файла Client.MailBoxList = MailStorage.LoadMailBoxList(); ((MyViewControl)DataContext).MailBoxList = Client.MailBoxList; }