Tasks pseudo-logic

This commit is contained in:
gamosoft_cp 2013-07-22 20:12:10 +00:00
parent 69a47f6652
commit 554677e21f
7 changed files with 94 additions and 24 deletions

View File

@ -50,6 +50,11 @@ namespace Outlook2013TodoAddIn
set { this.apptCalendar.SelectedDate = value; }
}
/// <summary>
/// Gets/sets whether to show the tasks list
/// </summary>
public bool ShowTasks { get; set; }
#endregion "Properties"
#region "Methods"
@ -69,33 +74,53 @@ namespace Outlook2013TodoAddIn
/// <param name="e">DateRangeEventArgs</param>
private void apptCalendar_SelectedDateChanged(object sender, EventArgs e)
{
this.RetrieveAppointments();
this.RetrieveData();
}
/// <summary>
/// Retrieves tasks for all stores
/// Retrieves appointments and tasks if configured
/// </summary>
public void RetrieveTasks()
public void RetrieveData()
{
// We want tasks for all the accounts
//foreach (Outlook.Store store in Globals.ThisAddIn.Application.Session.Stores)
//{
// // Get the Outlook to-do folder to retrieve the items
// MessageBox.Show("Store: " + store.DisplayName);
// // TODO: try..catch (public folders times out)
Outlook.Folder todoFolder =
Globals.ThisAddIn.Application.Session.GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderToDo)
as Outlook.Folder;
this.RetrieveTasksForFolder(todoFolder);
this.RetrieveAppointments();
if (this.ShowTasks)
{
// this.RetrieveTasks();
}
}
/// <summary>
/// Retrieves tasks for all selected stores
/// </summary>
private void RetrieveTasks()
{
List<Outlook.TaskItem> tasks = new List<Outlook.TaskItem>();
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 todoFolder = store.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderToDo) as Outlook.Folder;
tasks.AddRange(this.RetrieveTasksForFolder(todoFolder));
// TODO: Shared calendars?
}
}
// We need to sort them because they may come from different accounts already ordered
// tasks.Sort(CompareTasks);
//Outlook.Folder todoFolder =
// Globals.ThisAddIn.Application.Session.GetDefaultFolder(
// Outlook.OlDefaultFolders.olFolderToDo)
// as Outlook.Folder;
//this.RetrieveTasksForFolder(todoFolder);
}
/// <summary>
/// Retrieves to-do tasks for the folder on the specified store
/// </summary>
/// <param name="todoFolder">Outlook folder</param>
private void RetrieveTasksForFolder(Outlook.Folder todoFolder)
private List<Outlook.TaskItem> RetrieveTasksForFolder(Outlook.Folder todoFolder)
{
List<Outlook.TaskItem> tasks = new List<Outlook.TaskItem>();
foreach (object item in todoFolder.Items)
{
if (item is Outlook.MailItem)
@ -124,12 +149,13 @@ namespace Outlook2013TodoAddIn
MessageBox.Show("Unknown type");
}
}
return tasks;
}
/// <summary>
/// Retrieve all appointments for the current configurations for all selected stores
/// </summary>
public void RetrieveAppointments()
private void RetrieveAppointments()
{
List<Outlook.AppointmentItem> appts = new List<Outlook.AppointmentItem>();
foreach (Outlook.Store store in Globals.ThisAddIn.Application.Session.Stores)
@ -344,7 +370,7 @@ namespace Outlook2013TodoAddIn
// Open up the appointment in a new window
appt.Display(true); // Modal yes/no
}
// At the end, synchronously "refresh" items in case they have changed
// At the end, synchronously "refresh" appointments in case they have changed
this.RetrieveAppointments();
}
}
@ -411,7 +437,8 @@ namespace Outlook2013TodoAddIn
this.ShowPastAppointments = cfg.ShowPastAppointments;
this.Accounts = cfg.Accounts;
this.ShowFriendlyGroupHeaders = cfg.ShowFriendlyGroupHeaders;
this.RetrieveAppointments();
this.ShowTasks = cfg.ShowTasks;
this.RetrieveData();
}
}
}

View File

