Work in progress to allow moving received emails to folders
This commit is contained in:
		
							parent
							
								
									2e0c440d5d
								
							
						
					
					
						commit
						14def3a3a2
					
				
							
								
								
									
										51
									
								
								Outlook2013TodoAddIn/ComboBoxItem.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								Outlook2013TodoAddIn/ComboBoxItem.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Outlook2013TodoAddIn
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// Class to add combo box items and retrieve them more easily
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public class ComboBoxItem
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        #region "Properties"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Text
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string Text { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Value
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public object Value { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion "Properties"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region "Methods"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Default constructor
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="text">Text</param>
 | 
				
			||||||
 | 
					        /// <param name="value">Value</param>
 | 
				
			||||||
 | 
					        public ComboBoxItem(string text, object value)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            this.Text = text;
 | 
				
			||||||
 | 
					            this.Value = value;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Override to string to display the text entry
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <returns>Text property</returns>
 | 
				
			||||||
 | 
					        public override string ToString()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return Text;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion "Methods"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								Outlook2013TodoAddIn/Forms/NewMailAlert.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										24
									
								
								Outlook2013TodoAddIn/Forms/NewMailAlert.Designer.cs
									
									
									
										generated
									
									
									
								
							@ -35,6 +35,7 @@
 | 
				
			|||||||
            this.btnClose = new System.Windows.Forms.Button();
 | 
					            this.btnClose = new System.Windows.Forms.Button();
 | 
				
			||||||
            this.lnkSender = new System.Windows.Forms.LinkLabel();
 | 
					            this.lnkSender = new System.Windows.Forms.LinkLabel();
 | 
				
			||||||
            this.lnkSubject = new System.Windows.Forms.LinkLabel();
 | 
					            this.lnkSubject = new System.Windows.Forms.LinkLabel();
 | 
				
			||||||
 | 
					            this.comboMoveTo = new System.Windows.Forms.ComboBox();
 | 
				
			||||||
            this.SuspendLayout();
 | 
					            this.SuspendLayout();
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
            // txtBody
 | 
					            // txtBody
 | 
				
			||||||
@ -46,6 +47,7 @@
 | 
				
			|||||||
            this.txtBody.ReadOnly = true;
 | 
					            this.txtBody.ReadOnly = true;
 | 
				
			||||||
            this.txtBody.Size = new System.Drawing.Size(285, 51);
 | 
					            this.txtBody.Size = new System.Drawing.Size(285, 51);
 | 
				
			||||||
            this.txtBody.TabIndex = 2;
 | 
					            this.txtBody.TabIndex = 2;
 | 
				
			||||||
 | 
					            this.txtBody.Text = "[Email body preview...]";
 | 
				
			||||||
            this.txtBody.Click += new System.EventHandler(this.txtBody_Click);
 | 
					            this.txtBody.Click += new System.EventHandler(this.txtBody_Click);
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
            // btnDelete
 | 
					            // btnDelete
 | 
				
			||||||
@ -100,10 +102,10 @@
 | 
				
			|||||||
            this.lnkSender.AutoSize = true;
 | 
					            this.lnkSender.AutoSize = true;
 | 
				
			||||||
            this.lnkSender.Location = new System.Drawing.Point(85, 5);
 | 
					            this.lnkSender.Location = new System.Drawing.Point(85, 5);
 | 
				
			||||||
            this.lnkSender.Name = "lnkSender";
 | 
					            this.lnkSender.Name = "lnkSender";
 | 
				
			||||||
            this.lnkSender.Size = new System.Drawing.Size(72, 17);
 | 
					            this.lnkSender.Size = new System.Drawing.Size(75, 17);
 | 
				
			||||||
            this.lnkSender.TabIndex = 10;
 | 
					            this.lnkSender.TabIndex = 10;
 | 
				
			||||||
            this.lnkSender.TabStop = true;
 | 
					            this.lnkSender.TabStop = true;
 | 
				
			||||||
            this.lnkSender.Text = "linkLabel1";
 | 
					            this.lnkSender.Text = "linkSender";
 | 
				
			||||||
            this.lnkSender.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkSender_LinkClicked);
 | 
					            this.lnkSender.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkSender_LinkClicked);
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
            // lnkSubject
 | 
					            // lnkSubject
 | 
				
			||||||
