示例#1
0
        /// <summary>
        /// Event for position changed.
        /// </summary>
        /// <param name="sender">The sender object.</param>
        /// <param name="e">The event arguments.</param>
        private void messageBS_PositionChanged(object sender, EventArgs e)
        {
            MailMessage mailMessage = null;

            // select the first message as default.
            if (this.messageBS.Count > 0)
            {
                mailMessage = this.messageBS[0] as MailMessage;
            }

            // if there is a current message select it.
            try
            {
                mailMessage = this.messageBS.Current as MailMessage;
            }
            catch (Exception)
            {
            }

            // if the message is not null select it.
            if (mailMessage != null)
            {
                // Let the message store know
                _store.SelectedMessage = mailMessage;
                MainForm.GetInstance().LoadSelectedMessage(_store);
            }
        }
示例#2
0
        /// <summary>
        /// Method for verify if the message match the filter criteria.
        /// </summary>
        /// <param name="mailMessage">The mail message object.</param>
        /// <returns>The bool value indicating if the message is filtered or not.</returns>
        public bool IsMessageFiltered(MailMessage mailMessage)
        {
            bool ret = false;

            // verify the from field.
            if (!ret && !this.From.Equals(string.Empty))
            {
                if (!mailMessage.From.Contains(this.From))
                {
                    ret = true;
                }
            }

            // verify the to field.
            if (!ret && !this.To.Equals(string.Empty))
            {
                if (!mailMessage.To.Contains(this.To))
                {
                    ret = true;
                }
            }

            // verify the subject field.
            if (!ret && !this.Subject.Equals(string.Empty))
            {
                if (!mailMessage.Subject.Contains(this.Subject))
                {
                    ret = true;
                }
            }

            // verify the message body field.
            if (!ret && !this.Message.Equals(string.Empty))
            {
                Facade facade  = Facade.GetInstance();
                string mailbox = MainForm.GetInstance().GetSelectedMailbox();
                string body    = facade.GetMessageBodyString(mailMessage, mailbox);
                if (!body.Contains(this.Message))
                {
                    ret = true;
                }
            }

            // verify the message sent date.
            if (!ret && !this.DateFrom.Equals(string.Empty) || !this.DateTo.Equals(string.Empty))
            {
                DateTime dtFrom = DateTime.MinValue;
                DateTime dtTo   = DateTime.MaxValue;

                DateTime.TryParse(this.DateFrom, out dtFrom);
                DateTime.TryParse(this.DateTo, out dtTo);

                if (mailMessage.SentDate < dtFrom || mailMessage.SentDate > dtTo)
                {
                    ret = true;
                }
            }

            return(ret);
        }
示例#3
0
        /// <summary>
        /// Method for remove the selected mail message.
        /// </summary>
        public void DeleteSelectedMessage()
        {
            Facade facade  = Facade.GetInstance();
            string mailbox = MainForm.GetInstance().GetSelectedMailbox();

            DataGridViewSelectedRowCollection rows = this.dataGridView.SelectedRows;

            for (int i = rows.Count - 1; i >= 0; i--)
            {
                MailMessage mailMessage = (MailMessage)rows[i].DataBoundItem;
                facade.DeleteMessage(mailMessage, mailbox);
                this.dataGridView.Rows.Remove(rows[i]);
            }

            this.Refresh();
        }
示例#4
0
 /// <summary>
 /// Method for load messages.
 /// </summary>
 /// <param name="messageListType">The Message List Type.</param>
 public void LoadMessages(MessageListType messageListType)
 {
     this.toolStripLabel1.Text = MainForm.GetInstance().GetSelectedFolder();
     this.messageList1.LoadMessages(messageListType);
 }
示例#5
0
 /// <summary>
 /// Event handler for new folder tool strip menu item.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void newFolderToolStripMenuItem_Click(object sender, EventArgs e)
 {
     MainForm.GetInstance().newFolderToolStripMenuItem_Click(sender, e);
 }
