using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace Outlook2013TodoAddIn.Forms
{
public partial class FormConfiguration : Form
{
#region "Properties"
///
/// Number of days (including today) to retrieve appointments from in the future
///
public decimal NumDays
{
get { return this.numRangeDays.Value; }
set { this.numRangeDays.Value = value; }
}
///
/// Gets/sets whether mail notifications are enabled or not
///
public bool MailAlertsEnabled
{
get { return this.chkMailAlerts.Checked; }
set { this.chkMailAlerts.Checked = value; }
}
///
/// Gets/sets whether to show past appointments in the current day or not
///
public bool ShowPastAppointments
{
get { return this.chkShowPastAppointments.Checked; }
set { this.chkShowPastAppointments.Checked = value; }
}
///
/// Gets/sets a list of all stores/accounts to retrieve information from
///
public StringCollection Accounts
{
get
{
StringCollection col = new StringCollection();
foreach (object item in this.chkListCalendars.CheckedItems)
{
col.Add(item.ToString());
}
return col;
}
}
///
/// Gets/sets whether to show friendly group headers (yesterday, today, tomorrow)
///
public bool ShowFriendlyGroupHeaders
{
get { return this.chkFriendlyGroupHeaders.Checked; }
set { this.chkFriendlyGroupHeaders.Checked = value; }
}
///
/// Gets/sets whether to show localized day names next to the days
///
public bool ShowDayNames
{
get { return this.chkShowDayNames.Checked; }
set { this.chkShowDayNames.Checked = value; }
}
///
/// Gets/sets whether to show week numbers
///
public bool ShowWeekNumbers
{
get { return this.chkShowWeekNumbers.Checked; }
set { this.chkShowWeekNumbers.Checked = value; }
}
///
/// Gets/sets whether to show the tasks list
///
public bool ShowTasks
{
get { return this.chkShowTasks.Checked; }
set { this.chkShowTasks.Checked = value; }
}
///
/// Gets/sets whether to show the completed tasks in the list
///
public bool ShowCompletedTasks
{
get { return this.chkShowCompletedTasks.Checked; }
set { this.chkShowCompletedTasks.Checked = value; }
}
///
/// Gets/sets the first day of the week for the calendar
///
public System.DayOfWeek FirstDayOfWeek
{
get { return (System.DayOfWeek)Enum.Parse(typeof(System.DayOfWeek), this.cboFirstDayOfWeek.SelectedValue.ToString()); }
set { this.cboFirstDayOfWeek.SelectedValue = value; }
}
#endregion "Properties"
#region "Methods"
///
/// Default constructor
///
public FormConfiguration()
{
InitializeComponent();
}
///
/// On load, display saved configuration
///
/// Sender
/// EventArgs
private void FormConfiguration_Load(object sender, EventArgs e)
{
this.numRangeDays.Value = Properties.Settings.Default.NumDays;
this.chkMailAlerts.Checked = Properties.Settings.Default.MailAlertsEnabled;
this.numRangeEmailAlertsTimeOut.Value = Properties.Settings.Default.DisplayTimeOut / 1000;
this.chkShowPastAppointments.Checked = Properties.Settings.Default.ShowPastAppointments;
this.chkFriendlyGroupHeaders.Checked = Properties.Settings.Default.ShowFriendlyGroupHeaders;
this.chkShowDayNames.Checked = Properties.Settings.Default.ShowDayNames;
this.chkShowWeekNumbers.Checked = Properties.Settings.Default.ShowWeekNumbers;
this.chkShowTasks.Checked = Properties.Settings.Default.ShowTasks;
this.chkShowCompletedTasks.Checked = Properties.Settings.Default.ShowCompletedTasks;
this.LoadStores();
this.LoadDays();
}
///
/// Loads all the stores (accounts) in the current session
///
private void LoadStores()
{
foreach (Outlook.Store store in Globals.ThisAddIn.Application.Session.Stores)
{
bool itemChecked = Properties.Settings.Default.Accounts != null && Properties.Settings.Default.Accounts.Contains(store.DisplayName);
int index = this.chkListCalendars.Items.Add(store.DisplayName, itemChecked);
// TODO: Use StoreID instead?
}
}
///
/// Loads the available days of the week in the dropdown
///
private void LoadDays()
{
this.cboFirstDayOfWeek.DataSource = Enum.GetValues(typeof(System.DayOfWeek));
this.cboFirstDayOfWeek.SelectedItem = Properties.Settings.Default.FirstDayOfWeek;
}
///
/// Clicking the OK button
///
/// Sender
/// EventArgs
private void btnOK_Click(object sender, EventArgs e)
{
Properties.Settings.Default.NumDays = this.numRangeDays.Value;
Properties.Settings.Default.MailAlertsEnabled = this.chkMailAlerts.Checked;
Properties.Settings.Default.DisplayTimeOut = (int)this.numRangeEmailAlertsTimeOut.Value * 1000;
Properties.Settings.Default.ShowPastAppointments = this.chkShowPastAppointments.Checked;
Properties.Settings.Default.Accounts = this.Accounts;
Properties.Settings.Default.ShowFriendlyGroupHeaders = this.chkFriendlyGroupHeaders.Checked;
Properties.Settings.Default.ShowDayNames = this.chkShowDayNames.Checked;
Properties.Settings.Default.ShowWeekNumbers = this.chkShowWeekNumbers.Checked;
Properties.Settings.Default.ShowTasks = this.chkShowTasks.Checked;
Properties.Settings.Default.ShowCompletedTasks = this.chkShowCompletedTasks.Checked;
Properties.Settings.Default.FirstDayOfWeek = (System.DayOfWeek)Enum.Parse(typeof(System.DayOfWeek), this.cboFirstDayOfWeek.SelectedValue.ToString());
}
///
/// Open the default web browser with a link to PayPal in case someone wants to buy me a beer
///
/// Sender
/// EventArgs
private void pictureBox1_Click(object sender, EventArgs e)
{
Process.Start(Constants.DonateUrl);
}
#endregion "Methods"
}
}