private static void AddMessageToView(Mailbox mailbox, MyMessage message) { mailbox.Messages.Add(message); }
private void UpdateProgressBarSafely(MyMessage message, int loaded, int total) { if (InvokeRequired) { this.BeginInvoke(() => { if (ActiveMessage != message) { return; } MessageProgressBar.Value = loaded; MessageProgressBar.Maximum = total; }); } else { if (ActiveMessage != message) { return; } MessageProgressBar.Value = loaded; MessageProgressBar.Maximum = total; } }
private void FetchMessageAsync(MyMessage message) { new Thread(() => { try { using (var client = CreateClientByAccount(message.Mailbox.AccountState.Account)) { client.Select(message.Mailbox.Fullname); client.DownloadProgressChanged += (sender, e) => UpdateProgressBarSafely(message, e.ReceivedBytes, e.TotalBytes); message.Message = client.FetchMessageByUid(message.Uid); if (ActiveMessage == null) { return; } // only display message when user has not moved on if (ActiveMessage == message) { DisplayMessageSafely(message); } } } catch (Exception ex) { LogSafely(ex.Message); } }).Start(); }
private void DisplayMessageSafely(MyMessage message) { if (InvokeRequired) { this.Invoke(() => DisplayMessage(message)); } }
private void DisplayMessage(MyMessage message) { AttachmentListView.Items.Clear(); MessageViewer.Navigate("about:blank"); foreach (var attachment in message.Message.Attachments) { var item = new ListViewItem(attachment.Filename) {Tag = attachment, BackColor = Color.Orange, ForeColor = Color.WhiteSmoke}; AttachmentListView.Items.Add(item); } if (message.Message.Views.Count == 0) { return; } if (message.Message.HasHtmlView) { var html = message.Message.GetHtmlView(); DisplayView(html.Text); } else { var plain = message.Message.GetPlainTextView(); if (plain == null) { if (message.Message.Views.Count > 0) { plain = message.Message.Views.First(); } } if (plain == null) { LogSafely("No view found ... shouldnt be ..."); return; } // we want line breaks in text documents if (string.IsNullOrEmpty(plain.Text)) { return; } DisplayView(plain.Text.Replace(Environment.NewLine, "<br />")); } }
private void AddMessageToViewSafely(Mailbox mailbox, MyMessage message) { if (InvokeRequired) { this.Invoke(() => AddMessageToView(mailbox, message)); } else { AddMessageToView(mailbox, message); } }