Added context menu option to delete appointments

This commit is contained in:
gamosoft_cp 2014-10-31 15:37:26 +00:00
parent 128a45b394
commit 776d7462bf
4 changed files with 84 additions and 5 deletions

View File

@ -41,6 +41,7 @@
this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.panelCalendar = new System.Windows.Forms.Panel();
this.apptCalendar = new Outlook2013TodoAddIn.CustomCalendar();
this.mnuItemDeleteAppointment = new System.Windows.Forms.ToolStripMenuItem();
this.ctxMenuAppointments.SuspendLayout();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
@ -53,14 +54,15 @@
// ctxMenuAppointments
//
this.ctxMenuAppointments.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.mnuItemReplyAllEmail});
this.mnuItemReplyAllEmail,
this.mnuItemDeleteAppointment});
this.ctxMenuAppointments.Name = "ctxMenuAppointments";
this.ctxMenuAppointments.Size = new System.Drawing.Size(214, 28);
this.ctxMenuAppointments.Size = new System.Drawing.Size(225, 80);
//
// mnuItemReplyAllEmail
//
this.mnuItemReplyAllEmail.Name = "mnuItemReplyAllEmail";
this.mnuItemReplyAllEmail.Size = new System.Drawing.Size(213, 24);
this.mnuItemReplyAllEmail.Size = new System.Drawing.Size(224, 24);
this.mnuItemReplyAllEmail.Text = "Reply All With Email";
this.mnuItemReplyAllEmail.Click += new System.EventHandler(this.mnuItemReplyAllEmail_Click);
//
@ -181,6 +183,7 @@
this.apptCalendar.SelectedBackColor = System.Drawing.Color.LightBlue;
this.apptCalendar.SelectedDate = new System.DateTime(2013, 5, 2, 0, 0, 0, 0);
this.apptCalendar.SelectedForeColor = System.Drawing.Color.Blue;
this.apptCalendar.ShowWeekNumbers = false;
this.apptCalendar.Size = new System.Drawing.Size(258, 230);
this.apptCalendar.TabIndex = 1;
this.apptCalendar.TodayBackColor = System.Drawing.Color.Blue;
@ -189,6 +192,13 @@
this.apptCalendar.SelectedDateChanged += new System.EventHandler(this.apptCalendar_SelectedDateChanged);
this.apptCalendar.ConfigurationButtonClicked += new System.EventHandler(this.apptCalendar_ConfigurationButtonClicked);
//
// mnuItemDeleteAppointment
//
this.mnuItemDeleteAppointment.Name = "mnuItemDeleteAppointment";
this.mnuItemDeleteAppointment.Size = new System.Drawing.Size(224, 24);
this.mnuItemDeleteAppointment.Text = "Delete appointment/s";
this.mnuItemDeleteAppointment.Click += new System.EventHandler(this.mnuItemDeleteAppointment_Click);
//
// AppointmentsControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
@ -221,6 +231,7 @@
private System.Windows.Forms.ColumnHeader columnHeader4;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.Panel panelCalendar;
private System.Windows.Forms.ToolStripMenuItem mnuItemDeleteAppointment;
}

View File

@ -400,6 +400,8 @@ namespace Outlook2013TodoAddIn
if (appt.IsRecurring)
{
FormRecurringOpen f = new FormRecurringOpen();
f.Title = "Open Recurring Item";
f.Message = "This is one appointment in a series. What do you want to open?";
if (f.ShowDialog() == DialogResult.OK)
{
if (f.OpenRecurring)
@ -457,6 +459,49 @@ namespace Outlook2013TodoAddIn
}
}
/// <summary>
/// Allows to delete the selected appointment (whether it's a recurring one or not)
/// </summary>
/// <param name="sender">Sender</param>
/// <param name="e">EventArgs</param>
private void mnuItemDeleteAppointment_Click(object sender, EventArgs e)
{
if (this.lstAppointments.SelectedIndices.Count != 0)
{
Outlook.AppointmentItem appt = this.lstAppointments.SelectedItems[0].Tag as Outlook.AppointmentItem;
if (appt != null)
{
if (appt.IsRecurring)
{
FormRecurringOpen f = new FormRecurringOpen();
f.Title = "Warning: Delete Recurring Item";
f.Message = "This is one appointment in a series. What do you want to delete?";
if (f.ShowDialog() == DialogResult.OK)
{
if (f.OpenRecurring)
{
Outlook.AppointmentItem masterAppt = appt.Parent; // Get the master appointment item
masterAppt.Delete(); // Will delete ALL instances
}
else
{
appt.Delete(); // Delete just this instance
}
}
}
else
{
if (MessageBox.Show("Are you sure you want to delete this appointment?", "Delete appointment", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
appt.Delete(); // Delete just this instance
}
}
// At the end, synchronously "refresh" appointments in case they have changed
this.RetrieveAppointments();
}
}
}
/// <summary>
/// Switch to the calendar view when double-clicking a date
/// </summary>

View File

@ -106,6 +106,7 @@
this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Open Recurring Item";
this.Load += new System.EventHandler(this.FormRecurringOpen_Load);
this.ResumeLayout(false);
this.PerformLayout();

View File

@ -17,18 +17,40 @@ namespace Outlook2013TodoAddIn.Forms
get { return this.rbtnAll.Checked; }
}
/// <summary>
/// To reuse the form, gets/sets the title
/// </summary>
public string Title { get; set; }
/// <summary>
/// To reuse the form, gets/sets the message
/// </summary>
public string Message { get; set; }
#endregion "Properties"
#region "Methods"
/// <summary>
/// Open the form
/// Load the form
/// </summary>
public FormRecurringOpen()
{
InitializeComponent();
}
/// <summary>
/// Load the form
/// </summary>
/// <param name="sender">Sender</param>
/// <param name="e">EventArgs</param>
private void FormRecurringOpen_Load(object sender, System.EventArgs e)
{
this.Text = this.Title;
this.textBox1.Text = this.Message;
}
#endregion "Methods"
}
}