示例#6
0
        /// <summary>
        /// Event for tree view after select.
        /// </summary>
        /// <param name="sender">The object sender.</param>
        /// <param name="e">The event arguments.</param>
        private void folderTreeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            MainForm mainForm = (MainForm)this.ParentForm;

            if (e.Node.Text.Equals(Constants.Unread))
            {
                mainForm.LoadMessages(MessageListType.Unread);
            }
            else if (e.Node.Text.Equals(Constants.Read))
            {
                mainForm.LoadMessages(MessageListType.Read);
            }
            else if (e.Node.Text.Equals(Constants.Inbox))
            {
                mainForm.LoadMessages(MessageListType.Inbox);
            }
            else if (e.Node.Text.Equals(Constants.SentItems))
            {
                mainForm.LoadMessages(MessageListType.SentItems);
            }
            else if (e.Node.Text.Equals(Constants.Outbox))
            {
                mainForm.LoadMessages(MessageListType.Outbox);
            }
            else if (e.Node.Text.Equals(Constants.DeletedItems))
            {
                mainForm.LoadMessages(MessageListType.DeletedItems);
            }
            else if (e.Node.Text.Equals(Constants.Drafts))
            {
                mainForm.LoadMessages(MessageListType.Drafts);
            }
            else if (e.Node.Text.Equals(Constants.JunkEmail))
            {
                mainForm.LoadMessages(MessageListType.JunkEmail);
            }
            else if (e.Node.Text.Equals(Constants.SyncFailures))
            {
                mainForm.LoadMessages(MessageListType.SyncFailure);
            }
            else if (e.Node.Text.Equals(Constants.SearchFolders))
            {
                mainForm.LoadMessages(MessageListType.SearchFolders);
            }
            else if (e.Node.Text.Equals(Constants.RootFolder))
            {
                mainForm.LoadMessages(MessageListType.RootFolder);
            }
            else if (e.Node.Text.Equals(Constants.ArquiveFolders))
            {
                mainForm.LoadMessages(MessageListType.ArchiveFolder);
            }
            else if (e.Node.Text.Equals(Constants.Empty))
            {
                mainForm.LoadMessages(MessageListType.Empty);
            }
            else if (e.Node.Text.Equals(Constants.MailHome))
            {
                mainForm.LoadMessages(MessageListType.MailHome);
            }
            else
            {
                mainForm.LoadMessages(MessageListType.Custom);
            }

            MainForm.GetInstance().UpdateMessageCountLabel();
        }
示例#7
0
 /// <summary>
 /// Move message to folder menu item click event handler.
 /// </summary>
 /// <param name="sender">The sender object.</param>
 /// <param name="e">The event arguments.</param>
 private void moveToFolderToolStripMenuItem_Click(object sender, EventArgs e)
 {
     MainForm.GetInstance().toolStripMoveFolder_Click(sender, e);
 }
示例#8
0
 /// <summary>
 /// Menu item forward event handler.
 /// </summary>
 /// <param name="sender">The sender object.</param>
 /// <param name="e">The event arguments.</param>
 private void forwardToolStripMenuItem_Click(object sender, EventArgs e)
 {
     MainForm.GetInstance().toolStripButtonForward_Click(sender, e);
 }
示例#9
0
 /// <summary>
 /// Menu item reply to all event handler.
 /// </summary>
 /// <param name="sender">The sender object.</param>
 /// <param name="e">The event arguments.</param>
 private void replyToAllToolStripMenuItem_Click(object sender, EventArgs e)
 {
     MainForm.GetInstance().toolStripButtonReplyToAll_Click(sender, e);
 }
示例#10
0
        /// <summary>
        /// Method for load messages.
        /// </summary>
        /// <param name="messageListType">The Message List Type.</param>
        public void LoadMessages(MessageListType messageListType)
        {
            Facade facade         = Facade.GetInstance();
            string selectedFolder = string.Empty;

            if (messageListType == MessageListType.Inbox ||
                messageListType == MessageListType.Unread ||
                messageListType == MessageListType.Read)
            {
                // Attach to Message Store
                this._store = facade.GetMessageStore();
            }
            else if (messageListType == MessageListType.SentItems)
            {
                // Attach to Message Store Sent items
                this._store = facade.GetMessageStoreSent();
            }
            else if (messageListType == MessageListType.DeletedItems)
            {
                // Attach to Message Store Sent items
                this._store = facade.GetMessageStoreDelete();
            }
            else if (messageListType == MessageListType.Custom)
            {
                // Attach to Message Store Sent items
                this._store    = facade.GetMessageStoreCustom();
                selectedFolder = MainForm.GetInstance().GetSelectedFolder();
            }
            else
            {
                this._store = new MessageStore();
            }

            // Reset DataSource
            this.messageBS.DataSource    = this._store.Messages;
            this.dataGridView.DataSource = this.messageBS;

            this.dataGridView.CurrentCell = null;

            CurrencyManager cm = (CurrencyManager)this.dataGridView.BindingContext[this.dataGridView.DataSource];

            cm.SuspendBinding();

            foreach (DataGridViewRow row in this.dataGridView.Rows)
            {
                MailMessage mailMessage = (MailMessage)row.DataBoundItem;

                if (messageListType == MessageListType.Unread && mailMessage.Read)
                {
                    row.Visible = false;
                }
                else if (messageListType == MessageListType.Read && !mailMessage.Read)
                {
                    row.Visible = false;
                }
                else if (messageListType == MessageListType.Custom &&
                         !mailMessage.ParentFolder.Equals(selectedFolder))
                {
                    row.Visible = false;
                }
                else
                {
                    row.Visible = true;
                }
            }

            cm.ResumeBinding();

            if (this.messageBS.Count > 0)
            {
                this.dataGridView.Sort(this.dataGridView.Columns[2], ListSortDirection.Descending);
            }

            MainForm mainForm = this.ParentForm as MainForm;

            mainForm.LoadSelectedMessage(this._store);

            this.Invalidate(true);
        }
示例#11
0
 static void Main()
 {
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     Application.Run(MainForm.GetInstance());
 }