private void Client_UnseenCountChanged(object sender, EventArgs e) { EmailModel client = (EmailModel)sender; CustomTreeListNode node = (CustomTreeListNode)EmailTreeList.Nodes.Single(obj => obj.ChildObject == client); node.Text = client.UnseenCount > 0 ? client.Address + " (" + client.UnseenCount + ")" : client.Address; if (client.UnseenCount > 0) { node.Bold = true; } }
private void LoadFolders(List <EmailModel> clients) { foreach (EmailModel client in clients) { int nodeIndex = -1; if (EmailTreeList.Nodes.Select(obj => obj.ChildObject).Any(obj => ((EmailModel)obj) == client)) { CustomTreeListNode node = EmailTreeList.Nodes.Find(obj => ((EmailModel)obj.ChildObject) == client); nodeIndex = EmailTreeList.Nodes.IndexOf(node); EmailTreeList.RemoveNode(node); } if (client.ImapClient != null) { long unseenCount = 0; foreach (Message message in client.UnhandledMessages) { unseenCount += message.Seen ? 0 : 1; } CustomTreeListNode rootNode = new CustomTreeListNode(client.Address, ImageHelper.UriToImageSource(new Uri("pack://application:,,,/resources/mail.png"))); rootNode.ChildObject = client; EmailTreeList.AddNode(rootNode, nodeIndex); client.UnseenCountChanged += Client_UnseenCountChanged; client.UnseenCount = (Int32)unseenCount; } else { if (client.CannotConnect) { CustomTreeListNode rootNode = new CustomTreeListNode(client.Address, ImageHelper.UriToImageSource(new Uri("pack://application:,,,/resources/mail_error.png"))); rootNode.ChildObject = client; EmailTreeList.AddNode(rootNode, nodeIndex); } else { CustomTreeListNode rootNode = new CustomTreeListNode(client.Address, ImageHelper.UriToImageSource(new Uri("pack://application:,,,/resources/mail_locked.png"))); rootNode.ChildObject = client; EmailTreeList.AddNode(rootNode, nodeIndex); } } } MessagesGrid.SelectedCellsChanged += MessagesGrid_SelectedCellsChanged; }
private void EmailTree_SelectedNodeChanged(object sender, CustomTreeListSelectedNodeChangedEventArgs e) { CustomTreeListNode selectedNode = e.SelectedNode; if (selectedNode.ChildObject.GetType().Name == "EmailModel") { EmailModel email = (EmailModel)selectedNode.ChildObject; if (email.ImapClient == null) { if (!email.CannotConnect) { EmailLogin emailLogin = new EmailLogin(email); emailLogin.ReadyButtonClicked += (s, ea) => { email.Login = emailLogin.Login; email.Password = emailLogin.Password; _parent.mainCanvas.Children.Remove(emailLogin); _parent.Darkened = false; _parent.EmailWorker.RunWorkerAsync(new List <EmailModel>() { email }); }; emailLogin.CancelButtonClicked += (s, ea) => { _parent.mainCanvas.Children.Remove(emailLogin); _parent.Darkened = false; }; _parent.Darkened = true; _parent.mainCanvas.Children.Add(emailLogin); return; } } FillMessages(email.UnhandledMessages); } _parent.NewUnhandledMessageArrived += _parent_NewUnhandledMessageArrived; }