@ -111,17 +113,30 @@
 | 
				
			|||||||
            this.lnkSubject.AutoSize = true;
 | 
					            this.lnkSubject.AutoSize = true;
 | 
				
			||||||
            this.lnkSubject.Location = new System.Drawing.Point(85, 27);
 | 
					            this.lnkSubject.Location = new System.Drawing.Point(85, 27);
 | 
				
			||||||
            this.lnkSubject.Name = "lnkSubject";
 | 
					            this.lnkSubject.Name = "lnkSubject";
 | 
				
			||||||
            this.lnkSubject.Size = new System.Drawing.Size(72, 17);
 | 
					            this.lnkSubject.Size = new System.Drawing.Size(76, 17);
 | 
				
			||||||
            this.lnkSubject.TabIndex = 11;
 | 
					            this.lnkSubject.TabIndex = 11;
 | 
				
			||||||
            this.lnkSubject.TabStop = true;
 | 
					            this.lnkSubject.TabStop = true;
 | 
				
			||||||
            this.lnkSubject.Text = "linkLabel2";
 | 
					            this.lnkSubject.Text = "linkSubject";
 | 
				
			||||||
            this.lnkSubject.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkSubject_LinkClicked);
 | 
					            this.lnkSubject.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkSubject_LinkClicked);
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
 | 
					            // comboMoveTo
 | 
				
			||||||
 | 
					            // 
 | 
				
			||||||
 | 
					            this.comboMoveTo.DisplayMember = "Text";
 | 
				
			||||||
 | 
					            this.comboMoveTo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
 | 
				
			||||||
 | 
					            this.comboMoveTo.FormattingEnabled = true;
 | 
				
			||||||
 | 
					            this.comboMoveTo.Location = new System.Drawing.Point(220, 5);
 | 
				
			||||||
 | 
					            this.comboMoveTo.Name = "comboMoveTo";
 | 
				
			||||||
 | 
					            this.comboMoveTo.Size = new System.Drawing.Size(121, 24);
 | 
				
			||||||
 | 
					            this.comboMoveTo.TabIndex = 12;
 | 
				
			||||||
 | 
					            this.comboMoveTo.ValueMember = "Value";
 | 
				
			||||||
 | 
					            this.comboMoveTo.SelectedIndexChanged += new System.EventHandler(this.comboMoveTo_SelectedIndexChanged);
 | 
				
			||||||
 | 
					            // 
 | 
				
			||||||
            // NewMailAlert
 | 
					            // NewMailAlert
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
 | 
					            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
 | 
				
			||||||
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
 | 
					            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
 | 
				
			||||||
            this.ClientSize = new System.Drawing.Size(385, 100);
 | 
					            this.ClientSize = new System.Drawing.Size(385, 100);
 | 
				
			||||||
 | 
					            this.Controls.Add(this.comboMoveTo);
 | 
				
			||||||
            this.Controls.Add(this.lnkSubject);
 | 
					            this.Controls.Add(this.lnkSubject);
 | 
				
			||||||
            this.Controls.Add(this.lnkSender);
 | 
					            this.Controls.Add(this.lnkSender);
 | 
				
			||||||
            this.Controls.Add(this.btnClose);
 | 
					            this.Controls.Add(this.btnClose);
 | 
				
			||||||