@ -37,6 +37,7 @@
this.chkListCalendars = new System.Windows.Forms.CheckedListBox();
this.lblAccounts = new System.Windows.Forms.Label();
this.chkFriendlyGroupHeaders = new System.Windows.Forms.CheckBox();
this.chkShowTasks = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.numRangeDays)).BeginInit();
this.SuspendLayout();
//
@ -84,7 +85,7 @@
// btnCancel
//
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnCancel.Location = new System.Drawing.Point(168, 291);
this.btnCancel.Location = new System.Drawing.Point(168, 314);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(87, 37);
this.btnCancel.TabIndex = 11;
@ -94,7 +95,7 @@
// btnOK
//
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOK.Location = new System.Drawing.Point(26, 291);
this.btnOK.Location = new System.Drawing.Point(26, 314);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(87, 37);
this.btnOK.TabIndex = 10;
@ -115,7 +116,7 @@
// chkListCalendars
//
this.chkListCalendars.FormattingEnabled = true;
this.chkListCalendars.Location = new System.Drawing.Point(26, 176);
this.chkListCalendars.Location = new System.Drawing.Point(26, 199);
this.chkListCalendars.Name = "chkListCalendars";
this.chkListCalendars.Size = new System.Drawing.Size(229, 106);
this.chkListCalendars.TabIndex = 13;
@ -123,7 +124,7 @@
// lblAccounts
//
this.lblAccounts.AutoSize = true;
this.lblAccounts.Location = new System.Drawing.Point(23, 156);
this.lblAccounts.Location = new System.Drawing.Point(23, 179);
this.lblAccounts.Name = "lblAccounts";
this.lblAccounts.Size = new System.Drawing.Size(70, 17);
this.lblAccounts.TabIndex = 14;
@ -139,13 +140,24 @@
this.chkFriendlyGroupHeaders.Text = "Show Friendly Headers";
this.chkFriendlyGroupHeaders.UseVisualStyleBackColor = true;
//
// chkShowTasks
//
this.chkShowTasks.AutoSize = true;
this.chkShowTasks.Location = new System.Drawing.Point(45, 148);
this.chkShowTasks.Name = "chkShowTasks";
this.chkShowTasks.Size = new System.Drawing.Size(106, 21);
this.chkShowTasks.TabIndex = 16;
this.chkShowTasks.Text = "Show Tasks";
this.chkShowTasks.UseVisualStyleBackColor = true;
//
// FormConfiguration
//
this.AcceptButton = this.btnOK;
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnCancel;
this.ClientSize = new System.Drawing.Size(282, 343);
this.ClientSize = new System.Drawing.Size(282, 383);
this.Controls.Add(this.chkShowTasks);
this.Controls.Add(this.chkFriendlyGroupHeaders);
this.Controls.Add(this.lblAccounts);
this.Controls.Add(this.chkListCalendars);
@ -180,5 +192,6 @@
private System.Windows.Forms.CheckedListBox chkListCalendars;
private System.Windows.Forms.Label lblAccounts;
private System.Windows.Forms.CheckBox chkFriendlyGroupHeaders;
private System.Windows.Forms.CheckBox chkShowTasks;
}
}

View File

@ -67,6 +67,15 @@ namespace Outlook2013TodoAddIn.Forms
set { this.chkFriendlyGroupHeaders.Checked = value; }
}
/// <summary>
/// Gets/sets whether to show the tasks list
/// </summary>
public bool ShowTasks
{
get { return this.chkShowTasks.Checked; }
set { this.chkShowTasks.Checked = value; }
}
#endregion "Properties"
#region "Methods"
@ -90,6 +99,7 @@ namespace Outlook2013TodoAddIn.Forms
this.chkMailAlerts.Checked = Properties.Settings.Default.MailAlertsEnabled;
this.chkShowPastAppointments.Checked = Properties.Settings.Default.ShowPastAppointments;
this.chkFriendlyGroupHeaders.Checked = Properties.Settings.Default.ShowFriendlyGroupHeaders;
this.chkShowTasks.Checked = Properties.Settings.Default.ShowTasks;
this.LoadStores();
}
@ -118,6 +128,7 @@ namespace Outlook2013TodoAddIn.Forms
Properties.Settings.Default.ShowPastAppointments = this.chkShowPastAppointments.Checked;
Properties.Settings.Default.Accounts = this.Accounts;
Properties.Settings.Default.ShowFriendlyGroupHeaders = this.chkFriendlyGroupHeaders.Checked;
Properties.Settings.Default.ShowTasks = this.chkShowTasks.Checked;
}
#endregion "Methods"

View File

@ -117,5 +117,17 @@ namespace Outlook2013TodoAddIn.Properties {
this["ShowFriendlyGroupHeaders"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool ShowTasks {
get {
return ((bool)(this["ShowTasks"]));
}
set {
this["ShowTasks"] = value;
}
}
}
}

View File

@ -26,5 +26,8 @@
<Setting Name="ShowFriendlyGroupHeaders" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="ShowTasks" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -44,6 +44,7 @@ namespace Outlook2013TodoAddIn
this.AppControl.ShowPastAppointments = Properties.Settings.Default.ShowPastAppointments;
this.AppControl.Accounts = Properties.Settings.Default.Accounts;
this.AppControl.ShowFriendlyGroupHeaders = Properties.Settings.Default.ShowFriendlyGroupHeaders;
this.AppControl.ShowTasks = Properties.Settings.Default.ShowTasks;
this.AppControl.NumDays = Properties.Settings.Default.NumDays; // Setting the value will load the appointments
ToDoTaskPane = this.CustomTaskPanes.Add(this.AppControl, "Appointments");
@ -57,7 +58,7 @@ namespace Outlook2013TodoAddIn
// Selecting the date will retrieve the appointments
// Otherwise it'll take the one used when the designer changed!
this.AppControl.SelectedDate = DateTime.Today;
// this.AppControl.RetrieveAppointments();
// this.AppControl.RetrieveData();
Globals.ThisAddIn.Application.ActiveExplorer().Deactivate += ThisAddIn_Deactivate;

View File

@ -28,6 +28,9 @@
<setting name="ShowFriendlyGroupHeaders" serializeAs="String">
<value>True</value>
</setting>
<setting name="ShowTasks" serializeAs="String">
<value>True</value>
</setting>
</Outlook2013TodoAddIn.Properties.Settings>
</userSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>