/// <summary> /// Loads messages to UI. /// </summary> private void LoadData() { m_pMessages.BeginUpdate(); m_pMessages.Items.Clear(); DataSet ds = m_pFolder.GetMessagesInfo(); if (ds.Tables.Contains("MessagesInfo")) { foreach (DataRow dr in ds.Tables["MessagesInfo"].Rows) { IMAP_t_Fetch_r_i_Envelope envelope = null; try{ LumiSoft.Net.StringReader r = new LumiSoft.Net.StringReader(dr["Envelope"].ToString()); // Remove ENVELOPE and read content (). r.ReadWord(); r = new LumiSoft.Net.StringReader(r.ReadParenthesized()); envelope = IMAP_t_Fetch_r_i_Envelope.Parse(r); } catch { envelope = new IMAP_t_Fetch_r_i_Envelope(DateTime.Now, "Mailserver parse error", null, null, null, null, null, null, null, null); } ListViewItem item = new ListViewItem(envelope.Subject); item.ImageIndex = 0; item.Tag = new object[] { dr["ID"].ToString(), Convert.ToInt32(dr["UID"]) }; if (envelope.Sender != null && ((Mail_t_Mailbox)envelope.Sender[0]).DisplayName != null && ((Mail_t_Mailbox)envelope.Sender[0]).DisplayName != "") { item.SubItems.Add(((Mail_t_Mailbox)envelope.Sender[0]).DisplayName); } else { if (envelope.From != null && envelope.From.Length > 0) { item.SubItems.Add(envelope.From[0].ToString()); } else { item.SubItems.Add("<none>"); } } item.SubItems.Add(envelope.Date.ToString()); item.SubItems.Add(((decimal)(Convert.ToDecimal(dr["Size"]) / 1000)).ToString("f2")); m_pMessages.Items.Add(item); } mt_Info.Text = "User '" + m_pFolder.User.UserName + "' Folder '" + m_pFolder.FolderFullPath + "' Messages (" + ds.Tables["MessagesInfo"].Rows.Count + ")"; } m_pMessages.EndUpdate(); m_pMessages_SelectedIndexChanged(null, null); }
/// <summary> /// Refreshes sessions. /// </summary> private void RefreshSessions() { m_pSessions.BeginUpdate(); try{ // Update and remove exisitng sessions for (int i = 0; i < m_pSessions.Items.Count; i++) { ListViewItem it = m_pSessions.Items[i]; // Update session info if (m_pServer.Sessions.ConatainsID(((Session)it.Tag).ID)) { Session session = m_pServer.Sessions.GetSessionByID(((Session)it.Tag).ID); it.Tag = session; it.SubItems[1].Text = session.UserName; it.SubItems[2].Text = session.LocalEndPoint; it.SubItems[3].Text = session.RemoteEndPoint; it.SubItems[4].Text = (session.ReadKbInSecond / (decimal)1000).ToString("f2"); it.SubItems[5].Text = (session.WriteKbInSecond / (decimal)1000).ToString("f2"); it.SubItems[6].Text = session.SartTime.ToString("yy.MM.dd HH:mm"); it.SubItems[7].Text = session.IdleTimeOutSeconds.ToString(); } // Remove session else { it.Remove(); i++; } } // Add new sessions foreach (Session session in m_pServer.Sessions) { //--- Show only sessions what wanted to see --------------------// // ALL if (m_pShow.SelectedIndex == 0) { // Do nothing } // SMTP else if (m_pShow.SelectedIndex == 1 && session.Type != "SMTP") { continue; } // POP3 else if (m_pShow.SelectedIndex == 2 && session.Type != "POP3") { continue; } // IMAP else if (m_pShow.SelectedIndex == 3 && session.Type != "IMAP") { continue; } // REALY else if (m_pShow.SelectedIndex == 4 && session.Type != "RELAY") { continue; } //---------------------------------------------------------------// bool contains = false; foreach (ListViewItem item in m_pSessions.Items) { if (session.ID == ((Session)item.Tag).ID) { contains = true; break; } } if (!contains) { ListViewItem it = new ListViewItem(); it.ImageIndex = 0; it.Text = session.Type; it.SubItems.Add(session.UserName); it.SubItems.Add(session.LocalEndPoint); it.SubItems.Add(session.RemoteEndPoint); it.SubItems.Add((session.ReadKbInSecond / (decimal)1000).ToString("f2")); it.SubItems.Add((session.WriteKbInSecond / (decimal)1000).ToString("f2")); it.SubItems.Add(session.SartTime.ToString("yy.MM.dd HH:mm")); it.SubItems.Add(session.IdleTimeOutSeconds.ToString()); it.Tag = session; m_pSessions.Items.Add(it); } } } catch { } m_pSessions.EndUpdate(); }