From 776d7462bf7508bbcc0435833728117fc6709f38 Mon Sep 17 00:00:00 2001 From: gamosoft_cp Date: Fri, 31 Oct 2014 15:37:26 +0000 Subject: [PATCH] Added context menu option to delete appointments --- .../AppointmentsControl.Designer.cs | 17 +++++-- Outlook2013TodoAddIn/AppointmentsControl.cs | 45 +++++++++++++++++++ .../Forms/FormRecurringOpen.Designer.cs | 1 + .../Forms/FormRecurringOpen.cs | 26 ++++++++++- 4 files changed, 84 insertions(+), 5 deletions(-) diff --git a/Outlook2013TodoAddIn/AppointmentsControl.Designer.cs b/Outlook2013TodoAddIn/AppointmentsControl.Designer.cs index 981e335..89a283b 100644 --- a/Outlook2013TodoAddIn/AppointmentsControl.Designer.cs +++ b/Outlook2013TodoAddIn/AppointmentsControl.Designer.cs @@ -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; } diff --git a/Outlook2013TodoAddIn/AppointmentsControl.cs b/Outlook2013TodoAddIn/AppointmentsControl.cs index cd8f14d..fb84754 100644 --- a/Outlook2013TodoAddIn/AppointmentsControl.cs +++ b/Outlook2013TodoAddIn/AppointmentsControl.cs @@ -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 } } + /// + /// Allows to delete the selected appointment (whether it's a recurring one or not) + /// + /// Sender + /// EventArgs + 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(); + } + } + } + /// /// Switch to the calendar view when double-clicking a date /// diff --git a/Outlook2013TodoAddIn/Forms/FormRecurringOpen.Designer.cs b/Outlook2013TodoAddIn/Forms/FormRecurringOpen.Designer.cs index db3893d..433c72d 100644 --- a/Outlook2013TodoAddIn/Forms/FormRecurringOpen.Designer.cs +++ b/Outlook2013TodoAddIn/Forms/FormRecurringOpen.Designer.cs @@ -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(); diff --git a/Outlook2013TodoAddIn/Forms/FormRecurringOpen.cs b/Outlook2013TodoAddIn/Forms/FormRecurringOpen.cs index 707f61a..27cb54e 100644 --- a/Outlook2013TodoAddIn/Forms/FormRecurringOpen.cs +++ b/Outlook2013TodoAddIn/Forms/FormRecurringOpen.cs @@ -17,18 +17,40 @@ namespace Outlook2013TodoAddIn.Forms get { return this.rbtnAll.Checked; } } + /// + /// To reuse the form, gets/sets the title + /// + public string Title { get; set; } + + + /// + /// To reuse the form, gets/sets the message + /// + public string Message { get; set; } + #endregion "Properties" #region "Methods" /// - /// Open the form + /// Load the form /// public FormRecurringOpen() { InitializeComponent(); } - + + /// + /// Load the form + /// + /// Sender + /// EventArgs + private void FormRecurringOpen_Load(object sender, System.EventArgs e) + { + this.Text = this.Title; + this.textBox1.Text = this.Message; + } + #endregion "Methods" } } \ No newline at end of file