@ -151,5 +166,6 @@
 | 
				
			|||||||
        private System.Windows.Forms.Button btnClose;
 | 
					        private System.Windows.Forms.Button btnClose;
 | 
				
			||||||
        private System.Windows.Forms.LinkLabel lnkSender;
 | 
					        private System.Windows.Forms.LinkLabel lnkSender;
 | 
				
			||||||
        private System.Windows.Forms.LinkLabel lnkSubject;
 | 
					        private System.Windows.Forms.LinkLabel lnkSubject;
 | 
				
			||||||
 | 
					        private System.Windows.Forms.ComboBox comboMoveTo;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -8,6 +8,7 @@ using System.Runtime.InteropServices;
 | 
				
			|||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using System.Windows.Forms;
 | 
					using System.Windows.Forms;
 | 
				
			||||||
 | 
					using Outlook = Microsoft.Office.Interop.Outlook;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Outlook2013TodoAddIn.Forms
 | 
					namespace Outlook2013TodoAddIn.Forms
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -72,6 +73,7 @@ namespace Outlook2013TodoAddIn.Forms
 | 
				
			|||||||
        public NewMailAlert(Microsoft.Office.Interop.Outlook.MailItem newMail, int interval)
 | 
					        public NewMailAlert(Microsoft.Office.Interop.Outlook.MailItem newMail, int interval)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            InitializeComponent();
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					            this.LoadFolders();
 | 
				
			||||||
            this.Email = newMail; // Assign it to open or flag later
 | 
					            this.Email = newMail; // Assign it to open or flag later
 | 
				
			||||||
            this.lnkSender.Text = newMail.Sender.Name;
 | 
					            this.lnkSender.Text = newMail.Sender.Name;
 | 
				
			||||||
            this.lnkSubject.Text = newMail.Subject;
 | 
					            this.lnkSubject.Text = newMail.Subject;
 | 
				
			||||||
@ -203,6 +205,60 @@ namespace Outlook2013TodoAddIn.Forms
 | 
				
			|||||||
            mouseIsOver = ClientRectangle.Contains(mousePos);
 | 
					            mouseIsOver = ClientRectangle.Contains(mousePos);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Method that loads all the folders in all stores
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        private void LoadFolders()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            comboMoveTo.Items.Clear();
 | 
				
			||||||
 | 
					            foreach (Outlook.Store store in Globals.ThisAddIn.Application.Session.Stores)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (Properties.Settings.Default.Accounts != null && Properties.Settings.Default.Accounts.Contains(store.DisplayName))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Outlook.Folder inboxFolder = store.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox) as Outlook.Folder;
 | 
				
			||||||
 | 
					                    LoadFolders(inboxFolder, "");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Recursive method to retrieve a folder's data, and all its children (if any)
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="f">Folder</param>
 | 
				
			||||||
 | 
					        /// <param name="padding">Padding to apply</param>
 | 
				
			||||||
 | 
					        private void LoadFolders(Outlook.Folder f, string padding)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ComboBoxItem cbi = new ComboBoxItem(padding + f.Name, f);
 | 
				
			||||||
 | 
					            comboMoveTo.Items.Add(cbi);
 | 
				
			||||||
 | 
					            if (f.Folders.Count != 0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // Get list of folder names and sort alphabetically
 | 
				
			||||||
 | 
					                List<string> sf = new List<string>();
 | 
				
			||||||
 | 
					                foreach (Outlook.Folder subf in f.Folders) sf.Add(subf.Name);
 | 
				
			||||||
 | 
					                sf.Sort();
 | 
				
			||||||
 | 
					                // Recursively call this method to add the children
 | 
				
			||||||
 | 
					                sf.ForEach(n =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    LoadFolders(f.Folders[n] as Outlook.Folder, padding + " -");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// When a folder is selected in the combobox, move the email item there
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="sender">Sender</param>
 | 
				
			||||||
 | 
					        /// <param name="e">EventArgs</param>
 | 
				
			||||||
 | 
					        private void comboMoveTo_SelectedIndexChanged(object sender, EventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (this.comboMoveTo.SelectedIndex != -1)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Outlook.Folder selFolder = (this.comboMoveTo.SelectedItem as ComboBoxItem).Value as Outlook.Folder;
 | 
				
			||||||
 | 
					                this.Email.Move(selFolder);
 | 
				
			||||||
 | 
					                this.Close();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #endregion "Methods"
 | 
					        #endregion "Methods"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -183,6 +183,7 @@
 | 
				
			|||||||
    can be found.
 | 
					    can be found.
 | 
				
			||||||
  -->
 | 
					  -->
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Compile Include="ComboBoxItem.cs" />
 | 
				
			||||||
    <Compile Include="Constants.cs" />
 | 
					    <Compile Include="Constants.cs" />
 | 
				
			||||||
    <Compile Include="CustomCalendar.cs">
 | 
					    <Compile Include="CustomCalendar.cs">
 | 
				
			||||||
      <SubType>UserControl</SubType>
 | 
					      <SubType>UserControl</SubType>
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user